@@ -149,22 +149,43 @@ ghcid-lib: ## Run ghcid for the Cabal library.
149149ghcid-cli : # # Run ghcid for the cabal-install executable.
150150 ghcid -c ' cabal repl cabal-install'
151151
152+ # doctests
153+
154+ # To find package directories that might have doctests:
155+ # $ grep --exclude generics-sop-lens.hs -E "\- >>>" **/*.hs | awk -F/ '{print $1}' | sort -u
156+ DOCTEST_PACKAGES := \
157+ Cabal \
158+ Cabal-described \
159+ Cabal-syntax \
160+ cabal-install \
161+ cabal-install-solver \
162+ cabal-testsuite
163+
164+ DOCTEST_TARGETS := $(addprefix doctest-, $(DOCTEST_PACKAGES ) )
165+
166+ doctest-% : # # Run doctests for a specific package.
167+ @echo " Running doctests for $* :"
168+ @$(DOCTEST ) $*
169+
170+ doctest-PACKAGENAME : # # Run doctests for a single package (replace PACKAGENAME).
171+ @echo ' Please use one of the following targets:'
172+ @printf " %s\n" $(DOCTEST_TARGETS )
173+
152174.PHONY : doctest
153- doctest : # # Run doctests.
154- cd Cabal-syntax && $(DOCTEST )
155- cd Cabal-described && $(DOCTEST )
156- cd Cabal && $(DOCTEST )
157- cd cabal-install-solver && $(DOCTEST )
158- cd cabal-install && $(DOCTEST )
175+ doctest : # # Run doctests in all packages.
176+ doctest : $(DOCTEST_TARGETS )
159177
160178# This is not run as part of validate.sh (we need hackage-security, which is tricky to get).
161179.PHONY : doctest-cli
162180doctest-cli :
163181 doctest -D__DOCTEST__ --fast cabal-install/src cabal-install-solver/src cabal-install-solver/src-assertion
164182
183+ # We don't use the cabal-doctest external command but we install it anyway along
184+ # with doctest.
185+ # SEE: https://github.com/haskell/cabal/issues/11493
165186.PHONY : doctest-install
166187doctest-install : # # Install doctest tool needed for running doctests.
167- cabal install doctest --overwrite-policy=always --ignore-project --flag cabal-doctest
188+ cabal install doctest-0.24.3 --overwrite-policy=always --ignore-project --flag cabal-doctest
168189
169190# tests
170191
0 commit comments