mirror of
https://github.com/simonmichael/hledger.git
synced 2024-09-18 17:57:11 +03:00
make: TESTING cleanup, more thorough and fine-grained test rules
new: warningstest hunittest doctest easytest watch-RULE renamed: allsnapshotstest -> allghcstest [ci skip]
This commit is contained in:
parent
d897bacdfe
commit
d1b9d9dfe6
194
Makefile
194
Makefile
@ -284,15 +284,6 @@ build: \
|
||||
$(call def-help,build, download dependencies and build hledger executables (with stack))
|
||||
$(STACK) build
|
||||
|
||||
# XXX currently always fails on hledger nonportable include path warning https://github.com/commercialhaskell/stack/issues/3918
|
||||
build-check-warnings: \
|
||||
$(call def-help,build-check-warnings, repeatedly build all hledger executables quickly ensuring no warnings)
|
||||
stack build --fast --force-dirty --ghc-options=-fforce-recomp --ghc-options=-Werror --file-watch
|
||||
|
||||
addons: \
|
||||
$(call def-help,addons, compile the experimental add-on commands, required for functional tests )
|
||||
bin/compile.sh
|
||||
|
||||
# check-setup: \
|
||||
# $(call def-help,check-setup,\
|
||||
# run some tests to validate the development environment\
|
||||
@ -563,100 +554,39 @@ tools/generatejournal: tools/generatejournal.hs \
|
||||
$(call def-help,tools/generatejournal, build the generatejournal tool )
|
||||
$(GHC) tools/generatejournal.hs
|
||||
|
||||
|
||||
###############################################################################
|
||||
$(call def-help-subheading,TESTING:)
|
||||
|
||||
# packdeps: \
|
||||
# $(call def-help,packdeps,\
|
||||
# run packdeps on each package to check for disallowed newer dependencies\
|
||||
# )
|
||||
# for p in $(PACKAGES); do packdeps $$p/$$p.cabal; done
|
||||
|
||||
test: pkgtest functest \
|
||||
$(call def-help,test, run default tests )
|
||||
$(call def-help,test, run default tests: package tests plus functional tests)
|
||||
|
||||
travistest: $(call def-help,travistest, run tests similar to the most thorough travis tests)
|
||||
stack clean
|
||||
stack build --ghc-options=-Werror --test --haddock --no-haddock-deps hledger-lib
|
||||
stack build --ghc-options=-Werror --test --haddock --no-haddock-deps hledger
|
||||
stack build --ghc-options=-Werror --test --haddock --no-haddock-deps hledger-ui
|
||||
stack build --ghc-options=-Werror --test --haddock --no-haddock-deps hledger-web
|
||||
stack build --ghc-options=-Werror --test --haddock --no-haddock-deps hledger-api
|
||||
sh -e bin/compile.sh
|
||||
make functest
|
||||
# When running code tests, also fail if we notice GHC warnings.
|
||||
# We don't force a rebuild of all files, so might not catch all warnings;
|
||||
# use make warningstest-watch or make allghcstest for a thorough warnings check.
|
||||
# For quieter tests add --silent. It may hide troubleshooting info.
|
||||
STACKTEST=$(STACK) test --ghc-options="$(WARNINGS) -Werror"
|
||||
|
||||
# test-ghc-%: # bin/hledgerdev.ghc-$* \
|
||||
# $(call def-help,test-ghc-%,\
|
||||
# run default tests with a specific GHC version\
|
||||
# some functional tests (add, include, read-csv..) have bin/hledgerdev hard coded - might need to symlink it\
|
||||
# )
|
||||
# @echo; echo testing hledger built with ghc-$*
|
||||
# @(echo unit tests: \
|
||||
# && bin/hledgerdev.ghc-$* test \
|
||||
# && echo functional tests: \
|
||||
# && $(SHELLTEST) tests -w bin/hledgerdev.ghc-$* \
|
||||
# && echo $@ PASSED) || echo $@ FAILED
|
||||
warningstest: $(call def-help,warningstest-watch, build all hledger executables quickly from scratch ensuring no warnings with default snapshot)
|
||||
stack build --fast --force-dirty --ghc-options=-fforce-recomp --ghc-options=-Werror
|
||||
|
||||
# test-ghcall: bin/hledgerdev.ghcall \
|
||||
# test-ghc-7.6.1 \
|
||||
# test-ghc-7.4.1 \
|
||||
# test-ghc-7.2.2 \
|
||||
# test-ghc-7.0.4 \
|
||||
# $(call def-help,test-ghcall,\
|
||||
# run default tests with all supported GHC versions\
|
||||
# )
|
||||
pkgtest: $(call def-help,pkgtest, run the test suites in each package )
|
||||
@($(STACKTEST) && echo $@ PASSED) || (echo $@ FAILED; false)
|
||||
|
||||
# codetest: unittest functest \
|
||||
# $(call def-help,codetest,\
|
||||
# quick code tests, to be run frequently\
|
||||
# )
|
||||
hunittest: $(call def-help,hunittest, run just the hunit tests in hledger-lib )
|
||||
@($(STACKTEST) hledger-lib:test:hunittests && echo $@ PASSED) || (echo $@ FAILED; false)
|
||||
|
||||
# committest: hlinttest unittest doctest functest haddocktest warningstest quickcabaltest \
|
||||
# $(call def-help,committest,\
|
||||
# more thorough pre-commit/pre-push tests\
|
||||
# )
|
||||
# doctests don't run with ghc 8.4 on mac, see package.yaml
|
||||
doctest: $(call def-help,doctest, run just the doctest tests in hledger-lib )
|
||||
@($(STACKTEST) --stack-yaml stack-ghc8.2.yaml hledger-lib:test:doctests && echo $@ PASSED) || (echo $@ FAILED; false)
|
||||
|
||||
# # releasetest: Clean unittest functest fullcabaltest haddocktest #warningstest doctest \
|
||||
# # $(call def-help,releasetest,\
|
||||
# # pre-release tests\
|
||||
# # )
|
||||
easytest: $(call def-help,easytest, run just the easytest tests in hledger-lib )
|
||||
@($(STACKTEST) hledger-lib:test:easytests && echo $@ PASSED) || (echo $@ FAILED; false)
|
||||
|
||||
# hlinttest hlint: \
|
||||
# $(call def-help,hlinttest (or hlint),\
|
||||
# generate a hlint report\
|
||||
# )
|
||||
# hlint --hint=hlint --report=hlint.html $(SOURCEFILES)
|
||||
|
||||
#@echo package tests:
|
||||
pkgtest: \
|
||||
$(call def-help,pkgtest, run the test suites for each package )
|
||||
@($(STACK) test --silent \
|
||||
&& echo $@ PASSED) || (echo $@ FAILED; false)
|
||||
|
||||
# NB ensure hledger executable is current (eg do pkgtest first)
|
||||
#@echo "built-in tests (hledger cli unit tests)":
|
||||
builtintest: \
|
||||
$(call def-help,builtintest, run tests built in to the hledger executable (these are also run by pkg tests) )
|
||||
@($(STACK) exec hledger test \
|
||||
&& echo $@ PASSED) || (echo $@ FAILED; false)
|
||||
|
||||
# builtintestghc: bin/hledgerdev \
|
||||
# $(call def-help,builtintest, run built-in unit tests with ghc build )
|
||||
# @(bin/hledgerdev test \
|
||||
# && echo $@ PASSED) || echo $@ FAILED
|
||||
|
||||
# builtintestghc-%: bin/hledgerdev \
|
||||
# $(call def-help,builtintest-PAT, run built-in unit tests whose name contains PAT )
|
||||
# @(bin/hledgerdev test $* \
|
||||
# && echo $@ PASSED) || echo $@ FAILED
|
||||
|
||||
# builtintestghc-interpreted: \
|
||||
# $(call def-help,builtintest-interpreted,\
|
||||
# run built-in unit tests without waiting for compilation\
|
||||
# )
|
||||
# @echo "builtin tests (interpreted)":
|
||||
# @(run$(GHC) $(MAIN) test \
|
||||
# && echo $@ PASSED) || echo $@ FAILED
|
||||
# NB ensure an up to date hledger executable is built (eg make hunittest).
|
||||
# I think we don't do it automatically to minimise unnecessary rebuilding.
|
||||
builtintest: $(call def-help,builtintest, run hledgers built in test command)
|
||||
@($(STACK) exec hledger test && echo $@ PASSED) || (echo $@ FAILED; false)
|
||||
|
||||
# assumes hledger is built and uses whatever build is there, avoiding excessive rebuilding
|
||||
#functest: addons tests/addons/hledger-addon
|
||||
@ -679,64 +609,43 @@ tests/addons/hledger-addon: \
|
||||
mkdir tests/addons/hledger-addondir
|
||||
chmod +x tests/addons/hledger-*
|
||||
|
||||
# DOCTESTFILES=\
|
||||
# hledger/Hledger/Cli/Tests.hs
|
||||
# doctest: tools/doctest \
|
||||
# $(call def-help,doctest,\
|
||||
# run doc tests\
|
||||
# )
|
||||
# @for f in $(DOCTESTFILES); do \
|
||||
# (tools/doctest $$f && echo $@ PASSED) || echo $@ FAILED ; done
|
||||
# hlinttest hlint: $(call def-help,hlinttest (or hlint),generate a hlint report)
|
||||
# hlint --hint=hlint --report=hlint.html $(SOURCEFILES)
|
||||
|
||||
haddocktest: \
|
||||
$(call def-help,haddocktest, run haddock and make sure it succeeds )
|
||||
@(make --quiet haddock \
|
||||
&& echo $@ PASSED) || (echo $@ FAILED; false)
|
||||
haddocktest: $(call def-help,haddocktest, run haddock and make sure it succeeds )
|
||||
@(make --quiet haddock && echo $@ PASSED) || (echo $@ FAILED; false)
|
||||
|
||||
# warningstest: \
|
||||
# $(call def-help,warningstest,\
|
||||
# make sure the normal build has no warnings XXX needs updating\
|
||||
# )
|
||||
# @(make -s clean \
|
||||
# && make --no-print-directory -s hledgernowarnings \
|
||||
# && echo $@ PASSED) || echo $@ FAILED
|
||||
cabalfiletest: $(call def-help,cabalfiletest, run cabal check to test cabal file syntax )
|
||||
@(make --no-print-directory cabalcheck && echo $@ PASSED) || (echo $@ FAILED; false)
|
||||
|
||||
cabalfiletest: \
|
||||
$(call def-help,cabalfiletest, run cabal check to test cabal file syntax )
|
||||
@(make --no-print-directory cabalcheck \
|
||||
&& echo $@ PASSED) || (echo $@ FAILED; false)
|
||||
|
||||
# quickcabaltest: \
|
||||
# $(call def-help,quickcabaltest,\
|
||||
# make sure cabal is reasonably happy\
|
||||
# )
|
||||
# @(make --no-print-directory cabalclean cabalcheck cabalconfigure \
|
||||
# && echo $@ PASSED) || echo $@ FAILED
|
||||
|
||||
# fullcabaltest: \
|
||||
# $(call def-help,fullcabaltest,\
|
||||
# make sure cabal is happy in all possible ways\
|
||||
# )
|
||||
# (for p in $(PACKAGES); do ( \
|
||||
# printf "\ntesting $$p package\n" \
|
||||
# && cd $$p \
|
||||
# && cabal clean \
|
||||
# && cabal check \
|
||||
# && $(CABALINSTALL) \
|
||||
# && cabal sdist \
|
||||
# ); done \
|
||||
# && echo $@ PASSED) || echo $@ FAILED
|
||||
# # && cabal upload dist/$$p-$(VERSION).tar.gz --check -v3 \
|
||||
|
||||
allsnapshotstest: $(call def-help,allsnapshotstest, try a build/test/bench with each supported stackage snapshot/GHC version) \
|
||||
allghcstest: $(call def-help,allghcstest, build/test/benchmark with all supported GHC versions/stackage snapshots and warning-free) \
|
||||
test-stack-ghc7.10.yaml \
|
||||
test-stack-ghc8.0.yaml \
|
||||
test-stack-ghc8.2.yaml \
|
||||
test-stack.yaml \
|
||||
|
||||
test-stack%yaml:
|
||||
stack --stack-yaml stack$*yaml clean
|
||||
stack --stack-yaml stack$*yaml --install-ghc build --test --bench --haddock --no-haddock-deps
|
||||
$(STACK) --stack-yaml stack$*yaml clean
|
||||
$(STACK) --stack-yaml stack$*yaml build --ghc-options="$(WARNINGS) -Werror" --test --bench --haddock --no-haddock-deps
|
||||
|
||||
travistest: $(call def-help,travistest, run tests similar to our travis CI tests)
|
||||
stack clean
|
||||
stack build --ghc-options=-Werror --test --haddock --no-haddock-deps hledger-lib
|
||||
stack build --ghc-options=-Werror --test --haddock --no-haddock-deps hledger
|
||||
stack build --ghc-options=-Werror --test --haddock --no-haddock-deps hledger-ui
|
||||
stack build --ghc-options=-Werror --test --haddock --no-haddock-deps hledger-web
|
||||
stack build --ghc-options=-Werror --test --haddock --no-haddock-deps hledger-api
|
||||
make functest
|
||||
|
||||
# committest: hlinttest unittest doctest functest haddocktest warningstest quickcabaltest \
|
||||
# $(call def-help,committest,more thorough pre-commit/pre-push tests)
|
||||
|
||||
# releasetest: Clean unittest functest fullcabaltest haddocktest #warningstest doctest \
|
||||
# $(call def-help,releasetest,pre-release tests)
|
||||
|
||||
|
||||
###############################################################################
|
||||
$(call def-help-subheading,BENCHMARKING:)
|
||||
|
||||
BENCHEXES=hledger
|
||||
# or, eg: BENCHEXES=ledger,hledger-1.4,hledger
|
||||
@ -1552,6 +1461,9 @@ cloc: $(call def-help,cloc, count lines of source code )
|
||||
###############################################################################
|
||||
$(call def-help-subheading,MISCELLANEOUS:)
|
||||
|
||||
watch-%: $(call def-help,watchRULE, run make RULE repeatedly when any committed file changes eg: make watch-warningstest)
|
||||
@git ls | entr -r make $*
|
||||
|
||||
Shake: Shake.hs $(call def-help,Shake, ensure the Shake script is compiled )
|
||||
./Shake.hs
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user