makefile: clean up tests, add warningstest, committest, releasetest targets
This commit is contained in:
parent
8d28850580
commit
1bc8f8430f
58
Makefile
58
Makefile
@ -37,6 +37,9 @@ default: tag hledger
|
|||||||
hledger: setversion
|
hledger: setversion
|
||||||
ghc --make hledger.hs -o hledger $(BUILDFLAGS) # -O
|
ghc --make hledger.hs -o hledger $(BUILDFLAGS) # -O
|
||||||
|
|
||||||
|
hledgernowarnings: setversion
|
||||||
|
ghc --make hledger.hs -o hledger $(BUILDFLAGS) -Werror -v0
|
||||||
|
|
||||||
# build the profiling-enabled binary. You may need to cabal install
|
# build the profiling-enabled binary. You may need to cabal install
|
||||||
# --reinstall -p some libs.
|
# --reinstall -p some libs.
|
||||||
hledgerp: setversion
|
hledgerp: setversion
|
||||||
@ -88,33 +91,56 @@ tools/generateledger: tools/generateledger.hs
|
|||||||
######################################################################
|
######################################################################
|
||||||
# TESTING
|
# TESTING
|
||||||
|
|
||||||
# run all tests
|
# quick code tests - run all the time
|
||||||
test: unittest doctest haddocktest
|
test: unittest doctest haddocktest
|
||||||
|
|
||||||
|
# moderate pre-commit tests
|
||||||
|
# run before recording or before send/pushing, your choice
|
||||||
|
committest: unittest doctest haddocktest warningstest
|
||||||
|
@(cabal configure -fvty -fhapps \
|
||||||
|
&& echo $@ passed) || echo $@ FAILED
|
||||||
|
|
||||||
|
# thorough, pre-release tests - run before release
|
||||||
|
releasetest: unittest doctest haddocktest warningstest cabaltest
|
||||||
|
@dist/build/hledger/hledger test 2>&1 | tail -1 | grep -q 'Errors: 0 Failures: 0'
|
||||||
|
|
||||||
# run unit tests, without waiting for compilation
|
# run unit tests, without waiting for compilation
|
||||||
unittest:
|
unittest:
|
||||||
runghc hledger.hs test
|
@(runghc hledger.hs test \
|
||||||
|
&& echo $@ passed) || echo $@ FAILED
|
||||||
|
|
||||||
# run doc tests
|
# run doc tests
|
||||||
doctest: tools/doctest
|
doctest: tools/doctest
|
||||||
@tools/doctest Commands/Add.hs
|
@(tools/doctest Commands/Add.hs \
|
||||||
@tools/doctest Tests.hs
|
&& tools/doctest Tests.hs \
|
||||||
|
&& echo $@ passed) || echo $@ FAILED
|
||||||
|
|
||||||
# make sure we have no haddock errors
|
# make sure we have no haddock errors
|
||||||
haddocktest:
|
haddocktest:
|
||||||
@make --quiet haddock
|
@(make --quiet haddock \
|
||||||
|
&& echo $@ passed) || echo $@ FAILED
|
||||||
|
|
||||||
|
# make sure the normal build has no warnings
|
||||||
|
warningstest:
|
||||||
|
@(make -s clean \
|
||||||
|
&& make --no-print-directory -s hledgernowarnings \
|
||||||
|
&& echo $@ passed) || echo $@ FAILED
|
||||||
|
|
||||||
|
# make sure cabal is happy in all ways
|
||||||
|
cabaltest: setversion
|
||||||
|
@(cabal clean \
|
||||||
|
&& cabal check \
|
||||||
|
&& cabal configure -fvty -fhapps \
|
||||||
|
&& cabal build \
|
||||||
|
&& echo $@ passed) || echo $@ FAILED
|
||||||
|
|
||||||
# run performance tests and save results in profs/.
|
# run performance tests and save results in profs/.
|
||||||
# Requires some tests defined in bench.tests and some executables defined above.
|
# Requires some commands defined in bench.tests and some executables defined above.
|
||||||
benchmark: sampleledgers bench.tests tools/bench
|
benchmark: sampleledgers bench.tests tools/bench
|
||||||
tools/bench -fbench.tests $(BENCHEXES) | tee profs/$(TIME).bench
|
tools/bench -fbench.tests $(BENCHEXES) | tee profs/$(TIME).bench
|
||||||
@rm -f benchresults.*
|
@rm -f benchresults.*
|
||||||
@(cd profs; rm -f latest.bench; ln -s $(TIME).bench latest.bench)
|
@(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
|
# generate, save and display a standard profile
|
||||||
prof: sampleledgers hledgerp
|
prof: sampleledgers hledgerp
|
||||||
@echo "Profiling $(PROFCMD)"
|
@echo "Profiling $(PROFCMD)"
|
||||||
@ -140,6 +166,10 @@ coverage: sampleledgers hledgercov
|
|||||||
cd profs/coverage; rm -f index.html; ln -s hpc_index.html index.html
|
cd profs/coverage; rm -f index.html; ln -s hpc_index.html index.html
|
||||||
$(VIEWHTMLCMD) profs/coverage/index.html
|
$(VIEWHTMLCMD) profs/coverage/index.html
|
||||||
|
|
||||||
|
# get a debug prompt
|
||||||
|
ghci:
|
||||||
|
ghci hledger.hs
|
||||||
|
|
||||||
# generate standard sample ledgers
|
# generate standard sample ledgers
|
||||||
sampleledgers: sample.ledger 100x100x10.ledger 1000x1000x10.ledger 10000x1000x10.ledger 100000x1000x10.ledger
|
sampleledgers: sample.ledger 100x100x10.ledger 1000x1000x10.ledger 10000x1000x10.ledger 100000x1000x10.ledger
|
||||||
|
|
||||||
@ -271,14 +301,6 @@ hoogleindex: $(MAIN)
|
|||||||
# - The cabal package uses the release version
|
# - The cabal package uses the release version
|
||||||
# - The release tag is the non-elided release version.
|
# - The release tag is the non-elided release version.
|
||||||
|
|
||||||
# run pre-release checks: cabal is happy, the code builds, tests pass..
|
|
||||||
check: setversion test
|
|
||||||
cabal clean
|
|
||||||
cabal check
|
|
||||||
cabal configure -fvty -fhapps
|
|
||||||
cabal build
|
|
||||||
dist/build/hledger/hledger test 2>&1 | tail -1 | grep -q 'Errors: 0 Failures: 0'
|
|
||||||
|
|
||||||
# Build a cabal release, tag the repo and maybe upload to hackage.
|
# Build a cabal release, tag the repo and maybe upload to hackage.
|
||||||
# Don't forget to update VERSION if needed. Examples:
|
# Don't forget to update VERSION if needed. Examples:
|
||||||
# releasing 0.5: set VERSION to 0.5, make release hackageupload
|
# releasing 0.5: set VERSION to 0.5, make release hackageupload
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user