Skip to content

Commit b4b804f

Browse files
add functional tests
1 parent fcd3596 commit b4b804f

File tree

2 files changed

+40
-3
lines changed

2 files changed

+40
-3
lines changed

git-prompt.cabal

+9-3
Original file line numberDiff line numberDiff line change
@@ -45,10 +45,16 @@ executable gitstatus
4545

4646
hs-source-dirs: src
4747

48-
test-suite gitpromptstatus-tests
48+
test-suite tests-branch
4949
default-language: Haskell2010
5050
type: exitcode-stdio-1.0
5151
hs-source-dirs: src
5252
main-is: TestBranchParse.hs
53-
build-depends: base, parsec >=3.1 && <3.2, process>=1.1.0.2,
54-
QuickCheck
53+
build-depends: base, parsec >=3.1 && <3.2, process>=1.1.0.2, QuickCheck
54+
55+
test-suite tests-functional
56+
default-language: Haskell2010
57+
type: exitcode-stdio-1.0
58+
hs-source-dirs: src
59+
main-is: TestFunctional.hs
60+
build-depends: base, parsec >=3.1 && <3.2, process>=1.1.0.2, HUnit, QuickCheck

src/TestFunctional.hs

+31
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
import Test.HUnit (Test(TestList), runTestTT, (~=?), Counts(errors, failures))
2+
import Utils (stringsFromStatus, Hash(MkHash))
3+
import Control.Applicative ((<$>))
4+
import System.Exit (exitFailure)
5+
import Control.Monad (when)
6+
7+
type TestData = (String, String, [Int])
8+
9+
tests :: [TestData]
10+
tests = [
11+
("## master...ori/master [ahead 3]\n M", "master", [3,0,0,0,1,0])
12+
,
13+
("## stat\nM ", "stat", [0,0,1,0,0,0])
14+
,
15+
("## exp...o/exp [ahead 3, behind 2]\n", "exp", [3,2,0,0,0,0])
16+
,
17+
("## master\nU \nU \nM \nM \nM ", "master", [0,0,3,2,0,0])
18+
,
19+
("## HEAD (no branch)\n", ":hash", [0,0,0,0,0,0])
20+
,
21+
("## master\n M\n M\n M\n??\n", "master", [0,0,0,0,3,1])
22+
]
23+
24+
makeTest :: TestData -> Test
25+
makeTest (input, branch, numbers) = Just (branch : (show <$> numbers)) ~=? stringsFromStatus (Just $ MkHash "hash") input
26+
27+
main :: IO ()
28+
main = do
29+
testResult <- runTestTT $ TestList $ makeTest <$> tests
30+
let some accessor = accessor testResult /= 0
31+
when (some errors || some failures) exitFailure

0 commit comments

Comments
 (0)