add testcoverage target using hpc

added a test for key read and show
This commit is contained in:
Joey Hess 2011-01-04 21:05:31 -04:00
parent f1b747e6d9
commit 759e860e4b
4 changed files with 31 additions and 1 deletions

2
.gitignore vendored
View file

@ -8,3 +8,5 @@ git-annex.1
git-annex-shell.1 git-annex-shell.1
doc/.ikiwiki doc/.ikiwiki
html html
*.tix
.hpc

View file

@ -33,6 +33,13 @@ test:
$(GHCMAKE) test $(GHCMAKE) test
./test ./test
testcoverage:
rm -f test.tix test
ghc -odir build/test -hidir build/test $(GHCFLAGS) --make -fhpc test
./test
hpc report test --exclude=Main --exclude=QC
hpc markup test --exclude=Main --exclude=QC --destdir=.hpc
# If ikiwiki is available, build static html docs suitable for being # If ikiwiki is available, build static html docs suitable for being
# shipped in the software package. # shipped in the software package.
ifeq ($(shell which ikiwiki),) ifeq ($(shell which ikiwiki),)
@ -49,7 +56,7 @@ docs: $(mans)
--exclude='news/.*' --exclude='news/.*'
clean: clean:
rm -rf build $(bins) $(mans) test configure SysConfig.hs rm -rf build $(bins) $(mans) test configure SysConfig.hs *.tix .hpc
rm -rf doc/.ikiwiki html rm -rf doc/.ikiwiki html
.PHONY: $(bins) test install .PHONY: $(bins) test install

View file

@ -12,6 +12,7 @@ module TypeInternals where
import Control.Monad.State (StateT) import Control.Monad.State (StateT)
import Data.String.Utils import Data.String.Utils
import qualified Data.Map as M import qualified Data.Map as M
import Test.QuickCheck
import qualified GitRepo as Git import qualified GitRepo as Git
import qualified GitQueue import qualified GitQueue
@ -57,6 +58,23 @@ instance Read Key where
b = head l b = head l
k = join ":" $ drop 1 l k = join ":" $ drop 1 l
-- for quickcheck
instance Arbitrary Key where
arbitrary = do
backendname <- arbitrary
keyname <- arbitrary
return $ Key (backendname, keyname)
prop_idempotent_key_read_show :: Key -> Bool
prop_idempotent_key_read_show k
-- filter out empty key or backend names
-- also backend names will not contain colons
| null kname || null bname || elem ':' bname = True
| otherwise = k == (read $ show k)
where
bname = backendName k
kname = keyName k
backendName :: Key -> BackendName backendName :: Key -> BackendName
backendName (Key (b,_)) = b backendName (Key (b,_)) = b
keyName :: Key -> KeyName keyName :: Key -> KeyName

View file

@ -4,14 +4,17 @@ import Test.HUnit.Tools
import GitRepo import GitRepo
import Locations import Locations
import Utility import Utility
import TypeInternals
alltests :: [Test] alltests :: [Test]
alltests = [ alltests = [
qctest "prop_idempotent_deencode" prop_idempotent_deencode, qctest "prop_idempotent_deencode" prop_idempotent_deencode,
qctest "prop_idempotent_fileKey" prop_idempotent_fileKey, qctest "prop_idempotent_fileKey" prop_idempotent_fileKey,
qctest "prop_idempotent_key_read_show" prop_idempotent_key_read_show,
qctest "prop_idempotent_shellescape" prop_idempotent_shellescape, qctest "prop_idempotent_shellescape" prop_idempotent_shellescape,
qctest "prop_idempotent_shellescape_multiword" prop_idempotent_shellescape_multiword qctest "prop_idempotent_shellescape_multiword" prop_idempotent_shellescape_multiword
] ]
main :: IO (Counts, Int) main :: IO (Counts, Int)
main = runVerboseTests (TestList alltests) main = runVerboseTests (TestList alltests)