mirror of
https://github.com/simonmichael/hledger.git
synced 2024-12-26 20:02:27 +03:00
"make coverage" now generates a nice html report of test coverage
This commit is contained in:
parent
ce78ce8f3d
commit
7aaa2c5ad0
79
Makefile
79
Makefile
@ -5,11 +5,14 @@ OPTFLAGS=-DHAPPS -DVTY
|
||||
|
||||
# command to run during "make ci"
|
||||
CICMD=test
|
||||
#CICMD=web --debug -BE
|
||||
CICMD=web --debug -BE
|
||||
|
||||
# command to run during "make prof"
|
||||
# command to run during "make prof/heap"
|
||||
PROFCMD=-f 1000x1000x10.ledger balance
|
||||
|
||||
# command to run during "make coverage"
|
||||
COVCMD=test
|
||||
|
||||
# executables to run during "make benchtest" (prepend ./ if not in $PATH)
|
||||
BENCHEXES=hledger-0.5 hledger-0.6 ledger
|
||||
|
||||
@ -28,7 +31,7 @@ TIME:=$(shell date +"%Y%m%d%H%M")
|
||||
default: tag hledger
|
||||
|
||||
######################################################################
|
||||
# BUILDING, DEBUGGING
|
||||
# BUILDING
|
||||
|
||||
# build the standard developer's binary, quickly
|
||||
hledger: setversion
|
||||
@ -37,11 +40,11 @@ hledger: setversion
|
||||
# build the profiling-enabled binary. You may need to cabal install
|
||||
# --reinstall -p some libs.
|
||||
hledgerp: setversion
|
||||
ghc --make hledger.hs -prof -auto-all -o hledgerp #$(BUILDFLAGS)
|
||||
ghc --make hledger.hs -prof -auto-all -o hledgerp $(BUILDFLAGS)
|
||||
|
||||
# build the coverage-enabled binary (untested)
|
||||
# build the coverage-enabled binary. Warning, might need make clean
|
||||
hledgercov: setversion
|
||||
ghc --make hledger.hs -hpc -o hledgercov $(BUILDFLAGS)
|
||||
ghc --make hledger.hs -fhpc -o hledgercov $(BUILDFLAGS)
|
||||
|
||||
# build the fastest binary we can
|
||||
hledgeropt: setversion
|
||||
@ -82,35 +85,6 @@ tools/doctest: tools/doctest.hs
|
||||
tools/generateledger: tools/generateledger.hs
|
||||
ghc --make tools/generateledger.hs
|
||||
|
||||
# get a debug prompt
|
||||
ghci:
|
||||
ghci hledger.hs
|
||||
|
||||
# generate, save and display a standard profile
|
||||
prof: sampleledgers hledgerp
|
||||
@echo "Profiling $(PROFCMD)"
|
||||
./hledgerp +RTS -p -RTS $(PROFCMD) >/dev/null
|
||||
mv hledgerp.prof profs/$(TIME)-orig.prof
|
||||
tools/simplifyprof.hs profs/$(TIME)-orig.prof >profs/$(TIME).prof
|
||||
(cd profs; rm -f latest*.prof; ln -s $(TIME)-orig.prof latest-orig.prof; ln -s $(TIME).prof latest.prof)
|
||||
echo; cat profs/latest.prof
|
||||
|
||||
# generate, save and display a graphical heap profile
|
||||
heap: sampleledgers hledgerp
|
||||
@echo "Profiling heap with $(PROFCMD)"
|
||||
./hledgerp +RTS -hc -RTS $(PROFCMD) >/dev/null
|
||||
mv hledgerp.hp profs/$(TIME).hp
|
||||
(cd profs; rm -f latest.hp; ln -s $(TIME).hp latest.hp; \
|
||||
hp2ps $(TIME).hp; rm -f latest.ps; ln -s $(TIME).ps latest.ps)
|
||||
$(VIEWPSCMD) profs/latest.ps
|
||||
|
||||
# generate, save and display a code coverage report (untested)
|
||||
coverage: sampleledgers hledgercov
|
||||
@echo "Generating coverage report with $(PROFCMD)"
|
||||
./hledgercov $(PROFCMD) >/dev/null
|
||||
hpc report hledgercov
|
||||
#hpc markup hledgercov
|
||||
|
||||
######################################################################
|
||||
# TESTING
|
||||
|
||||
@ -137,6 +111,35 @@ benchtest: sampleledgers bench.tests tools/bench
|
||||
@rm -f benchresults.*
|
||||
@(cd profs; rm -f latest.bench; ln -s $(TIME).bench latest.bench)
|
||||
|
||||
# get a debug prompt
|
||||
ghci:
|
||||
ghci hledger.hs
|
||||
|
||||
# generate, save and display a standard profile
|
||||
prof: sampleledgers hledgerp
|
||||
@echo "Profiling $(PROFCMD)"
|
||||
./hledgerp +RTS -p -RTS $(PROFCMD) >/dev/null
|
||||
mv hledgerp.prof profs/$(TIME)-orig.prof
|
||||
tools/simplifyprof.hs profs/$(TIME)-orig.prof >profs/$(TIME).prof
|
||||
(cd profs; rm -f latest*.prof; ln -s $(TIME)-orig.prof latest-orig.prof; ln -s $(TIME).prof latest.prof)
|
||||
echo; cat profs/latest.prof
|
||||
|
||||
# generate, save and display a graphical heap profile
|
||||
heap: sampleledgers hledgerp
|
||||
@echo "Profiling heap with $(PROFCMD)"
|
||||
./hledgerp +RTS -hc -RTS $(PROFCMD) >/dev/null
|
||||
mv hledgerp.hp profs/$(TIME).hp
|
||||
(cd profs; rm -f latest.hp; ln -s $(TIME).hp latest.hp; \
|
||||
hp2ps $(TIME).hp; rm -f latest.ps; ln -s $(TIME).ps latest.ps)
|
||||
$(VIEWPSCMD) profs/latest.ps
|
||||
|
||||
# generate and display a code coverage report
|
||||
coverage: sampleledgers hledgercov
|
||||
@echo "Generating coverage report with $(COVCMD)"
|
||||
tools/coverage "markup --destdir=profs/coverage" test
|
||||
cd profs/coverage; rm -f index.html; ln -s hpc_index.html index.html
|
||||
$(VIEWHTMLCMD) profs/coverage/index.html
|
||||
|
||||
# generate standard sample ledgers
|
||||
sampleledgers: sample.ledger 100x100x10.ledger 1000x1000x10.ledger 10000x1000x10.ledger 100000x1000x10.ledger
|
||||
|
||||
@ -353,7 +356,7 @@ pushbinary:
|
||||
rsync -aP $(BINARYFILENAME).gz joyful.com:/repos/hledger/website/binaries/
|
||||
|
||||
# show project stats useful for release notes
|
||||
stats: showlastreleasedate showreleaseauthors showloc showerrors showlocalchanges showreleasechanges benchtest
|
||||
stats: showlastreleasedate showreleaseauthors showloc showcov showerrors showlocalchanges showreleasechanges benchtest
|
||||
|
||||
showreleaseauthors:
|
||||
@echo Patch authors since last release:
|
||||
@ -367,6 +370,10 @@ showloc:
|
||||
@sloccount Tests.hs | grep haskell:
|
||||
@echo
|
||||
|
||||
showcov:
|
||||
@echo Test coverage:
|
||||
@tools/coverage report test
|
||||
|
||||
showlastreleasedate:
|
||||
@echo Last release date:
|
||||
@darcs changes --from-tag . | tail -2
|
||||
|
10
tools/coverage
Normal file
10
tools/coverage
Normal file
@ -0,0 +1,10 @@
|
||||
#!/usr/bin/env python
|
||||
# usage: hledger$ tools/coverage HPCCOMMAND HLEDGERARGS
|
||||
# A front-end for hledgercov/hpc. Resets the tix count on each invocation.
|
||||
|
||||
import sys, os
|
||||
cov="hledgercov"
|
||||
cmd, args = sys.argv[1], ' '.join(sys.argv[2:])
|
||||
os.system("rm -f %s.tix" % cov)
|
||||
os.system("./%s %s >/dev/null" % (cov,args))
|
||||
os.system("hpc %s %s" % (cmd,cov))
|
Loading…
Reference in New Issue
Block a user