From 033b0435993d9c6409fb5f6c49020a04925590bf Mon Sep 17 00:00:00 2001 From: Artem Pelenitsyn <a.pelenitsyn@gmail.com> Date: Thu, 28 Jul 2022 20:47:56 -0400 Subject: [PATCH] unbreak cabal haddock --disable-documentation --- .../src/Distribution/Client/CmdHaddock.hs | 3 ++- .../PackageTests/NewHaddock/DisableDoc/B/B.cabal | 12 ++++++++++++ .../PackageTests/NewHaddock/DisableDoc/B/B.hs | 8 ++++++++ .../PackageTests/NewHaddock/DisableDoc/cabal.out | 16 ++++++++++++++++ .../NewHaddock/DisableDoc/cabal.project | 1 + .../NewHaddock/DisableDoc/cabal.test.hs | 6 ++++++ .../NewHaddock/DisableDoc/repo/A-0.1.0.0/A.cabal | 11 +++++++++++ .../NewHaddock/DisableDoc/repo/A-0.1.0.0/A.hs | 4 ++++ 8 files changed, 60 insertions(+), 1 deletion(-) create mode 100644 cabal-testsuite/PackageTests/NewHaddock/DisableDoc/B/B.cabal create mode 100644 cabal-testsuite/PackageTests/NewHaddock/DisableDoc/B/B.hs create mode 100644 cabal-testsuite/PackageTests/NewHaddock/DisableDoc/cabal.out create mode 100644 cabal-testsuite/PackageTests/NewHaddock/DisableDoc/cabal.project create mode 100644 cabal-testsuite/PackageTests/NewHaddock/DisableDoc/cabal.test.hs create mode 100644 cabal-testsuite/PackageTests/NewHaddock/DisableDoc/repo/A-0.1.0.0/A.cabal create mode 100644 cabal-testsuite/PackageTests/NewHaddock/DisableDoc/repo/A-0.1.0.0/A.hs diff --git a/cabal-install/src/Distribution/Client/CmdHaddock.hs b/cabal-install/src/Distribution/Client/CmdHaddock.hs index c5bdc03f36..bfd2e8baf2 100644 --- a/cabal-install/src/Distribution/Client/CmdHaddock.hs +++ b/cabal-install/src/Distribution/Client/CmdHaddock.hs @@ -143,7 +143,8 @@ haddockAction flags@NixStyleFlags {..} targetStrings globalFlags = do runProjectPostBuildPhase verbosity baseCtx buildCtx' buildOutcomes where verbosity = fromFlagOrDefault normal (configVerbosity configFlags) - flags' = flags { installFlags = installFlags { installDocumentation = Flag True } } + installDoc = fromFlagOrDefault True (installDocumentation installFlags) + flags' = flags { installFlags = installFlags { installDocumentation = Flag installDoc } } cliConfig = commandLineFlagsToProjectConfig globalFlags flags' mempty -- ClientInstallFlags, not needed here -- | This defines what a 'TargetSelector' means for the @haddock@ command. diff --git a/cabal-testsuite/PackageTests/NewHaddock/DisableDoc/B/B.cabal b/cabal-testsuite/PackageTests/NewHaddock/DisableDoc/B/B.cabal new file mode 100644 index 0000000000..b24368c41c --- /dev/null +++ b/cabal-testsuite/PackageTests/NewHaddock/DisableDoc/B/B.cabal @@ -0,0 +1,12 @@ +cabal-version: 2.4 +name: B +version: 0.1.0.0 +author: Artem Pelenitsyn +maintainer: a.pelenitsyn@gmail.com + +library + exposed-modules: B + build-depends: base + , A + hs-source-dirs: . + default-language: Haskell2010 diff --git a/cabal-testsuite/PackageTests/NewHaddock/DisableDoc/B/B.hs b/cabal-testsuite/PackageTests/NewHaddock/DisableDoc/B/B.hs new file mode 100644 index 0000000000..09b2bc9bae --- /dev/null +++ b/cabal-testsuite/PackageTests/NewHaddock/DisableDoc/B/B.hs @@ -0,0 +1,8 @@ +-- | Module using external dependency and mentioning it in haddocks +module B (b) where + +import A + +-- | Use 'a' +b :: Int +b = a diff --git a/cabal-testsuite/PackageTests/NewHaddock/DisableDoc/cabal.out b/cabal-testsuite/PackageTests/NewHaddock/DisableDoc/cabal.out new file mode 100644 index 0000000000..8966072f81 --- /dev/null +++ b/cabal-testsuite/PackageTests/NewHaddock/DisableDoc/cabal.out @@ -0,0 +1,16 @@ +# cabal v2-update +Downloading the latest package list from test-local-repo +# cabal haddock +Resolving dependencies... +Build profile: -w ghc-<GHCVER> -O1 +In order, the following will be built: + - A-0.1.0.0 (lib) (requires build) + - B-0.1.0.0 (lib) (first run) +Configuring library for A-0.1.0.0.. +Preprocessing library for A-0.1.0.0.. +Building library for A-0.1.0.0.. +Installing library in <PATH> +Configuring library for B-0.1.0.0.. +Preprocessing library for B-0.1.0.0.. +Running Haddock on library for B-0.1.0.0.. +Documentation created: <ROOT>/cabal.dist/work/dist/build/<ARCH>/ghc-<GHCVER>/B-0.1.0.0/doc/html/B/index.html diff --git a/cabal-testsuite/PackageTests/NewHaddock/DisableDoc/cabal.project b/cabal-testsuite/PackageTests/NewHaddock/DisableDoc/cabal.project new file mode 100644 index 0000000000..b44e895f5f --- /dev/null +++ b/cabal-testsuite/PackageTests/NewHaddock/DisableDoc/cabal.project @@ -0,0 +1 @@ +packages: B diff --git a/cabal-testsuite/PackageTests/NewHaddock/DisableDoc/cabal.test.hs b/cabal-testsuite/PackageTests/NewHaddock/DisableDoc/cabal.test.hs new file mode 100644 index 0000000000..d7d58cdb3f --- /dev/null +++ b/cabal-testsuite/PackageTests/NewHaddock/DisableDoc/cabal.test.hs @@ -0,0 +1,6 @@ +import Test.Cabal.Prelude +-- Test that `cabal haddock --disable-documention` works as expected and leads +-- to a warning if a local package makes an outer reference. +main = cabalTest . withRepo "repo" $ do + r <- cabal' "haddock" ["--disable-documentation", "B"] + assertOutputContains "Warning: B: could not find link destinations for" r diff --git a/cabal-testsuite/PackageTests/NewHaddock/DisableDoc/repo/A-0.1.0.0/A.cabal b/cabal-testsuite/PackageTests/NewHaddock/DisableDoc/repo/A-0.1.0.0/A.cabal new file mode 100644 index 0000000000..98dae175ec --- /dev/null +++ b/cabal-testsuite/PackageTests/NewHaddock/DisableDoc/repo/A-0.1.0.0/A.cabal @@ -0,0 +1,11 @@ +cabal-version: 2.4 +name: A +version: 0.1.0.0 +author: Artem Pelenitsyn +maintainer: a.pelenitsyn@gmail.com + +library + exposed-modules: A + build-depends: base + hs-source-dirs: . + default-language: Haskell2010 diff --git a/cabal-testsuite/PackageTests/NewHaddock/DisableDoc/repo/A-0.1.0.0/A.hs b/cabal-testsuite/PackageTests/NewHaddock/DisableDoc/repo/A-0.1.0.0/A.hs new file mode 100644 index 0000000000..3a21f41365 --- /dev/null +++ b/cabal-testsuite/PackageTests/NewHaddock/DisableDoc/repo/A-0.1.0.0/A.hs @@ -0,0 +1,4 @@ +module A (a) where + +a :: Int +a = 42 -- GitLab