diff --git a/README.md b/README.md
deleted file mode 100644
--- a/README.md
+++ /dev/null
@@ -1,249 +0,0 @@
-# hpack-dhall
-
-[![Build Status](https://travis-ci.org/BlockScope/hpack-dhall.svg)](https://travis-ci.org/BlockScope/hpack-dhall)
-[![hackage release](https://img.shields.io/hackage/v/hpack-dhall.svg?label=hackage)](http://hackage.haskell.org/package/hpack-dhall)
-[![Dependencies of latest version on Hackage](https://img.shields.io/hackage-deps/v/hpack-dhall.svg)](https://hackage.haskell.org/package/hpack-dhall)
-
-**H**askell **pack**age descriptions in [**Dhall**](https://github.com/dhall-lang/dhall-lang).
-
-This package named `hpack-dhall` as described in
-[`package.dhall`](https://github.com/sol/hpack-dhall/blob/master/package.dhall).
-
-```
-{ name =
-    "hpack-dhall"
-...
-, library =
-    { exposed-modules = "Hpack.Dhall" }
-, executables =
-    { dhall-hpack-cabal = ...
-    , dhall-hpack-json = ...
-    , dhall-hpack-yaml = ...
-    , dhall-hpack-dhall = ...
-    }
-}
-```
-
-This `.cabal` creating executable can be run over its own package description;
-
-```
-> stack install --stack-yaml=stack-8.4.4.yaml
-...
-Copied executables to /.../hpack-dhall/__bin:
-- dhall-hpack-cabal
-- dhall-hpack-dhall
-- dhall-hpack-json
-- dhall-hpack-yaml
-
-> __bin/dhall-hpack-cabal package.dhall
-hpack-dhall.cabal is up-to-date
-
-> __bin/dhall-hpack-cabal --force package.dhall
-generated hpack-dhall.cabal
-```
-
-Using one of the golden tests for example, there are executables to show the
-dhall with the imports made as well as json and yaml equivalents;
-```
-> __bin/dhall-hpack-dhall test/golden/hpack-dhall-cabal/empty-package.dhall
-{ name = "empty-package" }
-
-> __bin/dhall-hpack-json test/golden/hpack-dhall-cabal/empty-package.dhall
-{
-    "name": "empty-package"
-}
-
-> __bin/dhall-hpack-yaml test/golden/hpack-dhall-cabal/empty-package.dhall
-name: empty-package
-```
-
-By going from [hpack package
-fields](https://github.com/sol/hpack#top-level-fields) to [cabal package
-properties](https://www.haskell.org/cabal/users-guide/developing-packages.html#package-properties),
-we are not required to state what can be inferred or defaulted, easing the
-burden of completing a package description by hand.  For example
-`other-modules` can be inferred by taking the set difference between modules on
-disk and the set of `exposed-modules`.
-
-By using an hpack-like Dhall dialect here rather than the
-[YAML](https://en.wikipedia.org/wiki/YAML) of hpack we're able to;
-
-* Add types to the fields.
-* Safely import from other `*.dhall` files.
-* Use functions.
-
-## Imports and Functions
-
-With this safer and more capable alternative input format for hpack, we're able
-to simply describe the package and by using imports and functions we can do
-more such as configuring linting;
-
-```
-> cat default-extensions.dhall
-{ default-extensions =
-    [ "DataKinds"
-    , "DeriveFunctor"
-    ...
-    , "TupleSections"
-    , "UndecidableInstances"
-    ]
-}
-
-> cat hlint.dhall
-    let Prelude/List/map =
-          https://raw.githubusercontent.com/dhall-lang/Prelude/35deff0d41f2bf86c42089c6ca16665537f54d75/List/map
-
-in  let defs = ./default-extensions.dhall
-
-in  let f = λ(s : Text) → "-X" ++ s
-
-in  { arguments = Prelude/List/map Text Text f defs.default-extensions }
-
-> dhall-to-yaml < ./hlint.dhall > ./.hlint.yaml
-
-> cat .hlint.yaml
-arguments:
-- -XDataKinds
-- -XDeriveFunctor
-...
-- -XTupleSections
-- -XUndecidableInstances
-```
-
-We can pull those same `default-extensions` into a package description;
-
-```
-> cat package.dhall
-    let defs = ./defaults.dhall
-
-in    defs
-    ⫽ ./default-extensions.dhall
-    ⫽ { name =
-          "flight-units"
-    ...
-      , github =
-          "blockscope/flare-timing/units"
-    ...
-      , dependencies =
-            defs.dependencies
-          # [ "numbers"
-            , "fixed"
-            , "bifunctors"
-            , "text"
-            , "formatting"
-            , "uom-plugin"
-            , "siggy-chardust"
-            ]
-    ...
-      }
-```
-
-## Formatting
-
-We can consistently format `package.dhall` and other `*.dhall` imports using
-`dhall`;
-
-```
-> stack install dhall --stack-yaml=stack-dhall.yaml
-> __bin/dhall format --inplace package.dhall
-```
-
-## Restrictions
-
-Using hpack's [conditionals](https://github.com/sol/hpack#conditionals) in
-a list in `package.dhall` can cause an error because lists in Dhall must have
-elements of the same type;
-
-From stack's `package.yaml`;
-```
-executables:
-  stack:
-    main: Main.hs
-    source-dirs: src/main
-    generated-other-modules:
-    - Build_stack
-    - Paths_stack
-    ghc-options:
-    - -threaded
-    - -rtsopts
-    dependencies:
-    - stack
-    when:
-    - condition: flag(static)
-      ld-options:
-      - -static
-      - -pthread
-    - condition: ! '!(flag(disable-git-info))'
-      cpp-options: -DUSE_GIT_INFO
-      dependencies:
-      - githash
-      - optparse-simple
-    - condition: flag(hide-dependency-versions)
-      cpp-options: -DHIDE_DEP_VERSIONS
-    - condition: flag(supported-build)
-      cpp-options: -DSUPPORTED_BUILD
-```
-
-This can be represented in `package.dhall` as;
-```
-, executables =
-    { stack =
-        { main =
-            "Main.hs"
-        , source-dirs =
-            [ "src/main" ]
-        , generated-other-modules =
-            [ "Build_stack", "Paths_stack" ]
-        , ghc-options =
-            [ "-threaded", "-rtsopts" ]
-        , dependencies =
-            [ "stack" ]
-        , when =
-            [ { condition =
-                  "flag(static)"
-              , cpp-options =
-                  [] : List Text
-              , dependencies =
-                  [] : List Text
-              , ld-options =
-                  [ "-static", "-pthread" ]
-              }
-            , { condition =
-                  "!(flag(disable-git-info))"
-              , cpp-options =
-                  [ "-DUSE_GIT_INFO" ]
-              , dependencies =
-                  [ "githash", "optparse-simple" ]
-              , ld-options =
-                  [] : List Text
-              }
-            , { condition =
-                  "flag(hide-dependency-versions)"
-              , cpp-options =
-                  [ "-DHIDE_DEP_VERSIONS" ]
-              , dependencies =
-                  [] : List Text
-              , ld-options =
-                  [] : List Text
-              }
-            , { condition =
-                  "flag(supported-build)"
-              , cpp-options =
-                  [ "-DSUPPORTED_BUILD" ]
-              , dependencies =
-                  [] : List Text
-              , ld-options =
-                  [] : List Text
-              }
-            ]
-        }
-    }
-```
-
-### Continuous Integration
-
-With haskell-ci tooling installed, generate the `.travis.yml` setup with;
-```
-> haskell-ci --output=.travis.yml --config=cabal.haskell-ci hpack-dhall.cabal
-*INFO* Generating Travis-CI config for testing for GHC versions: 8.2.2 8.4.3 8.4.4 8.6.3
-```
diff --git a/changelog.md b/changelog.md
--- a/changelog.md
+++ b/changelog.md
@@ -1,5 +1,34 @@
 The [latest version](https://github.com/blockscope/hpack-dhall/blob/master/changelog.md) of this changelog.
 
+## 0.5.3 - Rewrite the README
+* Rewrite the README, making it shorter and splitting some details about more
+  uses and building into separate docs.
+* Require `hpack >= 0.34.4`:
+  ```diff
+  $ dhall-hpack-cabal --version
+  -dhall-hpack-cabal-0.5.2
+  -hpack-0.34.2
+  +dhall-hpack-cabal-0.5.3
+  +hpack-0.34.4
+  ```
+* Require `base >= 4.13`, implying `GHC >= 8.8.4`.
+* Test with GHC `8.8.4` and `8.10.4`.
+* Add files for different stack GHC versions.
+  ```
+  $ stack build --stack-yaml=stack/stack-8.8.4.yaml
+  $ stack build --stack-yaml=stack/stack-8.10.4.yaml
+  $ stack build --stack-yaml=stack/stack-9.0.1.yaml
+  ```
+* Remove the travis script and update github scripts with:
+  ```diff
+  - - uses: actions/setup-haskell@v1
+  + - uses: haskell/actions/setup@v1
+
+  - - uses: actions/cache@v1
+  + - uses: actions/cache@v2
+  ```
+* Remove stale nix-related files.
+
 ## 0.5.2 - Consistent Golden Tests
 * Use explicit dependencies to achieve consistent golden tests in all but
   stack-8.6.3.yaml.
diff --git a/exe/dhall-hpack-cabal/CabalMain.hs b/exe/dhall-hpack-cabal/CabalMain.hs
--- a/exe/dhall-hpack-cabal/CabalMain.hs
+++ b/exe/dhall-hpack-cabal/CabalMain.hs
@@ -5,7 +5,6 @@
 
 import Paths_hpack_dhall (version)
 import Data.Version (showVersion)
-import Data.Monoid ((<>))
 import Data.Foldable (asum)
 import qualified Options.Applicative as O
 import Options
diff --git a/exe/dhall-hpack-dhall/DhallMain.hs b/exe/dhall-hpack-dhall/DhallMain.hs
--- a/exe/dhall-hpack-dhall/DhallMain.hs
+++ b/exe/dhall-hpack-dhall/DhallMain.hs
@@ -4,7 +4,6 @@
 
 import Paths_hpack_dhall (version)
 import Data.Version (showVersion)
-import Data.Monoid ((<>))
 import Data.Foldable (asum)
 import qualified Options.Applicative as O
 import Options (Options(..), parseOptions, parseNumericVersion, parseVersion)
diff --git a/exe/dhall-hpack-json/JsonMain.hs b/exe/dhall-hpack-json/JsonMain.hs
--- a/exe/dhall-hpack-json/JsonMain.hs
+++ b/exe/dhall-hpack-json/JsonMain.hs
@@ -4,7 +4,6 @@
 
 import Paths_hpack_dhall (version)
 import Data.Version (showVersion)
-import Data.Monoid ((<>))
 import Data.Foldable (asum)
 import qualified Options.Applicative as O
 import Options (Options(..), parseOptions, parseNumericVersion, parseVersion)
diff --git a/exe/dhall-hpack-yaml/YamlMain.hs b/exe/dhall-hpack-yaml/YamlMain.hs
--- a/exe/dhall-hpack-yaml/YamlMain.hs
+++ b/exe/dhall-hpack-yaml/YamlMain.hs
@@ -4,7 +4,6 @@
 
 import Paths_hpack_dhall (version)
 import Data.Version (showVersion)
-import Data.Monoid ((<>))
 import Data.Foldable (asum)
 import qualified Options.Applicative as O
 import Options (Options(..), parseOptions, parseNumericVersion, parseVersion)
diff --git a/exe/options/Options.hs b/exe/options/Options.hs
--- a/exe/options/Options.hs
+++ b/exe/options/Options.hs
@@ -11,7 +11,6 @@
     , parseQuiet
     ) where
 
-import Data.Monoid ((<>))
 import Hpack.Dhall (packageConfig)
 import Options.Applicative
 
diff --git a/hpack-dhall.cabal b/hpack-dhall.cabal
--- a/hpack-dhall.cabal
+++ b/hpack-dhall.cabal
@@ -1,22 +1,23 @@
 cabal-version: 1.12
 
--- This file has been generated from package.dhall by hpack version 0.31.1.
+-- This file has been generated from package.dhall by hpack version 0.34.4.
 --
 -- see: https://github.com/sol/hpack
---
--- hash: 98b50eed37278c62f016933a31bdfb02a687ae915796045d96e6357a4a826acb
 
 name:           hpack-dhall
-version:        0.5.2
+version:        0.5.3
 synopsis:       hpack's dhalling
-description:    Work with hpack's top-level
-                <https://github.com/sol/hpack#top-level-fields fields> in a Dhall
-                record with the following executables;
+description:    Use hpack phrasing in dhall to write cabal files.
                 .
-                * with @dhall-hpack-cabal@ write the @.cabal@ for a @.dhall@ package description.
-                * with @dhall-hpack-dhall@ show the package description expression, with imports resolved.
-                * with @dhall-hpack-json@ show the package description as JSON.
-                * with @dhall-hpack-yaml@ show the package description as YAML.
+                There are two main reasons why you'd use hpack-dhall, convenience and safety.
+                .
+                Get the convenience of hpack. Don't bother to state what can be inferred or
+                defaulted, easing the burden of completing a package description by hand.  For
+                example `other-modules` can be inferred by taking the set difference between
+                modules on disk and the set of `exposed-modules`.
+                .
+                Get the safety of dhall's programmable configuration: typed fields, safe imports
+                and functions.
 category:       Development
 homepage:       https://github.com/blockscope/hpack-dhall#readme
 bug-reports:    https://github.com/blockscope/hpack-dhall/issues
@@ -24,79 +25,86 @@
 copyright:      © 2018 Phil de Joux, © 2018 Block Scope Limited
 license:        BSD3
 license-file:   LICENSE
-tested-with:    GHC == 8.2.2, GHC == 8.4.3, GHC == 8.4.4, GHC == 8.6.3
 build-type:     Simple
+tested-with:
+    GHC == 8.8.4, GHC == 8.10.4
 extra-source-files:
     package.dhall
     changelog.md
-    README.md
-    test/golden/test-files/key/empty-inferred/package.dhall
-    test/golden/test-files/key/empty-package.dhall
-    test/golden/test-files/key/import-local/package.dhall
-    test/golden/test-files/key/import-relative/package.dhall
-    test/golden/test-files/key/when-dependencies.dhall
-    test/golden/test-files/real-world/hpack/hpack.dhall
-    test/golden/test-files/real-world/stack/stack.dhall
-    test/golden/test-files/key/import-local/name.dhl
-    test/golden/test-files/key/import-relative.dhl
-    test/golden/test-files/key/empty-inferred/empty-inferred.cabal
-    test/golden/test-files/key/empty-inferred/package.yaml.cabal
-    test/golden/test-files/key/empty-package.cabal
-    test/golden/test-files/key/empty-package.yaml.cabal
-    test/golden/test-files/key/import-local/import-local.cabal
-    test/golden/test-files/key/import-local/package.yaml.cabal
-    test/golden/test-files/key/import-relative/import-relative.cabal
-    test/golden/test-files/key/import-relative/package.yaml.cabal
-    test/golden/test-files/key/when-dependencies.cabal
-    test/golden/test-files/key/when-dependencies.yaml.cabal
-    test/golden/test-files/real-world/hpack/hpack.cabal
-    test/golden/test-files/real-world/hpack/hpack.yaml.cabal
-    test/golden/test-files/real-world/stack/stack.cabal
-    test/golden/test-files/real-world/stack/stack.yaml.cabal
-    test/golden/test-files/key/empty-inferred/package.json
-    test/golden/test-files/key/empty-package.json
-    test/golden/test-files/key/import-local/package.json
-    test/golden/test-files/key/import-relative/package.json
-    test/golden/test-files/key/when-dependencies.json
-    test/golden/test-files/real-world/hpack/hpack.json
-    test/golden/test-files/real-world/stack/stack.json
-    test/golden/test-files/key/empty-inferred/package.yaml
-    test/golden/test-files/key/empty-package.yaml
-    test/golden/test-files/key/import-local/package.yaml
-    test/golden/test-files/key/import-relative/package.yaml
-    test/golden/test-files/key/when-dependencies.yaml
-    test/golden/test-files/real-world/hpack/hpack.yaml
-    test/golden/test-files/real-world/hpack/package.yaml
-    test/golden/test-files/real-world/stack/package.yaml
-    test/golden/test-files/real-world/stack/stack.yaml
-    test/golden/test-files/key/empty-inferred/empty-inferred.cabal.golden
-    test/golden/test-files/key/empty-inferred/package.dhall.golden
-    test/golden/test-files/key/empty-inferred/package.json.golden
-    test/golden/test-files/key/empty-inferred/package.yaml.golden
-    test/golden/test-files/key/empty-package.cabal.golden
-    test/golden/test-files/key/empty-package.dhall.golden
-    test/golden/test-files/key/empty-package.json.golden
-    test/golden/test-files/key/empty-package.yaml.golden
-    test/golden/test-files/key/import-local/import-local.cabal.golden
-    test/golden/test-files/key/import-local/package.dhall.golden
-    test/golden/test-files/key/import-local/package.json.golden
-    test/golden/test-files/key/import-local/package.yaml.golden
-    test/golden/test-files/key/import-relative/import-relative.cabal.golden
-    test/golden/test-files/key/import-relative/package.dhall.golden
-    test/golden/test-files/key/import-relative/package.json.golden
-    test/golden/test-files/key/import-relative/package.yaml.golden
-    test/golden/test-files/key/when-dependencies.cabal.golden
-    test/golden/test-files/key/when-dependencies.dhall.golden
-    test/golden/test-files/key/when-dependencies.json.golden
-    test/golden/test-files/key/when-dependencies.yaml.golden
-    test/golden/test-files/real-world/hpack/hpack.cabal.golden
-    test/golden/test-files/real-world/hpack/hpack.dhall.golden
-    test/golden/test-files/real-world/hpack/hpack.json.golden
-    test/golden/test-files/real-world/hpack/hpack.yaml.golden
-    test/golden/test-files/real-world/stack/stack.cabal.golden
-    test/golden/test-files/real-world/stack/stack.dhall.golden
-    test/golden/test-files/real-world/stack/stack.json.golden
-    test/golden/test-files/real-world/stack/stack.yaml.golden
+    test-suite-golden/test-files/key/empty-inferred/package.dhall
+    test-suite-golden/test-files/key/empty-package.dhall
+    test-suite-golden/test-files/key/import-local/package.dhall
+    test-suite-golden/test-files/key/import-relative/package.dhall
+    test-suite-golden/test-files/key/when-dependencies.dhall
+    test-suite-golden/test-files/real-world/hpack/hpack.dhall
+    test-suite-golden/test-files/real-world/stack/stack.dhall
+    test-suite-golden/test-files/key/import-local/name.dhl
+    test-suite-golden/test-files/key/import-relative.dhl
+    test-suite-golden/test-files/key/empty-inferred/empty-inferred.cabal
+    test-suite-golden/test-files/key/empty-inferred/package.yaml.cabal
+    test-suite-golden/test-files/key/empty-package.cabal
+    test-suite-golden/test-files/key/empty-package.yaml.cabal
+    test-suite-golden/test-files/key/import-local/import-local.cabal
+    test-suite-golden/test-files/key/import-local/package.yaml.cabal
+    test-suite-golden/test-files/key/import-relative/import-relative.cabal
+    test-suite-golden/test-files/key/import-relative/package.yaml.cabal
+    test-suite-golden/test-files/key/when-dependencies.cabal
+    test-suite-golden/test-files/key/when-dependencies.yaml.cabal
+    test-suite-golden/test-files/real-world/hpack/hpack.cabal
+    test-suite-golden/test-files/real-world/hpack/hpack.yaml.cabal
+    test-suite-golden/test-files/real-world/stack/stack.cabal
+    test-suite-golden/test-files/real-world/stack/stack.yaml.cabal
+    test-suite-golden/test-files/key/empty-inferred/package.json
+    test-suite-golden/test-files/key/empty-package.json
+    test-suite-golden/test-files/key/import-local/package.json
+    test-suite-golden/test-files/key/import-relative/package.json
+    test-suite-golden/test-files/key/when-dependencies.json
+    test-suite-golden/test-files/real-world/hpack/hpack.json
+    test-suite-golden/test-files/real-world/stack/stack.json
+    test-suite-golden/test-files/key/empty-inferred/package.yaml
+    test-suite-golden/test-files/key/empty-package.yaml
+    test-suite-golden/test-files/key/import-local/package.yaml
+    test-suite-golden/test-files/key/import-relative/package.yaml
+    test-suite-golden/test-files/key/when-dependencies.yaml
+    test-suite-golden/test-files/real-world/hpack/hpack.yaml
+    test-suite-golden/test-files/real-world/hpack/package.yaml
+    test-suite-golden/test-files/real-world/stack/package.yaml
+    test-suite-golden/test-files/real-world/stack/stack.yaml
+    test-suite-golden/test-files/key/empty-inferred/empty-inferred.cabal.golden
+    test-suite-golden/test-files/key/empty-inferred/package.dhall-1.32.golden
+    test-suite-golden/test-files/key/empty-inferred/package.dhall-1.34.golden
+    test-suite-golden/test-files/key/empty-inferred/package.json.golden
+    test-suite-golden/test-files/key/empty-inferred/package.yaml.golden
+    test-suite-golden/test-files/key/empty-package.cabal.golden
+    test-suite-golden/test-files/key/empty-package.dhall-1.32.golden
+    test-suite-golden/test-files/key/empty-package.dhall-1.34.golden
+    test-suite-golden/test-files/key/empty-package.json.golden
+    test-suite-golden/test-files/key/empty-package.yaml.golden
+    test-suite-golden/test-files/key/import-local/import-local.cabal.golden
+    test-suite-golden/test-files/key/import-local/package.dhall-1.32.golden
+    test-suite-golden/test-files/key/import-local/package.dhall-1.34.golden
+    test-suite-golden/test-files/key/import-local/package.json.golden
+    test-suite-golden/test-files/key/import-local/package.yaml.golden
+    test-suite-golden/test-files/key/import-relative/import-relative.cabal.golden
+    test-suite-golden/test-files/key/import-relative/package.dhall-1.32.golden
+    test-suite-golden/test-files/key/import-relative/package.dhall-1.34.golden
+    test-suite-golden/test-files/key/import-relative/package.json.golden
+    test-suite-golden/test-files/key/import-relative/package.yaml.golden
+    test-suite-golden/test-files/key/when-dependencies.cabal.golden
+    test-suite-golden/test-files/key/when-dependencies.dhall-1.32.golden
+    test-suite-golden/test-files/key/when-dependencies.dhall-1.34.golden
+    test-suite-golden/test-files/key/when-dependencies.json.golden
+    test-suite-golden/test-files/key/when-dependencies.yaml.golden
+    test-suite-golden/test-files/real-world/hpack/hpack.cabal.golden
+    test-suite-golden/test-files/real-world/hpack/hpack.dhall-1.32.golden
+    test-suite-golden/test-files/real-world/hpack/hpack.dhall-1.34.golden
+    test-suite-golden/test-files/real-world/hpack/hpack.json.golden
+    test-suite-golden/test-files/real-world/hpack/hpack.yaml.golden
+    test-suite-golden/test-files/real-world/stack/stack.cabal.golden
+    test-suite-golden/test-files/real-world/stack/stack.dhall-1.32.golden
+    test-suite-golden/test-files/real-world/stack/stack.dhall-1.34.golden
+    test-suite-golden/test-files/real-world/stack/stack.json.golden
+    test-suite-golden/test-files/real-world/stack/stack.yaml.golden
 
 source-repository head
   type: git
@@ -110,17 +118,17 @@
       Paths_hpack_dhall
   hs-source-dirs:
       library
-  ghc-options: -Wall
+  ghc-options: -Wall -Wincomplete-uni-patterns -Wcompat -Widentities -Wredundant-constraints -fhide-source-paths
   build-depends:
       aeson
     , aeson-pretty
-    , base ==4.*
+    , base >=4.13 && <5
     , bytestring
-    , dhall >=1.18.0
-    , dhall-json >=1.2.4
+    , dhall
+    , dhall-json
     , filepath
-    , hpack >=0.31.0
-    , megaparsec >=7.0.1
+    , hpack >=0.34.4
+    , megaparsec
     , microlens
     , prettyprinter
     , text
@@ -139,18 +147,18 @@
       library
       exe/options
       exe/dhall-hpack-cabal
-  ghc-options: -Wall
+  ghc-options: -Wall -Wincomplete-uni-patterns -Wcompat -Widentities -Wredundant-constraints -fhide-source-paths
   build-depends:
       aeson
     , aeson-pretty
-    , base ==4.*
+    , base >=4.13 && <5
     , bytestring
-    , dhall >=1.18.0
-    , dhall-json >=1.2.4
+    , dhall
+    , dhall-json
     , filepath
-    , hpack >=0.31.0
+    , hpack >=0.34.4
     , hpack-dhall
-    , megaparsec >=7.0.1
+    , megaparsec
     , microlens
     , optparse-applicative
     , prettyprinter
@@ -170,18 +178,18 @@
       library
       exe/options
       exe/dhall-hpack-dhall
-  ghc-options: -Wall
+  ghc-options: -Wall -Wincomplete-uni-patterns -Wcompat -Widentities -Wredundant-constraints -fhide-source-paths
   build-depends:
       aeson
     , aeson-pretty
-    , base ==4.*
+    , base >=4.13 && <5
     , bytestring
-    , dhall >=1.18.0
-    , dhall-json >=1.2.4
+    , dhall
+    , dhall-json
     , filepath
-    , hpack >=0.31.0
+    , hpack >=0.34.4
     , hpack-dhall
-    , megaparsec >=7.0.1
+    , megaparsec
     , microlens
     , optparse-applicative
     , prettyprinter
@@ -201,18 +209,18 @@
       library
       exe/options
       exe/dhall-hpack-json
-  ghc-options: -Wall
+  ghc-options: -Wall -Wincomplete-uni-patterns -Wcompat -Widentities -Wredundant-constraints -fhide-source-paths
   build-depends:
       aeson
     , aeson-pretty
-    , base ==4.*
+    , base >=4.13 && <5
     , bytestring
-    , dhall >=1.18.0
-    , dhall-json >=1.2.4
+    , dhall
+    , dhall-json
     , filepath
-    , hpack >=0.31.0
+    , hpack >=0.34.4
     , hpack-dhall
-    , megaparsec >=7.0.1
+    , megaparsec
     , microlens
     , optparse-applicative
     , prettyprinter
@@ -232,18 +240,18 @@
       library
       exe/options
       exe/dhall-hpack-yaml
-  ghc-options: -Wall
+  ghc-options: -Wall -Wincomplete-uni-patterns -Wcompat -Widentities -Wredundant-constraints -fhide-source-paths
   build-depends:
       aeson
     , aeson-pretty
-    , base ==4.*
+    , base >=4.13 && <5
     , bytestring
-    , dhall >=1.18.0
-    , dhall-json >=1.2.4
+    , dhall
+    , dhall-json
     , filepath
-    , hpack >=0.31.0
+    , hpack >=0.34.4
     , hpack-dhall
-    , megaparsec >=7.0.1
+    , megaparsec
     , microlens
     , optparse-applicative
     , prettyprinter
@@ -261,8 +269,8 @@
       Paths_hpack_dhall
   hs-source-dirs:
       library
-      test/golden/src
-  ghc-options: -Wall
+      test-suite-golden/src
+  ghc-options: -Wall -Wincomplete-uni-patterns -Wcompat -Widentities -Wredundant-constraints -fhide-source-paths
   build-depends:
       Cabal
     , Diff
@@ -283,5 +291,35 @@
     , text
     , transformers
     , utf8-string
+    , yaml
+  default-language: Haskell2010
+
+test-suite hlint
+  type: exitcode-stdio-1.0
+  main-is: HLint.hs
+  other-modules:
+      Hpack.Dhall
+      Hpack.Fields
+      Paths_hpack_dhall
+  hs-source-dirs:
+      library
+      exe
+      test-suite-hlint
+  ghc-options: -Wall -Wincomplete-uni-patterns -Wcompat -Widentities -Wredundant-constraints -fhide-source-paths -rtsopts -threaded -with-rtsopts=-N
+  build-depends:
+      aeson
+    , aeson-pretty
+    , base >=4.13 && <5
+    , bytestring
+    , dhall
+    , dhall-json
+    , filepath
+    , hlint
+    , hpack >=0.34.4
+    , megaparsec
+    , microlens
+    , prettyprinter
+    , text
+    , transformers
     , yaml
   default-language: Haskell2010
diff --git a/library/Hpack/Dhall.hs b/library/Hpack/Dhall.hs
--- a/library/Hpack/Dhall.hs
+++ b/library/Hpack/Dhall.hs
@@ -25,6 +25,7 @@
     , packageConfig
     ) where
 
+import Data.Void (Void)
 import Data.Maybe (fromMaybe)
 import Data.Function ((&))
 import Lens.Micro ((^.), set)
@@ -46,7 +47,7 @@
 import Dhall.Core (Expr)
 import Dhall.Parser (Src, exprFromText)
 import Dhall.Import (loadWith, emptyStatus)
-import Dhall.TypeCheck (X, typeOf)
+import Dhall.TypeCheck (typeOf)
 import Dhall.JSON (dhallToJSON)
 import Dhall.Pretty (prettyExpr, layoutOpts)
 import qualified Data.Text.Prettyprint.Doc as PP
@@ -133,13 +134,13 @@
         liftResult :: (Show b, Monad m) => Either b a -> ExceptT String m a
         liftResult = ExceptT . return . first show
 
-check :: InputSettings -> Text -> IO (Expr Src X)
+check :: InputSettings -> Text -> IO (Expr Src Void)
 check settings text = do
     expr <- either throwIO return $ exprFromText mempty text
     State.evalStateT (loadWith expr) (emptyStatus $ settings ^. rootDirectory)
 
 -- SEE: https://github.com/mstksg/hakyll-dhall
-renderDhall :: (PP.Pretty a, Eq a) => Expr Src a -> T.Text
+renderDhall :: PP.Pretty a => Expr Src a -> T.Text
 renderDhall =
     PP.renderStrict
     . PP.layoutSmart layoutOpts
diff --git a/library/Hpack/Fields.hs b/library/Hpack/Fields.hs
--- a/library/Hpack/Fields.hs
+++ b/library/Hpack/Fields.hs
@@ -36,7 +36,7 @@
             ]
 
 -- | All <https://github.com/sol/hpack#top-level-fields top-level> fields combined.
-topLevelFields :: (Ord a, IsString a) => [a]
+topLevelFields :: IsString a => [a]
 topLevelFields =
     headerFields
     ++ repoFields
@@ -46,7 +46,7 @@
 
 -- | The header subset of
 -- <https://github.com/sol/hpack#top-level-fields top-level> fields.
-headerFields :: (Ord a, IsString a) => [a]
+headerFields :: IsString a => [a]
 headerFields =
     [ "spec-version"
     , "name"
@@ -69,7 +69,7 @@
 
 -- | The package subset of
 -- <https://github.com/sol/hpack#top-level-fields top-level> fields.
-packageFields :: (Ord a, IsString a) => [a]
+packageFields :: IsString a => [a]
 packageFields =
     [ "extra-source-files"
     , "extra-doc-files"
@@ -79,7 +79,7 @@
 
 -- | The source repository subset of
 -- <https://github.com/sol/hpack#top-level-fields top-level> fields.
-repoFields :: (Ord a, IsString a) => [a]
+repoFields :: IsString a => [a]
 repoFields =
     [ "github"
     , "git"
@@ -87,7 +87,7 @@
 
 -- | The stanzas subset of
 -- <https://github.com/sol/hpack#top-level-fields top-level> fields.
-stanzasFields :: (Ord a, IsString a) => [a]
+stanzasFields :: IsString a => [a]
 stanzasFields =
     [ "custom-setup"
     , "flags"
@@ -101,7 +101,7 @@
     ]
 
 -- | The <https://github.com/sol/hpack#common-fields common> fields.
-commonFields :: (Ord a, IsString a) => [a]
+commonFields :: IsString a => [a]
 commonFields =
     [ "buildable"
     , "source-dirs"
@@ -132,7 +132,7 @@
 
 
 -- | The <https://github.com/sol/hpack#library-fields library> fields.
-libraryFields :: (Ord a, IsString a) => [a]
+libraryFields :: IsString a => [a]
 libraryFields =
     [ "exposed"
     , "exposed-modules"
@@ -147,7 +147,7 @@
 -- <https://github.com/sol/hpack#test-fields test> and
 -- <https://github.com/sol/hpack#benchmark-fields benchmark> fields are all the
 -- same.
-runnableFields :: (Ord a, IsString a) => [a]
+runnableFields :: IsString a => [a]
 runnableFields =
     [ "main"
     , "other-modules"
@@ -155,7 +155,7 @@
     ]
 
 -- | The <https://github.com/sol/hpack#flags flag> fields.
-flagFields :: (Ord a, IsString a) => [a]
+flagFields :: IsString a => [a]
 flagFields =
     [ "description"
     , "manual"
@@ -163,7 +163,7 @@
     ]
 
 -- | The <https://github.com/sol/hpack#-conditionals conditional> fields.
-conditionalFields :: (Ord a, IsString a) => [a]
+conditionalFields :: IsString a => [a]
 conditionalFields =
     [ "condition"
     , "then"
@@ -171,7 +171,7 @@
     ]
 
 -- | The <https://github.com/sol/hpack#defaults defaults> fields.
-defaultsFields :: (Ord a, IsString a) => [a]
+defaultsFields :: IsString a => [a]
 defaultsFields =
     [ "github"
     , "ref"
diff --git a/package.dhall b/package.dhall
--- a/package.dhall
+++ b/package.dhall
@@ -1,9 +1,9 @@
 let deps =
-      [ "base == 4.*"
-      , "megaparsec >= 7.0.1"
-      , "dhall >= 1.18.0"
-      , "dhall-json >= 1.2.4"
-      , "hpack >= 0.31.0"
+      [ "base >= 4.13 && < 5"
+      , "megaparsec"
+      , "dhall"
+      , "dhall-json"
+      , "hpack >= 0.34.4"
       , "transformers"
       , "text"
       , "microlens"
@@ -17,11 +17,11 @@
 
 in  let exe-deps =
           [ "hpack-dhall", "optparse-applicative" ]
-
+    
     in  { name =
             "hpack-dhall"
         , version =
-            "0.5.2"
+            "0.5.3"
         , maintainer =
             "Phil de Joux <phil.dejoux@blockscope.com>"
         , copyright =
@@ -36,32 +36,40 @@
             "hpack's dhalling"
         , description =
             ''
-            Work with hpack's top-level
-            <https://github.com/sol/hpack#top-level-fields fields> in a Dhall
-            record with the following executables;
+            Use hpack phrasing in dhall to write cabal files.
+            
+            There are two main reasons why you'd use hpack-dhall, convenience and safety.
 
-            * with @dhall-hpack-cabal@ write the @.cabal@ for a @.dhall@ package description.
-            * with @dhall-hpack-dhall@ show the package description expression, with imports resolved.
-            * with @dhall-hpack-json@ show the package description as JSON.
-            * with @dhall-hpack-yaml@ show the package description as YAML.
+            Get the convenience of hpack. Don't bother to state what can be inferred or
+            defaulted, easing the burden of completing a package description by hand.  For
+            example `other-modules` can be inferred by taking the set difference between
+            modules on disk and the set of `exposed-modules`.
+
+            Get the safety of dhall's programmable configuration: typed fields, safe imports
+            and functions.
             ''
         , github =
             "blockscope/hpack-dhall"
         , tested-with =
-            "GHC == 8.2.2, GHC == 8.4.3, GHC == 8.4.4, GHC == 8.6.3"
+            "GHC == 8.8.4, GHC == 8.10.4"
         , extra-source-files =
             [ "package.dhall"
             , "changelog.md"
-            , "README.md"
-            , "test/golden/**/*.dhall"
-            , "test/golden/**/*.dhl"
-            , "test/golden/**/*.cabal"
-            , "test/golden/**/*.json"
-            , "test/golden/**/*.yaml"
-            , "test/golden/**/*.golden"
+            , "test-suite-golden/**/*.dhall"
+            , "test-suite-golden/**/*.dhl"
+            , "test-suite-golden/**/*.cabal"
+            , "test-suite-golden/**/*.json"
+            , "test-suite-golden/**/*.yaml"
+            , "test-suite-golden/**/*.golden"
             ]
         , ghc-options =
-            "-Wall"
+            [ "-Wall"
+            , "-Wincomplete-uni-patterns"
+            , "-Wcompat"
+            , "-Widentities"
+            , "-Wredundant-constraints"
+            , "-fhide-source-paths"
+            ]
         , dependencies =
             deps
         , source-dirs =
@@ -108,7 +116,7 @@
                   { main =
                       "Golden.hs"
                   , source-dirs =
-                      [ "test/golden/src" ]
+                      [ "test-suite-golden/src" ]
                   , dependencies =
                       [ "base"
                       , "Cabal"
diff --git a/test-suite-golden/src/Golden.hs b/test-suite-golden/src/Golden.hs
new file mode 100644
--- /dev/null
+++ b/test-suite-golden/src/Golden.hs
@@ -0,0 +1,165 @@
+{-# LANGUAGE MultiWayIf, LambdaCase, CPP #-}
+
+module Main (main) where
+
+import System.FilePath
+    ( (</>), (<.>), (-<.>)
+    , takeBaseName, replaceExtension
+    , takeDirectory, splitDirectories, joinPath
+    )
+import System.Directory (renameFile)
+import Test.Tasty (defaultMain, TestTree, testGroup)
+import Test.Tasty.Golden (findByExtension, goldenVsFile, goldenVsString)
+
+import Hpack (Verbose(..), Options(..), hpack, defaultOptions, setDecode)
+import Hpack.Config (DecodeOptions(..))
+import Hpack.Dhall (fileToJson, showDhall, showJson, showYaml)
+import Data.ByteString.Lazy.UTF8 (fromString)
+
+data Out = Cabal | Dhall | Json | Yaml
+
+main :: IO ()
+main = defaultMain =<< goldenTests
+
+goldExt :: Out -> FilePath
+goldExt =
+    \case
+        Cabal -> ".cabal.golden"
+
+        Dhall ->
+            let d =
+#if MIN_VERSION_dhall (1, 34, 0)
+                    ".dhall-1.34"
+#elif MIN_VERSION_dhall (1, 32, 0)
+                    ".dhall-1.32"
+#else
+                    ".dhall"
+#endif
+
+            in d <> ".golden"
+
+        Json -> ".json.golden"
+        Yaml -> ".yaml.golden"
+
+goldenTests :: IO TestTree
+goldenTests = do
+    ks <- findByExtension [".dhall"] "test-suite-golden/test-files/key"
+    rs <- findByExtension [".dhall"] "test-suite-golden/test-files/real-world"
+    g1 <- goldenTestSet "archetypes" ks
+    g2 <- goldenTestSet "real-world examples" rs
+    return $ testGroup "golden tests" [g1 , g2]
+
+goldenTestSet :: String -> [FilePath] -> IO TestTree
+goldenTestSet title dhallFiles = do
+    return $ testGroup title
+        [ testGroup ".dhall to .cabal"
+            [ goldenVsFile
+                (testName dhallFile)
+                (cabalFile -<.> goldExt Cabal)
+                cabalFile
+                (writeDhallCabal dhallFile)
+            | dhallFile <- dhallFiles
+            , let cabalFile = cabalFilePath dhallFile
+            ]
+        , testGroup ".dhall to dhall"
+            [ goldenVsString
+                (testName dhallFile)
+                (dhallFile -<.> goldExt Dhall)
+                (fmap fromString . showDhall $ dhallFile)
+            | dhallFile <- dhallFiles
+            ]
+        , testGroup ".dhall to json"
+            [ goldenVsFile
+                (testName dhallFile)
+                (dhallFile -<.> goldExt Json)
+                jsonFile
+                (writeJson dhallFile jsonFile)
+            | dhallFile <- dhallFiles
+            , let jsonFile = dhallFile -<.> ".json"
+            ]
+        , testGroup ".dhall to yaml"
+            [ goldenVsFile
+                (testName dhallFile)
+                (dhallFile -<.> goldExt Yaml)
+                yamlFile
+                (writeYaml dhallFile yamlFile)
+            | dhallFile <- dhallFiles
+            , let yamlFile = dhallFile -<.> ".yaml"
+            ]
+        , testGroup ".yaml to .cabal"
+            [ goldenVsFile
+                (testName dhallFile)
+                (cabalFile -<.> goldExt Cabal)
+                cabalFile
+                (writeYamlCabal yamlFile cabalFile yamlCabalFile)
+            | dhallFile <- dhallFiles
+            , let yamlFile = dhallFile -<.> ".yaml"
+            , let cabalFile = cabalFilePath dhallFile
+            , let yamlCabalFile = yamlFile <.> ".cabal"
+            ]
+        ]
+
+testName :: FilePath -> FilePath
+testName p =
+    if | fName == dName -> fName
+       | fName == "package" -> dName
+       | dName == "key" -> fName
+       | dName == "real-world" -> fName
+       | otherwise -> dName </> fName
+    where
+        dName =
+            joinPath
+            . take 1
+            . reverse
+            . splitDirectories
+            . takeDirectory
+            $ p
+
+        fName = takeBaseName p
+
+writeDhallCabal :: FilePath -> IO ()
+writeDhallCabal dhallFile =
+    hpack NoVerbose (setDecode fileToJson options)
+    where
+        d = optionsDecodeOptions defaultOptions
+        d' = d {decodeOptionsTarget = dhallFile}
+        options = defaultOptions {optionsDecodeOptions = d'}
+
+writeYamlCabal :: FilePath -> FilePath -> FilePath -> IO ()
+writeYamlCabal yamlFile cabalFile yamlCabalFile = do
+        renameFile cabalFile tmp
+        hpack NoVerbose options
+        renameFile cabalFile yamlCabalFile
+        renameFile tmp cabalFile
+    where
+        tmp = cabalFile <.> ".TMP"
+
+        d = optionsDecodeOptions defaultOptions
+        d' = d {decodeOptionsTarget = yamlFile}
+        options =
+            defaultOptions
+                { optionsDecodeOptions = d'
+                }
+
+writeJson :: FilePath -> FilePath -> IO ()
+writeJson dhallFile jsonFile = do
+    s <- showJson Nothing dhallFile
+    writeFile jsonFile s
+
+writeYaml :: FilePath -> FilePath -> IO ()
+writeYaml dhallFile yamlFile = do
+    s <- showYaml Nothing dhallFile
+    writeFile yamlFile s
+
+cabalFilePath :: FilePath -> FilePath
+cabalFilePath p
+    | takeBaseName p == "package" =
+        case reverse . splitDirectories $ ds of
+            d : ds' -> joinPath (reverse ds') </> d </> d <.> ".cabal"
+            _ -> replaceExtension p ".cabal"
+
+    | otherwise =
+        replaceExtension p ".cabal"
+
+    where
+        ds = takeDirectory p
diff --git a/test-suite-golden/test-files/key/empty-inferred/empty-inferred.cabal b/test-suite-golden/test-files/key/empty-inferred/empty-inferred.cabal
new file mode 100644
--- /dev/null
+++ b/test-suite-golden/test-files/key/empty-inferred/empty-inferred.cabal
@@ -0,0 +1,11 @@
+cabal-version: 1.12
+
+-- This file has been generated from package.dhall by hpack version 0.31.0.
+--
+-- see: https://github.com/sol/hpack
+--
+-- hash: 9f10239d716ef4564587e29b36c0e3b74056721733790211e20061a86a0feb53
+
+name:           empty-inferred
+version:        0.0.0
+build-type:     Simple
diff --git a/test-suite-golden/test-files/key/empty-inferred/empty-inferred.cabal.golden b/test-suite-golden/test-files/key/empty-inferred/empty-inferred.cabal.golden
new file mode 100644
--- /dev/null
+++ b/test-suite-golden/test-files/key/empty-inferred/empty-inferred.cabal.golden
@@ -0,0 +1,11 @@
+cabal-version: 1.12
+
+-- This file has been generated from package.dhall by hpack version 0.31.0.
+--
+-- see: https://github.com/sol/hpack
+--
+-- hash: 9f10239d716ef4564587e29b36c0e3b74056721733790211e20061a86a0feb53
+
+name:           empty-inferred
+version:        0.0.0
+build-type:     Simple
diff --git a/test-suite-golden/test-files/key/empty-inferred/package.dhall b/test-suite-golden/test-files/key/empty-inferred/package.dhall
new file mode 100644
--- /dev/null
+++ b/test-suite-golden/test-files/key/empty-inferred/package.dhall
@@ -0,0 +1,1 @@
+{=}
diff --git a/test-suite-golden/test-files/key/empty-inferred/package.dhall-1.32.golden b/test-suite-golden/test-files/key/empty-inferred/package.dhall-1.32.golden
new file mode 100644
--- /dev/null
+++ b/test-suite-golden/test-files/key/empty-inferred/package.dhall-1.32.golden
@@ -0,0 +1,1 @@
+{=}
diff --git a/test-suite-golden/test-files/key/empty-inferred/package.dhall-1.34.golden b/test-suite-golden/test-files/key/empty-inferred/package.dhall-1.34.golden
new file mode 100644
--- /dev/null
+++ b/test-suite-golden/test-files/key/empty-inferred/package.dhall-1.34.golden
@@ -0,0 +1,1 @@
+{=}
diff --git a/test-suite-golden/test-files/key/empty-inferred/package.json b/test-suite-golden/test-files/key/empty-inferred/package.json
new file mode 100644
--- /dev/null
+++ b/test-suite-golden/test-files/key/empty-inferred/package.json
@@ -0,0 +1,1 @@
+{}
diff --git a/test-suite-golden/test-files/key/empty-inferred/package.json.golden b/test-suite-golden/test-files/key/empty-inferred/package.json.golden
new file mode 100644
--- /dev/null
+++ b/test-suite-golden/test-files/key/empty-inferred/package.json.golden
@@ -0,0 +1,1 @@
+{}
diff --git a/test-suite-golden/test-files/key/empty-inferred/package.yaml b/test-suite-golden/test-files/key/empty-inferred/package.yaml
new file mode 100644
--- /dev/null
+++ b/test-suite-golden/test-files/key/empty-inferred/package.yaml
@@ -0,0 +1,1 @@
+{}
diff --git a/test-suite-golden/test-files/key/empty-inferred/package.yaml.cabal b/test-suite-golden/test-files/key/empty-inferred/package.yaml.cabal
new file mode 100644
--- /dev/null
+++ b/test-suite-golden/test-files/key/empty-inferred/package.yaml.cabal
@@ -0,0 +1,9 @@
+cabal-version: 1.12
+
+-- This file has been generated from package.yaml by hpack version 0.34.4.
+--
+-- see: https://github.com/sol/hpack
+
+name:           empty-inferred
+version:        0.0.0
+build-type:     Simple
diff --git a/test-suite-golden/test-files/key/empty-inferred/package.yaml.golden b/test-suite-golden/test-files/key/empty-inferred/package.yaml.golden
new file mode 100644
--- /dev/null
+++ b/test-suite-golden/test-files/key/empty-inferred/package.yaml.golden
@@ -0,0 +1,1 @@
+{}
diff --git a/test-suite-golden/test-files/key/empty-package.cabal b/test-suite-golden/test-files/key/empty-package.cabal
new file mode 100644
--- /dev/null
+++ b/test-suite-golden/test-files/key/empty-package.cabal
@@ -0,0 +1,11 @@
+cabal-version: 1.12
+
+-- This file has been generated from empty-package.dhall by hpack version 0.31.0.
+--
+-- see: https://github.com/sol/hpack
+--
+-- hash: e0a74f511d829cae53cd712664781db312951dd773249603163ba1b1e32afd04
+
+name:           empty-package
+version:        0.0.0
+build-type:     Simple
diff --git a/test-suite-golden/test-files/key/empty-package.cabal.golden b/test-suite-golden/test-files/key/empty-package.cabal.golden
new file mode 100644
--- /dev/null
+++ b/test-suite-golden/test-files/key/empty-package.cabal.golden
@@ -0,0 +1,11 @@
+cabal-version: 1.12
+
+-- This file has been generated from empty-package.dhall by hpack version 0.31.0.
+--
+-- see: https://github.com/sol/hpack
+--
+-- hash: e0a74f511d829cae53cd712664781db312951dd773249603163ba1b1e32afd04
+
+name:           empty-package
+version:        0.0.0
+build-type:     Simple
diff --git a/test-suite-golden/test-files/key/empty-package.dhall b/test-suite-golden/test-files/key/empty-package.dhall
new file mode 100644
--- /dev/null
+++ b/test-suite-golden/test-files/key/empty-package.dhall
@@ -0,0 +1,1 @@
+{ name = "empty-package" }
diff --git a/test-suite-golden/test-files/key/empty-package.dhall-1.32.golden b/test-suite-golden/test-files/key/empty-package.dhall-1.32.golden
new file mode 100644
--- /dev/null
+++ b/test-suite-golden/test-files/key/empty-package.dhall-1.32.golden
@@ -0,0 +1,1 @@
+{ name = "empty-package" }
diff --git a/test-suite-golden/test-files/key/empty-package.dhall-1.34.golden b/test-suite-golden/test-files/key/empty-package.dhall-1.34.golden
new file mode 100644
--- /dev/null
+++ b/test-suite-golden/test-files/key/empty-package.dhall-1.34.golden
@@ -0,0 +1,1 @@
+{ name = "empty-package" }
diff --git a/test-suite-golden/test-files/key/empty-package.json b/test-suite-golden/test-files/key/empty-package.json
new file mode 100644
--- /dev/null
+++ b/test-suite-golden/test-files/key/empty-package.json
@@ -0,0 +1,3 @@
+{
+    "name": "empty-package"
+}
diff --git a/test-suite-golden/test-files/key/empty-package.json.golden b/test-suite-golden/test-files/key/empty-package.json.golden
new file mode 100644
--- /dev/null
+++ b/test-suite-golden/test-files/key/empty-package.json.golden
@@ -0,0 +1,3 @@
+{
+    "name": "empty-package"
+}
diff --git a/test-suite-golden/test-files/key/empty-package.yaml b/test-suite-golden/test-files/key/empty-package.yaml
new file mode 100644
--- /dev/null
+++ b/test-suite-golden/test-files/key/empty-package.yaml
@@ -0,0 +1,1 @@
+name: empty-package
diff --git a/test-suite-golden/test-files/key/empty-package.yaml.cabal b/test-suite-golden/test-files/key/empty-package.yaml.cabal
new file mode 100644
--- /dev/null
+++ b/test-suite-golden/test-files/key/empty-package.yaml.cabal
@@ -0,0 +1,9 @@
+cabal-version: 1.12
+
+-- This file has been generated from empty-package.yaml by hpack version 0.34.4.
+--
+-- see: https://github.com/sol/hpack
+
+name:           empty-package
+version:        0.0.0
+build-type:     Simple
diff --git a/test-suite-golden/test-files/key/empty-package.yaml.golden b/test-suite-golden/test-files/key/empty-package.yaml.golden
new file mode 100644
--- /dev/null
+++ b/test-suite-golden/test-files/key/empty-package.yaml.golden
@@ -0,0 +1,1 @@
+name: empty-package
diff --git a/test-suite-golden/test-files/key/import-local/import-local.cabal b/test-suite-golden/test-files/key/import-local/import-local.cabal
new file mode 100644
--- /dev/null
+++ b/test-suite-golden/test-files/key/import-local/import-local.cabal
@@ -0,0 +1,11 @@
+cabal-version: 1.12
+
+-- This file has been generated from package.dhall by hpack version 0.31.0.
+--
+-- see: https://github.com/sol/hpack
+--
+-- hash: fb3f09267f149cb49eb030ac951c27be9964aa0d51e91460e5b2d59ee1a5082f
+
+name:           import-local
+version:        0.0.0
+build-type:     Simple
diff --git a/test-suite-golden/test-files/key/import-local/import-local.cabal.golden b/test-suite-golden/test-files/key/import-local/import-local.cabal.golden
new file mode 100644
--- /dev/null
+++ b/test-suite-golden/test-files/key/import-local/import-local.cabal.golden
@@ -0,0 +1,11 @@
+cabal-version: 1.12
+
+-- This file has been generated from package.dhall by hpack version 0.31.0.
+--
+-- see: https://github.com/sol/hpack
+--
+-- hash: fb3f09267f149cb49eb030ac951c27be9964aa0d51e91460e5b2d59ee1a5082f
+
+name:           import-local
+version:        0.0.0
+build-type:     Simple
diff --git a/test-suite-golden/test-files/key/import-local/name.dhl b/test-suite-golden/test-files/key/import-local/name.dhl
new file mode 100644
--- /dev/null
+++ b/test-suite-golden/test-files/key/import-local/name.dhl
@@ -0,0 +1,1 @@
+{ name = "import-local" }
diff --git a/test-suite-golden/test-files/key/import-local/package.dhall b/test-suite-golden/test-files/key/import-local/package.dhall
new file mode 100644
--- /dev/null
+++ b/test-suite-golden/test-files/key/import-local/package.dhall
@@ -0,0 +1,1 @@
+./name.dhl ⫽ {=}
diff --git a/test-suite-golden/test-files/key/import-local/package.dhall-1.32.golden b/test-suite-golden/test-files/key/import-local/package.dhall-1.32.golden
new file mode 100644
--- /dev/null
+++ b/test-suite-golden/test-files/key/import-local/package.dhall-1.32.golden
@@ -0,0 +1,1 @@
+{ name = "import-local" } ⫽ {=}
diff --git a/test-suite-golden/test-files/key/import-local/package.dhall-1.34.golden b/test-suite-golden/test-files/key/import-local/package.dhall-1.34.golden
new file mode 100644
--- /dev/null
+++ b/test-suite-golden/test-files/key/import-local/package.dhall-1.34.golden
@@ -0,0 +1,1 @@
+{ name = "import-local" } ⫽ {=}
diff --git a/test-suite-golden/test-files/key/import-local/package.json b/test-suite-golden/test-files/key/import-local/package.json
new file mode 100644
--- /dev/null
+++ b/test-suite-golden/test-files/key/import-local/package.json
@@ -0,0 +1,3 @@
+{
+    "name": "import-local"
+}
diff --git a/test-suite-golden/test-files/key/import-local/package.json.golden b/test-suite-golden/test-files/key/import-local/package.json.golden
new file mode 100644
--- /dev/null
+++ b/test-suite-golden/test-files/key/import-local/package.json.golden
@@ -0,0 +1,3 @@
+{
+    "name": "import-local"
+}
diff --git a/test-suite-golden/test-files/key/import-local/package.yaml b/test-suite-golden/test-files/key/import-local/package.yaml
new file mode 100644
--- /dev/null
+++ b/test-suite-golden/test-files/key/import-local/package.yaml
@@ -0,0 +1,1 @@
+name: import-local
diff --git a/test-suite-golden/test-files/key/import-local/package.yaml.cabal b/test-suite-golden/test-files/key/import-local/package.yaml.cabal
new file mode 100644
--- /dev/null
+++ b/test-suite-golden/test-files/key/import-local/package.yaml.cabal
@@ -0,0 +1,9 @@
+cabal-version: 1.12
+
+-- This file has been generated from package.yaml by hpack version 0.34.4.
+--
+-- see: https://github.com/sol/hpack
+
+name:           import-local
+version:        0.0.0
+build-type:     Simple
diff --git a/test-suite-golden/test-files/key/import-local/package.yaml.golden b/test-suite-golden/test-files/key/import-local/package.yaml.golden
new file mode 100644
--- /dev/null
+++ b/test-suite-golden/test-files/key/import-local/package.yaml.golden
@@ -0,0 +1,1 @@
+name: import-local
diff --git a/test-suite-golden/test-files/key/import-relative.dhl b/test-suite-golden/test-files/key/import-relative.dhl
new file mode 100644
--- /dev/null
+++ b/test-suite-golden/test-files/key/import-relative.dhl
@@ -0,0 +1,1 @@
+{ name = "import-relative" }
diff --git a/test-suite-golden/test-files/key/import-relative/import-relative.cabal b/test-suite-golden/test-files/key/import-relative/import-relative.cabal
new file mode 100644
--- /dev/null
+++ b/test-suite-golden/test-files/key/import-relative/import-relative.cabal
@@ -0,0 +1,11 @@
+cabal-version: 1.12
+
+-- This file has been generated from package.dhall by hpack version 0.31.0.
+--
+-- see: https://github.com/sol/hpack
+--
+-- hash: 989056d21c3910e06ec15967716df134a39f43c561858afff828d22802a22005
+
+name:           import-relative
+version:        0.0.0
+build-type:     Simple
diff --git a/test-suite-golden/test-files/key/import-relative/import-relative.cabal.golden b/test-suite-golden/test-files/key/import-relative/import-relative.cabal.golden
new file mode 100644
--- /dev/null
+++ b/test-suite-golden/test-files/key/import-relative/import-relative.cabal.golden
@@ -0,0 +1,11 @@
+cabal-version: 1.12
+
+-- This file has been generated from package.dhall by hpack version 0.31.0.
+--
+-- see: https://github.com/sol/hpack
+--
+-- hash: 989056d21c3910e06ec15967716df134a39f43c561858afff828d22802a22005
+
+name:           import-relative
+version:        0.0.0
+build-type:     Simple
diff --git a/test-suite-golden/test-files/key/import-relative/package.dhall b/test-suite-golden/test-files/key/import-relative/package.dhall
new file mode 100644
--- /dev/null
+++ b/test-suite-golden/test-files/key/import-relative/package.dhall
@@ -0,0 +1,1 @@
+../import-relative.dhl ⫽ {=}
diff --git a/test-suite-golden/test-files/key/import-relative/package.dhall-1.32.golden b/test-suite-golden/test-files/key/import-relative/package.dhall-1.32.golden
new file mode 100644
--- /dev/null
+++ b/test-suite-golden/test-files/key/import-relative/package.dhall-1.32.golden
@@ -0,0 +1,1 @@
+{ name = "import-relative" } ⫽ {=}
diff --git a/test-suite-golden/test-files/key/import-relative/package.dhall-1.34.golden b/test-suite-golden/test-files/key/import-relative/package.dhall-1.34.golden
new file mode 100644
--- /dev/null
+++ b/test-suite-golden/test-files/key/import-relative/package.dhall-1.34.golden
@@ -0,0 +1,1 @@
+{ name = "import-relative" } ⫽ {=}
diff --git a/test-suite-golden/test-files/key/import-relative/package.json b/test-suite-golden/test-files/key/import-relative/package.json
new file mode 100644
--- /dev/null
+++ b/test-suite-golden/test-files/key/import-relative/package.json
@@ -0,0 +1,3 @@
+{
+    "name": "import-relative"
+}
diff --git a/test-suite-golden/test-files/key/import-relative/package.json.golden b/test-suite-golden/test-files/key/import-relative/package.json.golden
new file mode 100644
--- /dev/null
+++ b/test-suite-golden/test-files/key/import-relative/package.json.golden
@@ -0,0 +1,3 @@
+{
+    "name": "import-relative"
+}
diff --git a/test-suite-golden/test-files/key/import-relative/package.yaml b/test-suite-golden/test-files/key/import-relative/package.yaml
new file mode 100644
--- /dev/null
+++ b/test-suite-golden/test-files/key/import-relative/package.yaml
@@ -0,0 +1,1 @@
+name: import-relative
diff --git a/test-suite-golden/test-files/key/import-relative/package.yaml.cabal b/test-suite-golden/test-files/key/import-relative/package.yaml.cabal
new file mode 100644
--- /dev/null
+++ b/test-suite-golden/test-files/key/import-relative/package.yaml.cabal
@@ -0,0 +1,9 @@
+cabal-version: 1.12
+
+-- This file has been generated from package.yaml by hpack version 0.34.4.
+--
+-- see: https://github.com/sol/hpack
+
+name:           import-relative
+version:        0.0.0
+build-type:     Simple
diff --git a/test-suite-golden/test-files/key/import-relative/package.yaml.golden b/test-suite-golden/test-files/key/import-relative/package.yaml.golden
new file mode 100644
--- /dev/null
+++ b/test-suite-golden/test-files/key/import-relative/package.yaml.golden
@@ -0,0 +1,1 @@
+name: import-relative
diff --git a/test-suite-golden/test-files/key/when-dependencies.cabal b/test-suite-golden/test-files/key/when-dependencies.cabal
new file mode 100644
--- /dev/null
+++ b/test-suite-golden/test-files/key/when-dependencies.cabal
@@ -0,0 +1,11 @@
+cabal-version: 1.12
+
+-- This file has been generated from when-dependencies.dhall by hpack version 0.31.1.
+--
+-- see: https://github.com/sol/hpack
+--
+-- hash: a1d315a919b697e7986a0c149715373427427e43104f82f05f394a439793907f
+
+name:           when-dependencies
+version:        0.0.0
+build-type:     Simple
diff --git a/test-suite-golden/test-files/key/when-dependencies.cabal.golden b/test-suite-golden/test-files/key/when-dependencies.cabal.golden
new file mode 100644
--- /dev/null
+++ b/test-suite-golden/test-files/key/when-dependencies.cabal.golden
@@ -0,0 +1,11 @@
+cabal-version: 1.12
+
+-- This file has been generated from when-dependencies.dhall by hpack version 0.31.1.
+--
+-- see: https://github.com/sol/hpack
+--
+-- hash: a1d315a919b697e7986a0c149715373427427e43104f82f05f394a439793907f
+
+name:           when-dependencies
+version:        0.0.0
+build-type:     Simple
diff --git a/test-suite-golden/test-files/key/when-dependencies.dhall b/test-suite-golden/test-files/key/when-dependencies.dhall
new file mode 100644
--- /dev/null
+++ b/test-suite-golden/test-files/key/when-dependencies.dhall
@@ -0,0 +1,13 @@
+    let deps = [ "base == 4.*" ]
+
+in  { name =
+        "when-dependencies"
+    , when =
+        { condition =
+            "impl(ghc < 8.2.2)"
+        , `then` =
+            { dependencies = deps # [ "yaml" ] }
+        , `else` =
+            { dependencies = deps # [ "yaml-pretty-extras" ] }
+        }
+    }
diff --git a/test-suite-golden/test-files/key/when-dependencies.dhall-1.32.golden b/test-suite-golden/test-files/key/when-dependencies.dhall-1.32.golden
new file mode 100644
--- /dev/null
+++ b/test-suite-golden/test-files/key/when-dependencies.dhall-1.32.golden
@@ -0,0 +1,9 @@
+let deps = [ "base == 4.*" ]
+
+in  { name = "when-dependencies"
+    , when =
+      { condition = "impl(ghc < 8.2.2)"
+      , then.dependencies = deps # [ "yaml" ]
+      , else.dependencies = deps # [ "yaml-pretty-extras" ]
+      }
+    }
diff --git a/test-suite-golden/test-files/key/when-dependencies.dhall-1.34.golden b/test-suite-golden/test-files/key/when-dependencies.dhall-1.34.golden
new file mode 100644
--- /dev/null
+++ b/test-suite-golden/test-files/key/when-dependencies.dhall-1.34.golden
@@ -0,0 +1,9 @@
+let deps = [ "base == 4.*" ]
+
+in  { name = "when-dependencies"
+    , when =
+      { condition = "impl(ghc < 8.2.2)"
+      , `then`.dependencies = deps # [ "yaml" ]
+      , `else`.dependencies = deps # [ "yaml-pretty-extras" ]
+      }
+    }
diff --git a/test-suite-golden/test-files/key/when-dependencies.json b/test-suite-golden/test-files/key/when-dependencies.json
new file mode 100644
--- /dev/null
+++ b/test-suite-golden/test-files/key/when-dependencies.json
@@ -0,0 +1,18 @@
+{
+    "name": "when-dependencies",
+    "when": {
+        "condition": "impl(ghc < 8.2.2)",
+        "then": {
+            "dependencies": [
+                "base == 4.*",
+                "yaml"
+            ]
+        },
+        "else": {
+            "dependencies": [
+                "base == 4.*",
+                "yaml-pretty-extras"
+            ]
+        }
+    }
+}
diff --git a/test-suite-golden/test-files/key/when-dependencies.json.golden b/test-suite-golden/test-files/key/when-dependencies.json.golden
new file mode 100644
--- /dev/null
+++ b/test-suite-golden/test-files/key/when-dependencies.json.golden
@@ -0,0 +1,18 @@
+{
+    "name": "when-dependencies",
+    "when": {
+        "condition": "impl(ghc < 8.2.2)",
+        "then": {
+            "dependencies": [
+                "base == 4.*",
+                "yaml"
+            ]
+        },
+        "else": {
+            "dependencies": [
+                "base == 4.*",
+                "yaml-pretty-extras"
+            ]
+        }
+    }
+}
diff --git a/test-suite-golden/test-files/key/when-dependencies.yaml b/test-suite-golden/test-files/key/when-dependencies.yaml
new file mode 100644
--- /dev/null
+++ b/test-suite-golden/test-files/key/when-dependencies.yaml
@@ -0,0 +1,11 @@
+name: when-dependencies
+when:
+  condition: impl(ghc < 8.2.2)
+  then:
+    dependencies:
+    - base == 4.*
+    - yaml
+  else:
+    dependencies:
+    - base == 4.*
+    - yaml-pretty-extras
diff --git a/test-suite-golden/test-files/key/when-dependencies.yaml.cabal b/test-suite-golden/test-files/key/when-dependencies.yaml.cabal
new file mode 100644
--- /dev/null
+++ b/test-suite-golden/test-files/key/when-dependencies.yaml.cabal
@@ -0,0 +1,9 @@
+cabal-version: 1.12
+
+-- This file has been generated from when-dependencies.yaml by hpack version 0.34.4.
+--
+-- see: https://github.com/sol/hpack
+
+name:           when-dependencies
+version:        0.0.0
+build-type:     Simple
diff --git a/test-suite-golden/test-files/key/when-dependencies.yaml.golden b/test-suite-golden/test-files/key/when-dependencies.yaml.golden
new file mode 100644
--- /dev/null
+++ b/test-suite-golden/test-files/key/when-dependencies.yaml.golden
@@ -0,0 +1,11 @@
+name: when-dependencies
+when:
+  condition: impl(ghc < 8.2.2)
+  then:
+    dependencies:
+    - base == 4.*
+    - yaml
+  else:
+    dependencies:
+    - base == 4.*
+    - yaml-pretty-extras
diff --git a/test-suite-golden/test-files/real-world/hpack/hpack.cabal b/test-suite-golden/test-files/real-world/hpack/hpack.cabal
new file mode 100644
--- /dev/null
+++ b/test-suite-golden/test-files/real-world/hpack/hpack.cabal
@@ -0,0 +1,136 @@
+cabal-version: 1.12
+
+-- This file has been generated from hpack.dhall by hpack version 0.31.0.
+--
+-- see: https://github.com/sol/hpack
+--
+-- hash: 6233d5bc3d8cc3400d64ab30856182d4a593d9245bfdd5096e1287213cc3ae31
+
+name:           hpack
+version:        0.31.1
+synopsis:       A modern format for Haskell packages
+description:    See README at <https://github.com/sol/hpack#readme>
+category:       Development
+homepage:       https://github.com/sol/hpack#readme
+bug-reports:    https://github.com/sol/hpack/issues
+maintainer:     Simon Hengel <sol@typeful.net>
+build-type:     Simple
+extra-source-files:
+    CHANGELOG.md
+
+source-repository head
+  type: git
+  location: https://github.com/sol/hpack
+
+library
+  exposed-modules:
+      Hpack
+      Hpack.Config
+      Hpack.Render
+      Hpack.Yaml
+  other-modules:
+      Paths_hpack
+  hs-source-dirs:
+      src
+  ghc-options: -Wall
+  build-depends:
+      Cabal >=2.2
+    , Glob >=0.9.0
+    , aeson >=1.2.1.0
+    , base >=4.9 && <5
+    , bifunctors
+    , bytestring
+    , containers
+    , cryptonite
+    , deepseq
+    , directory
+    , filepath
+    , http-client
+    , http-client-tls
+    , http-types
+    , infer-license >=0.2.0 && <0.3
+    , pretty
+    , scientific
+    , text
+    , transformers
+    , unordered-containers
+    , vector
+    , yaml >=0.10.0
+  default-language: Haskell2010
+
+executable hpack
+  main-is: Main.hs
+  other-modules:
+      Paths_hpack
+  hs-source-dirs:
+      driver
+  ghc-options: -Wall
+  build-depends:
+      Cabal >=2.2
+    , Glob >=0.9.0
+    , aeson >=1.2.1.0
+    , base >=4.9 && <5
+    , bifunctors
+    , bytestring
+    , containers
+    , cryptonite
+    , deepseq
+    , directory
+    , filepath
+    , hpack
+    , http-client
+    , http-client-tls
+    , http-types
+    , infer-license >=0.2.0 && <0.3
+    , pretty
+    , scientific
+    , text
+    , transformers
+    , unordered-containers
+    , vector
+    , yaml >=0.10.0
+  default-language: Haskell2010
+
+test-suite spec
+  type: exitcode-stdio-1.0
+  main-is: Spec.hs
+  other-modules:
+      Paths_hpack
+  hs-source-dirs:
+      test
+      src
+  ghc-options: -Wall
+  cpp-options: -DTEST
+  build-tool-depends:
+      hspec-discover:hspec-discover
+  build-depends:
+      Cabal >=2.2
+    , Glob >=0.9.0
+    , HUnit >=1.6.0.0
+    , QuickCheck
+    , aeson >=1.2.1.0
+    , base >=4.9 && <5
+    , bifunctors
+    , bytestring
+    , containers
+    , cryptonite
+    , deepseq
+    , directory
+    , filepath
+    , hspec ==2.*
+    , http-client
+    , http-client-tls
+    , http-types
+    , infer-license >=0.2.0 && <0.3
+    , interpolate
+    , mockery >=0.3
+    , pretty
+    , scientific
+    , template-haskell
+    , temporary
+    , text
+    , transformers
+    , unordered-containers
+    , vector
+    , yaml >=0.10.0
+  default-language: Haskell2010
diff --git a/test-suite-golden/test-files/real-world/hpack/hpack.cabal.golden b/test-suite-golden/test-files/real-world/hpack/hpack.cabal.golden
new file mode 100644
--- /dev/null
+++ b/test-suite-golden/test-files/real-world/hpack/hpack.cabal.golden
@@ -0,0 +1,136 @@
+cabal-version: 1.12
+
+-- This file has been generated from hpack.dhall by hpack version 0.31.0.
+--
+-- see: https://github.com/sol/hpack
+--
+-- hash: 6233d5bc3d8cc3400d64ab30856182d4a593d9245bfdd5096e1287213cc3ae31
+
+name:           hpack
+version:        0.31.1
+synopsis:       A modern format for Haskell packages
+description:    See README at <https://github.com/sol/hpack#readme>
+category:       Development
+homepage:       https://github.com/sol/hpack#readme
+bug-reports:    https://github.com/sol/hpack/issues
+maintainer:     Simon Hengel <sol@typeful.net>
+build-type:     Simple
+extra-source-files:
+    CHANGELOG.md
+
+source-repository head
+  type: git
+  location: https://github.com/sol/hpack
+
+library
+  exposed-modules:
+      Hpack
+      Hpack.Config
+      Hpack.Render
+      Hpack.Yaml
+  other-modules:
+      Paths_hpack
+  hs-source-dirs:
+      src
+  ghc-options: -Wall
+  build-depends:
+      Cabal >=2.2
+    , Glob >=0.9.0
+    , aeson >=1.2.1.0
+    , base >=4.9 && <5
+    , bifunctors
+    , bytestring
+    , containers
+    , cryptonite
+    , deepseq
+    , directory
+    , filepath
+    , http-client
+    , http-client-tls
+    , http-types
+    , infer-license >=0.2.0 && <0.3
+    , pretty
+    , scientific
+    , text
+    , transformers
+    , unordered-containers
+    , vector
+    , yaml >=0.10.0
+  default-language: Haskell2010
+
+executable hpack
+  main-is: Main.hs
+  other-modules:
+      Paths_hpack
+  hs-source-dirs:
+      driver
+  ghc-options: -Wall
+  build-depends:
+      Cabal >=2.2
+    , Glob >=0.9.0
+    , aeson >=1.2.1.0
+    , base >=4.9 && <5
+    , bifunctors
+    , bytestring
+    , containers
+    , cryptonite
+    , deepseq
+    , directory
+    , filepath
+    , hpack
+    , http-client
+    , http-client-tls
+    , http-types
+    , infer-license >=0.2.0 && <0.3
+    , pretty
+    , scientific
+    , text
+    , transformers
+    , unordered-containers
+    , vector
+    , yaml >=0.10.0
+  default-language: Haskell2010
+
+test-suite spec
+  type: exitcode-stdio-1.0
+  main-is: Spec.hs
+  other-modules:
+      Paths_hpack
+  hs-source-dirs:
+      test
+      src
+  ghc-options: -Wall
+  cpp-options: -DTEST
+  build-tool-depends:
+      hspec-discover:hspec-discover
+  build-depends:
+      Cabal >=2.2
+    , Glob >=0.9.0
+    , HUnit >=1.6.0.0
+    , QuickCheck
+    , aeson >=1.2.1.0
+    , base >=4.9 && <5
+    , bifunctors
+    , bytestring
+    , containers
+    , cryptonite
+    , deepseq
+    , directory
+    , filepath
+    , hspec ==2.*
+    , http-client
+    , http-client-tls
+    , http-types
+    , infer-license >=0.2.0 && <0.3
+    , interpolate
+    , mockery >=0.3
+    , pretty
+    , scientific
+    , template-haskell
+    , temporary
+    , text
+    , transformers
+    , unordered-containers
+    , vector
+    , yaml >=0.10.0
+  default-language: Haskell2010
diff --git a/test-suite-golden/test-files/real-world/hpack/hpack.dhall b/test-suite-golden/test-files/real-world/hpack/hpack.dhall
new file mode 100644
--- /dev/null
+++ b/test-suite-golden/test-files/real-world/hpack/hpack.dhall
@@ -0,0 +1,72 @@
+{ name =
+    "hpack"
+, version =
+    "0.31.1"
+, synopsis =
+    "A modern format for Haskell packages"
+, description =
+    "See README at <https://github.com/sol/hpack#readme>"
+, maintainer =
+    "Simon Hengel <sol@typeful.net>"
+, github =
+    "sol/hpack"
+, category =
+    "Development"
+, extra-source-files =
+    [ "CHANGELOG.md" ]
+, ghc-options =
+    "-Wall"
+, dependencies =
+    [ "base >= 4.9 && < 5"
+    , "bytestring"
+    , "deepseq"
+    , "directory"
+    , "filepath"
+    , "Glob >= 0.9.0"
+    , "text"
+    , "containers"
+    , "unordered-containers"
+    , "yaml >= 0.10.0"
+    , "aeson >= 1.2.1.0"
+    , "scientific"
+    , "Cabal >= 2.2"
+    , "pretty"
+    , "bifunctors"
+    , "cryptonite"
+    , "transformers"
+    , "http-types"
+    , "http-client"
+    , "http-client-tls"
+    , "vector"
+    , "infer-license >= 0.2.0 && < 0.3"
+    ]
+, library =
+    { source-dirs =
+        "src"
+    , exposed-modules =
+        [ "Hpack", "Hpack.Config", "Hpack.Render", "Hpack.Yaml" ]
+    }
+, executable =
+    { main = "Main.hs", source-dirs = "driver", dependencies = [ "hpack" ] }
+, tests =
+    { spec =
+        { cpp-options =
+            "-DTEST"
+        , main =
+            "Spec.hs"
+        , source-dirs =
+            [ "test", "src" ]
+        , dependencies =
+            [ "hspec == 2.*"
+            , "QuickCheck"
+            , "temporary"
+            , "mockery >= 0.3"
+            , "interpolate"
+            , "template-haskell"
+            , "HUnit >= 1.6.0.0"
+            ]
+        , build-tools =
+            "hspec-discover"
+        }
+    }
+}
diff --git a/test-suite-golden/test-files/real-world/hpack/hpack.dhall-1.32.golden b/test-suite-golden/test-files/real-world/hpack/hpack.dhall-1.32.golden
new file mode 100644
--- /dev/null
+++ b/test-suite-golden/test-files/real-world/hpack/hpack.dhall-1.32.golden
@@ -0,0 +1,55 @@
+{ name = "hpack"
+, version = "0.31.1"
+, synopsis = "A modern format for Haskell packages"
+, description = "See README at <https://github.com/sol/hpack#readme>"
+, maintainer = "Simon Hengel <sol@typeful.net>"
+, github = "sol/hpack"
+, category = "Development"
+, extra-source-files = [ "CHANGELOG.md" ]
+, ghc-options = "-Wall"
+, dependencies =
+  [ "base >= 4.9 && < 5"
+  , "bytestring"
+  , "deepseq"
+  , "directory"
+  , "filepath"
+  , "Glob >= 0.9.0"
+  , "text"
+  , "containers"
+  , "unordered-containers"
+  , "yaml >= 0.10.0"
+  , "aeson >= 1.2.1.0"
+  , "scientific"
+  , "Cabal >= 2.2"
+  , "pretty"
+  , "bifunctors"
+  , "cryptonite"
+  , "transformers"
+  , "http-types"
+  , "http-client"
+  , "http-client-tls"
+  , "vector"
+  , "infer-license >= 0.2.0 && < 0.3"
+  ]
+, library =
+  { source-dirs = "src"
+  , exposed-modules = [ "Hpack", "Hpack.Config", "Hpack.Render", "Hpack.Yaml" ]
+  }
+, executable =
+  { main = "Main.hs", source-dirs = "driver", dependencies = [ "hpack" ] }
+, tests.spec =
+  { cpp-options = "-DTEST"
+  , main = "Spec.hs"
+  , source-dirs = [ "test", "src" ]
+  , dependencies =
+    [ "hspec == 2.*"
+    , "QuickCheck"
+    , "temporary"
+    , "mockery >= 0.3"
+    , "interpolate"
+    , "template-haskell"
+    , "HUnit >= 1.6.0.0"
+    ]
+  , build-tools = "hspec-discover"
+  }
+}
diff --git a/test-suite-golden/test-files/real-world/hpack/hpack.dhall-1.34.golden b/test-suite-golden/test-files/real-world/hpack/hpack.dhall-1.34.golden
new file mode 100644
--- /dev/null
+++ b/test-suite-golden/test-files/real-world/hpack/hpack.dhall-1.34.golden
@@ -0,0 +1,56 @@
+{ name = "hpack"
+, version = "0.31.1"
+, synopsis = "A modern format for Haskell packages"
+, description = "See README at <https://github.com/sol/hpack#readme>"
+, maintainer = "Simon Hengel <sol@typeful.net>"
+, github = "sol/hpack"
+, category = "Development"
+, extra-source-files = [ "CHANGELOG.md" ]
+, ghc-options = "-Wall"
+, dependencies =
+  [ "base >= 4.9 && < 5"
+  , "bytestring"
+  , "deepseq"
+  , "directory"
+  , "filepath"
+  , "Glob >= 0.9.0"
+  , "text"
+  , "containers"
+  , "unordered-containers"
+  , "yaml >= 0.10.0"
+  , "aeson >= 1.2.1.0"
+  , "scientific"
+  , "Cabal >= 2.2"
+  , "pretty"
+  , "bifunctors"
+  , "cryptonite"
+  , "transformers"
+  , "http-types"
+  , "http-client"
+  , "http-client-tls"
+  , "vector"
+  , "infer-license >= 0.2.0 && < 0.3"
+  ]
+, library =
+  { source-dirs = "src"
+  , exposed-modules = [ "Hpack", "Hpack.Config", "Hpack.Render", "Hpack.Yaml" ]
+  }
+, executable =
+  { main = "Main.hs", source-dirs = "driver", dependencies = [ "hpack" ] }
+, tests.spec
+  =
+  { cpp-options = "-DTEST"
+  , main = "Spec.hs"
+  , source-dirs = [ "test", "src" ]
+  , dependencies =
+    [ "hspec == 2.*"
+    , "QuickCheck"
+    , "temporary"
+    , "mockery >= 0.3"
+    , "interpolate"
+    , "template-haskell"
+    , "HUnit >= 1.6.0.0"
+    ]
+  , build-tools = "hspec-discover"
+  }
+}
diff --git a/test-suite-golden/test-files/real-world/hpack/hpack.json b/test-suite-golden/test-files/real-world/hpack/hpack.json
new file mode 100644
--- /dev/null
+++ b/test-suite-golden/test-files/real-world/hpack/hpack.json
@@ -0,0 +1,73 @@
+{
+    "name": "hpack",
+    "version": "0.31.1",
+    "synopsis": "A modern format for Haskell packages",
+    "description": "See README at <https://github.com/sol/hpack#readme>",
+    "category": "Development",
+    "maintainer": "Simon Hengel <sol@typeful.net>",
+    "github": "sol/hpack",
+    "extra-source-files": [
+        "CHANGELOG.md"
+    ],
+    "ghc-options": "-Wall",
+    "dependencies": [
+        "base >= 4.9 && < 5",
+        "bytestring",
+        "deepseq",
+        "directory",
+        "filepath",
+        "Glob >= 0.9.0",
+        "text",
+        "containers",
+        "unordered-containers",
+        "yaml >= 0.10.0",
+        "aeson >= 1.2.1.0",
+        "scientific",
+        "Cabal >= 2.2",
+        "pretty",
+        "bifunctors",
+        "cryptonite",
+        "transformers",
+        "http-types",
+        "http-client",
+        "http-client-tls",
+        "vector",
+        "infer-license >= 0.2.0 && < 0.3"
+    ],
+    "library": {
+        "exposed-modules": [
+            "Hpack",
+            "Hpack.Config",
+            "Hpack.Render",
+            "Hpack.Yaml"
+        ],
+        "source-dirs": "src"
+    },
+    "executable": {
+        "main": "Main.hs",
+        "source-dirs": "driver",
+        "dependencies": [
+            "hpack"
+        ]
+    },
+    "tests": {
+        "spec": {
+            "main": "Spec.hs",
+            "source-dirs": [
+                "test",
+                "src"
+            ],
+            "cpp-options": "-DTEST",
+            "dependencies": [
+                "hspec == 2.*",
+                "QuickCheck",
+                "temporary",
+                "mockery >= 0.3",
+                "interpolate",
+                "template-haskell",
+                "HUnit >= 1.6.0.0"
+            ],
+            "build-tools": "hspec-discover"
+        }
+    }
+}
diff --git a/test-suite-golden/test-files/real-world/hpack/hpack.json.golden b/test-suite-golden/test-files/real-world/hpack/hpack.json.golden
new file mode 100644
--- /dev/null
+++ b/test-suite-golden/test-files/real-world/hpack/hpack.json.golden
@@ -0,0 +1,73 @@
+{
+    "name": "hpack",
+    "version": "0.31.1",
+    "synopsis": "A modern format for Haskell packages",
+    "description": "See README at <https://github.com/sol/hpack#readme>",
+    "category": "Development",
+    "maintainer": "Simon Hengel <sol@typeful.net>",
+    "github": "sol/hpack",
+    "extra-source-files": [
+        "CHANGELOG.md"
+    ],
+    "ghc-options": "-Wall",
+    "dependencies": [
+        "base >= 4.9 && < 5",
+        "bytestring",
+        "deepseq",
+        "directory",
+        "filepath",
+        "Glob >= 0.9.0",
+        "text",
+        "containers",
+        "unordered-containers",
+        "yaml >= 0.10.0",
+        "aeson >= 1.2.1.0",
+        "scientific",
+        "Cabal >= 2.2",
+        "pretty",
+        "bifunctors",
+        "cryptonite",
+        "transformers",
+        "http-types",
+        "http-client",
+        "http-client-tls",
+        "vector",
+        "infer-license >= 0.2.0 && < 0.3"
+    ],
+    "library": {
+        "exposed-modules": [
+            "Hpack",
+            "Hpack.Config",
+            "Hpack.Render",
+            "Hpack.Yaml"
+        ],
+        "source-dirs": "src"
+    },
+    "executable": {
+        "main": "Main.hs",
+        "source-dirs": "driver",
+        "dependencies": [
+            "hpack"
+        ]
+    },
+    "tests": {
+        "spec": {
+            "main": "Spec.hs",
+            "source-dirs": [
+                "test",
+                "src"
+            ],
+            "cpp-options": "-DTEST",
+            "dependencies": [
+                "hspec == 2.*",
+                "QuickCheck",
+                "temporary",
+                "mockery >= 0.3",
+                "interpolate",
+                "template-haskell",
+                "HUnit >= 1.6.0.0"
+            ],
+            "build-tools": "hspec-discover"
+        }
+    }
+}
diff --git a/test-suite-golden/test-files/real-world/hpack/hpack.yaml b/test-suite-golden/test-files/real-world/hpack/hpack.yaml
new file mode 100644
--- /dev/null
+++ b/test-suite-golden/test-files/real-world/hpack/hpack.yaml
@@ -0,0 +1,61 @@
+name: hpack
+version: 0.31.1
+synopsis: A modern format for Haskell packages
+description: See README at <https://github.com/sol/hpack#readme>
+category: Development
+maintainer: Simon Hengel <sol@typeful.net>
+github: sol/hpack
+extra-source-files:
+- CHANGELOG.md
+ghc-options: -Wall
+dependencies:
+- base >= 4.9 && < 5
+- bytestring
+- deepseq
+- directory
+- filepath
+- Glob >= 0.9.0
+- text
+- containers
+- unordered-containers
+- yaml >= 0.10.0
+- aeson >= 1.2.1.0
+- scientific
+- Cabal >= 2.2
+- pretty
+- bifunctors
+- cryptonite
+- transformers
+- http-types
+- http-client
+- http-client-tls
+- vector
+- infer-license >= 0.2.0 && < 0.3
+library:
+  exposed-modules:
+  - Hpack
+  - Hpack.Config
+  - Hpack.Render
+  - Hpack.Yaml
+  source-dirs: src
+executable:
+  main: Main.hs
+  source-dirs: driver
+  dependencies:
+  - hpack
+tests:
+  spec:
+    main: Spec.hs
+    source-dirs:
+    - test
+    - src
+    cpp-options: -DTEST
+    dependencies:
+    - hspec == 2.*
+    - QuickCheck
+    - temporary
+    - mockery >= 0.3
+    - interpolate
+    - template-haskell
+    - HUnit >= 1.6.0.0
+    build-tools: hspec-discover
diff --git a/test-suite-golden/test-files/real-world/hpack/hpack.yaml.cabal b/test-suite-golden/test-files/real-world/hpack/hpack.yaml.cabal
new file mode 100644
--- /dev/null
+++ b/test-suite-golden/test-files/real-world/hpack/hpack.yaml.cabal
@@ -0,0 +1,134 @@
+cabal-version: 1.12
+
+-- This file has been generated from hpack.yaml by hpack version 0.34.4.
+--
+-- see: https://github.com/sol/hpack
+
+name:           hpack
+version:        0.31.1
+synopsis:       A modern format for Haskell packages
+description:    See README at <https://github.com/sol/hpack#readme>
+category:       Development
+homepage:       https://github.com/sol/hpack#readme
+bug-reports:    https://github.com/sol/hpack/issues
+maintainer:     Simon Hengel <sol@typeful.net>
+build-type:     Simple
+extra-source-files:
+    CHANGELOG.md
+
+source-repository head
+  type: git
+  location: https://github.com/sol/hpack
+
+library
+  exposed-modules:
+      Hpack
+      Hpack.Config
+      Hpack.Render
+      Hpack.Yaml
+  other-modules:
+      Paths_hpack
+  hs-source-dirs:
+      src
+  ghc-options: -Wall
+  build-depends:
+      Cabal >=2.2
+    , Glob >=0.9.0
+    , aeson >=1.2.1.0
+    , base >=4.9 && <5
+    , bifunctors
+    , bytestring
+    , containers
+    , cryptonite
+    , deepseq
+    , directory
+    , filepath
+    , http-client
+    , http-client-tls
+    , http-types
+    , infer-license >=0.2.0 && <0.3
+    , pretty
+    , scientific
+    , text
+    , transformers
+    , unordered-containers
+    , vector
+    , yaml >=0.10.0
+  default-language: Haskell2010
+
+executable hpack
+  main-is: Main.hs
+  other-modules:
+      Paths_hpack
+  hs-source-dirs:
+      driver
+  ghc-options: -Wall
+  build-depends:
+      Cabal >=2.2
+    , Glob >=0.9.0
+    , aeson >=1.2.1.0
+    , base >=4.9 && <5
+    , bifunctors
+    , bytestring
+    , containers
+    , cryptonite
+    , deepseq
+    , directory
+    , filepath
+    , hpack
+    , http-client
+    , http-client-tls
+    , http-types
+    , infer-license >=0.2.0 && <0.3
+    , pretty
+    , scientific
+    , text
+    , transformers
+    , unordered-containers
+    , vector
+    , yaml >=0.10.0
+  default-language: Haskell2010
+
+test-suite spec
+  type: exitcode-stdio-1.0
+  main-is: Spec.hs
+  other-modules:
+      Paths_hpack
+  hs-source-dirs:
+      test
+      src
+  ghc-options: -Wall
+  cpp-options: -DTEST
+  build-tool-depends:
+      hspec-discover:hspec-discover
+  build-depends:
+      Cabal >=2.2
+    , Glob >=0.9.0
+    , HUnit >=1.6.0.0
+    , QuickCheck
+    , aeson >=1.2.1.0
+    , base >=4.9 && <5
+    , bifunctors
+    , bytestring
+    , containers
+    , cryptonite
+    , deepseq
+    , directory
+    , filepath
+    , hspec ==2.*
+    , http-client
+    , http-client-tls
+    , http-types
+    , infer-license >=0.2.0 && <0.3
+    , interpolate
+    , mockery >=0.3
+    , pretty
+    , scientific
+    , template-haskell
+    , temporary
+    , text
+    , transformers
+    , unordered-containers
+    , vector
+    , yaml >=0.10.0
+  default-language: Haskell2010
diff --git a/test-suite-golden/test-files/real-world/hpack/hpack.yaml.golden b/test-suite-golden/test-files/real-world/hpack/hpack.yaml.golden
new file mode 100644
--- /dev/null
+++ b/test-suite-golden/test-files/real-world/hpack/hpack.yaml.golden
@@ -0,0 +1,61 @@
+name: hpack
+version: 0.31.1
+synopsis: A modern format for Haskell packages
+description: See README at <https://github.com/sol/hpack#readme>
+category: Development
+maintainer: Simon Hengel <sol@typeful.net>
+github: sol/hpack
+extra-source-files:
+- CHANGELOG.md
+ghc-options: -Wall
+dependencies:
+- base >= 4.9 && < 5
+- bytestring
+- deepseq
+- directory
+- filepath
+- Glob >= 0.9.0
+- text
+- containers
+- unordered-containers
+- yaml >= 0.10.0
+- aeson >= 1.2.1.0
+- scientific
+- Cabal >= 2.2
+- pretty
+- bifunctors
+- cryptonite
+- transformers
+- http-types
+- http-client
+- http-client-tls
+- vector
+- infer-license >= 0.2.0 && < 0.3
+library:
+  exposed-modules:
+  - Hpack
+  - Hpack.Config
+  - Hpack.Render
+  - Hpack.Yaml
+  source-dirs: src
+executable:
+  main: Main.hs
+  source-dirs: driver
+  dependencies:
+  - hpack
+tests:
+  spec:
+    main: Spec.hs
+    source-dirs:
+    - test
+    - src
+    cpp-options: -DTEST
+    dependencies:
+    - hspec == 2.*
+    - QuickCheck
+    - temporary
+    - mockery >= 0.3
+    - interpolate
+    - template-haskell
+    - HUnit >= 1.6.0.0
+    build-tools: hspec-discover
diff --git a/test-suite-golden/test-files/real-world/hpack/package.yaml b/test-suite-golden/test-files/real-world/hpack/package.yaml
new file mode 100644
--- /dev/null
+++ b/test-suite-golden/test-files/real-world/hpack/package.yaml
@@ -0,0 +1,66 @@
+name: hpack
+version: 0.31.1
+synopsis: A modern format for Haskell packages
+description: See README at <https://github.com/sol/hpack#readme>
+maintainer: Simon Hengel <sol@typeful.net>
+github: sol/hpack
+category: Development
+extra-source-files:
+  - CHANGELOG.md
+
+ghc-options: -Wall
+
+dependencies:
+  - base >= 4.9 && < 5
+  - bytestring
+  - deepseq
+  - directory
+  - filepath
+  - Glob >= 0.9.0
+  - text
+  - containers
+  - unordered-containers
+  - yaml >= 0.10.0
+  - aeson >= 1.2.1.0
+  - scientific
+  - Cabal >= 2.2
+  - pretty
+  - bifunctors
+  - cryptonite
+  - transformers
+  - http-types
+  - http-client
+  - http-client-tls
+  - vector
+  - infer-license >= 0.2.0 && < 0.3
+
+library:
+  source-dirs: src
+  exposed-modules:
+    - Hpack
+    - Hpack.Config
+    - Hpack.Render
+    - Hpack.Yaml
+
+executable:
+  main: Main.hs
+  source-dirs: driver
+  dependencies:
+    - hpack
+
+tests:
+  spec:
+    cpp-options: -DTEST
+    main: Spec.hs
+    source-dirs:
+      - test
+      - src
+    dependencies:
+      - hspec == 2.*
+      - QuickCheck
+      - temporary
+      - mockery >= 0.3
+      - interpolate
+      - template-haskell
+      - HUnit >= 1.6.0.0
+    build-tools: hspec-discover
diff --git a/test-suite-golden/test-files/real-world/stack/package.yaml b/test-suite-golden/test-files/real-world/stack/package.yaml
new file mode 100644
--- /dev/null
+++ b/test-suite-golden/test-files/real-world/stack/package.yaml
@@ -0,0 +1,341 @@
+name: stack
+version: '1.10.0'
+synopsis: The Haskell Tool Stack
+description: ! 'Please see the README.md for usage information, and
+  the wiki on Github for more details.  Also, note that
+  the API for the library is not currently stable, and may
+  change significantly, even between minor releases. It is
+  currently only intended for use by the executable.'
+category: Development
+author: Commercial Haskell SIG
+maintainer: manny@fpcomplete.com
+license: BSD3
+github: commercialhaskell/stack
+homepage: http://haskellstack.org
+custom-setup:
+  dependencies:
+  - base >=4.10 && < 5
+  - Cabal >= 2.4
+  - filepath
+extra-source-files:
+# note: leaving out 'package.yaml' because it causes confusion with hackage metadata revisions
+- CONTRIBUTING.md
+- ChangeLog.md
+- README.md
+- doc/*.md
+- src/setup-shim/StackSetupShim.hs
+- stack.yaml
+- test/package-dump/ghc-7.10.txt
+- test/package-dump/ghc-7.8.4-osx.txt
+- test/package-dump/ghc-7.8.txt
+ghc-options:
+- -Wall
+- -fwarn-tabs
+- -fwarn-incomplete-uni-patterns
+- -fwarn-incomplete-record-updates
+- -optP-Wno-nonportable-include-path # workaround [Filename case on macOS · Issue #4739 · haskell/cabal](https://github.com/haskell/cabal/issues/4739)
+dependencies:
+- Cabal >= 2.4
+- aeson
+- annotated-wl-pprint
+- ansi-terminal >= 0.8.1
+- array
+- async
+- attoparsec
+- base >=4.10 && < 5
+- base64-bytestring
+- bytestring
+- colour
+- conduit
+- conduit-extra
+- containers
+- cryptonite
+- cryptonite-conduit
+- deepseq
+- directory
+- echo
+- exceptions
+- extra
+- file-embed
+- filelock
+- filepath
+- fsnotify
+- generic-deriving
+- hackage-security
+- hashable
+- hpack
+- hpc
+- http-client
+- http-client-tls
+- http-conduit
+- http-types
+- memory
+- microlens
+- mintty
+# TODO remove dep when persistent drops monad-logger
+- monad-logger
+- mono-traversable
+- mtl
+- mustache
+- neat-interpolation
+- network-uri
+- open-browser
+- optparse-applicative
+- pantry
+- path
+- path-io
+- persistent
+- persistent-sqlite
+- persistent-template
+- pretty
+- primitive
+- process
+- project-template
+- regex-applicative-text
+- resourcet
+- retry >= 0.7
+- rio
+- semigroups
+- split
+- stm
+- store-core # FIXME remove
+- streaming-commons
+- tar
+- template-haskell
+- temporary
+- text
+- text-metrics
+- th-reify-many
+- time
+- tls
+- transformers
+- typed-process
+- unicode-transforms
+- unix-compat
+- unliftio >= 0.2.8.0
+- unordered-containers
+- vector
+- yaml
+- zip-archive
+- zlib
+when:
+- condition: os(windows)
+  then:
+    cpp-options: -DWINDOWS
+    dependencies:
+    - Win32
+  else:
+    build-tools:
+    - hsc2hs
+    dependencies:
+    - unix
+library:
+  source-dirs: src/
+  ghc-options:
+  - -fwarn-identities
+  generated-exposed-modules:
+  - Paths_stack
+  exposed-modules:
+  - Control.Concurrent.Execute
+  - Data.Attoparsec.Args
+  - Data.Attoparsec.Combinators
+  - Data.Attoparsec.Interpreter
+  - Data.Monoid.Map
+  - Network.HTTP.Download
+  - Network.HTTP.Download.Verified
+  - Network.HTTP.StackClient
+  - Options.Applicative.Args
+  - Options.Applicative.Builder.Extra
+  - Options.Applicative.Complicated
+  - Path.CheckInstall
+  - Path.Extra
+  - Path.Find
+  - Stack.Build
+  - Stack.Build.Cache
+  - Stack.Build.ConstructPlan
+  - Stack.Build.Execute
+  - Stack.Build.Haddock
+  - Stack.Build.Installed
+  - Stack.Build.Source
+  - Stack.Build.Target
+  - Stack.BuildPlan
+  - Stack.Clean
+  - Stack.Config
+  - Stack.Config.Build
+  - Stack.Config.Urls
+  - Stack.Config.Docker
+  - Stack.Config.Nix
+  - Stack.ConfigCmd
+  - Stack.Constants
+  - Stack.Constants.Config
+  - Stack.Coverage
+  - Stack.DefaultColorWhen
+  - Stack.DefaultStyles
+  - Stack.Docker
+  - Stack.Docker.GlobalDB
+  - Stack.Dot
+  - Stack.FileWatch
+  - Stack.Freeze
+  - Stack.GhcPkg
+  - Stack.Ghci
+  - Stack.Ghci.Script
+  - Stack.Hoogle
+  - Stack.IDE
+  - Stack.Image
+  - Stack.Init
+  - Stack.Ls
+  - Stack.New
+  - Stack.Nix
+  - Stack.Options.BenchParser
+  - Stack.Options.BuildMonoidParser
+  - Stack.Options.BuildParser
+  - Stack.Options.CleanParser
+  - Stack.Options.ConfigParser
+  - Stack.Options.Completion
+  - Stack.Options.DockerParser
+  - Stack.Options.DotParser
+  - Stack.Options.ExecParser
+  - Stack.Options.FreezeParser
+  - Stack.Options.GhcBuildParser
+  - Stack.Options.GhciParser
+  - Stack.Options.GhcVariantParser
+  - Stack.Options.GlobalParser
+  - Stack.Options.HaddockParser
+  - Stack.Options.HpcReportParser
+  - Stack.Options.LogLevelParser
+  - Stack.Options.NewParser
+  - Stack.Options.NixParser
+  - Stack.Options.PackageParser
+  - Stack.Options.ResolverParser
+  - Stack.Options.ScriptParser
+  - Stack.Options.SDistParser
+  - Stack.Options.SolverParser
+  - Stack.Options.TestParser
+  - Stack.Options.Utils
+  - Stack.Package
+  - Stack.PackageDump
+  - Stack.Path
+  - Stack.Prelude
+  - Stack.PrettyPrint
+  - Stack.Runners
+  - Stack.Script
+  - Stack.SDist
+  - Stack.Setup
+  - Stack.Setup.Installed
+  - Stack.SetupCmd
+  - Stack.Sig
+  - Stack.Sig.GPG
+  - Stack.Sig.Sign
+  - Stack.Snapshot
+  - Stack.Solver
+  - Stack.StoreTH
+  - Stack.Types.Build
+  - Stack.Types.BuildPlan
+  - Stack.Types.CompilerBuild
+  - Stack.Types.Urls
+  - Stack.Types.Compiler
+  - Stack.Types.Config
+  - Stack.Types.Config.Build
+  - Stack.Types.Docker
+  - Stack.Types.GhcPkgId
+  - Stack.Types.Image
+  - Stack.Types.NamedComponent
+  - Stack.Types.Nix
+  - Stack.Types.Package
+  - Stack.Types.PackageDump
+  - Stack.Types.PackageName
+  - Stack.Types.PrettyPrint
+  - Stack.Types.Resolver
+  - Stack.Types.Runner
+  - Stack.Types.Sig
+  - Stack.Types.StylesUpdate
+  - Stack.Types.TemplateName
+  - Stack.Types.Version
+  - Stack.Types.VersionIntervals
+  - Stack.Unpack
+  - Stack.Upgrade
+  - Stack.Upload
+  - Text.PrettyPrint.Leijen.Extended
+  - System.Permissions
+  - System.Process.PagerEditor
+  - System.Terminal
+  when:
+  - condition: 'os(windows)'
+    then:
+      source-dirs: src/windows/
+    else:
+      source-dirs: src/unix/
+      c-sources: src/unix/cbits/uname.c
+executables:
+  stack:
+    main: Main.hs
+    source-dirs: src/main
+    generated-other-modules:
+    - Build_stack,
+    - Paths_stack
+    ghc-options:
+    - -threaded
+    - -rtsopts
+    dependencies:
+    - stack
+    when:
+    - condition: flag(static)
+      ld-options:
+      - -static
+      - -pthread
+    - condition: ! '!(flag(disable-git-info))'
+      cpp-options: -DUSE_GIT_INFO
+      dependencies:
+      - githash
+      - optparse-simple
+    - condition: flag(hide-dependency-versions)
+      cpp-options: -DHIDE_DEP_VERSIONS
+    - condition: flag(supported-build)
+      cpp-options: -DSUPPORTED_BUILD
+tests:
+  stack-test:
+    main: Spec.hs
+    source-dirs: src/test
+    ghc-options:
+    - -threaded
+    dependencies:
+    - QuickCheck
+    - hspec
+    - stack
+    - smallcheck
+  stack-integration-test:
+    main: IntegrationSpec.hs
+    source-dirs:
+    - test/integration
+    - test/integration/lib
+    ghc-options:
+    - -threaded
+    - -rtsopts
+    - -with-rtsopts=-N
+    dependencies:
+    - hspec
+    when:
+    - condition: ! '!(flag(integration-tests))'
+      buildable: false
+flags:
+  static:
+    description: Pass -static/-pthread to ghc when linking the stack binary.
+    manual: true
+    default: false
+  disable-git-info:
+    description: Disable compile-time inclusion of current git info in stack
+    manual: true
+    default: false
+  hide-dependency-versions:
+    description: Hides dependency versions from "stack --version", used only by building
+      with stack.yaml
+    manual: true
+    default: false
+  integration-tests:
+    description: Run the integration test suite
+    manual: true
+    default: false
+  supported-build:
+    description: If false, causes "stack --version" to issue a warning about the build being unsupported.  True only if building with stack.yaml
+    manual: true
+    default: false
diff --git a/test-suite-golden/test-files/real-world/stack/stack.cabal b/test-suite-golden/test-files/real-world/stack/stack.cabal
new file mode 100644
--- /dev/null
+++ b/test-suite-golden/test-files/real-world/stack/stack.cabal
@@ -0,0 +1,629 @@
+cabal-version: 2.0
+
+-- This file has been generated from stack.dhall by hpack version 0.31.1.
+--
+-- see: https://github.com/sol/hpack
+--
+-- hash: 33d90e3e81d97f3c404a9e20246cf4aa6942dc054db675cadd50b1edd68582ce
+
+name:           stack
+version:        1.10.0
+synopsis:       The Haskell Tool Stack
+description:    Please see the README.md for usage information, and
+                the wiki on Github for more details.  Also, note that
+                the API for the library is not currently stable, and may
+                change significantly, even between minor releases. It is
+                currently only intended for use by the executable.
+category:       Development
+homepage:       http://haskellstack.org
+bug-reports:    https://github.com/commercialhaskell/stack/issues
+author:         Commercial Haskell SIG
+maintainer:     manny@fpcomplete.com
+license:        BSD3
+build-type:     Custom
+extra-source-files:
+    CONTRIBUTING.md
+    ChangeLog.md
+    README.md
+    src/setup-shim/StackSetupShim.hs
+    stack.yaml
+    test/package-dump/ghc-7.10.txt
+    test/package-dump/ghc-7.8.4-osx.txt
+    test/package-dump/ghc-7.8.txt
+
+source-repository head
+  type: git
+  location: https://github.com/commercialhaskell/stack
+
+custom-setup
+  setup-depends:
+      Cabal >=2.4
+    , base >=4.10 && <5
+    , filepath
+
+flag disable-git-info
+  description: Disable compile-time inclusion of current git info in stack
+  manual: True
+  default: False
+
+flag hide-dependency-versions
+  description: Hides dependency versions from "stack --version", used only by building with stack.yaml
+  manual: True
+  default: False
+
+flag integration-tests
+  description: Run the integration test suite
+  manual: True
+  default: False
+
+flag static
+  description: Pass -static/-pthread to ghc when linking the stack binary.
+  manual: True
+  default: False
+
+flag supported-build
+  description: If false, causes "stack --version" to issue a warning about the build being unsupported.  True only if building with stack.yaml
+  manual: True
+  default: False
+
+library
+  exposed-modules:
+      Control.Concurrent.Execute
+      Data.Attoparsec.Args
+      Data.Attoparsec.Combinators
+      Data.Attoparsec.Interpreter
+      Data.Monoid.Map
+      Network.HTTP.Download
+      Network.HTTP.Download.Verified
+      Network.HTTP.StackClient
+      Options.Applicative.Args
+      Options.Applicative.Builder.Extra
+      Options.Applicative.Complicated
+      Path.CheckInstall
+      Path.Extra
+      Path.Find
+      Stack.Build
+      Stack.Build.Cache
+      Stack.Build.ConstructPlan
+      Stack.Build.Execute
+      Stack.Build.Haddock
+      Stack.Build.Installed
+      Stack.Build.Source
+      Stack.Build.Target
+      Stack.BuildPlan
+      Stack.Clean
+      Stack.Config
+      Stack.Config.Build
+      Stack.Config.Urls
+      Stack.Config.Docker
+      Stack.Config.Nix
+      Stack.ConfigCmd
+      Stack.Constants
+      Stack.Constants.Config
+      Stack.Coverage
+      Stack.DefaultColorWhen
+      Stack.DefaultStyles
+      Stack.Docker
+      Stack.Docker.GlobalDB
+      Stack.Dot
+      Stack.FileWatch
+      Stack.Freeze
+      Stack.GhcPkg
+      Stack.Ghci
+      Stack.Ghci.Script
+      Stack.Hoogle
+      Stack.IDE
+      Stack.Image
+      Stack.Init
+      Stack.Ls
+      Stack.New
+      Stack.Nix
+      Stack.Options.BenchParser
+      Stack.Options.BuildMonoidParser
+      Stack.Options.BuildParser
+      Stack.Options.CleanParser
+      Stack.Options.ConfigParser
+      Stack.Options.Completion
+      Stack.Options.DockerParser
+      Stack.Options.DotParser
+      Stack.Options.ExecParser
+      Stack.Options.FreezeParser
+      Stack.Options.GhcBuildParser
+      Stack.Options.GhciParser
+      Stack.Options.GhcVariantParser
+      Stack.Options.GlobalParser
+      Stack.Options.HaddockParser
+      Stack.Options.HpcReportParser
+      Stack.Options.LogLevelParser
+      Stack.Options.NewParser
+      Stack.Options.NixParser
+      Stack.Options.PackageParser
+      Stack.Options.ResolverParser
+      Stack.Options.ScriptParser
+      Stack.Options.SDistParser
+      Stack.Options.SolverParser
+      Stack.Options.TestParser
+      Stack.Options.Utils
+      Stack.Package
+      Stack.PackageDump
+      Stack.Path
+      Stack.Prelude
+      Stack.PrettyPrint
+      Stack.Runners
+      Stack.Script
+      Stack.SDist
+      Stack.Setup
+      Stack.Setup.Installed
+      Stack.SetupCmd
+      Stack.Sig
+      Stack.Sig.GPG
+      Stack.Sig.Sign
+      Stack.Snapshot
+      Stack.Solver
+      Stack.StoreTH
+      Stack.Types.Build
+      Stack.Types.BuildPlan
+      Stack.Types.CompilerBuild
+      Stack.Types.Urls
+      Stack.Types.Compiler
+      Stack.Types.Config
+      Stack.Types.Config.Build
+      Stack.Types.Docker
+      Stack.Types.GhcPkgId
+      Stack.Types.Image
+      Stack.Types.NamedComponent
+      Stack.Types.Nix
+      Stack.Types.Package
+      Stack.Types.PackageDump
+      Stack.Types.PackageName
+      Stack.Types.PrettyPrint
+      Stack.Types.Resolver
+      Stack.Types.Runner
+      Stack.Types.Sig
+      Stack.Types.StylesUpdate
+      Stack.Types.TemplateName
+      Stack.Types.Version
+      Stack.Types.VersionIntervals
+      Stack.Unpack
+      Stack.Upgrade
+      Stack.Upload
+      Text.PrettyPrint.Leijen.Extended
+      System.Permissions
+      System.Process.PagerEditor
+      System.Terminal
+      Paths_stack
+  autogen-modules:
+      Paths_stack
+  hs-source-dirs:
+      src/
+  ghc-options: -Wall -fwarn-tabs -fwarn-incomplete-uni-patterns -fwarn-incomplete-record-updates -optP-Wno-nonportable-include-path # workaround [Filename case on macOS · Issue #4739 · haskell/cabal](https://github.com/haskell/cabal/issues/4739) -fwarn-identities
+  build-depends:
+      Cabal >=2.4
+    , aeson
+    , annotated-wl-pprint
+    , ansi-terminal >=0.8.1
+    , array
+    , async
+    , attoparsec
+    , base >=4.10 && <5
+    , base64-bytestring
+    , bytestring
+    , colour
+    , conduit
+    , conduit-extra
+    , containers
+    , cryptonite
+    , cryptonite-conduit
+    , deepseq
+    , directory
+    , echo
+    , exceptions
+    , extra
+    , file-embed
+    , filelock
+    , filepath
+    , fsnotify
+    , generic-deriving
+    , hackage-security
+    , hashable
+    , hpack
+    , hpc
+    , http-client
+    , http-client-tls
+    , http-conduit
+    , http-types
+    , memory
+    , microlens
+    , mintty
+    , monad-logger
+    , mono-traversable
+    , mtl
+    , mustache
+    , neat-interpolation
+    , network-uri
+    , open-browser
+    , optparse-applicative
+    , pantry
+    , path
+    , path-io
+    , persistent
+    , persistent-sqlite
+    , persistent-template
+    , pretty
+    , primitive
+    , process
+    , project-template
+    , regex-applicative-text
+    , resourcet
+    , retry >=0.7
+    , rio
+    , semigroups
+    , split
+    , stm
+    , store-core
+    , streaming-commons
+    , tar
+    , template-haskell
+    , temporary
+    , text
+    , text-metrics
+    , th-reify-many
+    , time
+    , tls
+    , transformers
+    , typed-process
+    , unicode-transforms
+    , unix-compat
+    , unliftio >=0.2.8.0
+    , unordered-containers
+    , vector
+    , yaml
+    , zip-archive
+    , zlib
+  if os(windows)
+    cpp-options: -DWINDOWS
+    build-depends:
+        Win32
+  else
+    build-tools:
+        hsc2hs
+    build-depends:
+        unix
+  if os(windows)
+    hs-source-dirs:
+        src/windows/
+  else
+    hs-source-dirs:
+        src/unix/
+    c-sources:
+        src/unix/cbits/uname.c
+  default-language: Haskell2010
+
+executable stack
+  main-is: Main.hs
+  other-modules:
+      Build_stack
+      Paths_stack
+  autogen-modules:
+      Build_stack
+      Paths_stack
+  hs-source-dirs:
+      src/main
+  ghc-options: -Wall -fwarn-tabs -fwarn-incomplete-uni-patterns -fwarn-incomplete-record-updates -optP-Wno-nonportable-include-path # workaround [Filename case on macOS · Issue #4739 · haskell/cabal](https://github.com/haskell/cabal/issues/4739) -threaded -rtsopts
+  build-depends:
+      Cabal >=2.4
+    , aeson
+    , annotated-wl-pprint
+    , ansi-terminal >=0.8.1
+    , array
+    , async
+    , attoparsec
+    , base >=4.10 && <5
+    , base64-bytestring
+    , bytestring
+    , colour
+    , conduit
+    , conduit-extra
+    , containers
+    , cryptonite
+    , cryptonite-conduit
+    , deepseq
+    , directory
+    , echo
+    , exceptions
+    , extra
+    , file-embed
+    , filelock
+    , filepath
+    , fsnotify
+    , generic-deriving
+    , hackage-security
+    , hashable
+    , hpack
+    , hpc
+    , http-client
+    , http-client-tls
+    , http-conduit
+    , http-types
+    , memory
+    , microlens
+    , mintty
+    , monad-logger
+    , mono-traversable
+    , mtl
+    , mustache
+    , neat-interpolation
+    , network-uri
+    , open-browser
+    , optparse-applicative
+    , pantry
+    , path
+    , path-io
+    , persistent
+    , persistent-sqlite
+    , persistent-template
+    , pretty
+    , primitive
+    , process
+    , project-template
+    , regex-applicative-text
+    , resourcet
+    , retry >=0.7
+    , rio
+    , semigroups
+    , split
+    , stack
+    , stm
+    , store-core
+    , streaming-commons
+    , tar
+    , template-haskell
+    , temporary
+    , text
+    , text-metrics
+    , th-reify-many
+    , time
+    , tls
+    , transformers
+    , typed-process
+    , unicode-transforms
+    , unix-compat
+    , unliftio >=0.2.8.0
+    , unordered-containers
+    , vector
+    , yaml
+    , zip-archive
+    , zlib
+  if os(windows)
+    cpp-options: -DWINDOWS
+    build-depends:
+        Win32
+  else
+    build-tools:
+        hsc2hs
+    build-depends:
+        unix
+  if flag(static)
+    ld-options: -static -pthread
+  if !(flag(disable-git-info))
+    cpp-options: -DUSE_GIT_INFO
+    build-depends:
+        githash
+      , optparse-simple
+  if flag(hide-dependency-versions)
+    cpp-options: -DHIDE_DEP_VERSIONS
+  if flag(supported-build)
+    cpp-options: -DSUPPORTED_BUILD
+  default-language: Haskell2010
+
+test-suite stack-integration-test
+  type: exitcode-stdio-1.0
+  main-is: IntegrationSpec.hs
+  other-modules:
+      Paths_stack
+  hs-source-dirs:
+      test/integration
+      test/integration/lib
+  ghc-options: -Wall -fwarn-tabs -fwarn-incomplete-uni-patterns -fwarn-incomplete-record-updates -optP-Wno-nonportable-include-path # workaround [Filename case on macOS · Issue #4739 · haskell/cabal](https://github.com/haskell/cabal/issues/4739) -threaded -rtsopts -with-rtsopts=-N
+  build-depends:
+      Cabal >=2.4
+    , aeson
+    , annotated-wl-pprint
+    , ansi-terminal >=0.8.1
+    , array
+    , async
+    , attoparsec
+    , base >=4.10 && <5
+    , base64-bytestring
+    , bytestring
+    , colour
+    , conduit
+    , conduit-extra
+    , containers
+    , cryptonite
+    , cryptonite-conduit
+    , deepseq
+    , directory
+    , echo
+    , exceptions
+    , extra
+    , file-embed
+    , filelock
+    , filepath
+    , fsnotify
+    , generic-deriving
+    , hackage-security
+    , hashable
+    , hpack
+    , hpc
+    , hspec
+    , http-client
+    , http-client-tls
+    , http-conduit
+    , http-types
+    , memory
+    , microlens
+    , mintty
+    , monad-logger
+    , mono-traversable
+    , mtl
+    , mustache
+    , neat-interpolation
+    , network-uri
+    , open-browser
+    , optparse-applicative
+    , pantry
+    , path
+    , path-io
+    , persistent
+    , persistent-sqlite
+    , persistent-template
+    , pretty
+    , primitive
+    , process
+    , project-template
+    , regex-applicative-text
+    , resourcet
+    , retry >=0.7
+    , rio
+    , semigroups
+    , split
+    , stm
+    , store-core
+    , streaming-commons
+    , tar
+    , template-haskell
+    , temporary
+    , text
+    , text-metrics
+    , th-reify-many
+    , time
+    , tls
+    , transformers
+    , typed-process
+    , unicode-transforms
+    , unix-compat
+    , unliftio >=0.2.8.0
+    , unordered-containers
+    , vector
+    , yaml
+    , zip-archive
+    , zlib
+  if os(windows)
+    cpp-options: -DWINDOWS
+    build-depends:
+        Win32
+  else
+    build-tools:
+        hsc2hs
+    build-depends:
+        unix
+  if !flag(integration-tests)
+    buildable: False
+  default-language: Haskell2010
+
+test-suite stack-test
+  type: exitcode-stdio-1.0
+  main-is: Spec.hs
+  other-modules:
+      Paths_stack
+  hs-source-dirs:
+      src/test
+  ghc-options: -Wall -fwarn-tabs -fwarn-incomplete-uni-patterns -fwarn-incomplete-record-updates -optP-Wno-nonportable-include-path # workaround [Filename case on macOS · Issue #4739 · haskell/cabal](https://github.com/haskell/cabal/issues/4739) -threaded
+  build-depends:
+      Cabal >=2.4
+    , QuickCheck
+    , aeson
+    , annotated-wl-pprint
+    , ansi-terminal >=0.8.1
+    , array
+    , async
+    , attoparsec
+    , base >=4.10 && <5
+    , base64-bytestring
+    , bytestring
+    , colour
+    , conduit
+    , conduit-extra
+    , containers
+    , cryptonite
+    , cryptonite-conduit
+    , deepseq
+    , directory
+    , echo
+    , exceptions
+    , extra
+    , file-embed
+    , filelock
+    , filepath
+    , fsnotify
+    , generic-deriving
+    , hackage-security
+    , hashable
+    , hpack
+    , hpc
+    , hspec
+    , http-client
+    , http-client-tls
+    , http-conduit
+    , http-types
+    , memory
+    , microlens
+    , mintty
+    , monad-logger
+    , mono-traversable
+    , mtl
+    , mustache
+    , neat-interpolation
+    , network-uri
+    , open-browser
+    , optparse-applicative
+    , pantry
+    , path
+    , path-io
+    , persistent
+    , persistent-sqlite
+    , persistent-template
+    , pretty
+    , primitive
+    , process
+    , project-template
+    , regex-applicative-text
+    , resourcet
+    , retry >=0.7
+    , rio
+    , semigroups
+    , smallcheck
+    , split
+    , stack
+    , stm
+    , store-core
+    , streaming-commons
+    , tar
+    , template-haskell
+    , temporary
+    , text
+    , text-metrics
+    , th-reify-many
+    , time
+    , tls
+    , transformers
+    , typed-process
+    , unicode-transforms
+    , unix-compat
+    , unliftio >=0.2.8.0
+    , unordered-containers
+    , vector
+    , yaml
+    , zip-archive
+    , zlib
+  if os(windows)
+    cpp-options: -DWINDOWS
+    build-depends:
+        Win32
+  else
+    build-tools:
+        hsc2hs
+    build-depends:
+        unix
+  default-language: Haskell2010
diff --git a/test-suite-golden/test-files/real-world/stack/stack.cabal.golden b/test-suite-golden/test-files/real-world/stack/stack.cabal.golden
new file mode 100644
--- /dev/null
+++ b/test-suite-golden/test-files/real-world/stack/stack.cabal.golden
@@ -0,0 +1,629 @@
+cabal-version: 2.0
+
+-- This file has been generated from stack.dhall by hpack version 0.31.1.
+--
+-- see: https://github.com/sol/hpack
+--
+-- hash: 33d90e3e81d97f3c404a9e20246cf4aa6942dc054db675cadd50b1edd68582ce
+
+name:           stack
+version:        1.10.0
+synopsis:       The Haskell Tool Stack
+description:    Please see the README.md for usage information, and
+                the wiki on Github for more details.  Also, note that
+                the API for the library is not currently stable, and may
+                change significantly, even between minor releases. It is
+                currently only intended for use by the executable.
+category:       Development
+homepage:       http://haskellstack.org
+bug-reports:    https://github.com/commercialhaskell/stack/issues
+author:         Commercial Haskell SIG
+maintainer:     manny@fpcomplete.com
+license:        BSD3
+build-type:     Custom
+extra-source-files:
+    CONTRIBUTING.md
+    ChangeLog.md
+    README.md
+    src/setup-shim/StackSetupShim.hs
+    stack.yaml
+    test/package-dump/ghc-7.10.txt
+    test/package-dump/ghc-7.8.4-osx.txt
+    test/package-dump/ghc-7.8.txt
+
+source-repository head
+  type: git
+  location: https://github.com/commercialhaskell/stack
+
+custom-setup
+  setup-depends:
+      Cabal >=2.4
+    , base >=4.10 && <5
+    , filepath
+
+flag disable-git-info
+  description: Disable compile-time inclusion of current git info in stack
+  manual: True
+  default: False
+
+flag hide-dependency-versions
+  description: Hides dependency versions from "stack --version", used only by building with stack.yaml
+  manual: True
+  default: False
+
+flag integration-tests
+  description: Run the integration test suite
+  manual: True
+  default: False
+
+flag static
+  description: Pass -static/-pthread to ghc when linking the stack binary.
+  manual: True
+  default: False
+
+flag supported-build
+  description: If false, causes "stack --version" to issue a warning about the build being unsupported.  True only if building with stack.yaml
+  manual: True
+  default: False
+
+library
+  exposed-modules:
+      Control.Concurrent.Execute
+      Data.Attoparsec.Args
+      Data.Attoparsec.Combinators
+      Data.Attoparsec.Interpreter
+      Data.Monoid.Map
+      Network.HTTP.Download
+      Network.HTTP.Download.Verified
+      Network.HTTP.StackClient
+      Options.Applicative.Args
+      Options.Applicative.Builder.Extra
+      Options.Applicative.Complicated
+      Path.CheckInstall
+      Path.Extra
+      Path.Find
+      Stack.Build
+      Stack.Build.Cache
+      Stack.Build.ConstructPlan
+      Stack.Build.Execute
+      Stack.Build.Haddock
+      Stack.Build.Installed
+      Stack.Build.Source
+      Stack.Build.Target
+      Stack.BuildPlan
+      Stack.Clean
+      Stack.Config
+      Stack.Config.Build
+      Stack.Config.Urls
+      Stack.Config.Docker
+      Stack.Config.Nix
+      Stack.ConfigCmd
+      Stack.Constants
+      Stack.Constants.Config
+      Stack.Coverage
+      Stack.DefaultColorWhen
+      Stack.DefaultStyles
+      Stack.Docker
+      Stack.Docker.GlobalDB
+      Stack.Dot
+      Stack.FileWatch
+      Stack.Freeze
+      Stack.GhcPkg
+      Stack.Ghci
+      Stack.Ghci.Script
+      Stack.Hoogle
+      Stack.IDE
+      Stack.Image
+      Stack.Init
+      Stack.Ls
+      Stack.New
+      Stack.Nix
+      Stack.Options.BenchParser
+      Stack.Options.BuildMonoidParser
+      Stack.Options.BuildParser
+      Stack.Options.CleanParser
+      Stack.Options.ConfigParser
+      Stack.Options.Completion
+      Stack.Options.DockerParser
+      Stack.Options.DotParser
+      Stack.Options.ExecParser
+      Stack.Options.FreezeParser
+      Stack.Options.GhcBuildParser
+      Stack.Options.GhciParser
+      Stack.Options.GhcVariantParser
+      Stack.Options.GlobalParser
+      Stack.Options.HaddockParser
+      Stack.Options.HpcReportParser
+      Stack.Options.LogLevelParser
+      Stack.Options.NewParser
+      Stack.Options.NixParser
+      Stack.Options.PackageParser
+      Stack.Options.ResolverParser
+      Stack.Options.ScriptParser
+      Stack.Options.SDistParser
+      Stack.Options.SolverParser
+      Stack.Options.TestParser
+      Stack.Options.Utils
+      Stack.Package
+      Stack.PackageDump
+      Stack.Path
+      Stack.Prelude
+      Stack.PrettyPrint
+      Stack.Runners
+      Stack.Script
+      Stack.SDist
+      Stack.Setup
+      Stack.Setup.Installed
+      Stack.SetupCmd
+      Stack.Sig
+      Stack.Sig.GPG
+      Stack.Sig.Sign
+      Stack.Snapshot
+      Stack.Solver
+      Stack.StoreTH
+      Stack.Types.Build
+      Stack.Types.BuildPlan
+      Stack.Types.CompilerBuild
+      Stack.Types.Urls
+      Stack.Types.Compiler
+      Stack.Types.Config
+      Stack.Types.Config.Build
+      Stack.Types.Docker
+      Stack.Types.GhcPkgId
+      Stack.Types.Image
+      Stack.Types.NamedComponent
+      Stack.Types.Nix
+      Stack.Types.Package
+      Stack.Types.PackageDump
+      Stack.Types.PackageName
+      Stack.Types.PrettyPrint
+      Stack.Types.Resolver
+      Stack.Types.Runner
+      Stack.Types.Sig
+      Stack.Types.StylesUpdate
+      Stack.Types.TemplateName
+      Stack.Types.Version
+      Stack.Types.VersionIntervals
+      Stack.Unpack
+      Stack.Upgrade
+      Stack.Upload
+      Text.PrettyPrint.Leijen.Extended
+      System.Permissions
+      System.Process.PagerEditor
+      System.Terminal
+      Paths_stack
+  autogen-modules:
+      Paths_stack
+  hs-source-dirs:
+      src/
+  ghc-options: -Wall -fwarn-tabs -fwarn-incomplete-uni-patterns -fwarn-incomplete-record-updates -optP-Wno-nonportable-include-path # workaround [Filename case on macOS · Issue #4739 · haskell/cabal](https://github.com/haskell/cabal/issues/4739) -fwarn-identities
+  build-depends:
+      Cabal >=2.4
+    , aeson
+    , annotated-wl-pprint
+    , ansi-terminal >=0.8.1
+    , array
+    , async
+    , attoparsec
+    , base >=4.10 && <5
+    , base64-bytestring
+    , bytestring
+    , colour
+    , conduit
+    , conduit-extra
+    , containers
+    , cryptonite
+    , cryptonite-conduit
+    , deepseq
+    , directory
+    , echo
+    , exceptions
+    , extra
+    , file-embed
+    , filelock
+    , filepath
+    , fsnotify
+    , generic-deriving
+    , hackage-security
+    , hashable
+    , hpack
+    , hpc
+    , http-client
+    , http-client-tls
+    , http-conduit
+    , http-types
+    , memory
+    , microlens
+    , mintty
+    , monad-logger
+    , mono-traversable
+    , mtl
+    , mustache
+    , neat-interpolation
+    , network-uri
+    , open-browser
+    , optparse-applicative
+    , pantry
+    , path
+    , path-io
+    , persistent
+    , persistent-sqlite
+    , persistent-template
+    , pretty
+    , primitive
+    , process
+    , project-template
+    , regex-applicative-text
+    , resourcet
+    , retry >=0.7
+    , rio
+    , semigroups
+    , split
+    , stm
+    , store-core
+    , streaming-commons
+    , tar
+    , template-haskell
+    , temporary
+    , text
+    , text-metrics
+    , th-reify-many
+    , time
+    , tls
+    , transformers
+    , typed-process
+    , unicode-transforms
+    , unix-compat
+    , unliftio >=0.2.8.0
+    , unordered-containers
+    , vector
+    , yaml
+    , zip-archive
+    , zlib
+  if os(windows)
+    cpp-options: -DWINDOWS
+    build-depends:
+        Win32
+  else
+    build-tools:
+        hsc2hs
+    build-depends:
+        unix
+  if os(windows)
+    hs-source-dirs:
+        src/windows/
+  else
+    hs-source-dirs:
+        src/unix/
+    c-sources:
+        src/unix/cbits/uname.c
+  default-language: Haskell2010
+
+executable stack
+  main-is: Main.hs
+  other-modules:
+      Build_stack
+      Paths_stack
+  autogen-modules:
+      Build_stack
+      Paths_stack
+  hs-source-dirs:
+      src/main
+  ghc-options: -Wall -fwarn-tabs -fwarn-incomplete-uni-patterns -fwarn-incomplete-record-updates -optP-Wno-nonportable-include-path # workaround [Filename case on macOS · Issue #4739 · haskell/cabal](https://github.com/haskell/cabal/issues/4739) -threaded -rtsopts
+  build-depends:
+      Cabal >=2.4
+    , aeson
+    , annotated-wl-pprint
+    , ansi-terminal >=0.8.1
+    , array
+    , async
+    , attoparsec
+    , base >=4.10 && <5
+    , base64-bytestring
+    , bytestring
+    , colour
+    , conduit
+    , conduit-extra
+    , containers
+    , cryptonite
+    , cryptonite-conduit
+    , deepseq
+    , directory
+    , echo
+    , exceptions
+    , extra
+    , file-embed
+    , filelock
+    , filepath
+    , fsnotify
+    , generic-deriving
+    , hackage-security
+    , hashable
+    , hpack
+    , hpc
+    , http-client
+    , http-client-tls
+    , http-conduit
+    , http-types
+    , memory
+    , microlens
+    , mintty
+    , monad-logger
+    , mono-traversable
+    , mtl
+    , mustache
+    , neat-interpolation
+    , network-uri
+    , open-browser
+    , optparse-applicative
+    , pantry
+    , path
+    , path-io
+    , persistent
+    , persistent-sqlite
+    , persistent-template
+    , pretty
+    , primitive
+    , process
+    , project-template
+    , regex-applicative-text
+    , resourcet
+    , retry >=0.7
+    , rio
+    , semigroups
+    , split
+    , stack
+    , stm
+    , store-core
+    , streaming-commons
+    , tar
+    , template-haskell
+    , temporary
+    , text
+    , text-metrics
+    , th-reify-many
+    , time
+    , tls
+    , transformers
+    , typed-process
+    , unicode-transforms
+    , unix-compat
+    , unliftio >=0.2.8.0
+    , unordered-containers
+    , vector
+    , yaml
+    , zip-archive
+    , zlib
+  if os(windows)
+    cpp-options: -DWINDOWS
+    build-depends:
+        Win32
+  else
+    build-tools:
+        hsc2hs
+    build-depends:
+        unix
+  if flag(static)
+    ld-options: -static -pthread
+  if !(flag(disable-git-info))
+    cpp-options: -DUSE_GIT_INFO
+    build-depends:
+        githash
+      , optparse-simple
+  if flag(hide-dependency-versions)
+    cpp-options: -DHIDE_DEP_VERSIONS
+  if flag(supported-build)
+    cpp-options: -DSUPPORTED_BUILD
+  default-language: Haskell2010
+
+test-suite stack-integration-test
+  type: exitcode-stdio-1.0
+  main-is: IntegrationSpec.hs
+  other-modules:
+      Paths_stack
+  hs-source-dirs:
+      test/integration
+      test/integration/lib
+  ghc-options: -Wall -fwarn-tabs -fwarn-incomplete-uni-patterns -fwarn-incomplete-record-updates -optP-Wno-nonportable-include-path # workaround [Filename case on macOS · Issue #4739 · haskell/cabal](https://github.com/haskell/cabal/issues/4739) -threaded -rtsopts -with-rtsopts=-N
+  build-depends:
+      Cabal >=2.4
+    , aeson
+    , annotated-wl-pprint
+    , ansi-terminal >=0.8.1
+    , array
+    , async
+    , attoparsec
+    , base >=4.10 && <5
+    , base64-bytestring
+    , bytestring
+    , colour
+    , conduit
+    , conduit-extra
+    , containers
+    , cryptonite
+    , cryptonite-conduit
+    , deepseq
+    , directory
+    , echo
+    , exceptions
+    , extra
+    , file-embed
+    , filelock
+    , filepath
+    , fsnotify
+    , generic-deriving
+    , hackage-security
+    , hashable
+    , hpack
+    , hpc
+    , hspec
+    , http-client
+    , http-client-tls
+    , http-conduit
+    , http-types
+    , memory
+    , microlens
+    , mintty
+    , monad-logger
+    , mono-traversable
+    , mtl
+    , mustache
+    , neat-interpolation
+    , network-uri
+    , open-browser
+    , optparse-applicative
+    , pantry
+    , path
+    , path-io
+    , persistent
+    , persistent-sqlite
+    , persistent-template
+    , pretty
+    , primitive
+    , process
+    , project-template
+    , regex-applicative-text
+    , resourcet
+    , retry >=0.7
+    , rio
+    , semigroups
+    , split
+    , stm
+    , store-core
+    , streaming-commons
+    , tar
+    , template-haskell
+    , temporary
+    , text
+    , text-metrics
+    , th-reify-many
+    , time
+    , tls
+    , transformers
+    , typed-process
+    , unicode-transforms
+    , unix-compat
+    , unliftio >=0.2.8.0
+    , unordered-containers
+    , vector
+    , yaml
+    , zip-archive
+    , zlib
+  if os(windows)
+    cpp-options: -DWINDOWS
+    build-depends:
+        Win32
+  else
+    build-tools:
+        hsc2hs
+    build-depends:
+        unix
+  if !flag(integration-tests)
+    buildable: False
+  default-language: Haskell2010
+
+test-suite stack-test
+  type: exitcode-stdio-1.0
+  main-is: Spec.hs
+  other-modules:
+      Paths_stack
+  hs-source-dirs:
+      src/test
+  ghc-options: -Wall -fwarn-tabs -fwarn-incomplete-uni-patterns -fwarn-incomplete-record-updates -optP-Wno-nonportable-include-path # workaround [Filename case on macOS · Issue #4739 · haskell/cabal](https://github.com/haskell/cabal/issues/4739) -threaded
+  build-depends:
+      Cabal >=2.4
+    , QuickCheck
+    , aeson
+    , annotated-wl-pprint
+    , ansi-terminal >=0.8.1
+    , array
+    , async
+    , attoparsec
+    , base >=4.10 && <5
+    , base64-bytestring
+    , bytestring
+    , colour
+    , conduit
+    , conduit-extra
+    , containers
+    , cryptonite
+    , cryptonite-conduit
+    , deepseq
+    , directory
+    , echo
+    , exceptions
+    , extra
+    , file-embed
+    , filelock
+    , filepath
+    , fsnotify
+    , generic-deriving
+    , hackage-security
+    , hashable
+    , hpack
+    , hpc
+    , hspec
+    , http-client
+    , http-client-tls
+    , http-conduit
+    , http-types
+    , memory
+    , microlens
+    , mintty
+    , monad-logger
+    , mono-traversable
+    , mtl
+    , mustache
+    , neat-interpolation
+    , network-uri
+    , open-browser
+    , optparse-applicative
+    , pantry
+    , path
+    , path-io
+    , persistent
+    , persistent-sqlite
+    , persistent-template
+    , pretty
+    , primitive
+    , process
+    , project-template
+    , regex-applicative-text
+    , resourcet
+    , retry >=0.7
+    , rio
+    , semigroups
+    , smallcheck
+    , split
+    , stack
+    , stm
+    , store-core
+    , streaming-commons
+    , tar
+    , template-haskell
+    , temporary
+    , text
+    , text-metrics
+    , th-reify-many
+    , time
+    , tls
+    , transformers
+    , typed-process
+    , unicode-transforms
+    , unix-compat
+    , unliftio >=0.2.8.0
+    , unordered-containers
+    , vector
+    , yaml
+    , zip-archive
+    , zlib
+  if os(windows)
+    cpp-options: -DWINDOWS
+    build-depends:
+        Win32
+  else
+    build-tools:
+        hsc2hs
+    build-depends:
+        unix
+  default-language: Haskell2010
diff --git a/test-suite-golden/test-files/real-world/stack/stack.dhall b/test-suite-golden/test-files/real-world/stack/stack.dhall
new file mode 100644
--- /dev/null
+++ b/test-suite-golden/test-files/real-world/stack/stack.dhall
@@ -0,0 +1,401 @@
+{ name =
+    "stack"
+, version =
+    "1.10.0"
+, synopsis =
+    "The Haskell Tool Stack"
+, description =
+    ''
+    Please see the README.md for usage information, and
+    the wiki on Github for more details.  Also, note that
+    the API for the library is not currently stable, and may
+    change significantly, even between minor releases. It is
+    currently only intended for use by the executable.''
+, category =
+    "Development"
+, author =
+    "Commercial Haskell SIG"
+, maintainer =
+    "manny@fpcomplete.com"
+, license =
+    "BSD3"
+, github =
+    "commercialhaskell/stack"
+, homepage =
+    "http://haskellstack.org"
+, custom-setup =
+    { dependencies = [ "base >=4.10 && < 5", "Cabal >= 2.4", "filepath" ] }
+, extra-source-files =
+    [ "CONTRIBUTING.md"
+    , "ChangeLog.md"
+    , "README.md"
+    , "doc/*.md"
+    , "src/setup-shim/StackSetupShim.hs"
+    , "stack.yaml"
+    , "test/package-dump/ghc-7.10.txt"
+    , "test/package-dump/ghc-7.8.4-osx.txt"
+    , "test/package-dump/ghc-7.8.txt"
+    ]
+, ghc-options =
+    [ "-Wall"
+    , "-fwarn-tabs"
+    , "-fwarn-incomplete-uni-patterns"
+    , "-fwarn-incomplete-record-updates"
+    , "-optP-Wno-nonportable-include-path # workaround [Filename case on macOS \u00B7 Issue #4739 \u00B7 haskell/cabal](https://github.com/haskell/cabal/issues/4739)"
+    ]
+, dependencies =
+    [ "Cabal >= 2.4"
+    , "aeson"
+    , "annotated-wl-pprint"
+    , "ansi-terminal >= 0.8.1"
+    , "array"
+    , "async"
+    , "attoparsec"
+    , "base >=4.10 && < 5"
+    , "base64-bytestring"
+    , "bytestring"
+    , "colour"
+    , "conduit"
+    , "conduit-extra"
+    , "containers"
+    , "cryptonite"
+    , "cryptonite-conduit"
+    , "deepseq"
+    , "directory"
+    , "echo"
+    , "exceptions"
+    , "extra"
+    , "file-embed"
+    , "filelock"
+    , "filepath"
+    , "fsnotify"
+    , "generic-deriving"
+    , "hackage-security"
+    , "hashable"
+    , "hpack"
+    , "hpc"
+    , "http-client"
+    , "http-client-tls"
+    , "http-conduit"
+    , "http-types"
+    , "memory"
+    , "microlens"
+    , "mintty"
+    , "monad-logger"
+    , "mono-traversable"
+    , "mtl"
+    , "mustache"
+    , "neat-interpolation"
+    , "network-uri"
+    , "open-browser"
+    , "optparse-applicative"
+    , "pantry"
+    , "path"
+    , "path-io"
+    , "persistent"
+    , "persistent-sqlite"
+    , "persistent-template"
+    , "pretty"
+    , "primitive"
+    , "process"
+    , "project-template"
+    , "regex-applicative-text"
+    , "resourcet"
+    , "retry >= 0.7"
+    , "rio"
+    , "semigroups"
+    , "split"
+    , "stm"
+    , "store-core"
+    , "streaming-commons"
+    , "tar"
+    , "template-haskell"
+    , "temporary"
+    , "text"
+    , "text-metrics"
+    , "th-reify-many"
+    , "time"
+    , "tls"
+    , "transformers"
+    , "typed-process"
+    , "unicode-transforms"
+    , "unix-compat"
+    , "unliftio >= 0.2.8.0"
+    , "unordered-containers"
+    , "vector"
+    , "yaml"
+    , "zip-archive"
+    , "zlib"
+    ]
+, when =
+    { condition =
+        "os(windows)"
+    , `then` =
+        { cpp-options = [ "-DWINDOWS" ], dependencies = [ "Win32" ] }
+    , `else` =
+        { build-tools = [ "hsc2hs" ], dependencies = [ "unix" ] }
+    }
+, library =
+    { source-dirs =
+        "src/"
+    , ghc-options =
+        [ "-fwarn-identities" ]
+    , generated-exposed-modules =
+        [ "Paths_stack" ]
+    , exposed-modules =
+        [ "Control.Concurrent.Execute"
+        , "Data.Attoparsec.Args"
+        , "Data.Attoparsec.Combinators"
+        , "Data.Attoparsec.Interpreter"
+        , "Data.Monoid.Map"
+        , "Network.HTTP.Download"
+        , "Network.HTTP.Download.Verified"
+        , "Network.HTTP.StackClient"
+        , "Options.Applicative.Args"
+        , "Options.Applicative.Builder.Extra"
+        , "Options.Applicative.Complicated"
+        , "Path.CheckInstall"
+        , "Path.Extra"
+        , "Path.Find"
+        , "Stack.Build"
+        , "Stack.Build.Cache"
+        , "Stack.Build.ConstructPlan"
+        , "Stack.Build.Execute"
+        , "Stack.Build.Haddock"
+        , "Stack.Build.Installed"
+        , "Stack.Build.Source"
+        , "Stack.Build.Target"
+        , "Stack.BuildPlan"
+        , "Stack.Clean"
+        , "Stack.Config"
+        , "Stack.Config.Build"
+        , "Stack.Config.Urls"
+        , "Stack.Config.Docker"
+        , "Stack.Config.Nix"
+        , "Stack.ConfigCmd"
+        , "Stack.Constants"
+        , "Stack.Constants.Config"
+        , "Stack.Coverage"
+        , "Stack.DefaultColorWhen"
+        , "Stack.DefaultStyles"
+        , "Stack.Docker"
+        , "Stack.Docker.GlobalDB"
+        , "Stack.Dot"
+        , "Stack.FileWatch"
+        , "Stack.Freeze"
+        , "Stack.GhcPkg"
+        , "Stack.Ghci"
+        , "Stack.Ghci.Script"
+        , "Stack.Hoogle"
+        , "Stack.IDE"
+        , "Stack.Image"
+        , "Stack.Init"
+        , "Stack.Ls"
+        , "Stack.New"
+        , "Stack.Nix"
+        , "Stack.Options.BenchParser"
+        , "Stack.Options.BuildMonoidParser"
+        , "Stack.Options.BuildParser"
+        , "Stack.Options.CleanParser"
+        , "Stack.Options.ConfigParser"
+        , "Stack.Options.Completion"
+        , "Stack.Options.DockerParser"
+        , "Stack.Options.DotParser"
+        , "Stack.Options.ExecParser"
+        , "Stack.Options.FreezeParser"
+        , "Stack.Options.GhcBuildParser"
+        , "Stack.Options.GhciParser"
+        , "Stack.Options.GhcVariantParser"
+        , "Stack.Options.GlobalParser"
+        , "Stack.Options.HaddockParser"
+        , "Stack.Options.HpcReportParser"
+        , "Stack.Options.LogLevelParser"
+        , "Stack.Options.NewParser"
+        , "Stack.Options.NixParser"
+        , "Stack.Options.PackageParser"
+        , "Stack.Options.ResolverParser"
+        , "Stack.Options.ScriptParser"
+        , "Stack.Options.SDistParser"
+        , "Stack.Options.SolverParser"
+        , "Stack.Options.TestParser"
+        , "Stack.Options.Utils"
+        , "Stack.Package"
+        , "Stack.PackageDump"
+        , "Stack.Path"
+        , "Stack.Prelude"
+        , "Stack.PrettyPrint"
+        , "Stack.Runners"
+        , "Stack.Script"
+        , "Stack.SDist"
+        , "Stack.Setup"
+        , "Stack.Setup.Installed"
+        , "Stack.SetupCmd"
+        , "Stack.Sig"
+        , "Stack.Sig.GPG"
+        , "Stack.Sig.Sign"
+        , "Stack.Snapshot"
+        , "Stack.Solver"
+        , "Stack.StoreTH"
+        , "Stack.Types.Build"
+        , "Stack.Types.BuildPlan"
+        , "Stack.Types.CompilerBuild"
+        , "Stack.Types.Urls"
+        , "Stack.Types.Compiler"
+        , "Stack.Types.Config"
+        , "Stack.Types.Config.Build"
+        , "Stack.Types.Docker"
+        , "Stack.Types.GhcPkgId"
+        , "Stack.Types.Image"
+        , "Stack.Types.NamedComponent"
+        , "Stack.Types.Nix"
+        , "Stack.Types.Package"
+        , "Stack.Types.PackageDump"
+        , "Stack.Types.PackageName"
+        , "Stack.Types.PrettyPrint"
+        , "Stack.Types.Resolver"
+        , "Stack.Types.Runner"
+        , "Stack.Types.Sig"
+        , "Stack.Types.StylesUpdate"
+        , "Stack.Types.TemplateName"
+        , "Stack.Types.Version"
+        , "Stack.Types.VersionIntervals"
+        , "Stack.Unpack"
+        , "Stack.Upgrade"
+        , "Stack.Upload"
+        , "Text.PrettyPrint.Leijen.Extended"
+        , "System.Permissions"
+        , "System.Process.PagerEditor"
+        , "System.Terminal"
+        ]
+    , when =
+        { condition =
+            "os(windows)"
+        , `then` =
+            { source-dirs = [ "src/windows/" ] }
+        , `else` =
+            { source-dirs =
+                [ "src/unix/" ]
+            , c-sources =
+                [ "src/unix/cbits/uname.c" ]
+            }
+        }
+    }
+, executables =
+    { stack =
+        { main =
+            "Main.hs"
+        , source-dirs =
+            [ "src/main" ]
+        , generated-other-modules =
+            [ "Build_stack", "Paths_stack" ]
+        , ghc-options =
+            [ "-threaded", "-rtsopts" ]
+        , dependencies =
+            [ "stack" ]
+        , when =
+            [ { condition =
+                  "flag(static)"
+              , cpp-options =
+                  [] : List Text
+              , dependencies =
+                  [] : List Text
+              , ld-options =
+                  [ "-static", "-pthread" ]
+              }
+            , { condition =
+                  "!(flag(disable-git-info))"
+              , cpp-options =
+                  [ "-DUSE_GIT_INFO" ]
+              , dependencies =
+                  [ "githash", "optparse-simple" ]
+              , ld-options =
+                  [] : List Text
+              }
+            , { condition =
+                  "flag(hide-dependency-versions)"
+              , cpp-options =
+                  [ "-DHIDE_DEP_VERSIONS" ]
+              , dependencies =
+                  [] : List Text
+              , ld-options =
+                  [] : List Text
+              }
+            , { condition =
+                  "flag(supported-build)"
+              , cpp-options =
+                  [ "-DSUPPORTED_BUILD" ]
+              , dependencies =
+                  [] : List Text
+              , ld-options =
+                  [] : List Text
+              }
+            ]
+        }
+    }
+, tests =
+    { stack-test =
+        { main =
+            "Spec.hs"
+        , source-dirs =
+            [ "src/test" ]
+        , ghc-options =
+            [ "-threaded" ]
+        , dependencies =
+            [ "QuickCheck", "hspec", "stack", "smallcheck" ]
+        }
+    , stack-integration-test =
+        { main =
+            "IntegrationSpec.hs"
+        , source-dirs =
+            [ "test/integration", "test/integration/lib" ]
+        , ghc-options =
+            [ "-threaded", "-rtsopts", "-with-rtsopts=-N" ]
+        , dependencies =
+            [ "hspec" ]
+        , when =
+            { condition = "!flag(integration-tests)", buildable = False }
+        }
+    }
+, flags =
+    { static =
+        { description =
+            "Pass -static/-pthread to ghc when linking the stack binary."
+        , manual =
+            True
+        , default =
+            False
+        }
+    , disable-git-info =
+        { description =
+            "Disable compile-time inclusion of current git info in stack"
+        , manual =
+            True
+        , default =
+            False
+        }
+    , hide-dependency-versions =
+        { description =
+            "Hides dependency versions from \"stack --version\", used only by building with stack.yaml"
+        , manual =
+            True
+        , default =
+            False
+        }
+    , integration-tests =
+        { description =
+            "Run the integration test suite"
+        , manual =
+            True
+        , default =
+            False
+        }
+    , supported-build =
+        { description =
+            "If false, causes \"stack --version\" to issue a warning about the build being unsupported.  True only if building with stack.yaml"
+        , manual =
+            True
+        , default =
+            False
+        }
+    }
+}
diff --git a/test-suite-golden/test-files/real-world/stack/stack.dhall-1.32.golden b/test-suite-golden/test-files/real-world/stack/stack.dhall-1.32.golden
new file mode 100644
--- /dev/null
+++ b/test-suite-golden/test-files/real-world/stack/stack.dhall-1.32.golden
@@ -0,0 +1,339 @@
+{ name = "stack"
+, version = "1.10.0"
+, synopsis = "The Haskell Tool Stack"
+, description =
+    ''
+    Please see the README.md for usage information, and
+    the wiki on Github for more details.  Also, note that
+    the API for the library is not currently stable, and may
+    change significantly, even between minor releases. It is
+    currently only intended for use by the executable.''
+, category = "Development"
+, author = "Commercial Haskell SIG"
+, maintainer = "manny@fpcomplete.com"
+, license = "BSD3"
+, github = "commercialhaskell/stack"
+, homepage = "http://haskellstack.org"
+, custom-setup.dependencies =
+  [ "base >=4.10 && < 5", "Cabal >= 2.4", "filepath" ]
+, extra-source-files =
+  [ "CONTRIBUTING.md"
+  , "ChangeLog.md"
+  , "README.md"
+  , "doc/*.md"
+  , "src/setup-shim/StackSetupShim.hs"
+  , "stack.yaml"
+  , "test/package-dump/ghc-7.10.txt"
+  , "test/package-dump/ghc-7.8.4-osx.txt"
+  , "test/package-dump/ghc-7.8.txt"
+  ]
+, ghc-options =
+  [ "-Wall"
+  , "-fwarn-tabs"
+  , "-fwarn-incomplete-uni-patterns"
+  , "-fwarn-incomplete-record-updates"
+  , "-optP-Wno-nonportable-include-path # workaround [Filename case on macOS · Issue #4739 · haskell/cabal](https://github.com/haskell/cabal/issues/4739)"
+  ]
+, dependencies =
+  [ "Cabal >= 2.4"
+  , "aeson"
+  , "annotated-wl-pprint"
+  , "ansi-terminal >= 0.8.1"
+  , "array"
+  , "async"
+  , "attoparsec"
+  , "base >=4.10 && < 5"
+  , "base64-bytestring"
+  , "bytestring"
+  , "colour"
+  , "conduit"
+  , "conduit-extra"
+  , "containers"
+  , "cryptonite"
+  , "cryptonite-conduit"
+  , "deepseq"
+  , "directory"
+  , "echo"
+  , "exceptions"
+  , "extra"
+  , "file-embed"
+  , "filelock"
+  , "filepath"
+  , "fsnotify"
+  , "generic-deriving"
+  , "hackage-security"
+  , "hashable"
+  , "hpack"
+  , "hpc"
+  , "http-client"
+  , "http-client-tls"
+  , "http-conduit"
+  , "http-types"
+  , "memory"
+  , "microlens"
+  , "mintty"
+  , "monad-logger"
+  , "mono-traversable"
+  , "mtl"
+  , "mustache"
+  , "neat-interpolation"
+  , "network-uri"
+  , "open-browser"
+  , "optparse-applicative"
+  , "pantry"
+  , "path"
+  , "path-io"
+  , "persistent"
+  , "persistent-sqlite"
+  , "persistent-template"
+  , "pretty"
+  , "primitive"
+  , "process"
+  , "project-template"
+  , "regex-applicative-text"
+  , "resourcet"
+  , "retry >= 0.7"
+  , "rio"
+  , "semigroups"
+  , "split"
+  , "stm"
+  , "store-core"
+  , "streaming-commons"
+  , "tar"
+  , "template-haskell"
+  , "temporary"
+  , "text"
+  , "text-metrics"
+  , "th-reify-many"
+  , "time"
+  , "tls"
+  , "transformers"
+  , "typed-process"
+  , "unicode-transforms"
+  , "unix-compat"
+  , "unliftio >= 0.2.8.0"
+  , "unordered-containers"
+  , "vector"
+  , "yaml"
+  , "zip-archive"
+  , "zlib"
+  ]
+, when =
+  { condition = "os(windows)"
+  , then = { cpp-options = [ "-DWINDOWS" ], dependencies = [ "Win32" ] }
+  , else = { build-tools = [ "hsc2hs" ], dependencies = [ "unix" ] }
+  }
+, library =
+  { source-dirs = "src/"
+  , ghc-options = [ "-fwarn-identities" ]
+  , generated-exposed-modules = [ "Paths_stack" ]
+  , exposed-modules =
+    [ "Control.Concurrent.Execute"
+    , "Data.Attoparsec.Args"
+    , "Data.Attoparsec.Combinators"
+    , "Data.Attoparsec.Interpreter"
+    , "Data.Monoid.Map"
+    , "Network.HTTP.Download"
+    , "Network.HTTP.Download.Verified"
+    , "Network.HTTP.StackClient"
+    , "Options.Applicative.Args"
+    , "Options.Applicative.Builder.Extra"
+    , "Options.Applicative.Complicated"
+    , "Path.CheckInstall"
+    , "Path.Extra"
+    , "Path.Find"
+    , "Stack.Build"
+    , "Stack.Build.Cache"
+    , "Stack.Build.ConstructPlan"
+    , "Stack.Build.Execute"
+    , "Stack.Build.Haddock"
+    , "Stack.Build.Installed"
+    , "Stack.Build.Source"
+    , "Stack.Build.Target"
+    , "Stack.BuildPlan"
+    , "Stack.Clean"
+    , "Stack.Config"
+    , "Stack.Config.Build"
+    , "Stack.Config.Urls"
+    , "Stack.Config.Docker"
+    , "Stack.Config.Nix"
+    , "Stack.ConfigCmd"
+    , "Stack.Constants"
+    , "Stack.Constants.Config"
+    , "Stack.Coverage"
+    , "Stack.DefaultColorWhen"
+    , "Stack.DefaultStyles"
+    , "Stack.Docker"
+    , "Stack.Docker.GlobalDB"
+    , "Stack.Dot"
+    , "Stack.FileWatch"
+    , "Stack.Freeze"
+    , "Stack.GhcPkg"
+    , "Stack.Ghci"
+    , "Stack.Ghci.Script"
+    , "Stack.Hoogle"
+    , "Stack.IDE"
+    , "Stack.Image"
+    , "Stack.Init"
+    , "Stack.Ls"
+    , "Stack.New"
+    , "Stack.Nix"
+    , "Stack.Options.BenchParser"
+    , "Stack.Options.BuildMonoidParser"
+    , "Stack.Options.BuildParser"
+    , "Stack.Options.CleanParser"
+    , "Stack.Options.ConfigParser"
+    , "Stack.Options.Completion"
+    , "Stack.Options.DockerParser"
+    , "Stack.Options.DotParser"
+    , "Stack.Options.ExecParser"
+    , "Stack.Options.FreezeParser"
+    , "Stack.Options.GhcBuildParser"
+    , "Stack.Options.GhciParser"
+    , "Stack.Options.GhcVariantParser"
+    , "Stack.Options.GlobalParser"
+    , "Stack.Options.HaddockParser"
+    , "Stack.Options.HpcReportParser"
+    , "Stack.Options.LogLevelParser"
+    , "Stack.Options.NewParser"
+    , "Stack.Options.NixParser"
+    , "Stack.Options.PackageParser"
+    , "Stack.Options.ResolverParser"
+    , "Stack.Options.ScriptParser"
+    , "Stack.Options.SDistParser"
+    , "Stack.Options.SolverParser"
+    , "Stack.Options.TestParser"
+    , "Stack.Options.Utils"
+    , "Stack.Package"
+    , "Stack.PackageDump"
+    , "Stack.Path"
+    , "Stack.Prelude"
+    , "Stack.PrettyPrint"
+    , "Stack.Runners"
+    , "Stack.Script"
+    , "Stack.SDist"
+    , "Stack.Setup"
+    , "Stack.Setup.Installed"
+    , "Stack.SetupCmd"
+    , "Stack.Sig"
+    , "Stack.Sig.GPG"
+    , "Stack.Sig.Sign"
+    , "Stack.Snapshot"
+    , "Stack.Solver"
+    , "Stack.StoreTH"
+    , "Stack.Types.Build"
+    , "Stack.Types.BuildPlan"
+    , "Stack.Types.CompilerBuild"
+    , "Stack.Types.Urls"
+    , "Stack.Types.Compiler"
+    , "Stack.Types.Config"
+    , "Stack.Types.Config.Build"
+    , "Stack.Types.Docker"
+    , "Stack.Types.GhcPkgId"
+    , "Stack.Types.Image"
+    , "Stack.Types.NamedComponent"
+    , "Stack.Types.Nix"
+    , "Stack.Types.Package"
+    , "Stack.Types.PackageDump"
+    , "Stack.Types.PackageName"
+    , "Stack.Types.PrettyPrint"
+    , "Stack.Types.Resolver"
+    , "Stack.Types.Runner"
+    , "Stack.Types.Sig"
+    , "Stack.Types.StylesUpdate"
+    , "Stack.Types.TemplateName"
+    , "Stack.Types.Version"
+    , "Stack.Types.VersionIntervals"
+    , "Stack.Unpack"
+    , "Stack.Upgrade"
+    , "Stack.Upload"
+    , "Text.PrettyPrint.Leijen.Extended"
+    , "System.Permissions"
+    , "System.Process.PagerEditor"
+    , "System.Terminal"
+    ]
+  , when =
+    { condition = "os(windows)"
+    , then.source-dirs = [ "src/windows/" ]
+    , else =
+      { source-dirs = [ "src/unix/" ]
+      , c-sources = [ "src/unix/cbits/uname.c" ]
+      }
+    }
+  }
+, executables.stack =
+  { main = "Main.hs"
+  , source-dirs = [ "src/main" ]
+  , generated-other-modules = [ "Build_stack", "Paths_stack" ]
+  , ghc-options = [ "-threaded", "-rtsopts" ]
+  , dependencies = [ "stack" ]
+  , when =
+    [ { condition = "flag(static)"
+      , cpp-options = [] : List Text
+      , dependencies = [] : List Text
+      , ld-options = [ "-static", "-pthread" ]
+      }
+    , { condition = "!(flag(disable-git-info))"
+      , cpp-options = [ "-DUSE_GIT_INFO" ]
+      , dependencies = [ "githash", "optparse-simple" ]
+      , ld-options = [] : List Text
+      }
+    , { condition = "flag(hide-dependency-versions)"
+      , cpp-options = [ "-DHIDE_DEP_VERSIONS" ]
+      , dependencies = [] : List Text
+      , ld-options = [] : List Text
+      }
+    , { condition = "flag(supported-build)"
+      , cpp-options = [ "-DSUPPORTED_BUILD" ]
+      , dependencies = [] : List Text
+      , ld-options = [] : List Text
+      }
+    ]
+  }
+, tests =
+  { stack-test =
+    { main = "Spec.hs"
+    , source-dirs = [ "src/test" ]
+    , ghc-options = [ "-threaded" ]
+    , dependencies = [ "QuickCheck", "hspec", "stack", "smallcheck" ]
+    }
+  , stack-integration-test =
+    { main = "IntegrationSpec.hs"
+    , source-dirs = [ "test/integration", "test/integration/lib" ]
+    , ghc-options = [ "-threaded", "-rtsopts", "-with-rtsopts=-N" ]
+    , dependencies = [ "hspec" ]
+    , when = { condition = "!flag(integration-tests)", buildable = False }
+    }
+  }
+, flags =
+  { static =
+    { description =
+        "Pass -static/-pthread to ghc when linking the stack binary."
+    , manual = True
+    , default = False
+    }
+  , disable-git-info =
+    { description =
+        "Disable compile-time inclusion of current git info in stack"
+    , manual = True
+    , default = False
+    }
+  , hide-dependency-versions =
+    { description =
+        "Hides dependency versions from \"stack --version\", used only by building with stack.yaml"
+    , manual = True
+    , default = False
+    }
+  , integration-tests =
+    { description = "Run the integration test suite"
+    , manual = True
+    , default = False
+    }
+  , supported-build =
+    { description =
+        "If false, causes \"stack --version\" to issue a warning about the build being unsupported.  True only if building with stack.yaml"
+    , manual = True
+    , default = False
+    }
+  }
+}
diff --git a/test-suite-golden/test-files/real-world/stack/stack.dhall-1.34.golden b/test-suite-golden/test-files/real-world/stack/stack.dhall-1.34.golden
new file mode 100644
--- /dev/null
+++ b/test-suite-golden/test-files/real-world/stack/stack.dhall-1.34.golden
@@ -0,0 +1,341 @@
+{ name = "stack"
+, version = "1.10.0"
+, synopsis = "The Haskell Tool Stack"
+, description =
+    ''
+    Please see the README.md for usage information, and
+    the wiki on Github for more details.  Also, note that
+    the API for the library is not currently stable, and may
+    change significantly, even between minor releases. It is
+    currently only intended for use by the executable.''
+, category = "Development"
+, author = "Commercial Haskell SIG"
+, maintainer = "manny@fpcomplete.com"
+, license = "BSD3"
+, github = "commercialhaskell/stack"
+, homepage = "http://haskellstack.org"
+, custom-setup.dependencies
+  =
+  [ "base >=4.10 && < 5", "Cabal >= 2.4", "filepath" ]
+, extra-source-files =
+  [ "CONTRIBUTING.md"
+  , "ChangeLog.md"
+  , "README.md"
+  , "doc/*.md"
+  , "src/setup-shim/StackSetupShim.hs"
+  , "stack.yaml"
+  , "test/package-dump/ghc-7.10.txt"
+  , "test/package-dump/ghc-7.8.4-osx.txt"
+  , "test/package-dump/ghc-7.8.txt"
+  ]
+, ghc-options =
+  [ "-Wall"
+  , "-fwarn-tabs"
+  , "-fwarn-incomplete-uni-patterns"
+  , "-fwarn-incomplete-record-updates"
+  , "-optP-Wno-nonportable-include-path # workaround [Filename case on macOS · Issue #4739 · haskell/cabal](https://github.com/haskell/cabal/issues/4739)"
+  ]
+, dependencies =
+  [ "Cabal >= 2.4"
+  , "aeson"
+  , "annotated-wl-pprint"
+  , "ansi-terminal >= 0.8.1"
+  , "array"
+  , "async"
+  , "attoparsec"
+  , "base >=4.10 && < 5"
+  , "base64-bytestring"
+  , "bytestring"
+  , "colour"
+  , "conduit"
+  , "conduit-extra"
+  , "containers"
+  , "cryptonite"
+  , "cryptonite-conduit"
+  , "deepseq"
+  , "directory"
+  , "echo"
+  , "exceptions"
+  , "extra"
+  , "file-embed"
+  , "filelock"
+  , "filepath"
+  , "fsnotify"
+  , "generic-deriving"
+  , "hackage-security"
+  , "hashable"
+  , "hpack"
+  , "hpc"
+  , "http-client"
+  , "http-client-tls"
+  , "http-conduit"
+  , "http-types"
+  , "memory"
+  , "microlens"
+  , "mintty"
+  , "monad-logger"
+  , "mono-traversable"
+  , "mtl"
+  , "mustache"
+  , "neat-interpolation"
+  , "network-uri"
+  , "open-browser"
+  , "optparse-applicative"
+  , "pantry"
+  , "path"
+  , "path-io"
+  , "persistent"
+  , "persistent-sqlite"
+  , "persistent-template"
+  , "pretty"
+  , "primitive"
+  , "process"
+  , "project-template"
+  , "regex-applicative-text"
+  , "resourcet"
+  , "retry >= 0.7"
+  , "rio"
+  , "semigroups"
+  , "split"
+  , "stm"
+  , "store-core"
+  , "streaming-commons"
+  , "tar"
+  , "template-haskell"
+  , "temporary"
+  , "text"
+  , "text-metrics"
+  , "th-reify-many"
+  , "time"
+  , "tls"
+  , "transformers"
+  , "typed-process"
+  , "unicode-transforms"
+  , "unix-compat"
+  , "unliftio >= 0.2.8.0"
+  , "unordered-containers"
+  , "vector"
+  , "yaml"
+  , "zip-archive"
+  , "zlib"
+  ]
+, when =
+  { condition = "os(windows)"
+  , `then` = { cpp-options = [ "-DWINDOWS" ], dependencies = [ "Win32" ] }
+  , `else` = { build-tools = [ "hsc2hs" ], dependencies = [ "unix" ] }
+  }
+, library =
+  { source-dirs = "src/"
+  , ghc-options = [ "-fwarn-identities" ]
+  , generated-exposed-modules = [ "Paths_stack" ]
+  , exposed-modules =
+    [ "Control.Concurrent.Execute"
+    , "Data.Attoparsec.Args"
+    , "Data.Attoparsec.Combinators"
+    , "Data.Attoparsec.Interpreter"
+    , "Data.Monoid.Map"
+    , "Network.HTTP.Download"
+    , "Network.HTTP.Download.Verified"
+    , "Network.HTTP.StackClient"
+    , "Options.Applicative.Args"
+    , "Options.Applicative.Builder.Extra"
+    , "Options.Applicative.Complicated"
+    , "Path.CheckInstall"
+    , "Path.Extra"
+    , "Path.Find"
+    , "Stack.Build"
+    , "Stack.Build.Cache"
+    , "Stack.Build.ConstructPlan"
+    , "Stack.Build.Execute"
+    , "Stack.Build.Haddock"
+    , "Stack.Build.Installed"
+    , "Stack.Build.Source"
+    , "Stack.Build.Target"
+    , "Stack.BuildPlan"
+    , "Stack.Clean"
+    , "Stack.Config"
+    , "Stack.Config.Build"
+    , "Stack.Config.Urls"
+    , "Stack.Config.Docker"
+    , "Stack.Config.Nix"
+    , "Stack.ConfigCmd"
+    , "Stack.Constants"
+    , "Stack.Constants.Config"
+    , "Stack.Coverage"
+    , "Stack.DefaultColorWhen"
+    , "Stack.DefaultStyles"
+    , "Stack.Docker"
+    , "Stack.Docker.GlobalDB"
+    , "Stack.Dot"
+    , "Stack.FileWatch"
+    , "Stack.Freeze"
+    , "Stack.GhcPkg"
+    , "Stack.Ghci"
+    , "Stack.Ghci.Script"
+    , "Stack.Hoogle"
+    , "Stack.IDE"
+    , "Stack.Image"
+    , "Stack.Init"
+    , "Stack.Ls"
+    , "Stack.New"
+    , "Stack.Nix"
+    , "Stack.Options.BenchParser"
+    , "Stack.Options.BuildMonoidParser"
+    , "Stack.Options.BuildParser"
+    , "Stack.Options.CleanParser"
+    , "Stack.Options.ConfigParser"
+    , "Stack.Options.Completion"
+    , "Stack.Options.DockerParser"
+    , "Stack.Options.DotParser"
+    , "Stack.Options.ExecParser"
+    , "Stack.Options.FreezeParser"
+    , "Stack.Options.GhcBuildParser"
+    , "Stack.Options.GhciParser"
+    , "Stack.Options.GhcVariantParser"
+    , "Stack.Options.GlobalParser"
+    , "Stack.Options.HaddockParser"
+    , "Stack.Options.HpcReportParser"
+    , "Stack.Options.LogLevelParser"
+    , "Stack.Options.NewParser"
+    , "Stack.Options.NixParser"
+    , "Stack.Options.PackageParser"
+    , "Stack.Options.ResolverParser"
+    , "Stack.Options.ScriptParser"
+    , "Stack.Options.SDistParser"
+    , "Stack.Options.SolverParser"
+    , "Stack.Options.TestParser"
+    , "Stack.Options.Utils"
+    , "Stack.Package"
+    , "Stack.PackageDump"
+    , "Stack.Path"
+    , "Stack.Prelude"
+    , "Stack.PrettyPrint"
+    , "Stack.Runners"
+    , "Stack.Script"
+    , "Stack.SDist"
+    , "Stack.Setup"
+    , "Stack.Setup.Installed"
+    , "Stack.SetupCmd"
+    , "Stack.Sig"
+    , "Stack.Sig.GPG"
+    , "Stack.Sig.Sign"
+    , "Stack.Snapshot"
+    , "Stack.Solver"
+    , "Stack.StoreTH"
+    , "Stack.Types.Build"
+    , "Stack.Types.BuildPlan"
+    , "Stack.Types.CompilerBuild"
+    , "Stack.Types.Urls"
+    , "Stack.Types.Compiler"
+    , "Stack.Types.Config"
+    , "Stack.Types.Config.Build"
+    , "Stack.Types.Docker"
+    , "Stack.Types.GhcPkgId"
+    , "Stack.Types.Image"
+    , "Stack.Types.NamedComponent"
+    , "Stack.Types.Nix"
+    , "Stack.Types.Package"
+    , "Stack.Types.PackageDump"
+    , "Stack.Types.PackageName"
+    , "Stack.Types.PrettyPrint"
+    , "Stack.Types.Resolver"
+    , "Stack.Types.Runner"
+    , "Stack.Types.Sig"
+    , "Stack.Types.StylesUpdate"
+    , "Stack.Types.TemplateName"
+    , "Stack.Types.Version"
+    , "Stack.Types.VersionIntervals"
+    , "Stack.Unpack"
+    , "Stack.Upgrade"
+    , "Stack.Upload"
+    , "Text.PrettyPrint.Leijen.Extended"
+    , "System.Permissions"
+    , "System.Process.PagerEditor"
+    , "System.Terminal"
+    ]
+  , when =
+    { condition = "os(windows)"
+    , `then`.source-dirs = [ "src/windows/" ]
+    , `else` =
+      { source-dirs = [ "src/unix/" ]
+      , c-sources = [ "src/unix/cbits/uname.c" ]
+      }
+    }
+  }
+, executables.stack
+  =
+  { main = "Main.hs"
+  , source-dirs = [ "src/main" ]
+  , generated-other-modules = [ "Build_stack", "Paths_stack" ]
+  , ghc-options = [ "-threaded", "-rtsopts" ]
+  , dependencies = [ "stack" ]
+  , when =
+    [ { condition = "flag(static)"
+      , cpp-options = [] : List Text
+      , dependencies = [] : List Text
+      , ld-options = [ "-static", "-pthread" ]
+      }
+    , { condition = "!(flag(disable-git-info))"
+      , cpp-options = [ "-DUSE_GIT_INFO" ]
+      , dependencies = [ "githash", "optparse-simple" ]
+      , ld-options = [] : List Text
+      }
+    , { condition = "flag(hide-dependency-versions)"
+      , cpp-options = [ "-DHIDE_DEP_VERSIONS" ]
+      , dependencies = [] : List Text
+      , ld-options = [] : List Text
+      }
+    , { condition = "flag(supported-build)"
+      , cpp-options = [ "-DSUPPORTED_BUILD" ]
+      , dependencies = [] : List Text
+      , ld-options = [] : List Text
+      }
+    ]
+  }
+, tests =
+  { stack-test =
+    { main = "Spec.hs"
+    , source-dirs = [ "src/test" ]
+    , ghc-options = [ "-threaded" ]
+    , dependencies = [ "QuickCheck", "hspec", "stack", "smallcheck" ]
+    }
+  , stack-integration-test =
+    { main = "IntegrationSpec.hs"
+    , source-dirs = [ "test/integration", "test/integration/lib" ]
+    , ghc-options = [ "-threaded", "-rtsopts", "-with-rtsopts=-N" ]
+    , dependencies = [ "hspec" ]
+    , when = { condition = "!flag(integration-tests)", buildable = False }
+    }
+  }
+, flags =
+  { static =
+    { description =
+        "Pass -static/-pthread to ghc when linking the stack binary."
+    , manual = True
+    , default = False
+    }
+  , disable-git-info =
+    { description =
+        "Disable compile-time inclusion of current git info in stack"
+    , manual = True
+    , default = False
+    }
+  , hide-dependency-versions =
+    { description =
+        "Hides dependency versions from \"stack --version\", used only by building with stack.yaml"
+    , manual = True
+    , default = False
+    }
+  , integration-tests =
+    { description = "Run the integration test suite"
+    , manual = True
+    , default = False
+    }
+  , supported-build =
+    { description =
+        "If false, causes \"stack --version\" to issue a warning about the build being unsupported.  True only if building with stack.yaml"
+    , manual = True
+    , default = False
+    }
+  }
+}
diff --git a/test-suite-golden/test-files/real-world/stack/stack.json b/test-suite-golden/test-files/real-world/stack/stack.json
new file mode 100644
--- /dev/null
+++ b/test-suite-golden/test-files/real-world/stack/stack.json
@@ -0,0 +1,410 @@
+{
+    "name": "stack",
+    "version": "1.10.0",
+    "synopsis": "The Haskell Tool Stack",
+    "description": "Please see the README.md for usage information, and\nthe wiki on Github for more details.  Also, note that\nthe API for the library is not currently stable, and may\nchange significantly, even between minor releases. It is\ncurrently only intended for use by the executable.",
+    "category": "Development",
+    "homepage": "http://haskellstack.org",
+    "author": "Commercial Haskell SIG",
+    "maintainer": "manny@fpcomplete.com",
+    "license": "BSD3",
+    "github": "commercialhaskell/stack",
+    "extra-source-files": [
+        "CONTRIBUTING.md",
+        "ChangeLog.md",
+        "README.md",
+        "doc/*.md",
+        "src/setup-shim/StackSetupShim.hs",
+        "stack.yaml",
+        "test/package-dump/ghc-7.10.txt",
+        "test/package-dump/ghc-7.8.4-osx.txt",
+        "test/package-dump/ghc-7.8.txt"
+    ],
+    "ghc-options": [
+        "-Wall",
+        "-fwarn-tabs",
+        "-fwarn-incomplete-uni-patterns",
+        "-fwarn-incomplete-record-updates",
+        "-optP-Wno-nonportable-include-path # workaround [Filename case on macOS · Issue #4739 · haskell/cabal](https://github.com/haskell/cabal/issues/4739)"
+    ],
+    "dependencies": [
+        "Cabal >= 2.4",
+        "aeson",
+        "annotated-wl-pprint",
+        "ansi-terminal >= 0.8.1",
+        "array",
+        "async",
+        "attoparsec",
+        "base >=4.10 && < 5",
+        "base64-bytestring",
+        "bytestring",
+        "colour",
+        "conduit",
+        "conduit-extra",
+        "containers",
+        "cryptonite",
+        "cryptonite-conduit",
+        "deepseq",
+        "directory",
+        "echo",
+        "exceptions",
+        "extra",
+        "file-embed",
+        "filelock",
+        "filepath",
+        "fsnotify",
+        "generic-deriving",
+        "hackage-security",
+        "hashable",
+        "hpack",
+        "hpc",
+        "http-client",
+        "http-client-tls",
+        "http-conduit",
+        "http-types",
+        "memory",
+        "microlens",
+        "mintty",
+        "monad-logger",
+        "mono-traversable",
+        "mtl",
+        "mustache",
+        "neat-interpolation",
+        "network-uri",
+        "open-browser",
+        "optparse-applicative",
+        "pantry",
+        "path",
+        "path-io",
+        "persistent",
+        "persistent-sqlite",
+        "persistent-template",
+        "pretty",
+        "primitive",
+        "process",
+        "project-template",
+        "regex-applicative-text",
+        "resourcet",
+        "retry >= 0.7",
+        "rio",
+        "semigroups",
+        "split",
+        "stm",
+        "store-core",
+        "streaming-commons",
+        "tar",
+        "template-haskell",
+        "temporary",
+        "text",
+        "text-metrics",
+        "th-reify-many",
+        "time",
+        "tls",
+        "transformers",
+        "typed-process",
+        "unicode-transforms",
+        "unix-compat",
+        "unliftio >= 0.2.8.0",
+        "unordered-containers",
+        "vector",
+        "yaml",
+        "zip-archive",
+        "zlib"
+    ],
+    "when": {
+        "condition": "os(windows)",
+        "then": {
+            "cpp-options": [
+                "-DWINDOWS"
+            ],
+            "dependencies": [
+                "Win32"
+            ]
+        },
+        "else": {
+            "dependencies": [
+                "unix"
+            ],
+            "build-tools": [
+                "hsc2hs"
+            ]
+        }
+    },
+    "custom-setup": {
+        "dependencies": [
+            "base >=4.10 && < 5",
+            "Cabal >= 2.4",
+            "filepath"
+        ]
+    },
+    "flags": {
+        "disable-git-info": {
+            "description": "Disable compile-time inclusion of current git info in stack",
+            "manual": true,
+            "default": false
+        },
+        "hide-dependency-versions": {
+            "description": "Hides dependency versions from \"stack --version\", used only by building with stack.yaml",
+            "manual": true,
+            "default": false
+        },
+        "integration-tests": {
+            "description": "Run the integration test suite",
+            "manual": true,
+            "default": false
+        },
+        "static": {
+            "description": "Pass -static/-pthread to ghc when linking the stack binary.",
+            "manual": true,
+            "default": false
+        },
+        "supported-build": {
+            "description": "If false, causes \"stack --version\" to issue a warning about the build being unsupported.  True only if building with stack.yaml",
+            "manual": true,
+            "default": false
+        }
+    },
+    "library": {
+        "exposed-modules": [
+            "Control.Concurrent.Execute",
+            "Data.Attoparsec.Args",
+            "Data.Attoparsec.Combinators",
+            "Data.Attoparsec.Interpreter",
+            "Data.Monoid.Map",
+            "Network.HTTP.Download",
+            "Network.HTTP.Download.Verified",
+            "Network.HTTP.StackClient",
+            "Options.Applicative.Args",
+            "Options.Applicative.Builder.Extra",
+            "Options.Applicative.Complicated",
+            "Path.CheckInstall",
+            "Path.Extra",
+            "Path.Find",
+            "Stack.Build",
+            "Stack.Build.Cache",
+            "Stack.Build.ConstructPlan",
+            "Stack.Build.Execute",
+            "Stack.Build.Haddock",
+            "Stack.Build.Installed",
+            "Stack.Build.Source",
+            "Stack.Build.Target",
+            "Stack.BuildPlan",
+            "Stack.Clean",
+            "Stack.Config",
+            "Stack.Config.Build",
+            "Stack.Config.Urls",
+            "Stack.Config.Docker",
+            "Stack.Config.Nix",
+            "Stack.ConfigCmd",
+            "Stack.Constants",
+            "Stack.Constants.Config",
+            "Stack.Coverage",
+            "Stack.DefaultColorWhen",
+            "Stack.DefaultStyles",
+            "Stack.Docker",
+            "Stack.Docker.GlobalDB",
+            "Stack.Dot",
+            "Stack.FileWatch",
+            "Stack.Freeze",
+            "Stack.GhcPkg",
+            "Stack.Ghci",
+            "Stack.Ghci.Script",
+            "Stack.Hoogle",
+            "Stack.IDE",
+            "Stack.Image",
+            "Stack.Init",
+            "Stack.Ls",
+            "Stack.New",
+            "Stack.Nix",
+            "Stack.Options.BenchParser",
+            "Stack.Options.BuildMonoidParser",
+            "Stack.Options.BuildParser",
+            "Stack.Options.CleanParser",
+            "Stack.Options.ConfigParser",
+            "Stack.Options.Completion",
+            "Stack.Options.DockerParser",
+            "Stack.Options.DotParser",
+            "Stack.Options.ExecParser",
+            "Stack.Options.FreezeParser",
+            "Stack.Options.GhcBuildParser",
+            "Stack.Options.GhciParser",
+            "Stack.Options.GhcVariantParser",
+            "Stack.Options.GlobalParser",
+            "Stack.Options.HaddockParser",
+            "Stack.Options.HpcReportParser",
+            "Stack.Options.LogLevelParser",
+            "Stack.Options.NewParser",
+            "Stack.Options.NixParser",
+            "Stack.Options.PackageParser",
+            "Stack.Options.ResolverParser",
+            "Stack.Options.ScriptParser",
+            "Stack.Options.SDistParser",
+            "Stack.Options.SolverParser",
+            "Stack.Options.TestParser",
+            "Stack.Options.Utils",
+            "Stack.Package",
+            "Stack.PackageDump",
+            "Stack.Path",
+            "Stack.Prelude",
+            "Stack.PrettyPrint",
+            "Stack.Runners",
+            "Stack.Script",
+            "Stack.SDist",
+            "Stack.Setup",
+            "Stack.Setup.Installed",
+            "Stack.SetupCmd",
+            "Stack.Sig",
+            "Stack.Sig.GPG",
+            "Stack.Sig.Sign",
+            "Stack.Snapshot",
+            "Stack.Solver",
+            "Stack.StoreTH",
+            "Stack.Types.Build",
+            "Stack.Types.BuildPlan",
+            "Stack.Types.CompilerBuild",
+            "Stack.Types.Urls",
+            "Stack.Types.Compiler",
+            "Stack.Types.Config",
+            "Stack.Types.Config.Build",
+            "Stack.Types.Docker",
+            "Stack.Types.GhcPkgId",
+            "Stack.Types.Image",
+            "Stack.Types.NamedComponent",
+            "Stack.Types.Nix",
+            "Stack.Types.Package",
+            "Stack.Types.PackageDump",
+            "Stack.Types.PackageName",
+            "Stack.Types.PrettyPrint",
+            "Stack.Types.Resolver",
+            "Stack.Types.Runner",
+            "Stack.Types.Sig",
+            "Stack.Types.StylesUpdate",
+            "Stack.Types.TemplateName",
+            "Stack.Types.Version",
+            "Stack.Types.VersionIntervals",
+            "Stack.Unpack",
+            "Stack.Upgrade",
+            "Stack.Upload",
+            "Text.PrettyPrint.Leijen.Extended",
+            "System.Permissions",
+            "System.Process.PagerEditor",
+            "System.Terminal"
+        ],
+        "generated-exposed-modules": [
+            "Paths_stack"
+        ],
+        "source-dirs": "src/",
+        "ghc-options": [
+            "-fwarn-identities"
+        ],
+        "when": {
+            "condition": "os(windows)",
+            "then": {
+                "source-dirs": [
+                    "src/windows/"
+                ]
+            },
+            "else": {
+                "source-dirs": [
+                    "src/unix/"
+                ],
+                "c-sources": [
+                    "src/unix/cbits/uname.c"
+                ]
+            }
+        }
+    },
+    "executables": {
+        "stack": {
+            "main": "Main.hs",
+            "generated-other-modules": [
+                "Build_stack",
+                "Paths_stack"
+            ],
+            "source-dirs": [
+                "src/main"
+            ],
+            "ghc-options": [
+                "-threaded",
+                "-rtsopts"
+            ],
+            "dependencies": [
+                "stack"
+            ],
+            "when": [
+                {
+                    "condition": "flag(static)",
+                    "cpp-options": [],
+                    "ld-options": [
+                        "-static",
+                        "-pthread"
+                    ],
+                    "dependencies": []
+                },
+                {
+                    "condition": "!(flag(disable-git-info))",
+                    "cpp-options": [
+                        "-DUSE_GIT_INFO"
+                    ],
+                    "ld-options": [],
+                    "dependencies": [
+                        "githash",
+                        "optparse-simple"
+                    ]
+                },
+                {
+                    "condition": "flag(hide-dependency-versions)",
+                    "cpp-options": [
+                        "-DHIDE_DEP_VERSIONS"
+                    ],
+                    "ld-options": [],
+                    "dependencies": []
+                },
+                {
+                    "condition": "flag(supported-build)",
+                    "cpp-options": [
+                        "-DSUPPORTED_BUILD"
+                    ],
+                    "ld-options": [],
+                    "dependencies": []
+                }
+            ]
+        }
+    },
+    "tests": {
+        "stack-integration-test": {
+            "main": "IntegrationSpec.hs",
+            "source-dirs": [
+                "test/integration",
+                "test/integration/lib"
+            ],
+            "ghc-options": [
+                "-threaded",
+                "-rtsopts",
+                "-with-rtsopts=-N"
+            ],
+            "dependencies": [
+                "hspec"
+            ],
+            "when": {
+                "condition": "!flag(integration-tests)",
+                "buildable": false
+            }
+        },
+        "stack-test": {
+            "main": "Spec.hs",
+            "source-dirs": [
+                "src/test"
+            ],
+            "ghc-options": [
+                "-threaded"
+            ],
+            "dependencies": [
+                "QuickCheck",
+                "hspec",
+                "stack",
+                "smallcheck"
+            ]
+        }
+    }
+}
diff --git a/test-suite-golden/test-files/real-world/stack/stack.json.golden b/test-suite-golden/test-files/real-world/stack/stack.json.golden
new file mode 100644
--- /dev/null
+++ b/test-suite-golden/test-files/real-world/stack/stack.json.golden
@@ -0,0 +1,410 @@
+{
+    "name": "stack",
+    "version": "1.10.0",
+    "synopsis": "The Haskell Tool Stack",
+    "description": "Please see the README.md for usage information, and\nthe wiki on Github for more details.  Also, note that\nthe API for the library is not currently stable, and may\nchange significantly, even between minor releases. It is\ncurrently only intended for use by the executable.",
+    "category": "Development",
+    "homepage": "http://haskellstack.org",
+    "author": "Commercial Haskell SIG",
+    "maintainer": "manny@fpcomplete.com",
+    "license": "BSD3",
+    "github": "commercialhaskell/stack",
+    "extra-source-files": [
+        "CONTRIBUTING.md",
+        "ChangeLog.md",
+        "README.md",
+        "doc/*.md",
+        "src/setup-shim/StackSetupShim.hs",
+        "stack.yaml",
+        "test/package-dump/ghc-7.10.txt",
+        "test/package-dump/ghc-7.8.4-osx.txt",
+        "test/package-dump/ghc-7.8.txt"
+    ],
+    "ghc-options": [
+        "-Wall",
+        "-fwarn-tabs",
+        "-fwarn-incomplete-uni-patterns",
+        "-fwarn-incomplete-record-updates",
+        "-optP-Wno-nonportable-include-path # workaround [Filename case on macOS · Issue #4739 · haskell/cabal](https://github.com/haskell/cabal/issues/4739)"
+    ],
+    "dependencies": [
+        "Cabal >= 2.4",
+        "aeson",
+        "annotated-wl-pprint",
+        "ansi-terminal >= 0.8.1",
+        "array",
+        "async",
+        "attoparsec",
+        "base >=4.10 && < 5",
+        "base64-bytestring",
+        "bytestring",
+        "colour",
+        "conduit",
+        "conduit-extra",
+        "containers",
+        "cryptonite",
+        "cryptonite-conduit",
+        "deepseq",
+        "directory",
+        "echo",
+        "exceptions",
+        "extra",
+        "file-embed",
+        "filelock",
+        "filepath",
+        "fsnotify",
+        "generic-deriving",
+        "hackage-security",
+        "hashable",
+        "hpack",
+        "hpc",
+        "http-client",
+        "http-client-tls",
+        "http-conduit",
+        "http-types",
+        "memory",
+        "microlens",
+        "mintty",
+        "monad-logger",
+        "mono-traversable",
+        "mtl",
+        "mustache",
+        "neat-interpolation",
+        "network-uri",
+        "open-browser",
+        "optparse-applicative",
+        "pantry",
+        "path",
+        "path-io",
+        "persistent",
+        "persistent-sqlite",
+        "persistent-template",
+        "pretty",
+        "primitive",
+        "process",
+        "project-template",
+        "regex-applicative-text",
+        "resourcet",
+        "retry >= 0.7",
+        "rio",
+        "semigroups",
+        "split",
+        "stm",
+        "store-core",
+        "streaming-commons",
+        "tar",
+        "template-haskell",
+        "temporary",
+        "text",
+        "text-metrics",
+        "th-reify-many",
+        "time",
+        "tls",
+        "transformers",
+        "typed-process",
+        "unicode-transforms",
+        "unix-compat",
+        "unliftio >= 0.2.8.0",
+        "unordered-containers",
+        "vector",
+        "yaml",
+        "zip-archive",
+        "zlib"
+    ],
+    "when": {
+        "condition": "os(windows)",
+        "then": {
+            "cpp-options": [
+                "-DWINDOWS"
+            ],
+            "dependencies": [
+                "Win32"
+            ]
+        },
+        "else": {
+            "dependencies": [
+                "unix"
+            ],
+            "build-tools": [
+                "hsc2hs"
+            ]
+        }
+    },
+    "custom-setup": {
+        "dependencies": [
+            "base >=4.10 && < 5",
+            "Cabal >= 2.4",
+            "filepath"
+        ]
+    },
+    "flags": {
+        "disable-git-info": {
+            "description": "Disable compile-time inclusion of current git info in stack",
+            "manual": true,
+            "default": false
+        },
+        "hide-dependency-versions": {
+            "description": "Hides dependency versions from \"stack --version\", used only by building with stack.yaml",
+            "manual": true,
+            "default": false
+        },
+        "integration-tests": {
+            "description": "Run the integration test suite",
+            "manual": true,
+            "default": false
+        },
+        "static": {
+            "description": "Pass -static/-pthread to ghc when linking the stack binary.",
+            "manual": true,
+            "default": false
+        },
+        "supported-build": {
+            "description": "If false, causes \"stack --version\" to issue a warning about the build being unsupported.  True only if building with stack.yaml",
+            "manual": true,
+            "default": false
+        }
+    },
+    "library": {
+        "exposed-modules": [
+            "Control.Concurrent.Execute",
+            "Data.Attoparsec.Args",
+            "Data.Attoparsec.Combinators",
+            "Data.Attoparsec.Interpreter",
+            "Data.Monoid.Map",
+            "Network.HTTP.Download",
+            "Network.HTTP.Download.Verified",
+            "Network.HTTP.StackClient",
+            "Options.Applicative.Args",
+            "Options.Applicative.Builder.Extra",
+            "Options.Applicative.Complicated",
+            "Path.CheckInstall",
+            "Path.Extra",
+            "Path.Find",
+            "Stack.Build",
+            "Stack.Build.Cache",
+            "Stack.Build.ConstructPlan",
+            "Stack.Build.Execute",
+            "Stack.Build.Haddock",
+            "Stack.Build.Installed",
+            "Stack.Build.Source",
+            "Stack.Build.Target",
+            "Stack.BuildPlan",
+            "Stack.Clean",
+            "Stack.Config",
+            "Stack.Config.Build",
+            "Stack.Config.Urls",
+            "Stack.Config.Docker",
+            "Stack.Config.Nix",
+            "Stack.ConfigCmd",
+            "Stack.Constants",
+            "Stack.Constants.Config",
+            "Stack.Coverage",
+            "Stack.DefaultColorWhen",
+            "Stack.DefaultStyles",
+            "Stack.Docker",
+            "Stack.Docker.GlobalDB",
+            "Stack.Dot",
+            "Stack.FileWatch",
+            "Stack.Freeze",
+            "Stack.GhcPkg",
+            "Stack.Ghci",
+            "Stack.Ghci.Script",
+            "Stack.Hoogle",
+            "Stack.IDE",
+            "Stack.Image",
+            "Stack.Init",
+            "Stack.Ls",
+            "Stack.New",
+            "Stack.Nix",
+            "Stack.Options.BenchParser",
+            "Stack.Options.BuildMonoidParser",
+            "Stack.Options.BuildParser",
+            "Stack.Options.CleanParser",
+            "Stack.Options.ConfigParser",
+            "Stack.Options.Completion",
+            "Stack.Options.DockerParser",
+            "Stack.Options.DotParser",
+            "Stack.Options.ExecParser",
+            "Stack.Options.FreezeParser",
+            "Stack.Options.GhcBuildParser",
+            "Stack.Options.GhciParser",
+            "Stack.Options.GhcVariantParser",
+            "Stack.Options.GlobalParser",
+            "Stack.Options.HaddockParser",
+            "Stack.Options.HpcReportParser",
+            "Stack.Options.LogLevelParser",
+            "Stack.Options.NewParser",
+            "Stack.Options.NixParser",
+            "Stack.Options.PackageParser",
+            "Stack.Options.ResolverParser",
+            "Stack.Options.ScriptParser",
+            "Stack.Options.SDistParser",
+            "Stack.Options.SolverParser",
+            "Stack.Options.TestParser",
+            "Stack.Options.Utils",
+            "Stack.Package",
+            "Stack.PackageDump",
+            "Stack.Path",
+            "Stack.Prelude",
+            "Stack.PrettyPrint",
+            "Stack.Runners",
+            "Stack.Script",
+            "Stack.SDist",
+            "Stack.Setup",
+            "Stack.Setup.Installed",
+            "Stack.SetupCmd",
+            "Stack.Sig",
+            "Stack.Sig.GPG",
+            "Stack.Sig.Sign",
+            "Stack.Snapshot",
+            "Stack.Solver",
+            "Stack.StoreTH",
+            "Stack.Types.Build",
+            "Stack.Types.BuildPlan",
+            "Stack.Types.CompilerBuild",
+            "Stack.Types.Urls",
+            "Stack.Types.Compiler",
+            "Stack.Types.Config",
+            "Stack.Types.Config.Build",
+            "Stack.Types.Docker",
+            "Stack.Types.GhcPkgId",
+            "Stack.Types.Image",
+            "Stack.Types.NamedComponent",
+            "Stack.Types.Nix",
+            "Stack.Types.Package",
+            "Stack.Types.PackageDump",
+            "Stack.Types.PackageName",
+            "Stack.Types.PrettyPrint",
+            "Stack.Types.Resolver",
+            "Stack.Types.Runner",
+            "Stack.Types.Sig",
+            "Stack.Types.StylesUpdate",
+            "Stack.Types.TemplateName",
+            "Stack.Types.Version",
+            "Stack.Types.VersionIntervals",
+            "Stack.Unpack",
+            "Stack.Upgrade",
+            "Stack.Upload",
+            "Text.PrettyPrint.Leijen.Extended",
+            "System.Permissions",
+            "System.Process.PagerEditor",
+            "System.Terminal"
+        ],
+        "generated-exposed-modules": [
+            "Paths_stack"
+        ],
+        "source-dirs": "src/",
+        "ghc-options": [
+            "-fwarn-identities"
+        ],
+        "when": {
+            "condition": "os(windows)",
+            "then": {
+                "source-dirs": [
+                    "src/windows/"
+                ]
+            },
+            "else": {
+                "source-dirs": [
+                    "src/unix/"
+                ],
+                "c-sources": [
+                    "src/unix/cbits/uname.c"
+                ]
+            }
+        }
+    },
+    "executables": {
+        "stack": {
+            "main": "Main.hs",
+            "generated-other-modules": [
+                "Build_stack",
+                "Paths_stack"
+            ],
+            "source-dirs": [
+                "src/main"
+            ],
+            "ghc-options": [
+                "-threaded",
+                "-rtsopts"
+            ],
+            "dependencies": [
+                "stack"
+            ],
+            "when": [
+                {
+                    "condition": "flag(static)",
+                    "cpp-options": [],
+                    "ld-options": [
+                        "-static",
+                        "-pthread"
+                    ],
+                    "dependencies": []
+                },
+                {
+                    "condition": "!(flag(disable-git-info))",
+                    "cpp-options": [
+                        "-DUSE_GIT_INFO"
+                    ],
+                    "ld-options": [],
+                    "dependencies": [
+                        "githash",
+                        "optparse-simple"
+                    ]
+                },
+                {
+                    "condition": "flag(hide-dependency-versions)",
+                    "cpp-options": [
+                        "-DHIDE_DEP_VERSIONS"
+                    ],
+                    "ld-options": [],
+                    "dependencies": []
+                },
+                {
+                    "condition": "flag(supported-build)",
+                    "cpp-options": [
+                        "-DSUPPORTED_BUILD"
+                    ],
+                    "ld-options": [],
+                    "dependencies": []
+                }
+            ]
+        }
+    },
+    "tests": {
+        "stack-integration-test": {
+            "main": "IntegrationSpec.hs",
+            "source-dirs": [
+                "test/integration",
+                "test/integration/lib"
+            ],
+            "ghc-options": [
+                "-threaded",
+                "-rtsopts",
+                "-with-rtsopts=-N"
+            ],
+            "dependencies": [
+                "hspec"
+            ],
+            "when": {
+                "condition": "!flag(integration-tests)",
+                "buildable": false
+            }
+        },
+        "stack-test": {
+            "main": "Spec.hs",
+            "source-dirs": [
+                "src/test"
+            ],
+            "ghc-options": [
+                "-threaded"
+            ],
+            "dependencies": [
+                "QuickCheck",
+                "hspec",
+                "stack",
+                "smallcheck"
+            ]
+        }
+    }
+}
diff --git a/test-suite-golden/test-files/real-world/stack/stack.yaml b/test-suite-golden/test-files/real-world/stack/stack.yaml
new file mode 100644
--- /dev/null
+++ b/test-suite-golden/test-files/real-world/stack/stack.yaml
@@ -0,0 +1,358 @@
+name: stack
+version: 1.10.0
+synopsis: The Haskell Tool Stack
+description: |-
+  Please see the README.md for usage information, and
+  the wiki on Github for more details.  Also, note that
+  the API for the library is not currently stable, and may
+  change significantly, even between minor releases. It is
+  currently only intended for use by the executable.
+category: Development
+homepage: http://haskellstack.org
+author: Commercial Haskell SIG
+maintainer: manny@fpcomplete.com
+license: BSD3
+github: commercialhaskell/stack
+extra-source-files:
+- CONTRIBUTING.md
+- ChangeLog.md
+- README.md
+- doc/*.md
+- src/setup-shim/StackSetupShim.hs
+- stack.yaml
+- test/package-dump/ghc-7.10.txt
+- test/package-dump/ghc-7.8.4-osx.txt
+- test/package-dump/ghc-7.8.txt
+ghc-options:
+- -Wall
+- -fwarn-tabs
+- -fwarn-incomplete-uni-patterns
+- -fwarn-incomplete-record-updates
+- '-optP-Wno-nonportable-include-path # workaround [Filename case on macOS · Issue
+  #4739 · haskell/cabal](https://github.com/haskell/cabal/issues/4739)'
+dependencies:
+- Cabal >= 2.4
+- aeson
+- annotated-wl-pprint
+- ansi-terminal >= 0.8.1
+- array
+- async
+- attoparsec
+- base >=4.10 && < 5
+- base64-bytestring
+- bytestring
+- colour
+- conduit
+- conduit-extra
+- containers
+- cryptonite
+- cryptonite-conduit
+- deepseq
+- directory
+- echo
+- exceptions
+- extra
+- file-embed
+- filelock
+- filepath
+- fsnotify
+- generic-deriving
+- hackage-security
+- hashable
+- hpack
+- hpc
+- http-client
+- http-client-tls
+- http-conduit
+- http-types
+- memory
+- microlens
+- mintty
+- monad-logger
+- mono-traversable
+- mtl
+- mustache
+- neat-interpolation
+- network-uri
+- open-browser
+- optparse-applicative
+- pantry
+- path
+- path-io
+- persistent
+- persistent-sqlite
+- persistent-template
+- pretty
+- primitive
+- process
+- project-template
+- regex-applicative-text
+- resourcet
+- retry >= 0.7
+- rio
+- semigroups
+- split
+- stm
+- store-core
+- streaming-commons
+- tar
+- template-haskell
+- temporary
+- text
+- text-metrics
+- th-reify-many
+- time
+- tls
+- transformers
+- typed-process
+- unicode-transforms
+- unix-compat
+- unliftio >= 0.2.8.0
+- unordered-containers
+- vector
+- yaml
+- zip-archive
+- zlib
+when:
+  condition: os(windows)
+  then:
+    cpp-options:
+    - -DWINDOWS
+    dependencies:
+    - Win32
+  else:
+    dependencies:
+    - unix
+    build-tools:
+    - hsc2hs
+custom-setup:
+  dependencies:
+  - base >=4.10 && < 5
+  - Cabal >= 2.4
+  - filepath
+flags:
+  disable-git-info:
+    description: Disable compile-time inclusion of current git info in stack
+    manual: true
+    default: false
+  hide-dependency-versions:
+    description: Hides dependency versions from "stack --version", used only by building
+      with stack.yaml
+    manual: true
+    default: false
+  integration-tests:
+    description: Run the integration test suite
+    manual: true
+    default: false
+  static:
+    description: Pass -static/-pthread to ghc when linking the stack binary.
+    manual: true
+    default: false
+  supported-build:
+    description: If false, causes "stack --version" to issue a warning about the build
+      being unsupported.  True only if building with stack.yaml
+    manual: true
+    default: false
+library:
+  exposed-modules:
+  - Control.Concurrent.Execute
+  - Data.Attoparsec.Args
+  - Data.Attoparsec.Combinators
+  - Data.Attoparsec.Interpreter
+  - Data.Monoid.Map
+  - Network.HTTP.Download
+  - Network.HTTP.Download.Verified
+  - Network.HTTP.StackClient
+  - Options.Applicative.Args
+  - Options.Applicative.Builder.Extra
+  - Options.Applicative.Complicated
+  - Path.CheckInstall
+  - Path.Extra
+  - Path.Find
+  - Stack.Build
+  - Stack.Build.Cache
+  - Stack.Build.ConstructPlan
+  - Stack.Build.Execute
+  - Stack.Build.Haddock
+  - Stack.Build.Installed
+  - Stack.Build.Source
+  - Stack.Build.Target
+  - Stack.BuildPlan
+  - Stack.Clean
+  - Stack.Config
+  - Stack.Config.Build
+  - Stack.Config.Urls
+  - Stack.Config.Docker
+  - Stack.Config.Nix
+  - Stack.ConfigCmd
+  - Stack.Constants
+  - Stack.Constants.Config
+  - Stack.Coverage
+  - Stack.DefaultColorWhen
+  - Stack.DefaultStyles
+  - Stack.Docker
+  - Stack.Docker.GlobalDB
+  - Stack.Dot
+  - Stack.FileWatch
+  - Stack.Freeze
+  - Stack.GhcPkg
+  - Stack.Ghci
+  - Stack.Ghci.Script
+  - Stack.Hoogle
+  - Stack.IDE
+  - Stack.Image
+  - Stack.Init
+  - Stack.Ls
+  - Stack.New
+  - Stack.Nix
+  - Stack.Options.BenchParser
+  - Stack.Options.BuildMonoidParser
+  - Stack.Options.BuildParser
+  - Stack.Options.CleanParser
+  - Stack.Options.ConfigParser
+  - Stack.Options.Completion
+  - Stack.Options.DockerParser
+  - Stack.Options.DotParser
+  - Stack.Options.ExecParser
+  - Stack.Options.FreezeParser
+  - Stack.Options.GhcBuildParser
+  - Stack.Options.GhciParser
+  - Stack.Options.GhcVariantParser
+  - Stack.Options.GlobalParser
+  - Stack.Options.HaddockParser
+  - Stack.Options.HpcReportParser
+  - Stack.Options.LogLevelParser
+  - Stack.Options.NewParser
+  - Stack.Options.NixParser
+  - Stack.Options.PackageParser
+  - Stack.Options.ResolverParser
+  - Stack.Options.ScriptParser
+  - Stack.Options.SDistParser
+  - Stack.Options.SolverParser
+  - Stack.Options.TestParser
+  - Stack.Options.Utils
+  - Stack.Package
+  - Stack.PackageDump
+  - Stack.Path
+  - Stack.Prelude
+  - Stack.PrettyPrint
+  - Stack.Runners
+  - Stack.Script
+  - Stack.SDist
+  - Stack.Setup
+  - Stack.Setup.Installed
+  - Stack.SetupCmd
+  - Stack.Sig
+  - Stack.Sig.GPG
+  - Stack.Sig.Sign
+  - Stack.Snapshot
+  - Stack.Solver
+  - Stack.StoreTH
+  - Stack.Types.Build
+  - Stack.Types.BuildPlan
+  - Stack.Types.CompilerBuild
+  - Stack.Types.Urls
+  - Stack.Types.Compiler
+  - Stack.Types.Config
+  - Stack.Types.Config.Build
+  - Stack.Types.Docker
+  - Stack.Types.GhcPkgId
+  - Stack.Types.Image
+  - Stack.Types.NamedComponent
+  - Stack.Types.Nix
+  - Stack.Types.Package
+  - Stack.Types.PackageDump
+  - Stack.Types.PackageName
+  - Stack.Types.PrettyPrint
+  - Stack.Types.Resolver
+  - Stack.Types.Runner
+  - Stack.Types.Sig
+  - Stack.Types.StylesUpdate
+  - Stack.Types.TemplateName
+  - Stack.Types.Version
+  - Stack.Types.VersionIntervals
+  - Stack.Unpack
+  - Stack.Upgrade
+  - Stack.Upload
+  - Text.PrettyPrint.Leijen.Extended
+  - System.Permissions
+  - System.Process.PagerEditor
+  - System.Terminal
+  generated-exposed-modules:
+  - Paths_stack
+  source-dirs: src/
+  ghc-options:
+  - -fwarn-identities
+  when:
+    condition: os(windows)
+    then:
+      source-dirs:
+      - src/windows/
+    else:
+      source-dirs:
+      - src/unix/
+      c-sources:
+      - src/unix/cbits/uname.c
+executables:
+  stack:
+    main: Main.hs
+    generated-other-modules:
+    - Build_stack
+    - Paths_stack
+    source-dirs:
+    - src/main
+    ghc-options:
+    - -threaded
+    - -rtsopts
+    dependencies:
+    - stack
+    when:
+    - condition: flag(static)
+      cpp-options: []
+      ld-options:
+      - -static
+      - -pthread
+      dependencies: []
+    - condition: '!(flag(disable-git-info))'
+      cpp-options:
+      - -DUSE_GIT_INFO
+      ld-options: []
+      dependencies:
+      - githash
+      - optparse-simple
+    - condition: flag(hide-dependency-versions)
+      cpp-options:
+      - -DHIDE_DEP_VERSIONS
+      ld-options: []
+      dependencies: []
+    - condition: flag(supported-build)
+      cpp-options:
+      - -DSUPPORTED_BUILD
+      ld-options: []
+      dependencies: []
+tests:
+  stack-integration-test:
+    main: IntegrationSpec.hs
+    source-dirs:
+    - test/integration
+    - test/integration/lib
+    ghc-options:
+    - -threaded
+    - -rtsopts
+    - -with-rtsopts=-N
+    dependencies:
+    - hspec
+    when:
+      condition: '!flag(integration-tests)'
+      buildable: false
+  stack-test:
+    main: Spec.hs
+    source-dirs:
+    - src/test
+    ghc-options:
+    - -threaded
+    dependencies:
+    - QuickCheck
+    - hspec
+    - stack
+    - smallcheck
diff --git a/test-suite-golden/test-files/real-world/stack/stack.yaml.cabal b/test-suite-golden/test-files/real-world/stack/stack.yaml.cabal
new file mode 100644
--- /dev/null
+++ b/test-suite-golden/test-files/real-world/stack/stack.yaml.cabal
@@ -0,0 +1,627 @@
+cabal-version: 2.0
+
+-- This file has been generated from stack.yaml by hpack version 0.34.4.
+--
+-- see: https://github.com/sol/hpack
+
+name:           stack
+version:        1.10.0
+synopsis:       The Haskell Tool Stack
+description:    Please see the README.md for usage information, and
+                the wiki on Github for more details.  Also, note that
+                the API for the library is not currently stable, and may
+                change significantly, even between minor releases. It is
+                currently only intended for use by the executable.
+category:       Development
+homepage:       http://haskellstack.org
+bug-reports:    https://github.com/commercialhaskell/stack/issues
+author:         Commercial Haskell SIG
+maintainer:     manny@fpcomplete.com
+license:        BSD3
+build-type:     Custom
+extra-source-files:
+    CONTRIBUTING.md
+    ChangeLog.md
+    README.md
+    src/setup-shim/StackSetupShim.hs
+    stack.yaml
+    test/package-dump/ghc-7.10.txt
+    test/package-dump/ghc-7.8.4-osx.txt
+    test/package-dump/ghc-7.8.txt
+
+source-repository head
+  type: git
+  location: https://github.com/commercialhaskell/stack
+
+custom-setup
+  setup-depends:
+      Cabal >=2.4
+    , base >=4.10 && <5
+    , filepath
+
+flag disable-git-info
+  description: Disable compile-time inclusion of current git info in stack
+  manual: True
+  default: False
+
+flag hide-dependency-versions
+  description: Hides dependency versions from "stack --version", used only by building with stack.yaml
+  manual: True
+  default: False
+
+flag integration-tests
+  description: Run the integration test suite
+  manual: True
+  default: False
+
+flag static
+  description: Pass -static/-pthread to ghc when linking the stack binary.
+  manual: True
+  default: False
+
+flag supported-build
+  description: If false, causes "stack --version" to issue a warning about the build being unsupported.  True only if building with stack.yaml
+  manual: True
+  default: False
+
+library
+  exposed-modules:
+      Control.Concurrent.Execute
+      Data.Attoparsec.Args
+      Data.Attoparsec.Combinators
+      Data.Attoparsec.Interpreter
+      Data.Monoid.Map
+      Network.HTTP.Download
+      Network.HTTP.Download.Verified
+      Network.HTTP.StackClient
+      Options.Applicative.Args
+      Options.Applicative.Builder.Extra
+      Options.Applicative.Complicated
+      Path.CheckInstall
+      Path.Extra
+      Path.Find
+      Stack.Build
+      Stack.Build.Cache
+      Stack.Build.ConstructPlan
+      Stack.Build.Execute
+      Stack.Build.Haddock
+      Stack.Build.Installed
+      Stack.Build.Source
+      Stack.Build.Target
+      Stack.BuildPlan
+      Stack.Clean
+      Stack.Config
+      Stack.Config.Build
+      Stack.Config.Urls
+      Stack.Config.Docker
+      Stack.Config.Nix
+      Stack.ConfigCmd
+      Stack.Constants
+      Stack.Constants.Config
+      Stack.Coverage
+      Stack.DefaultColorWhen
+      Stack.DefaultStyles
+      Stack.Docker
+      Stack.Docker.GlobalDB
+      Stack.Dot
+      Stack.FileWatch
+      Stack.Freeze
+      Stack.GhcPkg
+      Stack.Ghci
+      Stack.Ghci.Script
+      Stack.Hoogle
+      Stack.IDE
+      Stack.Image
+      Stack.Init
+      Stack.Ls
+      Stack.New
+      Stack.Nix
+      Stack.Options.BenchParser
+      Stack.Options.BuildMonoidParser
+      Stack.Options.BuildParser
+      Stack.Options.CleanParser
+      Stack.Options.ConfigParser
+      Stack.Options.Completion
+      Stack.Options.DockerParser
+      Stack.Options.DotParser
+      Stack.Options.ExecParser
+      Stack.Options.FreezeParser
+      Stack.Options.GhcBuildParser
+      Stack.Options.GhciParser
+      Stack.Options.GhcVariantParser
+      Stack.Options.GlobalParser
+      Stack.Options.HaddockParser
+      Stack.Options.HpcReportParser
+      Stack.Options.LogLevelParser
+      Stack.Options.NewParser
+      Stack.Options.NixParser
+      Stack.Options.PackageParser
+      Stack.Options.ResolverParser
+      Stack.Options.ScriptParser
+      Stack.Options.SDistParser
+      Stack.Options.SolverParser
+      Stack.Options.TestParser
+      Stack.Options.Utils
+      Stack.Package
+      Stack.PackageDump
+      Stack.Path
+      Stack.Prelude
+      Stack.PrettyPrint
+      Stack.Runners
+      Stack.Script
+      Stack.SDist
+      Stack.Setup
+      Stack.Setup.Installed
+      Stack.SetupCmd
+      Stack.Sig
+      Stack.Sig.GPG
+      Stack.Sig.Sign
+      Stack.Snapshot
+      Stack.Solver
+      Stack.StoreTH
+      Stack.Types.Build
+      Stack.Types.BuildPlan
+      Stack.Types.CompilerBuild
+      Stack.Types.Urls
+      Stack.Types.Compiler
+      Stack.Types.Config
+      Stack.Types.Config.Build
+      Stack.Types.Docker
+      Stack.Types.GhcPkgId
+      Stack.Types.Image
+      Stack.Types.NamedComponent
+      Stack.Types.Nix
+      Stack.Types.Package
+      Stack.Types.PackageDump
+      Stack.Types.PackageName
+      Stack.Types.PrettyPrint
+      Stack.Types.Resolver
+      Stack.Types.Runner
+      Stack.Types.Sig
+      Stack.Types.StylesUpdate
+      Stack.Types.TemplateName
+      Stack.Types.Version
+      Stack.Types.VersionIntervals
+      Stack.Unpack
+      Stack.Upgrade
+      Stack.Upload
+      Text.PrettyPrint.Leijen.Extended
+      System.Permissions
+      System.Process.PagerEditor
+      System.Terminal
+      Paths_stack
+  autogen-modules:
+      Paths_stack
+  hs-source-dirs:
+      src/
+  ghc-options: -Wall -fwarn-tabs -fwarn-incomplete-uni-patterns -fwarn-incomplete-record-updates -optP-Wno-nonportable-include-path # workaround [Filename case on macOS · Issue #4739 · haskell/cabal](https://github.com/haskell/cabal/issues/4739) -fwarn-identities
+  build-depends:
+      Cabal >=2.4
+    , aeson
+    , annotated-wl-pprint
+    , ansi-terminal >=0.8.1
+    , array
+    , async
+    , attoparsec
+    , base >=4.10 && <5
+    , base64-bytestring
+    , bytestring
+    , colour
+    , conduit
+    , conduit-extra
+    , containers
+    , cryptonite
+    , cryptonite-conduit
+    , deepseq
+    , directory
+    , echo
+    , exceptions
+    , extra
+    , file-embed
+    , filelock
+    , filepath
+    , fsnotify
+    , generic-deriving
+    , hackage-security
+    , hashable
+    , hpack
+    , hpc
+    , http-client
+    , http-client-tls
+    , http-conduit
+    , http-types
+    , memory
+    , microlens
+    , mintty
+    , monad-logger
+    , mono-traversable
+    , mtl
+    , mustache
+    , neat-interpolation
+    , network-uri
+    , open-browser
+    , optparse-applicative
+    , pantry
+    , path
+    , path-io
+    , persistent
+    , persistent-sqlite
+    , persistent-template
+    , pretty
+    , primitive
+    , process
+    , project-template
+    , regex-applicative-text
+    , resourcet
+    , retry >=0.7
+    , rio
+    , semigroups
+    , split
+    , stm
+    , store-core
+    , streaming-commons
+    , tar
+    , template-haskell
+    , temporary
+    , text
+    , text-metrics
+    , th-reify-many
+    , time
+    , tls
+    , transformers
+    , typed-process
+    , unicode-transforms
+    , unix-compat
+    , unliftio >=0.2.8.0
+    , unordered-containers
+    , vector
+    , yaml
+    , zip-archive
+    , zlib
+  if os(windows)
+    cpp-options: -DWINDOWS
+    build-depends:
+        Win32
+  else
+    build-tools:
+        hsc2hs
+    build-depends:
+        unix
+  if os(windows)
+    hs-source-dirs:
+        src/windows/
+  else
+    hs-source-dirs:
+        src/unix/
+    c-sources:
+        src/unix/cbits/uname.c
+  default-language: Haskell2010
+
+executable stack
+  main-is: Main.hs
+  other-modules:
+      Build_stack
+      Paths_stack
+  autogen-modules:
+      Build_stack
+      Paths_stack
+  hs-source-dirs:
+      src/main
+  ghc-options: -Wall -fwarn-tabs -fwarn-incomplete-uni-patterns -fwarn-incomplete-record-updates -optP-Wno-nonportable-include-path # workaround [Filename case on macOS · Issue #4739 · haskell/cabal](https://github.com/haskell/cabal/issues/4739) -threaded -rtsopts
+  build-depends:
+      Cabal >=2.4
+    , aeson
+    , annotated-wl-pprint
+    , ansi-terminal >=0.8.1
+    , array
+    , async
+    , attoparsec
+    , base >=4.10 && <5
+    , base64-bytestring
+    , bytestring
+    , colour
+    , conduit
+    , conduit-extra
+    , containers
+    , cryptonite
+    , cryptonite-conduit
+    , deepseq
+    , directory
+    , echo
+    , exceptions
+    , extra
+    , file-embed
+    , filelock
+    , filepath
+    , fsnotify
+    , generic-deriving
+    , hackage-security
+    , hashable
+    , hpack
+    , hpc
+    , http-client
+    , http-client-tls
+    , http-conduit
+    , http-types
+    , memory
+    , microlens
+    , mintty
+    , monad-logger
+    , mono-traversable
+    , mtl
+    , mustache
+    , neat-interpolation
+    , network-uri
+    , open-browser
+    , optparse-applicative
+    , pantry
+    , path
+    , path-io
+    , persistent
+    , persistent-sqlite
+    , persistent-template
+    , pretty
+    , primitive
+    , process
+    , project-template
+    , regex-applicative-text
+    , resourcet
+    , retry >=0.7
+    , rio
+    , semigroups
+    , split
+    , stack
+    , stm
+    , store-core
+    , streaming-commons
+    , tar
+    , template-haskell
+    , temporary
+    , text
+    , text-metrics
+    , th-reify-many
+    , time
+    , tls
+    , transformers
+    , typed-process
+    , unicode-transforms
+    , unix-compat
+    , unliftio >=0.2.8.0
+    , unordered-containers
+    , vector
+    , yaml
+    , zip-archive
+    , zlib
+  if os(windows)
+    cpp-options: -DWINDOWS
+    build-depends:
+        Win32
+  else
+    build-tools:
+        hsc2hs
+    build-depends:
+        unix
+  if flag(static)
+    ld-options: -static -pthread
+  if !(flag(disable-git-info))
+    cpp-options: -DUSE_GIT_INFO
+    build-depends:
+        githash
+      , optparse-simple
+  if flag(hide-dependency-versions)
+    cpp-options: -DHIDE_DEP_VERSIONS
+  if flag(supported-build)
+    cpp-options: -DSUPPORTED_BUILD
+  default-language: Haskell2010
+
+test-suite stack-integration-test
+  type: exitcode-stdio-1.0
+  main-is: IntegrationSpec.hs
+  other-modules:
+      Paths_stack
+  hs-source-dirs:
+      test/integration
+      test/integration/lib
+  ghc-options: -Wall -fwarn-tabs -fwarn-incomplete-uni-patterns -fwarn-incomplete-record-updates -optP-Wno-nonportable-include-path # workaround [Filename case on macOS · Issue #4739 · haskell/cabal](https://github.com/haskell/cabal/issues/4739) -threaded -rtsopts -with-rtsopts=-N
+  build-depends:
+      Cabal >=2.4
+    , aeson
+    , annotated-wl-pprint
+    , ansi-terminal >=0.8.1
+    , array
+    , async
+    , attoparsec
+    , base >=4.10 && <5
+    , base64-bytestring
+    , bytestring
+    , colour
+    , conduit
+    , conduit-extra
+    , containers
+    , cryptonite
+    , cryptonite-conduit
+    , deepseq
+    , directory
+    , echo
+    , exceptions
+    , extra
+    , file-embed
+    , filelock
+    , filepath
+    , fsnotify
+    , generic-deriving
+    , hackage-security
+    , hashable
+    , hpack
+    , hpc
+    , hspec
+    , http-client
+    , http-client-tls
+    , http-conduit
+    , http-types
+    , memory
+    , microlens
+    , mintty
+    , monad-logger
+    , mono-traversable
+    , mtl
+    , mustache
+    , neat-interpolation
+    , network-uri
+    , open-browser
+    , optparse-applicative
+    , pantry
+    , path
+    , path-io
+    , persistent
+    , persistent-sqlite
+    , persistent-template
+    , pretty
+    , primitive
+    , process
+    , project-template
+    , regex-applicative-text
+    , resourcet
+    , retry >=0.7
+    , rio
+    , semigroups
+    , split
+    , stm
+    , store-core
+    , streaming-commons
+    , tar
+    , template-haskell
+    , temporary
+    , text
+    , text-metrics
+    , th-reify-many
+    , time
+    , tls
+    , transformers
+    , typed-process
+    , unicode-transforms
+    , unix-compat
+    , unliftio >=0.2.8.0
+    , unordered-containers
+    , vector
+    , yaml
+    , zip-archive
+    , zlib
+  if os(windows)
+    cpp-options: -DWINDOWS
+    build-depends:
+        Win32
+  else
+    build-tools:
+        hsc2hs
+    build-depends:
+        unix
+  if !flag(integration-tests)
+    buildable: False
+  default-language: Haskell2010
+
+test-suite stack-test
+  type: exitcode-stdio-1.0
+  main-is: Spec.hs
+  other-modules:
+      Paths_stack
+  hs-source-dirs:
+      src/test
+  ghc-options: -Wall -fwarn-tabs -fwarn-incomplete-uni-patterns -fwarn-incomplete-record-updates -optP-Wno-nonportable-include-path # workaround [Filename case on macOS · Issue #4739 · haskell/cabal](https://github.com/haskell/cabal/issues/4739) -threaded
+  build-depends:
+      Cabal >=2.4
+    , QuickCheck
+    , aeson
+    , annotated-wl-pprint
+    , ansi-terminal >=0.8.1
+    , array
+    , async
+    , attoparsec
+    , base >=4.10 && <5
+    , base64-bytestring
+    , bytestring
+    , colour
+    , conduit
+    , conduit-extra
+    , containers
+    , cryptonite
+    , cryptonite-conduit
+    , deepseq
+    , directory
+    , echo
+    , exceptions
+    , extra
+    , file-embed
+    , filelock
+    , filepath
+    , fsnotify
+    , generic-deriving
+    , hackage-security
+    , hashable
+    , hpack
+    , hpc
+    , hspec
+    , http-client
+    , http-client-tls
+    , http-conduit
+    , http-types
+    , memory
+    , microlens
+    , mintty
+    , monad-logger
+    , mono-traversable
+    , mtl
+    , mustache
+    , neat-interpolation
+    , network-uri
+    , open-browser
+    , optparse-applicative
+    , pantry
+    , path
+    , path-io
+    , persistent
+    , persistent-sqlite
+    , persistent-template
+    , pretty
+    , primitive
+    , process
+    , project-template
+    , regex-applicative-text
+    , resourcet
+    , retry >=0.7
+    , rio
+    , semigroups
+    , smallcheck
+    , split
+    , stack
+    , stm
+    , store-core
+    , streaming-commons
+    , tar
+    , template-haskell
+    , temporary
+    , text
+    , text-metrics
+    , th-reify-many
+    , time
+    , tls
+    , transformers
+    , typed-process
+    , unicode-transforms
+    , unix-compat
+    , unliftio >=0.2.8.0
+    , unordered-containers
+    , vector
+    , yaml
+    , zip-archive
+    , zlib
+  if os(windows)
+    cpp-options: -DWINDOWS
+    build-depends:
+        Win32
+  else
+    build-tools:
+        hsc2hs
+    build-depends:
+        unix
+  default-language: Haskell2010
diff --git a/test-suite-golden/test-files/real-world/stack/stack.yaml.golden b/test-suite-golden/test-files/real-world/stack/stack.yaml.golden
new file mode 100644
--- /dev/null
+++ b/test-suite-golden/test-files/real-world/stack/stack.yaml.golden
@@ -0,0 +1,358 @@
+name: stack
+version: 1.10.0
+synopsis: The Haskell Tool Stack
+description: |-
+  Please see the README.md for usage information, and
+  the wiki on Github for more details.  Also, note that
+  the API for the library is not currently stable, and may
+  change significantly, even between minor releases. It is
+  currently only intended for use by the executable.
+category: Development
+homepage: http://haskellstack.org
+author: Commercial Haskell SIG
+maintainer: manny@fpcomplete.com
+license: BSD3
+github: commercialhaskell/stack
+extra-source-files:
+- CONTRIBUTING.md
+- ChangeLog.md
+- README.md
+- doc/*.md
+- src/setup-shim/StackSetupShim.hs
+- stack.yaml
+- test/package-dump/ghc-7.10.txt
+- test/package-dump/ghc-7.8.4-osx.txt
+- test/package-dump/ghc-7.8.txt
+ghc-options:
+- -Wall
+- -fwarn-tabs
+- -fwarn-incomplete-uni-patterns
+- -fwarn-incomplete-record-updates
+- '-optP-Wno-nonportable-include-path # workaround [Filename case on macOS · Issue
+  #4739 · haskell/cabal](https://github.com/haskell/cabal/issues/4739)'
+dependencies:
+- Cabal >= 2.4
+- aeson
+- annotated-wl-pprint
+- ansi-terminal >= 0.8.1
+- array
+- async
+- attoparsec
+- base >=4.10 && < 5
+- base64-bytestring
+- bytestring
+- colour
+- conduit
+- conduit-extra
+- containers
+- cryptonite
+- cryptonite-conduit
+- deepseq
+- directory
+- echo
+- exceptions
+- extra
+- file-embed
+- filelock
+- filepath
+- fsnotify
+- generic-deriving
+- hackage-security
+- hashable
+- hpack
+- hpc
+- http-client
+- http-client-tls
+- http-conduit
+- http-types
+- memory
+- microlens
+- mintty
+- monad-logger
+- mono-traversable
+- mtl
+- mustache
+- neat-interpolation
+- network-uri
+- open-browser
+- optparse-applicative
+- pantry
+- path
+- path-io
+- persistent
+- persistent-sqlite
+- persistent-template
+- pretty
+- primitive
+- process
+- project-template
+- regex-applicative-text
+- resourcet
+- retry >= 0.7
+- rio
+- semigroups
+- split
+- stm
+- store-core
+- streaming-commons
+- tar
+- template-haskell
+- temporary
+- text
+- text-metrics
+- th-reify-many
+- time
+- tls
+- transformers
+- typed-process
+- unicode-transforms
+- unix-compat
+- unliftio >= 0.2.8.0
+- unordered-containers
+- vector
+- yaml
+- zip-archive
+- zlib
+when:
+  condition: os(windows)
+  then:
+    cpp-options:
+    - -DWINDOWS
+    dependencies:
+    - Win32
+  else:
+    dependencies:
+    - unix
+    build-tools:
+    - hsc2hs
+custom-setup:
+  dependencies:
+  - base >=4.10 && < 5
+  - Cabal >= 2.4
+  - filepath
+flags:
+  disable-git-info:
+    description: Disable compile-time inclusion of current git info in stack
+    manual: true
+    default: false
+  hide-dependency-versions:
+    description: Hides dependency versions from "stack --version", used only by building
+      with stack.yaml
+    manual: true
+    default: false
+  integration-tests:
+    description: Run the integration test suite
+    manual: true
+    default: false
+  static:
+    description: Pass -static/-pthread to ghc when linking the stack binary.
+    manual: true
+    default: false
+  supported-build:
+    description: If false, causes "stack --version" to issue a warning about the build
+      being unsupported.  True only if building with stack.yaml
+    manual: true
+    default: false
+library:
+  exposed-modules:
+  - Control.Concurrent.Execute
+  - Data.Attoparsec.Args
+  - Data.Attoparsec.Combinators
+  - Data.Attoparsec.Interpreter
+  - Data.Monoid.Map
+  - Network.HTTP.Download
+  - Network.HTTP.Download.Verified
+  - Network.HTTP.StackClient
+  - Options.Applicative.Args
+  - Options.Applicative.Builder.Extra
+  - Options.Applicative.Complicated
+  - Path.CheckInstall
+  - Path.Extra
+  - Path.Find
+  - Stack.Build
+  - Stack.Build.Cache
+  - Stack.Build.ConstructPlan
+  - Stack.Build.Execute
+  - Stack.Build.Haddock
+  - Stack.Build.Installed
+  - Stack.Build.Source
+  - Stack.Build.Target
+  - Stack.BuildPlan
+  - Stack.Clean
+  - Stack.Config
+  - Stack.Config.Build
+  - Stack.Config.Urls
+  - Stack.Config.Docker
+  - Stack.Config.Nix
+  - Stack.ConfigCmd
+  - Stack.Constants
+  - Stack.Constants.Config
+  - Stack.Coverage
+  - Stack.DefaultColorWhen
+  - Stack.DefaultStyles
+  - Stack.Docker
+  - Stack.Docker.GlobalDB
+  - Stack.Dot
+  - Stack.FileWatch
+  - Stack.Freeze
+  - Stack.GhcPkg
+  - Stack.Ghci
+  - Stack.Ghci.Script
+  - Stack.Hoogle
+  - Stack.IDE
+  - Stack.Image
+  - Stack.Init
+  - Stack.Ls
+  - Stack.New
+  - Stack.Nix
+  - Stack.Options.BenchParser
+  - Stack.Options.BuildMonoidParser
+  - Stack.Options.BuildParser
+  - Stack.Options.CleanParser
+  - Stack.Options.ConfigParser
+  - Stack.Options.Completion
+  - Stack.Options.DockerParser
+  - Stack.Options.DotParser
+  - Stack.Options.ExecParser
+  - Stack.Options.FreezeParser
+  - Stack.Options.GhcBuildParser
+  - Stack.Options.GhciParser
+  - Stack.Options.GhcVariantParser
+  - Stack.Options.GlobalParser
+  - Stack.Options.HaddockParser
+  - Stack.Options.HpcReportParser
+  - Stack.Options.LogLevelParser
+  - Stack.Options.NewParser
+  - Stack.Options.NixParser
+  - Stack.Options.PackageParser
+  - Stack.Options.ResolverParser
+  - Stack.Options.ScriptParser
+  - Stack.Options.SDistParser
+  - Stack.Options.SolverParser
+  - Stack.Options.TestParser
+  - Stack.Options.Utils
+  - Stack.Package
+  - Stack.PackageDump
+  - Stack.Path
+  - Stack.Prelude
+  - Stack.PrettyPrint
+  - Stack.Runners
+  - Stack.Script
+  - Stack.SDist
+  - Stack.Setup
+  - Stack.Setup.Installed
+  - Stack.SetupCmd
+  - Stack.Sig
+  - Stack.Sig.GPG
+  - Stack.Sig.Sign
+  - Stack.Snapshot
+  - Stack.Solver
+  - Stack.StoreTH
+  - Stack.Types.Build
+  - Stack.Types.BuildPlan
+  - Stack.Types.CompilerBuild
+  - Stack.Types.Urls
+  - Stack.Types.Compiler
+  - Stack.Types.Config
+  - Stack.Types.Config.Build
+  - Stack.Types.Docker
+  - Stack.Types.GhcPkgId
+  - Stack.Types.Image
+  - Stack.Types.NamedComponent
+  - Stack.Types.Nix
+  - Stack.Types.Package
+  - Stack.Types.PackageDump
+  - Stack.Types.PackageName
+  - Stack.Types.PrettyPrint
+  - Stack.Types.Resolver
+  - Stack.Types.Runner
+  - Stack.Types.Sig
+  - Stack.Types.StylesUpdate
+  - Stack.Types.TemplateName
+  - Stack.Types.Version
+  - Stack.Types.VersionIntervals
+  - Stack.Unpack
+  - Stack.Upgrade
+  - Stack.Upload
+  - Text.PrettyPrint.Leijen.Extended
+  - System.Permissions
+  - System.Process.PagerEditor
+  - System.Terminal
+  generated-exposed-modules:
+  - Paths_stack
+  source-dirs: src/
+  ghc-options:
+  - -fwarn-identities
+  when:
+    condition: os(windows)
+    then:
+      source-dirs:
+      - src/windows/
+    else:
+      source-dirs:
+      - src/unix/
+      c-sources:
+      - src/unix/cbits/uname.c
+executables:
+  stack:
+    main: Main.hs
+    generated-other-modules:
+    - Build_stack
+    - Paths_stack
+    source-dirs:
+    - src/main
+    ghc-options:
+    - -threaded
+    - -rtsopts
+    dependencies:
+    - stack
+    when:
+    - condition: flag(static)
+      cpp-options: []
+      ld-options:
+      - -static
+      - -pthread
+      dependencies: []
+    - condition: '!(flag(disable-git-info))'
+      cpp-options:
+      - -DUSE_GIT_INFO
+      ld-options: []
+      dependencies:
+      - githash
+      - optparse-simple
+    - condition: flag(hide-dependency-versions)
+      cpp-options:
+      - -DHIDE_DEP_VERSIONS
+      ld-options: []
+      dependencies: []
+    - condition: flag(supported-build)
+      cpp-options:
+      - -DSUPPORTED_BUILD
+      ld-options: []
+      dependencies: []
+tests:
+  stack-integration-test:
+    main: IntegrationSpec.hs
+    source-dirs:
+    - test/integration
+    - test/integration/lib
+    ghc-options:
+    - -threaded
+    - -rtsopts
+    - -with-rtsopts=-N
+    dependencies:
+    - hspec
+    when:
+      condition: '!flag(integration-tests)'
+      buildable: false
+  stack-test:
+    main: Spec.hs
+    source-dirs:
+    - src/test
+    ghc-options:
+    - -threaded
+    dependencies:
+    - QuickCheck
+    - hspec
+    - stack
+    - smallcheck
diff --git a/test-suite-hlint/HLint.hs b/test-suite-hlint/HLint.hs
new file mode 100644
--- /dev/null
+++ b/test-suite-hlint/HLint.hs
@@ -0,0 +1,21 @@
+module Main (main) where
+
+import Language.Haskell.HLint (hlint)
+import System.Exit (exitFailure, exitSuccess)
+
+arguments :: [String]
+arguments =
+    [ "library"
+    , "exe"
+    , "test-suite-hlint"
+    , "test-suite-golden"
+    -- WARNING: HLint turns off QuasiQuotes even if turned on in
+    -- default-extensions in the cabal file, #55.
+    -- SEE: https://github.com/ndmitchell/hlint/issues/223
+    , "-XQuasiQuotes"
+    ]
+
+main :: IO ()
+main = do
+    hints <- hlint arguments
+    if null hints then exitSuccess else exitFailure
diff --git a/test/golden/src/Golden.hs b/test/golden/src/Golden.hs
deleted file mode 100644
--- a/test/golden/src/Golden.hs
+++ /dev/null
@@ -1,145 +0,0 @@
-{-# LANGUAGE MultiWayIf #-}
-
-module Main (main) where
-
-import System.FilePath
-    ( (</>), (<.>), (-<.>)
-    , takeBaseName, replaceExtension
-    , takeDirectory, splitDirectories, joinPath
-    )
-import System.Directory (renameFile)
-import Test.Tasty (defaultMain, TestTree, testGroup)
-import Test.Tasty.Golden (findByExtension)
-import Test.Tasty.Golden (goldenVsFile, goldenVsString)
-
-import Hpack (Verbose(..), Options(..), hpack, defaultOptions, setDecode)
-import Hpack.Config (DecodeOptions(..))
-import Hpack.Dhall (fileToJson, showDhall, showJson, showYaml)
-import Data.ByteString.Lazy.UTF8 (fromString)
-
-main :: IO ()
-main =
-    defaultMain =<< goldenTests
-
-goldenTests :: IO TestTree
-goldenTests = do
-    ks <- findByExtension [".dhall"] "test/golden/test-files/key"
-    rs <- findByExtension [".dhall"] "test/golden/test-files/real-world"
-    g1 <- goldenTestSet "archetypes" ks
-    g2 <- goldenTestSet "real-world examples" rs
-    return $ testGroup "golden tests" [g1 , g2]
-
-goldenTestSet :: String -> [FilePath] -> IO TestTree
-goldenTestSet title dhallFiles = do
-    return $ testGroup title 
-        [ testGroup ".dhall to .cabal"
-            [ goldenVsFile
-                (testName dhallFile)
-                (cabalFile <.> ".golden")
-                cabalFile
-                (writeDhallCabal dhallFile)
-            | dhallFile <- dhallFiles
-            , let cabalFile = cabalFilePath dhallFile
-            ]
-        , testGroup ".dhall to dhall"
-            [ goldenVsString
-                (testName dhallFile)
-                (dhallFile <.> ".golden")
-                (fmap fromString . showDhall $ dhallFile)
-            | dhallFile <- dhallFiles
-            ]
-        , testGroup ".dhall to json"
-            [ goldenVsFile
-                (testName dhallFile)
-                (dhallFile -<.> ".json.golden")
-                jsonFile
-                (writeJson dhallFile jsonFile)
-            | dhallFile <- dhallFiles
-            , let jsonFile = dhallFile -<.> ".json"
-            ]
-        , testGroup ".dhall to yaml"
-            [ goldenVsFile
-                (testName dhallFile)
-                (dhallFile -<.> ".yaml.golden")
-                yamlFile
-                (writeYaml dhallFile yamlFile)
-            | dhallFile <- dhallFiles
-            , let yamlFile = dhallFile -<.> ".yaml"
-            ]
-        , testGroup ".yaml to .cabal"
-            [ goldenVsFile
-                (testName dhallFile)
-                (cabalFile <.> ".golden")
-                cabalFile
-                (writeYamlCabal yamlFile cabalFile yamlCabalFile)
-            | dhallFile <- dhallFiles
-            , let yamlFile = dhallFile -<.> ".yaml"
-            , let cabalFile = cabalFilePath dhallFile
-            , let yamlCabalFile = yamlFile <.> ".cabal"
-            ]
-        ]
-
-testName :: FilePath -> FilePath
-testName p =
-    if | fName == dName -> fName
-       | fName == "package" -> dName
-       | dName == "key" -> fName
-       | dName == "real-world" -> fName
-       | otherwise -> dName </> fName
-    where
-        dName =
-            joinPath
-            . take 1
-            . reverse
-            . splitDirectories
-            . takeDirectory
-            $ p
-
-        fName = takeBaseName p
-
-writeDhallCabal :: FilePath -> IO ()
-writeDhallCabal dhallFile =
-    hpack NoVerbose (setDecode fileToJson options)
-    where
-        d = optionsDecodeOptions defaultOptions
-        d' = d {decodeOptionsTarget = dhallFile}
-        options = defaultOptions {optionsDecodeOptions = d'}
-
-writeYamlCabal :: FilePath -> FilePath -> FilePath -> IO ()
-writeYamlCabal yamlFile cabalFile yamlCabalFile = do
-        renameFile cabalFile tmp
-        hpack NoVerbose options
-        renameFile cabalFile yamlCabalFile
-        renameFile tmp cabalFile
-    where
-        tmp = cabalFile <.> ".TMP"
-
-        d = optionsDecodeOptions defaultOptions
-        d' = d {decodeOptionsTarget = yamlFile}
-        options =
-            defaultOptions
-                { optionsDecodeOptions = d'
-                }
-
-writeJson :: FilePath -> FilePath -> IO ()
-writeJson dhallFile jsonFile = do
-    s <- showJson Nothing dhallFile
-    writeFile jsonFile s
-
-writeYaml :: FilePath -> FilePath -> IO ()
-writeYaml dhallFile yamlFile = do
-    s <- showYaml Nothing dhallFile
-    writeFile yamlFile s
-
-cabalFilePath :: FilePath -> FilePath
-cabalFilePath p
-    | takeBaseName p == "package" =
-        case reverse . splitDirectories $ ds of
-            d : ds' -> joinPath (reverse ds') </> d </> d <.> ".cabal"
-            _ -> replaceExtension p ".cabal"
-
-    | otherwise =
-        replaceExtension p ".cabal"
-
-    where
-        ds = takeDirectory p
diff --git a/test/golden/test-files/key/empty-inferred/empty-inferred.cabal b/test/golden/test-files/key/empty-inferred/empty-inferred.cabal
deleted file mode 100644
--- a/test/golden/test-files/key/empty-inferred/empty-inferred.cabal
+++ /dev/null
@@ -1,11 +0,0 @@
-cabal-version: 1.12
-
--- This file has been generated from package.dhall by hpack version 0.31.0.
---
--- see: https://github.com/sol/hpack
---
--- hash: 9f10239d716ef4564587e29b36c0e3b74056721733790211e20061a86a0feb53
-
-name:           empty-inferred
-version:        0.0.0
-build-type:     Simple
diff --git a/test/golden/test-files/key/empty-inferred/empty-inferred.cabal.golden b/test/golden/test-files/key/empty-inferred/empty-inferred.cabal.golden
deleted file mode 100644
--- a/test/golden/test-files/key/empty-inferred/empty-inferred.cabal.golden
+++ /dev/null
@@ -1,11 +0,0 @@
-cabal-version: 1.12
-
--- This file has been generated from package.dhall by hpack version 0.31.0.
---
--- see: https://github.com/sol/hpack
---
--- hash: 9f10239d716ef4564587e29b36c0e3b74056721733790211e20061a86a0feb53
-
-name:           empty-inferred
-version:        0.0.0
-build-type:     Simple
diff --git a/test/golden/test-files/key/empty-inferred/package.dhall b/test/golden/test-files/key/empty-inferred/package.dhall
deleted file mode 100644
--- a/test/golden/test-files/key/empty-inferred/package.dhall
+++ /dev/null
@@ -1,1 +0,0 @@
-{=}
diff --git a/test/golden/test-files/key/empty-inferred/package.dhall.golden b/test/golden/test-files/key/empty-inferred/package.dhall.golden
deleted file mode 100644
--- a/test/golden/test-files/key/empty-inferred/package.dhall.golden
+++ /dev/null
@@ -1,1 +0,0 @@
-{=}
diff --git a/test/golden/test-files/key/empty-inferred/package.json b/test/golden/test-files/key/empty-inferred/package.json
deleted file mode 100644
--- a/test/golden/test-files/key/empty-inferred/package.json
+++ /dev/null
@@ -1,1 +0,0 @@
-{}
diff --git a/test/golden/test-files/key/empty-inferred/package.json.golden b/test/golden/test-files/key/empty-inferred/package.json.golden
deleted file mode 100644
--- a/test/golden/test-files/key/empty-inferred/package.json.golden
+++ /dev/null
@@ -1,1 +0,0 @@
-{}
diff --git a/test/golden/test-files/key/empty-inferred/package.yaml b/test/golden/test-files/key/empty-inferred/package.yaml
deleted file mode 100644
--- a/test/golden/test-files/key/empty-inferred/package.yaml
+++ /dev/null
@@ -1,1 +0,0 @@
-{}
diff --git a/test/golden/test-files/key/empty-inferred/package.yaml.cabal b/test/golden/test-files/key/empty-inferred/package.yaml.cabal
deleted file mode 100644
--- a/test/golden/test-files/key/empty-inferred/package.yaml.cabal
+++ /dev/null
@@ -1,11 +0,0 @@
-cabal-version: 1.12
-
--- This file has been generated from package.yaml by hpack version 0.31.2.
---
--- see: https://github.com/sol/hpack
---
--- hash: 9f10239d716ef4564587e29b36c0e3b74056721733790211e20061a86a0feb53
-
-name:           empty-inferred
-version:        0.0.0
-build-type:     Simple
diff --git a/test/golden/test-files/key/empty-inferred/package.yaml.golden b/test/golden/test-files/key/empty-inferred/package.yaml.golden
deleted file mode 100644
--- a/test/golden/test-files/key/empty-inferred/package.yaml.golden
+++ /dev/null
@@ -1,1 +0,0 @@
-{}
diff --git a/test/golden/test-files/key/empty-package.cabal b/test/golden/test-files/key/empty-package.cabal
deleted file mode 100644
--- a/test/golden/test-files/key/empty-package.cabal
+++ /dev/null
@@ -1,11 +0,0 @@
-cabal-version: 1.12
-
--- This file has been generated from empty-package.dhall by hpack version 0.31.0.
---
--- see: https://github.com/sol/hpack
---
--- hash: e0a74f511d829cae53cd712664781db312951dd773249603163ba1b1e32afd04
-
-name:           empty-package
-version:        0.0.0
-build-type:     Simple
diff --git a/test/golden/test-files/key/empty-package.cabal.golden b/test/golden/test-files/key/empty-package.cabal.golden
deleted file mode 100644
--- a/test/golden/test-files/key/empty-package.cabal.golden
+++ /dev/null
@@ -1,11 +0,0 @@
-cabal-version: 1.12
-
--- This file has been generated from empty-package.dhall by hpack version 0.31.0.
---
--- see: https://github.com/sol/hpack
---
--- hash: e0a74f511d829cae53cd712664781db312951dd773249603163ba1b1e32afd04
-
-name:           empty-package
-version:        0.0.0
-build-type:     Simple
diff --git a/test/golden/test-files/key/empty-package.dhall b/test/golden/test-files/key/empty-package.dhall
deleted file mode 100644
--- a/test/golden/test-files/key/empty-package.dhall
+++ /dev/null
@@ -1,1 +0,0 @@
-{ name = "empty-package" }
diff --git a/test/golden/test-files/key/empty-package.dhall.golden b/test/golden/test-files/key/empty-package.dhall.golden
deleted file mode 100644
--- a/test/golden/test-files/key/empty-package.dhall.golden
+++ /dev/null
@@ -1,1 +0,0 @@
-{ name = "empty-package" }
diff --git a/test/golden/test-files/key/empty-package.json b/test/golden/test-files/key/empty-package.json
deleted file mode 100644
--- a/test/golden/test-files/key/empty-package.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
-    "name": "empty-package"
-}
diff --git a/test/golden/test-files/key/empty-package.json.golden b/test/golden/test-files/key/empty-package.json.golden
deleted file mode 100644
--- a/test/golden/test-files/key/empty-package.json.golden
+++ /dev/null
@@ -1,3 +0,0 @@
-{
-    "name": "empty-package"
-}
diff --git a/test/golden/test-files/key/empty-package.yaml b/test/golden/test-files/key/empty-package.yaml
deleted file mode 100644
--- a/test/golden/test-files/key/empty-package.yaml
+++ /dev/null
@@ -1,1 +0,0 @@
-name: empty-package
diff --git a/test/golden/test-files/key/empty-package.yaml.cabal b/test/golden/test-files/key/empty-package.yaml.cabal
deleted file mode 100644
--- a/test/golden/test-files/key/empty-package.yaml.cabal
+++ /dev/null
@@ -1,11 +0,0 @@
-cabal-version: 1.12
-
--- This file has been generated from empty-package.yaml by hpack version 0.31.2.
---
--- see: https://github.com/sol/hpack
---
--- hash: e0a74f511d829cae53cd712664781db312951dd773249603163ba1b1e32afd04
-
-name:           empty-package
-version:        0.0.0
-build-type:     Simple
diff --git a/test/golden/test-files/key/empty-package.yaml.golden b/test/golden/test-files/key/empty-package.yaml.golden
deleted file mode 100644
--- a/test/golden/test-files/key/empty-package.yaml.golden
+++ /dev/null
@@ -1,1 +0,0 @@
-name: empty-package
diff --git a/test/golden/test-files/key/import-local/import-local.cabal b/test/golden/test-files/key/import-local/import-local.cabal
deleted file mode 100644
--- a/test/golden/test-files/key/import-local/import-local.cabal
+++ /dev/null
@@ -1,11 +0,0 @@
-cabal-version: 1.12
-
--- This file has been generated from package.dhall by hpack version 0.31.0.
---
--- see: https://github.com/sol/hpack
---
--- hash: fb3f09267f149cb49eb030ac951c27be9964aa0d51e91460e5b2d59ee1a5082f
-
-name:           import-local
-version:        0.0.0
-build-type:     Simple
diff --git a/test/golden/test-files/key/import-local/import-local.cabal.golden b/test/golden/test-files/key/import-local/import-local.cabal.golden
deleted file mode 100644
--- a/test/golden/test-files/key/import-local/import-local.cabal.golden
+++ /dev/null
@@ -1,11 +0,0 @@
-cabal-version: 1.12
-
--- This file has been generated from package.dhall by hpack version 0.31.0.
---
--- see: https://github.com/sol/hpack
---
--- hash: fb3f09267f149cb49eb030ac951c27be9964aa0d51e91460e5b2d59ee1a5082f
-
-name:           import-local
-version:        0.0.0
-build-type:     Simple
diff --git a/test/golden/test-files/key/import-local/name.dhl b/test/golden/test-files/key/import-local/name.dhl
deleted file mode 100644
--- a/test/golden/test-files/key/import-local/name.dhl
+++ /dev/null
@@ -1,1 +0,0 @@
-{ name = "import-local" }
diff --git a/test/golden/test-files/key/import-local/package.dhall b/test/golden/test-files/key/import-local/package.dhall
deleted file mode 100644
--- a/test/golden/test-files/key/import-local/package.dhall
+++ /dev/null
@@ -1,1 +0,0 @@
-./name.dhl ⫽ {=}
diff --git a/test/golden/test-files/key/import-local/package.dhall.golden b/test/golden/test-files/key/import-local/package.dhall.golden
deleted file mode 100644
--- a/test/golden/test-files/key/import-local/package.dhall.golden
+++ /dev/null
@@ -1,1 +0,0 @@
-{ name = "import-local" } ⫽ {=}
diff --git a/test/golden/test-files/key/import-local/package.json b/test/golden/test-files/key/import-local/package.json
deleted file mode 100644
--- a/test/golden/test-files/key/import-local/package.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
-    "name": "import-local"
-}
diff --git a/test/golden/test-files/key/import-local/package.json.golden b/test/golden/test-files/key/import-local/package.json.golden
deleted file mode 100644
--- a/test/golden/test-files/key/import-local/package.json.golden
+++ /dev/null
@@ -1,3 +0,0 @@
-{
-    "name": "import-local"
-}
diff --git a/test/golden/test-files/key/import-local/package.yaml b/test/golden/test-files/key/import-local/package.yaml
deleted file mode 100644
--- a/test/golden/test-files/key/import-local/package.yaml
+++ /dev/null
@@ -1,1 +0,0 @@
-name: import-local
diff --git a/test/golden/test-files/key/import-local/package.yaml.cabal b/test/golden/test-files/key/import-local/package.yaml.cabal
deleted file mode 100644
--- a/test/golden/test-files/key/import-local/package.yaml.cabal
+++ /dev/null
@@ -1,11 +0,0 @@
-cabal-version: 1.12
-
--- This file has been generated from package.yaml by hpack version 0.31.2.
---
--- see: https://github.com/sol/hpack
---
--- hash: fb3f09267f149cb49eb030ac951c27be9964aa0d51e91460e5b2d59ee1a5082f
-
-name:           import-local
-version:        0.0.0
-build-type:     Simple
diff --git a/test/golden/test-files/key/import-local/package.yaml.golden b/test/golden/test-files/key/import-local/package.yaml.golden
deleted file mode 100644
--- a/test/golden/test-files/key/import-local/package.yaml.golden
+++ /dev/null
@@ -1,1 +0,0 @@
-name: import-local
diff --git a/test/golden/test-files/key/import-relative.dhl b/test/golden/test-files/key/import-relative.dhl
deleted file mode 100644
--- a/test/golden/test-files/key/import-relative.dhl
+++ /dev/null
@@ -1,1 +0,0 @@
-{ name = "import-relative" }
diff --git a/test/golden/test-files/key/import-relative/import-relative.cabal b/test/golden/test-files/key/import-relative/import-relative.cabal
deleted file mode 100644
--- a/test/golden/test-files/key/import-relative/import-relative.cabal
+++ /dev/null
@@ -1,11 +0,0 @@
-cabal-version: 1.12
-
--- This file has been generated from package.dhall by hpack version 0.31.0.
---
--- see: https://github.com/sol/hpack
---
--- hash: 989056d21c3910e06ec15967716df134a39f43c561858afff828d22802a22005
-
-name:           import-relative
-version:        0.0.0
-build-type:     Simple
diff --git a/test/golden/test-files/key/import-relative/import-relative.cabal.golden b/test/golden/test-files/key/import-relative/import-relative.cabal.golden
deleted file mode 100644
--- a/test/golden/test-files/key/import-relative/import-relative.cabal.golden
+++ /dev/null
@@ -1,11 +0,0 @@
-cabal-version: 1.12
-
--- This file has been generated from package.dhall by hpack version 0.31.0.
---
--- see: https://github.com/sol/hpack
---
--- hash: 989056d21c3910e06ec15967716df134a39f43c561858afff828d22802a22005
-
-name:           import-relative
-version:        0.0.0
-build-type:     Simple
diff --git a/test/golden/test-files/key/import-relative/package.dhall b/test/golden/test-files/key/import-relative/package.dhall
deleted file mode 100644
--- a/test/golden/test-files/key/import-relative/package.dhall
+++ /dev/null
@@ -1,1 +0,0 @@
-../import-relative.dhl ⫽ {=}
diff --git a/test/golden/test-files/key/import-relative/package.dhall.golden b/test/golden/test-files/key/import-relative/package.dhall.golden
deleted file mode 100644
--- a/test/golden/test-files/key/import-relative/package.dhall.golden
+++ /dev/null
@@ -1,1 +0,0 @@
-{ name = "import-relative" } ⫽ {=}
diff --git a/test/golden/test-files/key/import-relative/package.json b/test/golden/test-files/key/import-relative/package.json
deleted file mode 100644
--- a/test/golden/test-files/key/import-relative/package.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
-    "name": "import-relative"
-}
diff --git a/test/golden/test-files/key/import-relative/package.json.golden b/test/golden/test-files/key/import-relative/package.json.golden
deleted file mode 100644
--- a/test/golden/test-files/key/import-relative/package.json.golden
+++ /dev/null
@@ -1,3 +0,0 @@
-{
-    "name": "import-relative"
-}
diff --git a/test/golden/test-files/key/import-relative/package.yaml b/test/golden/test-files/key/import-relative/package.yaml
deleted file mode 100644
--- a/test/golden/test-files/key/import-relative/package.yaml
+++ /dev/null
@@ -1,1 +0,0 @@
-name: import-relative
diff --git a/test/golden/test-files/key/import-relative/package.yaml.cabal b/test/golden/test-files/key/import-relative/package.yaml.cabal
deleted file mode 100644
--- a/test/golden/test-files/key/import-relative/package.yaml.cabal
+++ /dev/null
@@ -1,11 +0,0 @@
-cabal-version: 1.12
-
--- This file has been generated from package.yaml by hpack version 0.31.2.
---
--- see: https://github.com/sol/hpack
---
--- hash: 989056d21c3910e06ec15967716df134a39f43c561858afff828d22802a22005
-
-name:           import-relative
-version:        0.0.0
-build-type:     Simple
diff --git a/test/golden/test-files/key/import-relative/package.yaml.golden b/test/golden/test-files/key/import-relative/package.yaml.golden
deleted file mode 100644
--- a/test/golden/test-files/key/import-relative/package.yaml.golden
+++ /dev/null
@@ -1,1 +0,0 @@
-name: import-relative
diff --git a/test/golden/test-files/key/when-dependencies.cabal b/test/golden/test-files/key/when-dependencies.cabal
deleted file mode 100644
--- a/test/golden/test-files/key/when-dependencies.cabal
+++ /dev/null
@@ -1,11 +0,0 @@
-cabal-version: 1.12
-
--- This file has been generated from when-dependencies.dhall by hpack version 0.31.1.
---
--- see: https://github.com/sol/hpack
---
--- hash: a1d315a919b697e7986a0c149715373427427e43104f82f05f394a439793907f
-
-name:           when-dependencies
-version:        0.0.0
-build-type:     Simple
diff --git a/test/golden/test-files/key/when-dependencies.cabal.golden b/test/golden/test-files/key/when-dependencies.cabal.golden
deleted file mode 100644
--- a/test/golden/test-files/key/when-dependencies.cabal.golden
+++ /dev/null
@@ -1,11 +0,0 @@
-cabal-version: 1.12
-
--- This file has been generated from when-dependencies.dhall by hpack version 0.31.1.
---
--- see: https://github.com/sol/hpack
---
--- hash: a1d315a919b697e7986a0c149715373427427e43104f82f05f394a439793907f
-
-name:           when-dependencies
-version:        0.0.0
-build-type:     Simple
diff --git a/test/golden/test-files/key/when-dependencies.dhall b/test/golden/test-files/key/when-dependencies.dhall
deleted file mode 100644
--- a/test/golden/test-files/key/when-dependencies.dhall
+++ /dev/null
@@ -1,13 +0,0 @@
-    let deps = [ "base == 4.*" ]
-
-in  { name =
-        "when-dependencies"
-    , when =
-        { condition =
-            "impl(ghc < 8.2.2)"
-        , `then` =
-            { dependencies = deps # [ "yaml" ] }
-        , `else` =
-            { dependencies = deps # [ "yaml-pretty-extras" ] }
-        }
-    }
diff --git a/test/golden/test-files/key/when-dependencies.dhall.golden b/test/golden/test-files/key/when-dependencies.dhall.golden
deleted file mode 100644
--- a/test/golden/test-files/key/when-dependencies.dhall.golden
+++ /dev/null
@@ -1,13 +0,0 @@
-let deps = [ "base == 4.*" ]
-
-in  { name =
-        "when-dependencies"
-    , when =
-        { condition =
-            "impl(ghc < 8.2.2)"
-        , `then` =
-            { dependencies = deps # [ "yaml" ] }
-        , `else` =
-            { dependencies = deps # [ "yaml-pretty-extras" ] }
-        }
-    }
diff --git a/test/golden/test-files/key/when-dependencies.json b/test/golden/test-files/key/when-dependencies.json
deleted file mode 100644
--- a/test/golden/test-files/key/when-dependencies.json
+++ /dev/null
@@ -1,18 +0,0 @@
-{
-    "name": "when-dependencies",
-    "when": {
-        "condition": "impl(ghc < 8.2.2)",
-        "then": {
-            "dependencies": [
-                "base == 4.*",
-                "yaml"
-            ]
-        },
-        "else": {
-            "dependencies": [
-                "base == 4.*",
-                "yaml-pretty-extras"
-            ]
-        }
-    }
-}
diff --git a/test/golden/test-files/key/when-dependencies.json.golden b/test/golden/test-files/key/when-dependencies.json.golden
deleted file mode 100644
--- a/test/golden/test-files/key/when-dependencies.json.golden
+++ /dev/null
@@ -1,18 +0,0 @@
-{
-    "name": "when-dependencies",
-    "when": {
-        "condition": "impl(ghc < 8.2.2)",
-        "then": {
-            "dependencies": [
-                "base == 4.*",
-                "yaml"
-            ]
-        },
-        "else": {
-            "dependencies": [
-                "base == 4.*",
-                "yaml-pretty-extras"
-            ]
-        }
-    }
-}
diff --git a/test/golden/test-files/key/when-dependencies.yaml b/test/golden/test-files/key/when-dependencies.yaml
deleted file mode 100644
--- a/test/golden/test-files/key/when-dependencies.yaml
+++ /dev/null
@@ -1,11 +0,0 @@
-name: when-dependencies
-when:
-  condition: impl(ghc < 8.2.2)
-  then:
-    dependencies:
-    - base == 4.*
-    - yaml
-  else:
-    dependencies:
-    - base == 4.*
-    - yaml-pretty-extras
diff --git a/test/golden/test-files/key/when-dependencies.yaml.cabal b/test/golden/test-files/key/when-dependencies.yaml.cabal
deleted file mode 100644
--- a/test/golden/test-files/key/when-dependencies.yaml.cabal
+++ /dev/null
@@ -1,11 +0,0 @@
-cabal-version: 1.12
-
--- This file has been generated from when-dependencies.yaml by hpack version 0.31.2.
---
--- see: https://github.com/sol/hpack
---
--- hash: a1d315a919b697e7986a0c149715373427427e43104f82f05f394a439793907f
-
-name:           when-dependencies
-version:        0.0.0
-build-type:     Simple
diff --git a/test/golden/test-files/key/when-dependencies.yaml.golden b/test/golden/test-files/key/when-dependencies.yaml.golden
deleted file mode 100644
--- a/test/golden/test-files/key/when-dependencies.yaml.golden
+++ /dev/null
@@ -1,11 +0,0 @@
-name: when-dependencies
-when:
-  condition: impl(ghc < 8.2.2)
-  then:
-    dependencies:
-    - base == 4.*
-    - yaml
-  else:
-    dependencies:
-    - base == 4.*
-    - yaml-pretty-extras
diff --git a/test/golden/test-files/real-world/hpack/hpack.cabal b/test/golden/test-files/real-world/hpack/hpack.cabal
deleted file mode 100644
--- a/test/golden/test-files/real-world/hpack/hpack.cabal
+++ /dev/null
@@ -1,136 +0,0 @@
-cabal-version: 1.12
-
--- This file has been generated from hpack.dhall by hpack version 0.31.0.
---
--- see: https://github.com/sol/hpack
---
--- hash: 6233d5bc3d8cc3400d64ab30856182d4a593d9245bfdd5096e1287213cc3ae31
-
-name:           hpack
-version:        0.31.1
-synopsis:       A modern format for Haskell packages
-description:    See README at <https://github.com/sol/hpack#readme>
-category:       Development
-homepage:       https://github.com/sol/hpack#readme
-bug-reports:    https://github.com/sol/hpack/issues
-maintainer:     Simon Hengel <sol@typeful.net>
-build-type:     Simple
-extra-source-files:
-    CHANGELOG.md
-
-source-repository head
-  type: git
-  location: https://github.com/sol/hpack
-
-library
-  exposed-modules:
-      Hpack
-      Hpack.Config
-      Hpack.Render
-      Hpack.Yaml
-  other-modules:
-      Paths_hpack
-  hs-source-dirs:
-      src
-  ghc-options: -Wall
-  build-depends:
-      Cabal >=2.2
-    , Glob >=0.9.0
-    , aeson >=1.2.1.0
-    , base >=4.9 && <5
-    , bifunctors
-    , bytestring
-    , containers
-    , cryptonite
-    , deepseq
-    , directory
-    , filepath
-    , http-client
-    , http-client-tls
-    , http-types
-    , infer-license >=0.2.0 && <0.3
-    , pretty
-    , scientific
-    , text
-    , transformers
-    , unordered-containers
-    , vector
-    , yaml >=0.10.0
-  default-language: Haskell2010
-
-executable hpack
-  main-is: Main.hs
-  other-modules:
-      Paths_hpack
-  hs-source-dirs:
-      driver
-  ghc-options: -Wall
-  build-depends:
-      Cabal >=2.2
-    , Glob >=0.9.0
-    , aeson >=1.2.1.0
-    , base >=4.9 && <5
-    , bifunctors
-    , bytestring
-    , containers
-    , cryptonite
-    , deepseq
-    , directory
-    , filepath
-    , hpack
-    , http-client
-    , http-client-tls
-    , http-types
-    , infer-license >=0.2.0 && <0.3
-    , pretty
-    , scientific
-    , text
-    , transformers
-    , unordered-containers
-    , vector
-    , yaml >=0.10.0
-  default-language: Haskell2010
-
-test-suite spec
-  type: exitcode-stdio-1.0
-  main-is: Spec.hs
-  other-modules:
-      Paths_hpack
-  hs-source-dirs:
-      test
-      src
-  ghc-options: -Wall
-  cpp-options: -DTEST
-  build-tool-depends:
-      hspec-discover:hspec-discover
-  build-depends:
-      Cabal >=2.2
-    , Glob >=0.9.0
-    , HUnit >=1.6.0.0
-    , QuickCheck
-    , aeson >=1.2.1.0
-    , base >=4.9 && <5
-    , bifunctors
-    , bytestring
-    , containers
-    , cryptonite
-    , deepseq
-    , directory
-    , filepath
-    , hspec ==2.*
-    , http-client
-    , http-client-tls
-    , http-types
-    , infer-license >=0.2.0 && <0.3
-    , interpolate
-    , mockery >=0.3
-    , pretty
-    , scientific
-    , template-haskell
-    , temporary
-    , text
-    , transformers
-    , unordered-containers
-    , vector
-    , yaml >=0.10.0
-  default-language: Haskell2010
diff --git a/test/golden/test-files/real-world/hpack/hpack.cabal.golden b/test/golden/test-files/real-world/hpack/hpack.cabal.golden
deleted file mode 100644
--- a/test/golden/test-files/real-world/hpack/hpack.cabal.golden
+++ /dev/null
@@ -1,136 +0,0 @@
-cabal-version: 1.12
-
--- This file has been generated from hpack.dhall by hpack version 0.31.0.
---
--- see: https://github.com/sol/hpack
---
--- hash: 6233d5bc3d8cc3400d64ab30856182d4a593d9245bfdd5096e1287213cc3ae31
-
-name:           hpack
-version:        0.31.1
-synopsis:       A modern format for Haskell packages
-description:    See README at <https://github.com/sol/hpack#readme>
-category:       Development
-homepage:       https://github.com/sol/hpack#readme
-bug-reports:    https://github.com/sol/hpack/issues
-maintainer:     Simon Hengel <sol@typeful.net>
-build-type:     Simple
-extra-source-files:
-    CHANGELOG.md
-
-source-repository head
-  type: git
-  location: https://github.com/sol/hpack
-
-library
-  exposed-modules:
-      Hpack
-      Hpack.Config
-      Hpack.Render
-      Hpack.Yaml
-  other-modules:
-      Paths_hpack
-  hs-source-dirs:
-      src
-  ghc-options: -Wall
-  build-depends:
-      Cabal >=2.2
-    , Glob >=0.9.0
-    , aeson >=1.2.1.0
-    , base >=4.9 && <5
-    , bifunctors
-    , bytestring
-    , containers
-    , cryptonite
-    , deepseq
-    , directory
-    , filepath
-    , http-client
-    , http-client-tls
-    , http-types
-    , infer-license >=0.2.0 && <0.3
-    , pretty
-    , scientific
-    , text
-    , transformers
-    , unordered-containers
-    , vector
-    , yaml >=0.10.0
-  default-language: Haskell2010
-
-executable hpack
-  main-is: Main.hs
-  other-modules:
-      Paths_hpack
-  hs-source-dirs:
-      driver
-  ghc-options: -Wall
-  build-depends:
-      Cabal >=2.2
-    , Glob >=0.9.0
-    , aeson >=1.2.1.0
-    , base >=4.9 && <5
-    , bifunctors
-    , bytestring
-    , containers
-    , cryptonite
-    , deepseq
-    , directory
-    , filepath
-    , hpack
-    , http-client
-    , http-client-tls
-    , http-types
-    , infer-license >=0.2.0 && <0.3
-    , pretty
-    , scientific
-    , text
-    , transformers
-    , unordered-containers
-    , vector
-    , yaml >=0.10.0
-  default-language: Haskell2010
-
-test-suite spec
-  type: exitcode-stdio-1.0
-  main-is: Spec.hs
-  other-modules:
-      Paths_hpack
-  hs-source-dirs:
-      test
-      src
-  ghc-options: -Wall
-  cpp-options: -DTEST
-  build-tool-depends:
-      hspec-discover:hspec-discover
-  build-depends:
-      Cabal >=2.2
-    , Glob >=0.9.0
-    , HUnit >=1.6.0.0
-    , QuickCheck
-    , aeson >=1.2.1.0
-    , base >=4.9 && <5
-    , bifunctors
-    , bytestring
-    , containers
-    , cryptonite
-    , deepseq
-    , directory
-    , filepath
-    , hspec ==2.*
-    , http-client
-    , http-client-tls
-    , http-types
-    , infer-license >=0.2.0 && <0.3
-    , interpolate
-    , mockery >=0.3
-    , pretty
-    , scientific
-    , template-haskell
-    , temporary
-    , text
-    , transformers
-    , unordered-containers
-    , vector
-    , yaml >=0.10.0
-  default-language: Haskell2010
diff --git a/test/golden/test-files/real-world/hpack/hpack.dhall b/test/golden/test-files/real-world/hpack/hpack.dhall
deleted file mode 100644
--- a/test/golden/test-files/real-world/hpack/hpack.dhall
+++ /dev/null
@@ -1,72 +0,0 @@
-{ name =
-    "hpack"
-, version =
-    "0.31.1"
-, synopsis =
-    "A modern format for Haskell packages"
-, description =
-    "See README at <https://github.com/sol/hpack#readme>"
-, maintainer =
-    "Simon Hengel <sol@typeful.net>"
-, github =
-    "sol/hpack"
-, category =
-    "Development"
-, extra-source-files =
-    [ "CHANGELOG.md" ]
-, ghc-options =
-    "-Wall"
-, dependencies =
-    [ "base >= 4.9 && < 5"
-    , "bytestring"
-    , "deepseq"
-    , "directory"
-    , "filepath"
-    , "Glob >= 0.9.0"
-    , "text"
-    , "containers"
-    , "unordered-containers"
-    , "yaml >= 0.10.0"
-    , "aeson >= 1.2.1.0"
-    , "scientific"
-    , "Cabal >= 2.2"
-    , "pretty"
-    , "bifunctors"
-    , "cryptonite"
-    , "transformers"
-    , "http-types"
-    , "http-client"
-    , "http-client-tls"
-    , "vector"
-    , "infer-license >= 0.2.0 && < 0.3"
-    ]
-, library =
-    { source-dirs =
-        "src"
-    , exposed-modules =
-        [ "Hpack", "Hpack.Config", "Hpack.Render", "Hpack.Yaml" ]
-    }
-, executable =
-    { main = "Main.hs", source-dirs = "driver", dependencies = [ "hpack" ] }
-, tests =
-    { spec =
-        { cpp-options =
-            "-DTEST"
-        , main =
-            "Spec.hs"
-        , source-dirs =
-            [ "test", "src" ]
-        , dependencies =
-            [ "hspec == 2.*"
-            , "QuickCheck"
-            , "temporary"
-            , "mockery >= 0.3"
-            , "interpolate"
-            , "template-haskell"
-            , "HUnit >= 1.6.0.0"
-            ]
-        , build-tools =
-            "hspec-discover"
-        }
-    }
-}
diff --git a/test/golden/test-files/real-world/hpack/hpack.dhall.golden b/test/golden/test-files/real-world/hpack/hpack.dhall.golden
deleted file mode 100644
--- a/test/golden/test-files/real-world/hpack/hpack.dhall.golden
+++ /dev/null
@@ -1,72 +0,0 @@
-{ name =
-    "hpack"
-, version =
-    "0.31.1"
-, synopsis =
-    "A modern format for Haskell packages"
-, description =
-    "See README at <https://github.com/sol/hpack#readme>"
-, maintainer =
-    "Simon Hengel <sol@typeful.net>"
-, github =
-    "sol/hpack"
-, category =
-    "Development"
-, extra-source-files =
-    [ "CHANGELOG.md" ]
-, ghc-options =
-    "-Wall"
-, dependencies =
-    [ "base >= 4.9 && < 5"
-    , "bytestring"
-    , "deepseq"
-    , "directory"
-    , "filepath"
-    , "Glob >= 0.9.0"
-    , "text"
-    , "containers"
-    , "unordered-containers"
-    , "yaml >= 0.10.0"
-    , "aeson >= 1.2.1.0"
-    , "scientific"
-    , "Cabal >= 2.2"
-    , "pretty"
-    , "bifunctors"
-    , "cryptonite"
-    , "transformers"
-    , "http-types"
-    , "http-client"
-    , "http-client-tls"
-    , "vector"
-    , "infer-license >= 0.2.0 && < 0.3"
-    ]
-, library =
-    { source-dirs =
-        "src"
-    , exposed-modules =
-        [ "Hpack", "Hpack.Config", "Hpack.Render", "Hpack.Yaml" ]
-    }
-, executable =
-    { main = "Main.hs", source-dirs = "driver", dependencies = [ "hpack" ] }
-, tests =
-    { spec =
-        { cpp-options =
-            "-DTEST"
-        , main =
-            "Spec.hs"
-        , source-dirs =
-            [ "test", "src" ]
-        , dependencies =
-            [ "hspec == 2.*"
-            , "QuickCheck"
-            , "temporary"
-            , "mockery >= 0.3"
-            , "interpolate"
-            , "template-haskell"
-            , "HUnit >= 1.6.0.0"
-            ]
-        , build-tools =
-            "hspec-discover"
-        }
-    }
-}
diff --git a/test/golden/test-files/real-world/hpack/hpack.json b/test/golden/test-files/real-world/hpack/hpack.json
deleted file mode 100644
--- a/test/golden/test-files/real-world/hpack/hpack.json
+++ /dev/null
@@ -1,73 +0,0 @@
-{
-    "name": "hpack",
-    "version": "0.31.1",
-    "synopsis": "A modern format for Haskell packages",
-    "description": "See README at <https://github.com/sol/hpack#readme>",
-    "category": "Development",
-    "maintainer": "Simon Hengel <sol@typeful.net>",
-    "github": "sol/hpack",
-    "extra-source-files": [
-        "CHANGELOG.md"
-    ],
-    "ghc-options": "-Wall",
-    "dependencies": [
-        "base >= 4.9 && < 5",
-        "bytestring",
-        "deepseq",
-        "directory",
-        "filepath",
-        "Glob >= 0.9.0",
-        "text",
-        "containers",
-        "unordered-containers",
-        "yaml >= 0.10.0",
-        "aeson >= 1.2.1.0",
-        "scientific",
-        "Cabal >= 2.2",
-        "pretty",
-        "bifunctors",
-        "cryptonite",
-        "transformers",
-        "http-types",
-        "http-client",
-        "http-client-tls",
-        "vector",
-        "infer-license >= 0.2.0 && < 0.3"
-    ],
-    "library": {
-        "exposed-modules": [
-            "Hpack",
-            "Hpack.Config",
-            "Hpack.Render",
-            "Hpack.Yaml"
-        ],
-        "source-dirs": "src"
-    },
-    "executable": {
-        "main": "Main.hs",
-        "source-dirs": "driver",
-        "dependencies": [
-            "hpack"
-        ]
-    },
-    "tests": {
-        "spec": {
-            "main": "Spec.hs",
-            "source-dirs": [
-                "test",
-                "src"
-            ],
-            "cpp-options": "-DTEST",
-            "dependencies": [
-                "hspec == 2.*",
-                "QuickCheck",
-                "temporary",
-                "mockery >= 0.3",
-                "interpolate",
-                "template-haskell",
-                "HUnit >= 1.6.0.0"
-            ],
-            "build-tools": "hspec-discover"
-        }
-    }
-}
diff --git a/test/golden/test-files/real-world/hpack/hpack.json.golden b/test/golden/test-files/real-world/hpack/hpack.json.golden
deleted file mode 100644
--- a/test/golden/test-files/real-world/hpack/hpack.json.golden
+++ /dev/null
@@ -1,73 +0,0 @@
-{
-    "name": "hpack",
-    "version": "0.31.1",
-    "synopsis": "A modern format for Haskell packages",
-    "description": "See README at <https://github.com/sol/hpack#readme>",
-    "category": "Development",
-    "maintainer": "Simon Hengel <sol@typeful.net>",
-    "github": "sol/hpack",
-    "extra-source-files": [
-        "CHANGELOG.md"
-    ],
-    "ghc-options": "-Wall",
-    "dependencies": [
-        "base >= 4.9 && < 5",
-        "bytestring",
-        "deepseq",
-        "directory",
-        "filepath",
-        "Glob >= 0.9.0",
-        "text",
-        "containers",
-        "unordered-containers",
-        "yaml >= 0.10.0",
-        "aeson >= 1.2.1.0",
-        "scientific",
-        "Cabal >= 2.2",
-        "pretty",
-        "bifunctors",
-        "cryptonite",
-        "transformers",
-        "http-types",
-        "http-client",
-        "http-client-tls",
-        "vector",
-        "infer-license >= 0.2.0 && < 0.3"
-    ],
-    "library": {
-        "exposed-modules": [
-            "Hpack",
-            "Hpack.Config",
-            "Hpack.Render",
-            "Hpack.Yaml"
-        ],
-        "source-dirs": "src"
-    },
-    "executable": {
-        "main": "Main.hs",
-        "source-dirs": "driver",
-        "dependencies": [
-            "hpack"
-        ]
-    },
-    "tests": {
-        "spec": {
-            "main": "Spec.hs",
-            "source-dirs": [
-                "test",
-                "src"
-            ],
-            "cpp-options": "-DTEST",
-            "dependencies": [
-                "hspec == 2.*",
-                "QuickCheck",
-                "temporary",
-                "mockery >= 0.3",
-                "interpolate",
-                "template-haskell",
-                "HUnit >= 1.6.0.0"
-            ],
-            "build-tools": "hspec-discover"
-        }
-    }
-}
diff --git a/test/golden/test-files/real-world/hpack/hpack.yaml b/test/golden/test-files/real-world/hpack/hpack.yaml
deleted file mode 100644
--- a/test/golden/test-files/real-world/hpack/hpack.yaml
+++ /dev/null
@@ -1,61 +0,0 @@
-name: hpack
-version: 0.31.1
-synopsis: A modern format for Haskell packages
-description: See README at <https://github.com/sol/hpack#readme>
-category: Development
-maintainer: Simon Hengel <sol@typeful.net>
-github: sol/hpack
-extra-source-files:
-- CHANGELOG.md
-ghc-options: -Wall
-dependencies:
-- base >= 4.9 && < 5
-- bytestring
-- deepseq
-- directory
-- filepath
-- Glob >= 0.9.0
-- text
-- containers
-- unordered-containers
-- yaml >= 0.10.0
-- aeson >= 1.2.1.0
-- scientific
-- Cabal >= 2.2
-- pretty
-- bifunctors
-- cryptonite
-- transformers
-- http-types
-- http-client
-- http-client-tls
-- vector
-- infer-license >= 0.2.0 && < 0.3
-library:
-  exposed-modules:
-  - Hpack
-  - Hpack.Config
-  - Hpack.Render
-  - Hpack.Yaml
-  source-dirs: src
-executable:
-  main: Main.hs
-  source-dirs: driver
-  dependencies:
-  - hpack
-tests:
-  spec:
-    main: Spec.hs
-    source-dirs:
-    - test
-    - src
-    cpp-options: -DTEST
-    dependencies:
-    - hspec == 2.*
-    - QuickCheck
-    - temporary
-    - mockery >= 0.3
-    - interpolate
-    - template-haskell
-    - HUnit >= 1.6.0.0
-    build-tools: hspec-discover
diff --git a/test/golden/test-files/real-world/hpack/hpack.yaml.cabal b/test/golden/test-files/real-world/hpack/hpack.yaml.cabal
deleted file mode 100644
--- a/test/golden/test-files/real-world/hpack/hpack.yaml.cabal
+++ /dev/null
@@ -1,136 +0,0 @@
-cabal-version: 1.12
-
--- This file has been generated from hpack.yaml by hpack version 0.31.2.
---
--- see: https://github.com/sol/hpack
---
--- hash: 6233d5bc3d8cc3400d64ab30856182d4a593d9245bfdd5096e1287213cc3ae31
-
-name:           hpack
-version:        0.31.1
-synopsis:       A modern format for Haskell packages
-description:    See README at <https://github.com/sol/hpack#readme>
-category:       Development
-homepage:       https://github.com/sol/hpack#readme
-bug-reports:    https://github.com/sol/hpack/issues
-maintainer:     Simon Hengel <sol@typeful.net>
-build-type:     Simple
-extra-source-files:
-    CHANGELOG.md
-
-source-repository head
-  type: git
-  location: https://github.com/sol/hpack
-
-library
-  exposed-modules:
-      Hpack
-      Hpack.Config
-      Hpack.Render
-      Hpack.Yaml
-  other-modules:
-      Paths_hpack
-  hs-source-dirs:
-      src
-  ghc-options: -Wall
-  build-depends:
-      Cabal >=2.2
-    , Glob >=0.9.0
-    , aeson >=1.2.1.0
-    , base >=4.9 && <5
-    , bifunctors
-    , bytestring
-    , containers
-    , cryptonite
-    , deepseq
-    , directory
-    , filepath
-    , http-client
-    , http-client-tls
-    , http-types
-    , infer-license >=0.2.0 && <0.3
-    , pretty
-    , scientific
-    , text
-    , transformers
-    , unordered-containers
-    , vector
-    , yaml >=0.10.0
-  default-language: Haskell2010
-
-executable hpack
-  main-is: Main.hs
-  other-modules:
-      Paths_hpack
-  hs-source-dirs:
-      driver
-  ghc-options: -Wall
-  build-depends:
-      Cabal >=2.2
-    , Glob >=0.9.0
-    , aeson >=1.2.1.0
-    , base >=4.9 && <5
-    , bifunctors
-    , bytestring
-    , containers
-    , cryptonite
-    , deepseq
-    , directory
-    , filepath
-    , hpack
-    , http-client
-    , http-client-tls
-    , http-types
-    , infer-license >=0.2.0 && <0.3
-    , pretty
-    , scientific
-    , text
-    , transformers
-    , unordered-containers
-    , vector
-    , yaml >=0.10.0
-  default-language: Haskell2010
-
-test-suite spec
-  type: exitcode-stdio-1.0
-  main-is: Spec.hs
-  other-modules:
-      Paths_hpack
-  hs-source-dirs:
-      test
-      src
-  ghc-options: -Wall
-  cpp-options: -DTEST
-  build-tool-depends:
-      hspec-discover:hspec-discover
-  build-depends:
-      Cabal >=2.2
-    , Glob >=0.9.0
-    , HUnit >=1.6.0.0
-    , QuickCheck
-    , aeson >=1.2.1.0
-    , base >=4.9 && <5
-    , bifunctors
-    , bytestring
-    , containers
-    , cryptonite
-    , deepseq
-    , directory
-    , filepath
-    , hspec ==2.*
-    , http-client
-    , http-client-tls
-    , http-types
-    , infer-license >=0.2.0 && <0.3
-    , interpolate
-    , mockery >=0.3
-    , pretty
-    , scientific
-    , template-haskell
-    , temporary
-    , text
-    , transformers
-    , unordered-containers
-    , vector
-    , yaml >=0.10.0
-  default-language: Haskell2010
diff --git a/test/golden/test-files/real-world/hpack/hpack.yaml.golden b/test/golden/test-files/real-world/hpack/hpack.yaml.golden
deleted file mode 100644
--- a/test/golden/test-files/real-world/hpack/hpack.yaml.golden
+++ /dev/null
@@ -1,61 +0,0 @@
-name: hpack
-version: 0.31.1
-synopsis: A modern format for Haskell packages
-description: See README at <https://github.com/sol/hpack#readme>
-category: Development
-maintainer: Simon Hengel <sol@typeful.net>
-github: sol/hpack
-extra-source-files:
-- CHANGELOG.md
-ghc-options: -Wall
-dependencies:
-- base >= 4.9 && < 5
-- bytestring
-- deepseq
-- directory
-- filepath
-- Glob >= 0.9.0
-- text
-- containers
-- unordered-containers
-- yaml >= 0.10.0
-- aeson >= 1.2.1.0
-- scientific
-- Cabal >= 2.2
-- pretty
-- bifunctors
-- cryptonite
-- transformers
-- http-types
-- http-client
-- http-client-tls
-- vector
-- infer-license >= 0.2.0 && < 0.3
-library:
-  exposed-modules:
-  - Hpack
-  - Hpack.Config
-  - Hpack.Render
-  - Hpack.Yaml
-  source-dirs: src
-executable:
-  main: Main.hs
-  source-dirs: driver
-  dependencies:
-  - hpack
-tests:
-  spec:
-    main: Spec.hs
-    source-dirs:
-    - test
-    - src
-    cpp-options: -DTEST
-    dependencies:
-    - hspec == 2.*
-    - QuickCheck
-    - temporary
-    - mockery >= 0.3
-    - interpolate
-    - template-haskell
-    - HUnit >= 1.6.0.0
-    build-tools: hspec-discover
diff --git a/test/golden/test-files/real-world/hpack/package.yaml b/test/golden/test-files/real-world/hpack/package.yaml
deleted file mode 100644
--- a/test/golden/test-files/real-world/hpack/package.yaml
+++ /dev/null
@@ -1,66 +0,0 @@
-name: hpack
-version: 0.31.1
-synopsis: A modern format for Haskell packages
-description: See README at <https://github.com/sol/hpack#readme>
-maintainer: Simon Hengel <sol@typeful.net>
-github: sol/hpack
-category: Development
-extra-source-files:
-  - CHANGELOG.md
-
-ghc-options: -Wall
-
-dependencies:
-  - base >= 4.9 && < 5
-  - bytestring
-  - deepseq
-  - directory
-  - filepath
-  - Glob >= 0.9.0
-  - text
-  - containers
-  - unordered-containers
-  - yaml >= 0.10.0
-  - aeson >= 1.2.1.0
-  - scientific
-  - Cabal >= 2.2
-  - pretty
-  - bifunctors
-  - cryptonite
-  - transformers
-  - http-types
-  - http-client
-  - http-client-tls
-  - vector
-  - infer-license >= 0.2.0 && < 0.3
-
-library:
-  source-dirs: src
-  exposed-modules:
-    - Hpack
-    - Hpack.Config
-    - Hpack.Render
-    - Hpack.Yaml
-
-executable:
-  main: Main.hs
-  source-dirs: driver
-  dependencies:
-    - hpack
-
-tests:
-  spec:
-    cpp-options: -DTEST
-    main: Spec.hs
-    source-dirs:
-      - test
-      - src
-    dependencies:
-      - hspec == 2.*
-      - QuickCheck
-      - temporary
-      - mockery >= 0.3
-      - interpolate
-      - template-haskell
-      - HUnit >= 1.6.0.0
-    build-tools: hspec-discover
diff --git a/test/golden/test-files/real-world/stack/package.yaml b/test/golden/test-files/real-world/stack/package.yaml
deleted file mode 100644
--- a/test/golden/test-files/real-world/stack/package.yaml
+++ /dev/null
@@ -1,341 +0,0 @@
-name: stack
-version: '1.10.0'
-synopsis: The Haskell Tool Stack
-description: ! 'Please see the README.md for usage information, and
-  the wiki on Github for more details.  Also, note that
-  the API for the library is not currently stable, and may
-  change significantly, even between minor releases. It is
-  currently only intended for use by the executable.'
-category: Development
-author: Commercial Haskell SIG
-maintainer: manny@fpcomplete.com
-license: BSD3
-github: commercialhaskell/stack
-homepage: http://haskellstack.org
-custom-setup:
-  dependencies:
-  - base >=4.10 && < 5
-  - Cabal >= 2.4
-  - filepath
-extra-source-files:
-# note: leaving out 'package.yaml' because it causes confusion with hackage metadata revisions
-- CONTRIBUTING.md
-- ChangeLog.md
-- README.md
-- doc/*.md
-- src/setup-shim/StackSetupShim.hs
-- stack.yaml
-- test/package-dump/ghc-7.10.txt
-- test/package-dump/ghc-7.8.4-osx.txt
-- test/package-dump/ghc-7.8.txt
-ghc-options:
-- -Wall
-- -fwarn-tabs
-- -fwarn-incomplete-uni-patterns
-- -fwarn-incomplete-record-updates
-- -optP-Wno-nonportable-include-path # workaround [Filename case on macOS · Issue #4739 · haskell/cabal](https://github.com/haskell/cabal/issues/4739)
-dependencies:
-- Cabal >= 2.4
-- aeson
-- annotated-wl-pprint
-- ansi-terminal >= 0.8.1
-- array
-- async
-- attoparsec
-- base >=4.10 && < 5
-- base64-bytestring
-- bytestring
-- colour
-- conduit
-- conduit-extra
-- containers
-- cryptonite
-- cryptonite-conduit
-- deepseq
-- directory
-- echo
-- exceptions
-- extra
-- file-embed
-- filelock
-- filepath
-- fsnotify
-- generic-deriving
-- hackage-security
-- hashable
-- hpack
-- hpc
-- http-client
-- http-client-tls
-- http-conduit
-- http-types
-- memory
-- microlens
-- mintty
-# TODO remove dep when persistent drops monad-logger
-- monad-logger
-- mono-traversable
-- mtl
-- mustache
-- neat-interpolation
-- network-uri
-- open-browser
-- optparse-applicative
-- pantry
-- path
-- path-io
-- persistent
-- persistent-sqlite
-- persistent-template
-- pretty
-- primitive
-- process
-- project-template
-- regex-applicative-text
-- resourcet
-- retry >= 0.7
-- rio
-- semigroups
-- split
-- stm
-- store-core # FIXME remove
-- streaming-commons
-- tar
-- template-haskell
-- temporary
-- text
-- text-metrics
-- th-reify-many
-- time
-- tls
-- transformers
-- typed-process
-- unicode-transforms
-- unix-compat
-- unliftio >= 0.2.8.0
-- unordered-containers
-- vector
-- yaml
-- zip-archive
-- zlib
-when:
-- condition: os(windows)
-  then:
-    cpp-options: -DWINDOWS
-    dependencies:
-    - Win32
-  else:
-    build-tools:
-    - hsc2hs
-    dependencies:
-    - unix
-library:
-  source-dirs: src/
-  ghc-options:
-  - -fwarn-identities
-  generated-exposed-modules:
-  - Paths_stack
-  exposed-modules:
-  - Control.Concurrent.Execute
-  - Data.Attoparsec.Args
-  - Data.Attoparsec.Combinators
-  - Data.Attoparsec.Interpreter
-  - Data.Monoid.Map
-  - Network.HTTP.Download
-  - Network.HTTP.Download.Verified
-  - Network.HTTP.StackClient
-  - Options.Applicative.Args
-  - Options.Applicative.Builder.Extra
-  - Options.Applicative.Complicated
-  - Path.CheckInstall
-  - Path.Extra
-  - Path.Find
-  - Stack.Build
-  - Stack.Build.Cache
-  - Stack.Build.ConstructPlan
-  - Stack.Build.Execute
-  - Stack.Build.Haddock
-  - Stack.Build.Installed
-  - Stack.Build.Source
-  - Stack.Build.Target
-  - Stack.BuildPlan
-  - Stack.Clean
-  - Stack.Config
-  - Stack.Config.Build
-  - Stack.Config.Urls
-  - Stack.Config.Docker
-  - Stack.Config.Nix
-  - Stack.ConfigCmd
-  - Stack.Constants
-  - Stack.Constants.Config
-  - Stack.Coverage
-  - Stack.DefaultColorWhen
-  - Stack.DefaultStyles
-  - Stack.Docker
-  - Stack.Docker.GlobalDB
-  - Stack.Dot
-  - Stack.FileWatch
-  - Stack.Freeze
-  - Stack.GhcPkg
-  - Stack.Ghci
-  - Stack.Ghci.Script
-  - Stack.Hoogle
-  - Stack.IDE
-  - Stack.Image
-  - Stack.Init
-  - Stack.Ls
-  - Stack.New
-  - Stack.Nix
-  - Stack.Options.BenchParser
-  - Stack.Options.BuildMonoidParser
-  - Stack.Options.BuildParser
-  - Stack.Options.CleanParser
-  - Stack.Options.ConfigParser
-  - Stack.Options.Completion
-  - Stack.Options.DockerParser
-  - Stack.Options.DotParser
-  - Stack.Options.ExecParser
-  - Stack.Options.FreezeParser
-  - Stack.Options.GhcBuildParser
-  - Stack.Options.GhciParser
-  - Stack.Options.GhcVariantParser
-  - Stack.Options.GlobalParser
-  - Stack.Options.HaddockParser
-  - Stack.Options.HpcReportParser
-  - Stack.Options.LogLevelParser
-  - Stack.Options.NewParser
-  - Stack.Options.NixParser
-  - Stack.Options.PackageParser
-  - Stack.Options.ResolverParser
-  - Stack.Options.ScriptParser
-  - Stack.Options.SDistParser
-  - Stack.Options.SolverParser
-  - Stack.Options.TestParser
-  - Stack.Options.Utils
-  - Stack.Package
-  - Stack.PackageDump
-  - Stack.Path
-  - Stack.Prelude
-  - Stack.PrettyPrint
-  - Stack.Runners
-  - Stack.Script
-  - Stack.SDist
-  - Stack.Setup
-  - Stack.Setup.Installed
-  - Stack.SetupCmd
-  - Stack.Sig
-  - Stack.Sig.GPG
-  - Stack.Sig.Sign
-  - Stack.Snapshot
-  - Stack.Solver
-  - Stack.StoreTH
-  - Stack.Types.Build
-  - Stack.Types.BuildPlan
-  - Stack.Types.CompilerBuild
-  - Stack.Types.Urls
-  - Stack.Types.Compiler
-  - Stack.Types.Config
-  - Stack.Types.Config.Build
-  - Stack.Types.Docker
-  - Stack.Types.GhcPkgId
-  - Stack.Types.Image
-  - Stack.Types.NamedComponent
-  - Stack.Types.Nix
-  - Stack.Types.Package
-  - Stack.Types.PackageDump
-  - Stack.Types.PackageName
-  - Stack.Types.PrettyPrint
-  - Stack.Types.Resolver
-  - Stack.Types.Runner
-  - Stack.Types.Sig
-  - Stack.Types.StylesUpdate
-  - Stack.Types.TemplateName
-  - Stack.Types.Version
-  - Stack.Types.VersionIntervals
-  - Stack.Unpack
-  - Stack.Upgrade
-  - Stack.Upload
-  - Text.PrettyPrint.Leijen.Extended
-  - System.Permissions
-  - System.Process.PagerEditor
-  - System.Terminal
-  when:
-  - condition: 'os(windows)'
-    then:
-      source-dirs: src/windows/
-    else:
-      source-dirs: src/unix/
-      c-sources: src/unix/cbits/uname.c
-executables:
-  stack:
-    main: Main.hs
-    source-dirs: src/main
-    generated-other-modules:
-    - Build_stack,
-    - Paths_stack
-    ghc-options:
-    - -threaded
-    - -rtsopts
-    dependencies:
-    - stack
-    when:
-    - condition: flag(static)
-      ld-options:
-      - -static
-      - -pthread
-    - condition: ! '!(flag(disable-git-info))'
-      cpp-options: -DUSE_GIT_INFO
-      dependencies:
-      - githash
-      - optparse-simple
-    - condition: flag(hide-dependency-versions)
-      cpp-options: -DHIDE_DEP_VERSIONS
-    - condition: flag(supported-build)
-      cpp-options: -DSUPPORTED_BUILD
-tests:
-  stack-test:
-    main: Spec.hs
-    source-dirs: src/test
-    ghc-options:
-    - -threaded
-    dependencies:
-    - QuickCheck
-    - hspec
-    - stack
-    - smallcheck
-  stack-integration-test:
-    main: IntegrationSpec.hs
-    source-dirs:
-    - test/integration
-    - test/integration/lib
-    ghc-options:
-    - -threaded
-    - -rtsopts
-    - -with-rtsopts=-N
-    dependencies:
-    - hspec
-    when:
-    - condition: ! '!(flag(integration-tests))'
-      buildable: false
-flags:
-  static:
-    description: Pass -static/-pthread to ghc when linking the stack binary.
-    manual: true
-    default: false
-  disable-git-info:
-    description: Disable compile-time inclusion of current git info in stack
-    manual: true
-    default: false
-  hide-dependency-versions:
-    description: Hides dependency versions from "stack --version", used only by building
-      with stack.yaml
-    manual: true
-    default: false
-  integration-tests:
-    description: Run the integration test suite
-    manual: true
-    default: false
-  supported-build:
-    description: If false, causes "stack --version" to issue a warning about the build being unsupported.  True only if building with stack.yaml
-    manual: true
-    default: false
diff --git a/test/golden/test-files/real-world/stack/stack.cabal b/test/golden/test-files/real-world/stack/stack.cabal
deleted file mode 100644
--- a/test/golden/test-files/real-world/stack/stack.cabal
+++ /dev/null
@@ -1,629 +0,0 @@
-cabal-version: 2.0
-
--- This file has been generated from stack.dhall by hpack version 0.31.1.
---
--- see: https://github.com/sol/hpack
---
--- hash: 33d90e3e81d97f3c404a9e20246cf4aa6942dc054db675cadd50b1edd68582ce
-
-name:           stack
-version:        1.10.0
-synopsis:       The Haskell Tool Stack
-description:    Please see the README.md for usage information, and
-                the wiki on Github for more details.  Also, note that
-                the API for the library is not currently stable, and may
-                change significantly, even between minor releases. It is
-                currently only intended for use by the executable.
-category:       Development
-homepage:       http://haskellstack.org
-bug-reports:    https://github.com/commercialhaskell/stack/issues
-author:         Commercial Haskell SIG
-maintainer:     manny@fpcomplete.com
-license:        BSD3
-build-type:     Custom
-extra-source-files:
-    CONTRIBUTING.md
-    ChangeLog.md
-    README.md
-    src/setup-shim/StackSetupShim.hs
-    stack.yaml
-    test/package-dump/ghc-7.10.txt
-    test/package-dump/ghc-7.8.4-osx.txt
-    test/package-dump/ghc-7.8.txt
-
-source-repository head
-  type: git
-  location: https://github.com/commercialhaskell/stack
-
-custom-setup
-  setup-depends:
-      Cabal >=2.4
-    , base >=4.10 && <5
-    , filepath
-
-flag disable-git-info
-  description: Disable compile-time inclusion of current git info in stack
-  manual: True
-  default: False
-
-flag hide-dependency-versions
-  description: Hides dependency versions from "stack --version", used only by building with stack.yaml
-  manual: True
-  default: False
-
-flag integration-tests
-  description: Run the integration test suite
-  manual: True
-  default: False
-
-flag static
-  description: Pass -static/-pthread to ghc when linking the stack binary.
-  manual: True
-  default: False
-
-flag supported-build
-  description: If false, causes "stack --version" to issue a warning about the build being unsupported.  True only if building with stack.yaml
-  manual: True
-  default: False
-
-library
-  exposed-modules:
-      Control.Concurrent.Execute
-      Data.Attoparsec.Args
-      Data.Attoparsec.Combinators
-      Data.Attoparsec.Interpreter
-      Data.Monoid.Map
-      Network.HTTP.Download
-      Network.HTTP.Download.Verified
-      Network.HTTP.StackClient
-      Options.Applicative.Args
-      Options.Applicative.Builder.Extra
-      Options.Applicative.Complicated
-      Path.CheckInstall
-      Path.Extra
-      Path.Find
-      Stack.Build
-      Stack.Build.Cache
-      Stack.Build.ConstructPlan
-      Stack.Build.Execute
-      Stack.Build.Haddock
-      Stack.Build.Installed
-      Stack.Build.Source
-      Stack.Build.Target
-      Stack.BuildPlan
-      Stack.Clean
-      Stack.Config
-      Stack.Config.Build
-      Stack.Config.Urls
-      Stack.Config.Docker
-      Stack.Config.Nix
-      Stack.ConfigCmd
-      Stack.Constants
-      Stack.Constants.Config
-      Stack.Coverage
-      Stack.DefaultColorWhen
-      Stack.DefaultStyles
-      Stack.Docker
-      Stack.Docker.GlobalDB
-      Stack.Dot
-      Stack.FileWatch
-      Stack.Freeze
-      Stack.GhcPkg
-      Stack.Ghci
-      Stack.Ghci.Script
-      Stack.Hoogle
-      Stack.IDE
-      Stack.Image
-      Stack.Init
-      Stack.Ls
-      Stack.New
-      Stack.Nix
-      Stack.Options.BenchParser
-      Stack.Options.BuildMonoidParser
-      Stack.Options.BuildParser
-      Stack.Options.CleanParser
-      Stack.Options.ConfigParser
-      Stack.Options.Completion
-      Stack.Options.DockerParser
-      Stack.Options.DotParser
-      Stack.Options.ExecParser
-      Stack.Options.FreezeParser
-      Stack.Options.GhcBuildParser
-      Stack.Options.GhciParser
-      Stack.Options.GhcVariantParser
-      Stack.Options.GlobalParser
-      Stack.Options.HaddockParser
-      Stack.Options.HpcReportParser
-      Stack.Options.LogLevelParser
-      Stack.Options.NewParser
-      Stack.Options.NixParser
-      Stack.Options.PackageParser
-      Stack.Options.ResolverParser
-      Stack.Options.ScriptParser
-      Stack.Options.SDistParser
-      Stack.Options.SolverParser
-      Stack.Options.TestParser
-      Stack.Options.Utils
-      Stack.Package
-      Stack.PackageDump
-      Stack.Path
-      Stack.Prelude
-      Stack.PrettyPrint
-      Stack.Runners
-      Stack.Script
-      Stack.SDist
-      Stack.Setup
-      Stack.Setup.Installed
-      Stack.SetupCmd
-      Stack.Sig
-      Stack.Sig.GPG
-      Stack.Sig.Sign
-      Stack.Snapshot
-      Stack.Solver
-      Stack.StoreTH
-      Stack.Types.Build
-      Stack.Types.BuildPlan
-      Stack.Types.CompilerBuild
-      Stack.Types.Urls
-      Stack.Types.Compiler
-      Stack.Types.Config
-      Stack.Types.Config.Build
-      Stack.Types.Docker
-      Stack.Types.GhcPkgId
-      Stack.Types.Image
-      Stack.Types.NamedComponent
-      Stack.Types.Nix
-      Stack.Types.Package
-      Stack.Types.PackageDump
-      Stack.Types.PackageName
-      Stack.Types.PrettyPrint
-      Stack.Types.Resolver
-      Stack.Types.Runner
-      Stack.Types.Sig
-      Stack.Types.StylesUpdate
-      Stack.Types.TemplateName
-      Stack.Types.Version
-      Stack.Types.VersionIntervals
-      Stack.Unpack
-      Stack.Upgrade
-      Stack.Upload
-      Text.PrettyPrint.Leijen.Extended
-      System.Permissions
-      System.Process.PagerEditor
-      System.Terminal
-      Paths_stack
-  autogen-modules:
-      Paths_stack
-  hs-source-dirs:
-      src/
-  ghc-options: -Wall -fwarn-tabs -fwarn-incomplete-uni-patterns -fwarn-incomplete-record-updates -optP-Wno-nonportable-include-path # workaround [Filename case on macOS · Issue #4739 · haskell/cabal](https://github.com/haskell/cabal/issues/4739) -fwarn-identities
-  build-depends:
-      Cabal >=2.4
-    , aeson
-    , annotated-wl-pprint
-    , ansi-terminal >=0.8.1
-    , array
-    , async
-    , attoparsec
-    , base >=4.10 && <5
-    , base64-bytestring
-    , bytestring
-    , colour
-    , conduit
-    , conduit-extra
-    , containers
-    , cryptonite
-    , cryptonite-conduit
-    , deepseq
-    , directory
-    , echo
-    , exceptions
-    , extra
-    , file-embed
-    , filelock
-    , filepath
-    , fsnotify
-    , generic-deriving
-    , hackage-security
-    , hashable
-    , hpack
-    , hpc
-    , http-client
-    , http-client-tls
-    , http-conduit
-    , http-types
-    , memory
-    , microlens
-    , mintty
-    , monad-logger
-    , mono-traversable
-    , mtl
-    , mustache
-    , neat-interpolation
-    , network-uri
-    , open-browser
-    , optparse-applicative
-    , pantry
-    , path
-    , path-io
-    , persistent
-    , persistent-sqlite
-    , persistent-template
-    , pretty
-    , primitive
-    , process
-    , project-template
-    , regex-applicative-text
-    , resourcet
-    , retry >=0.7
-    , rio
-    , semigroups
-    , split
-    , stm
-    , store-core
-    , streaming-commons
-    , tar
-    , template-haskell
-    , temporary
-    , text
-    , text-metrics
-    , th-reify-many
-    , time
-    , tls
-    , transformers
-    , typed-process
-    , unicode-transforms
-    , unix-compat
-    , unliftio >=0.2.8.0
-    , unordered-containers
-    , vector
-    , yaml
-    , zip-archive
-    , zlib
-  if os(windows)
-    cpp-options: -DWINDOWS
-    build-depends:
-        Win32
-  else
-    build-tools:
-        hsc2hs
-    build-depends:
-        unix
-  if os(windows)
-    hs-source-dirs:
-        src/windows/
-  else
-    hs-source-dirs:
-        src/unix/
-    c-sources:
-        src/unix/cbits/uname.c
-  default-language: Haskell2010
-
-executable stack
-  main-is: Main.hs
-  other-modules:
-      Build_stack
-      Paths_stack
-  autogen-modules:
-      Build_stack
-      Paths_stack
-  hs-source-dirs:
-      src/main
-  ghc-options: -Wall -fwarn-tabs -fwarn-incomplete-uni-patterns -fwarn-incomplete-record-updates -optP-Wno-nonportable-include-path # workaround [Filename case on macOS · Issue #4739 · haskell/cabal](https://github.com/haskell/cabal/issues/4739) -threaded -rtsopts
-  build-depends:
-      Cabal >=2.4
-    , aeson
-    , annotated-wl-pprint
-    , ansi-terminal >=0.8.1
-    , array
-    , async
-    , attoparsec
-    , base >=4.10 && <5
-    , base64-bytestring
-    , bytestring
-    , colour
-    , conduit
-    , conduit-extra
-    , containers
-    , cryptonite
-    , cryptonite-conduit
-    , deepseq
-    , directory
-    , echo
-    , exceptions
-    , extra
-    , file-embed
-    , filelock
-    , filepath
-    , fsnotify
-    , generic-deriving
-    , hackage-security
-    , hashable
-    , hpack
-    , hpc
-    , http-client
-    , http-client-tls
-    , http-conduit
-    , http-types
-    , memory
-    , microlens
-    , mintty
-    , monad-logger
-    , mono-traversable
-    , mtl
-    , mustache
-    , neat-interpolation
-    , network-uri
-    , open-browser
-    , optparse-applicative
-    , pantry
-    , path
-    , path-io
-    , persistent
-    , persistent-sqlite
-    , persistent-template
-    , pretty
-    , primitive
-    , process
-    , project-template
-    , regex-applicative-text
-    , resourcet
-    , retry >=0.7
-    , rio
-    , semigroups
-    , split
-    , stack
-    , stm
-    , store-core
-    , streaming-commons
-    , tar
-    , template-haskell
-    , temporary
-    , text
-    , text-metrics
-    , th-reify-many
-    , time
-    , tls
-    , transformers
-    , typed-process
-    , unicode-transforms
-    , unix-compat
-    , unliftio >=0.2.8.0
-    , unordered-containers
-    , vector
-    , yaml
-    , zip-archive
-    , zlib
-  if os(windows)
-    cpp-options: -DWINDOWS
-    build-depends:
-        Win32
-  else
-    build-tools:
-        hsc2hs
-    build-depends:
-        unix
-  if flag(static)
-    ld-options: -static -pthread
-  if !(flag(disable-git-info))
-    cpp-options: -DUSE_GIT_INFO
-    build-depends:
-        githash
-      , optparse-simple
-  if flag(hide-dependency-versions)
-    cpp-options: -DHIDE_DEP_VERSIONS
-  if flag(supported-build)
-    cpp-options: -DSUPPORTED_BUILD
-  default-language: Haskell2010
-
-test-suite stack-integration-test
-  type: exitcode-stdio-1.0
-  main-is: IntegrationSpec.hs
-  other-modules:
-      Paths_stack
-  hs-source-dirs:
-      test/integration
-      test/integration/lib
-  ghc-options: -Wall -fwarn-tabs -fwarn-incomplete-uni-patterns -fwarn-incomplete-record-updates -optP-Wno-nonportable-include-path # workaround [Filename case on macOS · Issue #4739 · haskell/cabal](https://github.com/haskell/cabal/issues/4739) -threaded -rtsopts -with-rtsopts=-N
-  build-depends:
-      Cabal >=2.4
-    , aeson
-    , annotated-wl-pprint
-    , ansi-terminal >=0.8.1
-    , array
-    , async
-    , attoparsec
-    , base >=4.10 && <5
-    , base64-bytestring
-    , bytestring
-    , colour
-    , conduit
-    , conduit-extra
-    , containers
-    , cryptonite
-    , cryptonite-conduit
-    , deepseq
-    , directory
-    , echo
-    , exceptions
-    , extra
-    , file-embed
-    , filelock
-    , filepath
-    , fsnotify
-    , generic-deriving
-    , hackage-security
-    , hashable
-    , hpack
-    , hpc
-    , hspec
-    , http-client
-    , http-client-tls
-    , http-conduit
-    , http-types
-    , memory
-    , microlens
-    , mintty
-    , monad-logger
-    , mono-traversable
-    , mtl
-    , mustache
-    , neat-interpolation
-    , network-uri
-    , open-browser
-    , optparse-applicative
-    , pantry
-    , path
-    , path-io
-    , persistent
-    , persistent-sqlite
-    , persistent-template
-    , pretty
-    , primitive
-    , process
-    , project-template
-    , regex-applicative-text
-    , resourcet
-    , retry >=0.7
-    , rio
-    , semigroups
-    , split
-    , stm
-    , store-core
-    , streaming-commons
-    , tar
-    , template-haskell
-    , temporary
-    , text
-    , text-metrics
-    , th-reify-many
-    , time
-    , tls
-    , transformers
-    , typed-process
-    , unicode-transforms
-    , unix-compat
-    , unliftio >=0.2.8.0
-    , unordered-containers
-    , vector
-    , yaml
-    , zip-archive
-    , zlib
-  if os(windows)
-    cpp-options: -DWINDOWS
-    build-depends:
-        Win32
-  else
-    build-tools:
-        hsc2hs
-    build-depends:
-        unix
-  if !flag(integration-tests)
-    buildable: False
-  default-language: Haskell2010
-
-test-suite stack-test
-  type: exitcode-stdio-1.0
-  main-is: Spec.hs
-  other-modules:
-      Paths_stack
-  hs-source-dirs:
-      src/test
-  ghc-options: -Wall -fwarn-tabs -fwarn-incomplete-uni-patterns -fwarn-incomplete-record-updates -optP-Wno-nonportable-include-path # workaround [Filename case on macOS · Issue #4739 · haskell/cabal](https://github.com/haskell/cabal/issues/4739) -threaded
-  build-depends:
-      Cabal >=2.4
-    , QuickCheck
-    , aeson
-    , annotated-wl-pprint
-    , ansi-terminal >=0.8.1
-    , array
-    , async
-    , attoparsec
-    , base >=4.10 && <5
-    , base64-bytestring
-    , bytestring
-    , colour
-    , conduit
-    , conduit-extra
-    , containers
-    , cryptonite
-    , cryptonite-conduit
-    , deepseq
-    , directory
-    , echo
-    , exceptions
-    , extra
-    , file-embed
-    , filelock
-    , filepath
-    , fsnotify
-    , generic-deriving
-    , hackage-security
-    , hashable
-    , hpack
-    , hpc
-    , hspec
-    , http-client
-    , http-client-tls
-    , http-conduit
-    , http-types
-    , memory
-    , microlens
-    , mintty
-    , monad-logger
-    , mono-traversable
-    , mtl
-    , mustache
-    , neat-interpolation
-    , network-uri
-    , open-browser
-    , optparse-applicative
-    , pantry
-    , path
-    , path-io
-    , persistent
-    , persistent-sqlite
-    , persistent-template
-    , pretty
-    , primitive
-    , process
-    , project-template
-    , regex-applicative-text
-    , resourcet
-    , retry >=0.7
-    , rio
-    , semigroups
-    , smallcheck
-    , split
-    , stack
-    , stm
-    , store-core
-    , streaming-commons
-    , tar
-    , template-haskell
-    , temporary
-    , text
-    , text-metrics
-    , th-reify-many
-    , time
-    , tls
-    , transformers
-    , typed-process
-    , unicode-transforms
-    , unix-compat
-    , unliftio >=0.2.8.0
-    , unordered-containers
-    , vector
-    , yaml
-    , zip-archive
-    , zlib
-  if os(windows)
-    cpp-options: -DWINDOWS
-    build-depends:
-        Win32
-  else
-    build-tools:
-        hsc2hs
-    build-depends:
-        unix
-  default-language: Haskell2010
diff --git a/test/golden/test-files/real-world/stack/stack.cabal.golden b/test/golden/test-files/real-world/stack/stack.cabal.golden
deleted file mode 100644
--- a/test/golden/test-files/real-world/stack/stack.cabal.golden
+++ /dev/null
@@ -1,629 +0,0 @@
-cabal-version: 2.0
-
--- This file has been generated from stack.dhall by hpack version 0.31.1.
---
--- see: https://github.com/sol/hpack
---
--- hash: 33d90e3e81d97f3c404a9e20246cf4aa6942dc054db675cadd50b1edd68582ce
-
-name:           stack
-version:        1.10.0
-synopsis:       The Haskell Tool Stack
-description:    Please see the README.md for usage information, and
-                the wiki on Github for more details.  Also, note that
-                the API for the library is not currently stable, and may
-                change significantly, even between minor releases. It is
-                currently only intended for use by the executable.
-category:       Development
-homepage:       http://haskellstack.org
-bug-reports:    https://github.com/commercialhaskell/stack/issues
-author:         Commercial Haskell SIG
-maintainer:     manny@fpcomplete.com
-license:        BSD3
-build-type:     Custom
-extra-source-files:
-    CONTRIBUTING.md
-    ChangeLog.md
-    README.md
-    src/setup-shim/StackSetupShim.hs
-    stack.yaml
-    test/package-dump/ghc-7.10.txt
-    test/package-dump/ghc-7.8.4-osx.txt
-    test/package-dump/ghc-7.8.txt
-
-source-repository head
-  type: git
-  location: https://github.com/commercialhaskell/stack
-
-custom-setup
-  setup-depends:
-      Cabal >=2.4
-    , base >=4.10 && <5
-    , filepath
-
-flag disable-git-info
-  description: Disable compile-time inclusion of current git info in stack
-  manual: True
-  default: False
-
-flag hide-dependency-versions
-  description: Hides dependency versions from "stack --version", used only by building with stack.yaml
-  manual: True
-  default: False
-
-flag integration-tests
-  description: Run the integration test suite
-  manual: True
-  default: False
-
-flag static
-  description: Pass -static/-pthread to ghc when linking the stack binary.
-  manual: True
-  default: False
-
-flag supported-build
-  description: If false, causes "stack --version" to issue a warning about the build being unsupported.  True only if building with stack.yaml
-  manual: True
-  default: False
-
-library
-  exposed-modules:
-      Control.Concurrent.Execute
-      Data.Attoparsec.Args
-      Data.Attoparsec.Combinators
-      Data.Attoparsec.Interpreter
-      Data.Monoid.Map
-      Network.HTTP.Download
-      Network.HTTP.Download.Verified
-      Network.HTTP.StackClient
-      Options.Applicative.Args
-      Options.Applicative.Builder.Extra
-      Options.Applicative.Complicated
-      Path.CheckInstall
-      Path.Extra
-      Path.Find
-      Stack.Build
-      Stack.Build.Cache
-      Stack.Build.ConstructPlan
-      Stack.Build.Execute
-      Stack.Build.Haddock
-      Stack.Build.Installed
-      Stack.Build.Source
-      Stack.Build.Target
-      Stack.BuildPlan
-      Stack.Clean
-      Stack.Config
-      Stack.Config.Build
-      Stack.Config.Urls
-      Stack.Config.Docker
-      Stack.Config.Nix
-      Stack.ConfigCmd
-      Stack.Constants
-      Stack.Constants.Config
-      Stack.Coverage
-      Stack.DefaultColorWhen
-      Stack.DefaultStyles
-      Stack.Docker
-      Stack.Docker.GlobalDB
-      Stack.Dot
-      Stack.FileWatch
-      Stack.Freeze
-      Stack.GhcPkg
-      Stack.Ghci
-      Stack.Ghci.Script
-      Stack.Hoogle
-      Stack.IDE
-      Stack.Image
-      Stack.Init
-      Stack.Ls
-      Stack.New
-      Stack.Nix
-      Stack.Options.BenchParser
-      Stack.Options.BuildMonoidParser
-      Stack.Options.BuildParser
-      Stack.Options.CleanParser
-      Stack.Options.ConfigParser
-      Stack.Options.Completion
-      Stack.Options.DockerParser
-      Stack.Options.DotParser
-      Stack.Options.ExecParser
-      Stack.Options.FreezeParser
-      Stack.Options.GhcBuildParser
-      Stack.Options.GhciParser
-      Stack.Options.GhcVariantParser
-      Stack.Options.GlobalParser
-      Stack.Options.HaddockParser
-      Stack.Options.HpcReportParser
-      Stack.Options.LogLevelParser
-      Stack.Options.NewParser
-      Stack.Options.NixParser
-      Stack.Options.PackageParser
-      Stack.Options.ResolverParser
-      Stack.Options.ScriptParser
-      Stack.Options.SDistParser
-      Stack.Options.SolverParser
-      Stack.Options.TestParser
-      Stack.Options.Utils
-      Stack.Package
-      Stack.PackageDump
-      Stack.Path
-      Stack.Prelude
-      Stack.PrettyPrint
-      Stack.Runners
-      Stack.Script
-      Stack.SDist
-      Stack.Setup
-      Stack.Setup.Installed
-      Stack.SetupCmd
-      Stack.Sig
-      Stack.Sig.GPG
-      Stack.Sig.Sign
-      Stack.Snapshot
-      Stack.Solver
-      Stack.StoreTH
-      Stack.Types.Build
-      Stack.Types.BuildPlan
-      Stack.Types.CompilerBuild
-      Stack.Types.Urls
-      Stack.Types.Compiler
-      Stack.Types.Config
-      Stack.Types.Config.Build
-      Stack.Types.Docker
-      Stack.Types.GhcPkgId
-      Stack.Types.Image
-      Stack.Types.NamedComponent
-      Stack.Types.Nix
-      Stack.Types.Package
-      Stack.Types.PackageDump
-      Stack.Types.PackageName
-      Stack.Types.PrettyPrint
-      Stack.Types.Resolver
-      Stack.Types.Runner
-      Stack.Types.Sig
-      Stack.Types.StylesUpdate
-      Stack.Types.TemplateName
-      Stack.Types.Version
-      Stack.Types.VersionIntervals
-      Stack.Unpack
-      Stack.Upgrade
-      Stack.Upload
-      Text.PrettyPrint.Leijen.Extended
-      System.Permissions
-      System.Process.PagerEditor
-      System.Terminal
-      Paths_stack
-  autogen-modules:
-      Paths_stack
-  hs-source-dirs:
-      src/
-  ghc-options: -Wall -fwarn-tabs -fwarn-incomplete-uni-patterns -fwarn-incomplete-record-updates -optP-Wno-nonportable-include-path # workaround [Filename case on macOS · Issue #4739 · haskell/cabal](https://github.com/haskell/cabal/issues/4739) -fwarn-identities
-  build-depends:
-      Cabal >=2.4
-    , aeson
-    , annotated-wl-pprint
-    , ansi-terminal >=0.8.1
-    , array
-    , async
-    , attoparsec
-    , base >=4.10 && <5
-    , base64-bytestring
-    , bytestring
-    , colour
-    , conduit
-    , conduit-extra
-    , containers
-    , cryptonite
-    , cryptonite-conduit
-    , deepseq
-    , directory
-    , echo
-    , exceptions
-    , extra
-    , file-embed
-    , filelock
-    , filepath
-    , fsnotify
-    , generic-deriving
-    , hackage-security
-    , hashable
-    , hpack
-    , hpc
-    , http-client
-    , http-client-tls
-    , http-conduit
-    , http-types
-    , memory
-    , microlens
-    , mintty
-    , monad-logger
-    , mono-traversable
-    , mtl
-    , mustache
-    , neat-interpolation
-    , network-uri
-    , open-browser
-    , optparse-applicative
-    , pantry
-    , path
-    , path-io
-    , persistent
-    , persistent-sqlite
-    , persistent-template
-    , pretty
-    , primitive
-    , process
-    , project-template
-    , regex-applicative-text
-    , resourcet
-    , retry >=0.7
-    , rio
-    , semigroups
-    , split
-    , stm
-    , store-core
-    , streaming-commons
-    , tar
-    , template-haskell
-    , temporary
-    , text
-    , text-metrics
-    , th-reify-many
-    , time
-    , tls
-    , transformers
-    , typed-process
-    , unicode-transforms
-    , unix-compat
-    , unliftio >=0.2.8.0
-    , unordered-containers
-    , vector
-    , yaml
-    , zip-archive
-    , zlib
-  if os(windows)
-    cpp-options: -DWINDOWS
-    build-depends:
-        Win32
-  else
-    build-tools:
-        hsc2hs
-    build-depends:
-        unix
-  if os(windows)
-    hs-source-dirs:
-        src/windows/
-  else
-    hs-source-dirs:
-        src/unix/
-    c-sources:
-        src/unix/cbits/uname.c
-  default-language: Haskell2010
-
-executable stack
-  main-is: Main.hs
-  other-modules:
-      Build_stack
-      Paths_stack
-  autogen-modules:
-      Build_stack
-      Paths_stack
-  hs-source-dirs:
-      src/main
-  ghc-options: -Wall -fwarn-tabs -fwarn-incomplete-uni-patterns -fwarn-incomplete-record-updates -optP-Wno-nonportable-include-path # workaround [Filename case on macOS · Issue #4739 · haskell/cabal](https://github.com/haskell/cabal/issues/4739) -threaded -rtsopts
-  build-depends:
-      Cabal >=2.4
-    , aeson
-    , annotated-wl-pprint
-    , ansi-terminal >=0.8.1
-    , array
-    , async
-    , attoparsec
-    , base >=4.10 && <5
-    , base64-bytestring
-    , bytestring
-    , colour
-    , conduit
-    , conduit-extra
-    , containers
-    , cryptonite
-    , cryptonite-conduit
-    , deepseq
-    , directory
-    , echo
-    , exceptions
-    , extra
-    , file-embed
-    , filelock
-    , filepath
-    , fsnotify
-    , generic-deriving
-    , hackage-security
-    , hashable
-    , hpack
-    , hpc
-    , http-client
-    , http-client-tls
-    , http-conduit
-    , http-types
-    , memory
-    , microlens
-    , mintty
-    , monad-logger
-    , mono-traversable
-    , mtl
-    , mustache
-    , neat-interpolation
-    , network-uri
-    , open-browser
-    , optparse-applicative
-    , pantry
-    , path
-    , path-io
-    , persistent
-    , persistent-sqlite
-    , persistent-template
-    , pretty
-    , primitive
-    , process
-    , project-template
-    , regex-applicative-text
-    , resourcet
-    , retry >=0.7
-    , rio
-    , semigroups
-    , split
-    , stack
-    , stm
-    , store-core
-    , streaming-commons
-    , tar
-    , template-haskell
-    , temporary
-    , text
-    , text-metrics
-    , th-reify-many
-    , time
-    , tls
-    , transformers
-    , typed-process
-    , unicode-transforms
-    , unix-compat
-    , unliftio >=0.2.8.0
-    , unordered-containers
-    , vector
-    , yaml
-    , zip-archive
-    , zlib
-  if os(windows)
-    cpp-options: -DWINDOWS
-    build-depends:
-        Win32
-  else
-    build-tools:
-        hsc2hs
-    build-depends:
-        unix
-  if flag(static)
-    ld-options: -static -pthread
-  if !(flag(disable-git-info))
-    cpp-options: -DUSE_GIT_INFO
-    build-depends:
-        githash
-      , optparse-simple
-  if flag(hide-dependency-versions)
-    cpp-options: -DHIDE_DEP_VERSIONS
-  if flag(supported-build)
-    cpp-options: -DSUPPORTED_BUILD
-  default-language: Haskell2010
-
-test-suite stack-integration-test
-  type: exitcode-stdio-1.0
-  main-is: IntegrationSpec.hs
-  other-modules:
-      Paths_stack
-  hs-source-dirs:
-      test/integration
-      test/integration/lib
-  ghc-options: -Wall -fwarn-tabs -fwarn-incomplete-uni-patterns -fwarn-incomplete-record-updates -optP-Wno-nonportable-include-path # workaround [Filename case on macOS · Issue #4739 · haskell/cabal](https://github.com/haskell/cabal/issues/4739) -threaded -rtsopts -with-rtsopts=-N
-  build-depends:
-      Cabal >=2.4
-    , aeson
-    , annotated-wl-pprint
-    , ansi-terminal >=0.8.1
-    , array
-    , async
-    , attoparsec
-    , base >=4.10 && <5
-    , base64-bytestring
-    , bytestring
-    , colour
-    , conduit
-    , conduit-extra
-    , containers
-    , cryptonite
-    , cryptonite-conduit
-    , deepseq
-    , directory
-    , echo
-    , exceptions
-    , extra
-    , file-embed
-    , filelock
-    , filepath
-    , fsnotify
-    , generic-deriving
-    , hackage-security
-    , hashable
-    , hpack
-    , hpc
-    , hspec
-    , http-client
-    , http-client-tls
-    , http-conduit
-    , http-types
-    , memory
-    , microlens
-    , mintty
-    , monad-logger
-    , mono-traversable
-    , mtl
-    , mustache
-    , neat-interpolation
-    , network-uri
-    , open-browser
-    , optparse-applicative
-    , pantry
-    , path
-    , path-io
-    , persistent
-    , persistent-sqlite
-    , persistent-template
-    , pretty
-    , primitive
-    , process
-    , project-template
-    , regex-applicative-text
-    , resourcet
-    , retry >=0.7
-    , rio
-    , semigroups
-    , split
-    , stm
-    , store-core
-    , streaming-commons
-    , tar
-    , template-haskell
-    , temporary
-    , text
-    , text-metrics
-    , th-reify-many
-    , time
-    , tls
-    , transformers
-    , typed-process
-    , unicode-transforms
-    , unix-compat
-    , unliftio >=0.2.8.0
-    , unordered-containers
-    , vector
-    , yaml
-    , zip-archive
-    , zlib
-  if os(windows)
-    cpp-options: -DWINDOWS
-    build-depends:
-        Win32
-  else
-    build-tools:
-        hsc2hs
-    build-depends:
-        unix
-  if !flag(integration-tests)
-    buildable: False
-  default-language: Haskell2010
-
-test-suite stack-test
-  type: exitcode-stdio-1.0
-  main-is: Spec.hs
-  other-modules:
-      Paths_stack
-  hs-source-dirs:
-      src/test
-  ghc-options: -Wall -fwarn-tabs -fwarn-incomplete-uni-patterns -fwarn-incomplete-record-updates -optP-Wno-nonportable-include-path # workaround [Filename case on macOS · Issue #4739 · haskell/cabal](https://github.com/haskell/cabal/issues/4739) -threaded
-  build-depends:
-      Cabal >=2.4
-    , QuickCheck
-    , aeson
-    , annotated-wl-pprint
-    , ansi-terminal >=0.8.1
-    , array
-    , async
-    , attoparsec
-    , base >=4.10 && <5
-    , base64-bytestring
-    , bytestring
-    , colour
-    , conduit
-    , conduit-extra
-    , containers
-    , cryptonite
-    , cryptonite-conduit
-    , deepseq
-    , directory
-    , echo
-    , exceptions
-    , extra
-    , file-embed
-    , filelock
-    , filepath
-    , fsnotify
-    , generic-deriving
-    , hackage-security
-    , hashable
-    , hpack
-    , hpc
-    , hspec
-    , http-client
-    , http-client-tls
-    , http-conduit
-    , http-types
-    , memory
-    , microlens
-    , mintty
-    , monad-logger
-    , mono-traversable
-    , mtl
-    , mustache
-    , neat-interpolation
-    , network-uri
-    , open-browser
-    , optparse-applicative
-    , pantry
-    , path
-    , path-io
-    , persistent
-    , persistent-sqlite
-    , persistent-template
-    , pretty
-    , primitive
-    , process
-    , project-template
-    , regex-applicative-text
-    , resourcet
-    , retry >=0.7
-    , rio
-    , semigroups
-    , smallcheck
-    , split
-    , stack
-    , stm
-    , store-core
-    , streaming-commons
-    , tar
-    , template-haskell
-    , temporary
-    , text
-    , text-metrics
-    , th-reify-many
-    , time
-    , tls
-    , transformers
-    , typed-process
-    , unicode-transforms
-    , unix-compat
-    , unliftio >=0.2.8.0
-    , unordered-containers
-    , vector
-    , yaml
-    , zip-archive
-    , zlib
-  if os(windows)
-    cpp-options: -DWINDOWS
-    build-depends:
-        Win32
-  else
-    build-tools:
-        hsc2hs
-    build-depends:
-        unix
-  default-language: Haskell2010
diff --git a/test/golden/test-files/real-world/stack/stack.dhall b/test/golden/test-files/real-world/stack/stack.dhall
deleted file mode 100644
--- a/test/golden/test-files/real-world/stack/stack.dhall
+++ /dev/null
@@ -1,401 +0,0 @@
-{ name =
-    "stack"
-, version =
-    "1.10.0"
-, synopsis =
-    "The Haskell Tool Stack"
-, description =
-    ''
-    Please see the README.md for usage information, and
-    the wiki on Github for more details.  Also, note that
-    the API for the library is not currently stable, and may
-    change significantly, even between minor releases. It is
-    currently only intended for use by the executable.''
-, category =
-    "Development"
-, author =
-    "Commercial Haskell SIG"
-, maintainer =
-    "manny@fpcomplete.com"
-, license =
-    "BSD3"
-, github =
-    "commercialhaskell/stack"
-, homepage =
-    "http://haskellstack.org"
-, custom-setup =
-    { dependencies = [ "base >=4.10 && < 5", "Cabal >= 2.4", "filepath" ] }
-, extra-source-files =
-    [ "CONTRIBUTING.md"
-    , "ChangeLog.md"
-    , "README.md"
-    , "doc/*.md"
-    , "src/setup-shim/StackSetupShim.hs"
-    , "stack.yaml"
-    , "test/package-dump/ghc-7.10.txt"
-    , "test/package-dump/ghc-7.8.4-osx.txt"
-    , "test/package-dump/ghc-7.8.txt"
-    ]
-, ghc-options =
-    [ "-Wall"
-    , "-fwarn-tabs"
-    , "-fwarn-incomplete-uni-patterns"
-    , "-fwarn-incomplete-record-updates"
-    , "-optP-Wno-nonportable-include-path # workaround [Filename case on macOS \u00B7 Issue #4739 \u00B7 haskell/cabal](https://github.com/haskell/cabal/issues/4739)"
-    ]
-, dependencies =
-    [ "Cabal >= 2.4"
-    , "aeson"
-    , "annotated-wl-pprint"
-    , "ansi-terminal >= 0.8.1"
-    , "array"
-    , "async"
-    , "attoparsec"
-    , "base >=4.10 && < 5"
-    , "base64-bytestring"
-    , "bytestring"
-    , "colour"
-    , "conduit"
-    , "conduit-extra"
-    , "containers"
-    , "cryptonite"
-    , "cryptonite-conduit"
-    , "deepseq"
-    , "directory"
-    , "echo"
-    , "exceptions"
-    , "extra"
-    , "file-embed"
-    , "filelock"
-    , "filepath"
-    , "fsnotify"
-    , "generic-deriving"
-    , "hackage-security"
-    , "hashable"
-    , "hpack"
-    , "hpc"
-    , "http-client"
-    , "http-client-tls"
-    , "http-conduit"
-    , "http-types"
-    , "memory"
-    , "microlens"
-    , "mintty"
-    , "monad-logger"
-    , "mono-traversable"
-    , "mtl"
-    , "mustache"
-    , "neat-interpolation"
-    , "network-uri"
-    , "open-browser"
-    , "optparse-applicative"
-    , "pantry"
-    , "path"
-    , "path-io"
-    , "persistent"
-    , "persistent-sqlite"
-    , "persistent-template"
-    , "pretty"
-    , "primitive"
-    , "process"
-    , "project-template"
-    , "regex-applicative-text"
-    , "resourcet"
-    , "retry >= 0.7"
-    , "rio"
-    , "semigroups"
-    , "split"
-    , "stm"
-    , "store-core"
-    , "streaming-commons"
-    , "tar"
-    , "template-haskell"
-    , "temporary"
-    , "text"
-    , "text-metrics"
-    , "th-reify-many"
-    , "time"
-    , "tls"
-    , "transformers"
-    , "typed-process"
-    , "unicode-transforms"
-    , "unix-compat"
-    , "unliftio >= 0.2.8.0"
-    , "unordered-containers"
-    , "vector"
-    , "yaml"
-    , "zip-archive"
-    , "zlib"
-    ]
-, when =
-    { condition =
-        "os(windows)"
-    , `then` =
-        { cpp-options = [ "-DWINDOWS" ], dependencies = [ "Win32" ] }
-    , `else` =
-        { build-tools = [ "hsc2hs" ], dependencies = [ "unix" ] }
-    }
-, library =
-    { source-dirs =
-        "src/"
-    , ghc-options =
-        [ "-fwarn-identities" ]
-    , generated-exposed-modules =
-        [ "Paths_stack" ]
-    , exposed-modules =
-        [ "Control.Concurrent.Execute"
-        , "Data.Attoparsec.Args"
-        , "Data.Attoparsec.Combinators"
-        , "Data.Attoparsec.Interpreter"
-        , "Data.Monoid.Map"
-        , "Network.HTTP.Download"
-        , "Network.HTTP.Download.Verified"
-        , "Network.HTTP.StackClient"
-        , "Options.Applicative.Args"
-        , "Options.Applicative.Builder.Extra"
-        , "Options.Applicative.Complicated"
-        , "Path.CheckInstall"
-        , "Path.Extra"
-        , "Path.Find"
-        , "Stack.Build"
-        , "Stack.Build.Cache"
-        , "Stack.Build.ConstructPlan"
-        , "Stack.Build.Execute"
-        , "Stack.Build.Haddock"
-        , "Stack.Build.Installed"
-        , "Stack.Build.Source"
-        , "Stack.Build.Target"
-        , "Stack.BuildPlan"
-        , "Stack.Clean"
-        , "Stack.Config"
-        , "Stack.Config.Build"
-        , "Stack.Config.Urls"
-        , "Stack.Config.Docker"
-        , "Stack.Config.Nix"
-        , "Stack.ConfigCmd"
-        , "Stack.Constants"
-        , "Stack.Constants.Config"
-        , "Stack.Coverage"
-        , "Stack.DefaultColorWhen"
-        , "Stack.DefaultStyles"
-        , "Stack.Docker"
-        , "Stack.Docker.GlobalDB"
-        , "Stack.Dot"
-        , "Stack.FileWatch"
-        , "Stack.Freeze"
-        , "Stack.GhcPkg"
-        , "Stack.Ghci"
-        , "Stack.Ghci.Script"
-        , "Stack.Hoogle"
-        , "Stack.IDE"
-        , "Stack.Image"
-        , "Stack.Init"
-        , "Stack.Ls"
-        , "Stack.New"
-        , "Stack.Nix"
-        , "Stack.Options.BenchParser"
-        , "Stack.Options.BuildMonoidParser"
-        , "Stack.Options.BuildParser"
-        , "Stack.Options.CleanParser"
-        , "Stack.Options.ConfigParser"
-        , "Stack.Options.Completion"
-        , "Stack.Options.DockerParser"
-        , "Stack.Options.DotParser"
-        , "Stack.Options.ExecParser"
-        , "Stack.Options.FreezeParser"
-        , "Stack.Options.GhcBuildParser"
-        , "Stack.Options.GhciParser"
-        , "Stack.Options.GhcVariantParser"
-        , "Stack.Options.GlobalParser"
-        , "Stack.Options.HaddockParser"
-        , "Stack.Options.HpcReportParser"
-        , "Stack.Options.LogLevelParser"
-        , "Stack.Options.NewParser"
-        , "Stack.Options.NixParser"
-        , "Stack.Options.PackageParser"
-        , "Stack.Options.ResolverParser"
-        , "Stack.Options.ScriptParser"
-        , "Stack.Options.SDistParser"
-        , "Stack.Options.SolverParser"
-        , "Stack.Options.TestParser"
-        , "Stack.Options.Utils"
-        , "Stack.Package"
-        , "Stack.PackageDump"
-        , "Stack.Path"
-        , "Stack.Prelude"
-        , "Stack.PrettyPrint"
-        , "Stack.Runners"
-        , "Stack.Script"
-        , "Stack.SDist"
-        , "Stack.Setup"
-        , "Stack.Setup.Installed"
-        , "Stack.SetupCmd"
-        , "Stack.Sig"
-        , "Stack.Sig.GPG"
-        , "Stack.Sig.Sign"
-        , "Stack.Snapshot"
-        , "Stack.Solver"
-        , "Stack.StoreTH"
-        , "Stack.Types.Build"
-        , "Stack.Types.BuildPlan"
-        , "Stack.Types.CompilerBuild"
-        , "Stack.Types.Urls"
-        , "Stack.Types.Compiler"
-        , "Stack.Types.Config"
-        , "Stack.Types.Config.Build"
-        , "Stack.Types.Docker"
-        , "Stack.Types.GhcPkgId"
-        , "Stack.Types.Image"
-        , "Stack.Types.NamedComponent"
-        , "Stack.Types.Nix"
-        , "Stack.Types.Package"
-        , "Stack.Types.PackageDump"
-        , "Stack.Types.PackageName"
-        , "Stack.Types.PrettyPrint"
-        , "Stack.Types.Resolver"
-        , "Stack.Types.Runner"
-        , "Stack.Types.Sig"
-        , "Stack.Types.StylesUpdate"
-        , "Stack.Types.TemplateName"
-        , "Stack.Types.Version"
-        , "Stack.Types.VersionIntervals"
-        , "Stack.Unpack"
-        , "Stack.Upgrade"
-        , "Stack.Upload"
-        , "Text.PrettyPrint.Leijen.Extended"
-        , "System.Permissions"
-        , "System.Process.PagerEditor"
-        , "System.Terminal"
-        ]
-    , when =
-        { condition =
-            "os(windows)"
-        , `then` =
-            { source-dirs = [ "src/windows/" ] }
-        , `else` =
-            { source-dirs =
-                [ "src/unix/" ]
-            , c-sources =
-                [ "src/unix/cbits/uname.c" ]
-            }
-        }
-    }
-, executables =
-    { stack =
-        { main =
-            "Main.hs"
-        , source-dirs =
-            [ "src/main" ]
-        , generated-other-modules =
-            [ "Build_stack", "Paths_stack" ]
-        , ghc-options =
-            [ "-threaded", "-rtsopts" ]
-        , dependencies =
-            [ "stack" ]
-        , when =
-            [ { condition =
-                  "flag(static)"
-              , cpp-options =
-                  [] : List Text
-              , dependencies =
-                  [] : List Text
-              , ld-options =
-                  [ "-static", "-pthread" ]
-              }
-            , { condition =
-                  "!(flag(disable-git-info))"
-              , cpp-options =
-                  [ "-DUSE_GIT_INFO" ]
-              , dependencies =
-                  [ "githash", "optparse-simple" ]
-              , ld-options =
-                  [] : List Text
-              }
-            , { condition =
-                  "flag(hide-dependency-versions)"
-              , cpp-options =
-                  [ "-DHIDE_DEP_VERSIONS" ]
-              , dependencies =
-                  [] : List Text
-              , ld-options =
-                  [] : List Text
-              }
-            , { condition =
-                  "flag(supported-build)"
-              , cpp-options =
-                  [ "-DSUPPORTED_BUILD" ]
-              , dependencies =
-                  [] : List Text
-              , ld-options =
-                  [] : List Text
-              }
-            ]
-        }
-    }
-, tests =
-    { stack-test =
-        { main =
-            "Spec.hs"
-        , source-dirs =
-            [ "src/test" ]
-        , ghc-options =
-            [ "-threaded" ]
-        , dependencies =
-            [ "QuickCheck", "hspec", "stack", "smallcheck" ]
-        }
-    , stack-integration-test =
-        { main =
-            "IntegrationSpec.hs"
-        , source-dirs =
-            [ "test/integration", "test/integration/lib" ]
-        , ghc-options =
-            [ "-threaded", "-rtsopts", "-with-rtsopts=-N" ]
-        , dependencies =
-            [ "hspec" ]
-        , when =
-            { condition = "!flag(integration-tests)", buildable = False }
-        }
-    }
-, flags =
-    { static =
-        { description =
-            "Pass -static/-pthread to ghc when linking the stack binary."
-        , manual =
-            True
-        , default =
-            False
-        }
-    , disable-git-info =
-        { description =
-            "Disable compile-time inclusion of current git info in stack"
-        , manual =
-            True
-        , default =
-            False
-        }
-    , hide-dependency-versions =
-        { description =
-            "Hides dependency versions from \"stack --version\", used only by building with stack.yaml"
-        , manual =
-            True
-        , default =
-            False
-        }
-    , integration-tests =
-        { description =
-            "Run the integration test suite"
-        , manual =
-            True
-        , default =
-            False
-        }
-    , supported-build =
-        { description =
-            "If false, causes \"stack --version\" to issue a warning about the build being unsupported.  True only if building with stack.yaml"
-        , manual =
-            True
-        , default =
-            False
-        }
-    }
-}
diff --git a/test/golden/test-files/real-world/stack/stack.dhall.golden b/test/golden/test-files/real-world/stack/stack.dhall.golden
deleted file mode 100644
--- a/test/golden/test-files/real-world/stack/stack.dhall.golden
+++ /dev/null
@@ -1,401 +0,0 @@
-{ name =
-    "stack"
-, version =
-    "1.10.0"
-, synopsis =
-    "The Haskell Tool Stack"
-, description =
-    ''
-    Please see the README.md for usage information, and
-    the wiki on Github for more details.  Also, note that
-    the API for the library is not currently stable, and may
-    change significantly, even between minor releases. It is
-    currently only intended for use by the executable.''
-, category =
-    "Development"
-, author =
-    "Commercial Haskell SIG"
-, maintainer =
-    "manny@fpcomplete.com"
-, license =
-    "BSD3"
-, github =
-    "commercialhaskell/stack"
-, homepage =
-    "http://haskellstack.org"
-, custom-setup =
-    { dependencies = [ "base >=4.10 && < 5", "Cabal >= 2.4", "filepath" ] }
-, extra-source-files =
-    [ "CONTRIBUTING.md"
-    , "ChangeLog.md"
-    , "README.md"
-    , "doc/*.md"
-    , "src/setup-shim/StackSetupShim.hs"
-    , "stack.yaml"
-    , "test/package-dump/ghc-7.10.txt"
-    , "test/package-dump/ghc-7.8.4-osx.txt"
-    , "test/package-dump/ghc-7.8.txt"
-    ]
-, ghc-options =
-    [ "-Wall"
-    , "-fwarn-tabs"
-    , "-fwarn-incomplete-uni-patterns"
-    , "-fwarn-incomplete-record-updates"
-    , "-optP-Wno-nonportable-include-path # workaround [Filename case on macOS · Issue #4739 · haskell/cabal](https://github.com/haskell/cabal/issues/4739)"
-    ]
-, dependencies =
-    [ "Cabal >= 2.4"
-    , "aeson"
-    , "annotated-wl-pprint"
-    , "ansi-terminal >= 0.8.1"
-    , "array"
-    , "async"
-    , "attoparsec"
-    , "base >=4.10 && < 5"
-    , "base64-bytestring"
-    , "bytestring"
-    , "colour"
-    , "conduit"
-    , "conduit-extra"
-    , "containers"
-    , "cryptonite"
-    , "cryptonite-conduit"
-    , "deepseq"
-    , "directory"
-    , "echo"
-    , "exceptions"
-    , "extra"
-    , "file-embed"
-    , "filelock"
-    , "filepath"
-    , "fsnotify"
-    , "generic-deriving"
-    , "hackage-security"
-    , "hashable"
-    , "hpack"
-    , "hpc"
-    , "http-client"
-    , "http-client-tls"
-    , "http-conduit"
-    , "http-types"
-    , "memory"
-    , "microlens"
-    , "mintty"
-    , "monad-logger"
-    , "mono-traversable"
-    , "mtl"
-    , "mustache"
-    , "neat-interpolation"
-    , "network-uri"
-    , "open-browser"
-    , "optparse-applicative"
-    , "pantry"
-    , "path"
-    , "path-io"
-    , "persistent"
-    , "persistent-sqlite"
-    , "persistent-template"
-    , "pretty"
-    , "primitive"
-    , "process"
-    , "project-template"
-    , "regex-applicative-text"
-    , "resourcet"
-    , "retry >= 0.7"
-    , "rio"
-    , "semigroups"
-    , "split"
-    , "stm"
-    , "store-core"
-    , "streaming-commons"
-    , "tar"
-    , "template-haskell"
-    , "temporary"
-    , "text"
-    , "text-metrics"
-    , "th-reify-many"
-    , "time"
-    , "tls"
-    , "transformers"
-    , "typed-process"
-    , "unicode-transforms"
-    , "unix-compat"
-    , "unliftio >= 0.2.8.0"
-    , "unordered-containers"
-    , "vector"
-    , "yaml"
-    , "zip-archive"
-    , "zlib"
-    ]
-, when =
-    { condition =
-        "os(windows)"
-    , `then` =
-        { cpp-options = [ "-DWINDOWS" ], dependencies = [ "Win32" ] }
-    , `else` =
-        { build-tools = [ "hsc2hs" ], dependencies = [ "unix" ] }
-    }
-, library =
-    { source-dirs =
-        "src/"
-    , ghc-options =
-        [ "-fwarn-identities" ]
-    , generated-exposed-modules =
-        [ "Paths_stack" ]
-    , exposed-modules =
-        [ "Control.Concurrent.Execute"
-        , "Data.Attoparsec.Args"
-        , "Data.Attoparsec.Combinators"
-        , "Data.Attoparsec.Interpreter"
-        , "Data.Monoid.Map"
-        , "Network.HTTP.Download"
-        , "Network.HTTP.Download.Verified"
-        , "Network.HTTP.StackClient"
-        , "Options.Applicative.Args"
-        , "Options.Applicative.Builder.Extra"
-        , "Options.Applicative.Complicated"
-        , "Path.CheckInstall"
-        , "Path.Extra"
-        , "Path.Find"
-        , "Stack.Build"
-        , "Stack.Build.Cache"
-        , "Stack.Build.ConstructPlan"
-        , "Stack.Build.Execute"
-        , "Stack.Build.Haddock"
-        , "Stack.Build.Installed"
-        , "Stack.Build.Source"
-        , "Stack.Build.Target"
-        , "Stack.BuildPlan"
-        , "Stack.Clean"
-        , "Stack.Config"
-        , "Stack.Config.Build"
-        , "Stack.Config.Urls"
-        , "Stack.Config.Docker"
-        , "Stack.Config.Nix"
-        , "Stack.ConfigCmd"
-        , "Stack.Constants"
-        , "Stack.Constants.Config"
-        , "Stack.Coverage"
-        , "Stack.DefaultColorWhen"
-        , "Stack.DefaultStyles"
-        , "Stack.Docker"
-        , "Stack.Docker.GlobalDB"
-        , "Stack.Dot"
-        , "Stack.FileWatch"
-        , "Stack.Freeze"
-        , "Stack.GhcPkg"
-        , "Stack.Ghci"
-        , "Stack.Ghci.Script"
-        , "Stack.Hoogle"
-        , "Stack.IDE"
-        , "Stack.Image"
-        , "Stack.Init"
-        , "Stack.Ls"
-        , "Stack.New"
-        , "Stack.Nix"
-        , "Stack.Options.BenchParser"
-        , "Stack.Options.BuildMonoidParser"
-        , "Stack.Options.BuildParser"
-        , "Stack.Options.CleanParser"
-        , "Stack.Options.ConfigParser"
-        , "Stack.Options.Completion"
-        , "Stack.Options.DockerParser"
-        , "Stack.Options.DotParser"
-        , "Stack.Options.ExecParser"
-        , "Stack.Options.FreezeParser"
-        , "Stack.Options.GhcBuildParser"
-        , "Stack.Options.GhciParser"
-        , "Stack.Options.GhcVariantParser"
-        , "Stack.Options.GlobalParser"
-        , "Stack.Options.HaddockParser"
-        , "Stack.Options.HpcReportParser"
-        , "Stack.Options.LogLevelParser"
-        , "Stack.Options.NewParser"
-        , "Stack.Options.NixParser"
-        , "Stack.Options.PackageParser"
-        , "Stack.Options.ResolverParser"
-        , "Stack.Options.ScriptParser"
-        , "Stack.Options.SDistParser"
-        , "Stack.Options.SolverParser"
-        , "Stack.Options.TestParser"
-        , "Stack.Options.Utils"
-        , "Stack.Package"
-        , "Stack.PackageDump"
-        , "Stack.Path"
-        , "Stack.Prelude"
-        , "Stack.PrettyPrint"
-        , "Stack.Runners"
-        , "Stack.Script"
-        , "Stack.SDist"
-        , "Stack.Setup"
-        , "Stack.Setup.Installed"
-        , "Stack.SetupCmd"
-        , "Stack.Sig"
-        , "Stack.Sig.GPG"
-        , "Stack.Sig.Sign"
-        , "Stack.Snapshot"
-        , "Stack.Solver"
-        , "Stack.StoreTH"
-        , "Stack.Types.Build"
-        , "Stack.Types.BuildPlan"
-        , "Stack.Types.CompilerBuild"
-        , "Stack.Types.Urls"
-        , "Stack.Types.Compiler"
-        , "Stack.Types.Config"
-        , "Stack.Types.Config.Build"
-        , "Stack.Types.Docker"
-        , "Stack.Types.GhcPkgId"
-        , "Stack.Types.Image"
-        , "Stack.Types.NamedComponent"
-        , "Stack.Types.Nix"
-        , "Stack.Types.Package"
-        , "Stack.Types.PackageDump"
-        , "Stack.Types.PackageName"
-        , "Stack.Types.PrettyPrint"
-        , "Stack.Types.Resolver"
-        , "Stack.Types.Runner"
-        , "Stack.Types.Sig"
-        , "Stack.Types.StylesUpdate"
-        , "Stack.Types.TemplateName"
-        , "Stack.Types.Version"
-        , "Stack.Types.VersionIntervals"
-        , "Stack.Unpack"
-        , "Stack.Upgrade"
-        , "Stack.Upload"
-        , "Text.PrettyPrint.Leijen.Extended"
-        , "System.Permissions"
-        , "System.Process.PagerEditor"
-        , "System.Terminal"
-        ]
-    , when =
-        { condition =
-            "os(windows)"
-        , `then` =
-            { source-dirs = [ "src/windows/" ] }
-        , `else` =
-            { source-dirs =
-                [ "src/unix/" ]
-            , c-sources =
-                [ "src/unix/cbits/uname.c" ]
-            }
-        }
-    }
-, executables =
-    { stack =
-        { main =
-            "Main.hs"
-        , source-dirs =
-            [ "src/main" ]
-        , generated-other-modules =
-            [ "Build_stack", "Paths_stack" ]
-        , ghc-options =
-            [ "-threaded", "-rtsopts" ]
-        , dependencies =
-            [ "stack" ]
-        , when =
-            [ { condition =
-                  "flag(static)"
-              , cpp-options =
-                  [] : List Text
-              , dependencies =
-                  [] : List Text
-              , ld-options =
-                  [ "-static", "-pthread" ]
-              }
-            , { condition =
-                  "!(flag(disable-git-info))"
-              , cpp-options =
-                  [ "-DUSE_GIT_INFO" ]
-              , dependencies =
-                  [ "githash", "optparse-simple" ]
-              , ld-options =
-                  [] : List Text
-              }
-            , { condition =
-                  "flag(hide-dependency-versions)"
-              , cpp-options =
-                  [ "-DHIDE_DEP_VERSIONS" ]
-              , dependencies =
-                  [] : List Text
-              , ld-options =
-                  [] : List Text
-              }
-            , { condition =
-                  "flag(supported-build)"
-              , cpp-options =
-                  [ "-DSUPPORTED_BUILD" ]
-              , dependencies =
-                  [] : List Text
-              , ld-options =
-                  [] : List Text
-              }
-            ]
-        }
-    }
-, tests =
-    { stack-test =
-        { main =
-            "Spec.hs"
-        , source-dirs =
-            [ "src/test" ]
-        , ghc-options =
-            [ "-threaded" ]
-        , dependencies =
-            [ "QuickCheck", "hspec", "stack", "smallcheck" ]
-        }
-    , stack-integration-test =
-        { main =
-            "IntegrationSpec.hs"
-        , source-dirs =
-            [ "test/integration", "test/integration/lib" ]
-        , ghc-options =
-            [ "-threaded", "-rtsopts", "-with-rtsopts=-N" ]
-        , dependencies =
-            [ "hspec" ]
-        , when =
-            { condition = "!flag(integration-tests)", buildable = False }
-        }
-    }
-, flags =
-    { static =
-        { description =
-            "Pass -static/-pthread to ghc when linking the stack binary."
-        , manual =
-            True
-        , default =
-            False
-        }
-    , disable-git-info =
-        { description =
-            "Disable compile-time inclusion of current git info in stack"
-        , manual =
-            True
-        , default =
-            False
-        }
-    , hide-dependency-versions =
-        { description =
-            "Hides dependency versions from \"stack --version\", used only by building with stack.yaml"
-        , manual =
-            True
-        , default =
-            False
-        }
-    , integration-tests =
-        { description =
-            "Run the integration test suite"
-        , manual =
-            True
-        , default =
-            False
-        }
-    , supported-build =
-        { description =
-            "If false, causes \"stack --version\" to issue a warning about the build being unsupported.  True only if building with stack.yaml"
-        , manual =
-            True
-        , default =
-            False
-        }
-    }
-}
diff --git a/test/golden/test-files/real-world/stack/stack.json b/test/golden/test-files/real-world/stack/stack.json
deleted file mode 100644
--- a/test/golden/test-files/real-world/stack/stack.json
+++ /dev/null
@@ -1,410 +0,0 @@
-{
-    "name": "stack",
-    "version": "1.10.0",
-    "synopsis": "The Haskell Tool Stack",
-    "description": "Please see the README.md for usage information, and\nthe wiki on Github for more details.  Also, note that\nthe API for the library is not currently stable, and may\nchange significantly, even between minor releases. It is\ncurrently only intended for use by the executable.",
-    "category": "Development",
-    "homepage": "http://haskellstack.org",
-    "author": "Commercial Haskell SIG",
-    "maintainer": "manny@fpcomplete.com",
-    "license": "BSD3",
-    "github": "commercialhaskell/stack",
-    "extra-source-files": [
-        "CONTRIBUTING.md",
-        "ChangeLog.md",
-        "README.md",
-        "doc/*.md",
-        "src/setup-shim/StackSetupShim.hs",
-        "stack.yaml",
-        "test/package-dump/ghc-7.10.txt",
-        "test/package-dump/ghc-7.8.4-osx.txt",
-        "test/package-dump/ghc-7.8.txt"
-    ],
-    "ghc-options": [
-        "-Wall",
-        "-fwarn-tabs",
-        "-fwarn-incomplete-uni-patterns",
-        "-fwarn-incomplete-record-updates",
-        "-optP-Wno-nonportable-include-path # workaround [Filename case on macOS · Issue #4739 · haskell/cabal](https://github.com/haskell/cabal/issues/4739)"
-    ],
-    "dependencies": [
-        "Cabal >= 2.4",
-        "aeson",
-        "annotated-wl-pprint",
-        "ansi-terminal >= 0.8.1",
-        "array",
-        "async",
-        "attoparsec",
-        "base >=4.10 && < 5",
-        "base64-bytestring",
-        "bytestring",
-        "colour",
-        "conduit",
-        "conduit-extra",
-        "containers",
-        "cryptonite",
-        "cryptonite-conduit",
-        "deepseq",
-        "directory",
-        "echo",
-        "exceptions",
-        "extra",
-        "file-embed",
-        "filelock",
-        "filepath",
-        "fsnotify",
-        "generic-deriving",
-        "hackage-security",
-        "hashable",
-        "hpack",
-        "hpc",
-        "http-client",
-        "http-client-tls",
-        "http-conduit",
-        "http-types",
-        "memory",
-        "microlens",
-        "mintty",
-        "monad-logger",
-        "mono-traversable",
-        "mtl",
-        "mustache",
-        "neat-interpolation",
-        "network-uri",
-        "open-browser",
-        "optparse-applicative",
-        "pantry",
-        "path",
-        "path-io",
-        "persistent",
-        "persistent-sqlite",
-        "persistent-template",
-        "pretty",
-        "primitive",
-        "process",
-        "project-template",
-        "regex-applicative-text",
-        "resourcet",
-        "retry >= 0.7",
-        "rio",
-        "semigroups",
-        "split",
-        "stm",
-        "store-core",
-        "streaming-commons",
-        "tar",
-        "template-haskell",
-        "temporary",
-        "text",
-        "text-metrics",
-        "th-reify-many",
-        "time",
-        "tls",
-        "transformers",
-        "typed-process",
-        "unicode-transforms",
-        "unix-compat",
-        "unliftio >= 0.2.8.0",
-        "unordered-containers",
-        "vector",
-        "yaml",
-        "zip-archive",
-        "zlib"
-    ],
-    "when": {
-        "condition": "os(windows)",
-        "then": {
-            "cpp-options": [
-                "-DWINDOWS"
-            ],
-            "dependencies": [
-                "Win32"
-            ]
-        },
-        "else": {
-            "dependencies": [
-                "unix"
-            ],
-            "build-tools": [
-                "hsc2hs"
-            ]
-        }
-    },
-    "custom-setup": {
-        "dependencies": [
-            "base >=4.10 && < 5",
-            "Cabal >= 2.4",
-            "filepath"
-        ]
-    },
-    "flags": {
-        "disable-git-info": {
-            "description": "Disable compile-time inclusion of current git info in stack",
-            "manual": true,
-            "default": false
-        },
-        "hide-dependency-versions": {
-            "description": "Hides dependency versions from \"stack --version\", used only by building with stack.yaml",
-            "manual": true,
-            "default": false
-        },
-        "integration-tests": {
-            "description": "Run the integration test suite",
-            "manual": true,
-            "default": false
-        },
-        "static": {
-            "description": "Pass -static/-pthread to ghc when linking the stack binary.",
-            "manual": true,
-            "default": false
-        },
-        "supported-build": {
-            "description": "If false, causes \"stack --version\" to issue a warning about the build being unsupported.  True only if building with stack.yaml",
-            "manual": true,
-            "default": false
-        }
-    },
-    "library": {
-        "exposed-modules": [
-            "Control.Concurrent.Execute",
-            "Data.Attoparsec.Args",
-            "Data.Attoparsec.Combinators",
-            "Data.Attoparsec.Interpreter",
-            "Data.Monoid.Map",
-            "Network.HTTP.Download",
-            "Network.HTTP.Download.Verified",
-            "Network.HTTP.StackClient",
-            "Options.Applicative.Args",
-            "Options.Applicative.Builder.Extra",
-            "Options.Applicative.Complicated",
-            "Path.CheckInstall",
-            "Path.Extra",
-            "Path.Find",
-            "Stack.Build",
-            "Stack.Build.Cache",
-            "Stack.Build.ConstructPlan",
-            "Stack.Build.Execute",
-            "Stack.Build.Haddock",
-            "Stack.Build.Installed",
-            "Stack.Build.Source",
-            "Stack.Build.Target",
-            "Stack.BuildPlan",
-            "Stack.Clean",
-            "Stack.Config",
-            "Stack.Config.Build",
-            "Stack.Config.Urls",
-            "Stack.Config.Docker",
-            "Stack.Config.Nix",
-            "Stack.ConfigCmd",
-            "Stack.Constants",
-            "Stack.Constants.Config",
-            "Stack.Coverage",
-            "Stack.DefaultColorWhen",
-            "Stack.DefaultStyles",
-            "Stack.Docker",
-            "Stack.Docker.GlobalDB",
-            "Stack.Dot",
-            "Stack.FileWatch",
-            "Stack.Freeze",
-            "Stack.GhcPkg",
-            "Stack.Ghci",
-            "Stack.Ghci.Script",
-            "Stack.Hoogle",
-            "Stack.IDE",
-            "Stack.Image",
-            "Stack.Init",
-            "Stack.Ls",
-            "Stack.New",
-            "Stack.Nix",
-            "Stack.Options.BenchParser",
-            "Stack.Options.BuildMonoidParser",
-            "Stack.Options.BuildParser",
-            "Stack.Options.CleanParser",
-            "Stack.Options.ConfigParser",
-            "Stack.Options.Completion",
-            "Stack.Options.DockerParser",
-            "Stack.Options.DotParser",
-            "Stack.Options.ExecParser",
-            "Stack.Options.FreezeParser",
-            "Stack.Options.GhcBuildParser",
-            "Stack.Options.GhciParser",
-            "Stack.Options.GhcVariantParser",
-            "Stack.Options.GlobalParser",
-            "Stack.Options.HaddockParser",
-            "Stack.Options.HpcReportParser",
-            "Stack.Options.LogLevelParser",
-            "Stack.Options.NewParser",
-            "Stack.Options.NixParser",
-            "Stack.Options.PackageParser",
-            "Stack.Options.ResolverParser",
-            "Stack.Options.ScriptParser",
-            "Stack.Options.SDistParser",
-            "Stack.Options.SolverParser",
-            "Stack.Options.TestParser",
-            "Stack.Options.Utils",
-            "Stack.Package",
-            "Stack.PackageDump",
-            "Stack.Path",
-            "Stack.Prelude",
-            "Stack.PrettyPrint",
-            "Stack.Runners",
-            "Stack.Script",
-            "Stack.SDist",
-            "Stack.Setup",
-            "Stack.Setup.Installed",
-            "Stack.SetupCmd",
-            "Stack.Sig",
-            "Stack.Sig.GPG",
-            "Stack.Sig.Sign",
-            "Stack.Snapshot",
-            "Stack.Solver",
-            "Stack.StoreTH",
-            "Stack.Types.Build",
-            "Stack.Types.BuildPlan",
-            "Stack.Types.CompilerBuild",
-            "Stack.Types.Urls",
-            "Stack.Types.Compiler",
-            "Stack.Types.Config",
-            "Stack.Types.Config.Build",
-            "Stack.Types.Docker",
-            "Stack.Types.GhcPkgId",
-            "Stack.Types.Image",
-            "Stack.Types.NamedComponent",
-            "Stack.Types.Nix",
-            "Stack.Types.Package",
-            "Stack.Types.PackageDump",
-            "Stack.Types.PackageName",
-            "Stack.Types.PrettyPrint",
-            "Stack.Types.Resolver",
-            "Stack.Types.Runner",
-            "Stack.Types.Sig",
-            "Stack.Types.StylesUpdate",
-            "Stack.Types.TemplateName",
-            "Stack.Types.Version",
-            "Stack.Types.VersionIntervals",
-            "Stack.Unpack",
-            "Stack.Upgrade",
-            "Stack.Upload",
-            "Text.PrettyPrint.Leijen.Extended",
-            "System.Permissions",
-            "System.Process.PagerEditor",
-            "System.Terminal"
-        ],
-        "generated-exposed-modules": [
-            "Paths_stack"
-        ],
-        "source-dirs": "src/",
-        "ghc-options": [
-            "-fwarn-identities"
-        ],
-        "when": {
-            "condition": "os(windows)",
-            "then": {
-                "source-dirs": [
-                    "src/windows/"
-                ]
-            },
-            "else": {
-                "source-dirs": [
-                    "src/unix/"
-                ],
-                "c-sources": [
-                    "src/unix/cbits/uname.c"
-                ]
-            }
-        }
-    },
-    "executables": {
-        "stack": {
-            "main": "Main.hs",
-            "generated-other-modules": [
-                "Build_stack",
-                "Paths_stack"
-            ],
-            "source-dirs": [
-                "src/main"
-            ],
-            "ghc-options": [
-                "-threaded",
-                "-rtsopts"
-            ],
-            "dependencies": [
-                "stack"
-            ],
-            "when": [
-                {
-                    "condition": "flag(static)",
-                    "cpp-options": [],
-                    "ld-options": [
-                        "-static",
-                        "-pthread"
-                    ],
-                    "dependencies": []
-                },
-                {
-                    "condition": "!(flag(disable-git-info))",
-                    "cpp-options": [
-                        "-DUSE_GIT_INFO"
-                    ],
-                    "ld-options": [],
-                    "dependencies": [
-                        "githash",
-                        "optparse-simple"
-                    ]
-                },
-                {
-                    "condition": "flag(hide-dependency-versions)",
-                    "cpp-options": [
-                        "-DHIDE_DEP_VERSIONS"
-                    ],
-                    "ld-options": [],
-                    "dependencies": []
-                },
-                {
-                    "condition": "flag(supported-build)",
-                    "cpp-options": [
-                        "-DSUPPORTED_BUILD"
-                    ],
-                    "ld-options": [],
-                    "dependencies": []
-                }
-            ]
-        }
-    },
-    "tests": {
-        "stack-integration-test": {
-            "main": "IntegrationSpec.hs",
-            "source-dirs": [
-                "test/integration",
-                "test/integration/lib"
-            ],
-            "ghc-options": [
-                "-threaded",
-                "-rtsopts",
-                "-with-rtsopts=-N"
-            ],
-            "dependencies": [
-                "hspec"
-            ],
-            "when": {
-                "condition": "!flag(integration-tests)",
-                "buildable": false
-            }
-        },
-        "stack-test": {
-            "main": "Spec.hs",
-            "source-dirs": [
-                "src/test"
-            ],
-            "ghc-options": [
-                "-threaded"
-            ],
-            "dependencies": [
-                "QuickCheck",
-                "hspec",
-                "stack",
-                "smallcheck"
-            ]
-        }
-    }
-}
diff --git a/test/golden/test-files/real-world/stack/stack.json.golden b/test/golden/test-files/real-world/stack/stack.json.golden
deleted file mode 100644
--- a/test/golden/test-files/real-world/stack/stack.json.golden
+++ /dev/null
@@ -1,410 +0,0 @@
-{
-    "name": "stack",
-    "version": "1.10.0",
-    "synopsis": "The Haskell Tool Stack",
-    "description": "Please see the README.md for usage information, and\nthe wiki on Github for more details.  Also, note that\nthe API for the library is not currently stable, and may\nchange significantly, even between minor releases. It is\ncurrently only intended for use by the executable.",
-    "category": "Development",
-    "homepage": "http://haskellstack.org",
-    "author": "Commercial Haskell SIG",
-    "maintainer": "manny@fpcomplete.com",
-    "license": "BSD3",
-    "github": "commercialhaskell/stack",
-    "extra-source-files": [
-        "CONTRIBUTING.md",
-        "ChangeLog.md",
-        "README.md",
-        "doc/*.md",
-        "src/setup-shim/StackSetupShim.hs",
-        "stack.yaml",
-        "test/package-dump/ghc-7.10.txt",
-        "test/package-dump/ghc-7.8.4-osx.txt",
-        "test/package-dump/ghc-7.8.txt"
-    ],
-    "ghc-options": [
-        "-Wall",
-        "-fwarn-tabs",
-        "-fwarn-incomplete-uni-patterns",
-        "-fwarn-incomplete-record-updates",
-        "-optP-Wno-nonportable-include-path # workaround [Filename case on macOS · Issue #4739 · haskell/cabal](https://github.com/haskell/cabal/issues/4739)"
-    ],
-    "dependencies": [
-        "Cabal >= 2.4",
-        "aeson",
-        "annotated-wl-pprint",
-        "ansi-terminal >= 0.8.1",
-        "array",
-        "async",
-        "attoparsec",
-        "base >=4.10 && < 5",
-        "base64-bytestring",
-        "bytestring",
-        "colour",
-        "conduit",
-        "conduit-extra",
-        "containers",
-        "cryptonite",
-        "cryptonite-conduit",
-        "deepseq",
-        "directory",
-        "echo",
-        "exceptions",
-        "extra",
-        "file-embed",
-        "filelock",
-        "filepath",
-        "fsnotify",
-        "generic-deriving",
-        "hackage-security",
-        "hashable",
-        "hpack",
-        "hpc",
-        "http-client",
-        "http-client-tls",
-        "http-conduit",
-        "http-types",
-        "memory",
-        "microlens",
-        "mintty",
-        "monad-logger",
-        "mono-traversable",
-        "mtl",
-        "mustache",
-        "neat-interpolation",
-        "network-uri",
-        "open-browser",
-        "optparse-applicative",
-        "pantry",
-        "path",
-        "path-io",
-        "persistent",
-        "persistent-sqlite",
-        "persistent-template",
-        "pretty",
-        "primitive",
-        "process",
-        "project-template",
-        "regex-applicative-text",
-        "resourcet",
-        "retry >= 0.7",
-        "rio",
-        "semigroups",
-        "split",
-        "stm",
-        "store-core",
-        "streaming-commons",
-        "tar",
-        "template-haskell",
-        "temporary",
-        "text",
-        "text-metrics",
-        "th-reify-many",
-        "time",
-        "tls",
-        "transformers",
-        "typed-process",
-        "unicode-transforms",
-        "unix-compat",
-        "unliftio >= 0.2.8.0",
-        "unordered-containers",
-        "vector",
-        "yaml",
-        "zip-archive",
-        "zlib"
-    ],
-    "when": {
-        "condition": "os(windows)",
-        "then": {
-            "cpp-options": [
-                "-DWINDOWS"
-            ],
-            "dependencies": [
-                "Win32"
-            ]
-        },
-        "else": {
-            "dependencies": [
-                "unix"
-            ],
-            "build-tools": [
-                "hsc2hs"
-            ]
-        }
-    },
-    "custom-setup": {
-        "dependencies": [
-            "base >=4.10 && < 5",
-            "Cabal >= 2.4",
-            "filepath"
-        ]
-    },
-    "flags": {
-        "disable-git-info": {
-            "description": "Disable compile-time inclusion of current git info in stack",
-            "manual": true,
-            "default": false
-        },
-        "hide-dependency-versions": {
-            "description": "Hides dependency versions from \"stack --version\", used only by building with stack.yaml",
-            "manual": true,
-            "default": false
-        },
-        "integration-tests": {
-            "description": "Run the integration test suite",
-            "manual": true,
-            "default": false
-        },
-        "static": {
-            "description": "Pass -static/-pthread to ghc when linking the stack binary.",
-            "manual": true,
-            "default": false
-        },
-        "supported-build": {
-            "description": "If false, causes \"stack --version\" to issue a warning about the build being unsupported.  True only if building with stack.yaml",
-            "manual": true,
-            "default": false
-        }
-    },
-    "library": {
-        "exposed-modules": [
-            "Control.Concurrent.Execute",
-            "Data.Attoparsec.Args",
-            "Data.Attoparsec.Combinators",
-            "Data.Attoparsec.Interpreter",
-            "Data.Monoid.Map",
-            "Network.HTTP.Download",
-            "Network.HTTP.Download.Verified",
-            "Network.HTTP.StackClient",
-            "Options.Applicative.Args",
-            "Options.Applicative.Builder.Extra",
-            "Options.Applicative.Complicated",
-            "Path.CheckInstall",
-            "Path.Extra",
-            "Path.Find",
-            "Stack.Build",
-            "Stack.Build.Cache",
-            "Stack.Build.ConstructPlan",
-            "Stack.Build.Execute",
-            "Stack.Build.Haddock",
-            "Stack.Build.Installed",
-            "Stack.Build.Source",
-            "Stack.Build.Target",
-            "Stack.BuildPlan",
-            "Stack.Clean",
-            "Stack.Config",
-            "Stack.Config.Build",
-            "Stack.Config.Urls",
-            "Stack.Config.Docker",
-            "Stack.Config.Nix",
-            "Stack.ConfigCmd",
-            "Stack.Constants",
-            "Stack.Constants.Config",
-            "Stack.Coverage",
-            "Stack.DefaultColorWhen",
-            "Stack.DefaultStyles",
-            "Stack.Docker",
-            "Stack.Docker.GlobalDB",
-            "Stack.Dot",
-            "Stack.FileWatch",
-            "Stack.Freeze",
-            "Stack.GhcPkg",
-            "Stack.Ghci",
-            "Stack.Ghci.Script",
-            "Stack.Hoogle",
-            "Stack.IDE",
-            "Stack.Image",
-            "Stack.Init",
-            "Stack.Ls",
-            "Stack.New",
-            "Stack.Nix",
-            "Stack.Options.BenchParser",
-            "Stack.Options.BuildMonoidParser",
-            "Stack.Options.BuildParser",
-            "Stack.Options.CleanParser",
-            "Stack.Options.ConfigParser",
-            "Stack.Options.Completion",
-            "Stack.Options.DockerParser",
-            "Stack.Options.DotParser",
-            "Stack.Options.ExecParser",
-            "Stack.Options.FreezeParser",
-            "Stack.Options.GhcBuildParser",
-            "Stack.Options.GhciParser",
-            "Stack.Options.GhcVariantParser",
-            "Stack.Options.GlobalParser",
-            "Stack.Options.HaddockParser",
-            "Stack.Options.HpcReportParser",
-            "Stack.Options.LogLevelParser",
-            "Stack.Options.NewParser",
-            "Stack.Options.NixParser",
-            "Stack.Options.PackageParser",
-            "Stack.Options.ResolverParser",
-            "Stack.Options.ScriptParser",
-            "Stack.Options.SDistParser",
-            "Stack.Options.SolverParser",
-            "Stack.Options.TestParser",
-            "Stack.Options.Utils",
-            "Stack.Package",
-            "Stack.PackageDump",
-            "Stack.Path",
-            "Stack.Prelude",
-            "Stack.PrettyPrint",
-            "Stack.Runners",
-            "Stack.Script",
-            "Stack.SDist",
-            "Stack.Setup",
-            "Stack.Setup.Installed",
-            "Stack.SetupCmd",
-            "Stack.Sig",
-            "Stack.Sig.GPG",
-            "Stack.Sig.Sign",
-            "Stack.Snapshot",
-            "Stack.Solver",
-            "Stack.StoreTH",
-            "Stack.Types.Build",
-            "Stack.Types.BuildPlan",
-            "Stack.Types.CompilerBuild",
-            "Stack.Types.Urls",
-            "Stack.Types.Compiler",
-            "Stack.Types.Config",
-            "Stack.Types.Config.Build",
-            "Stack.Types.Docker",
-            "Stack.Types.GhcPkgId",
-            "Stack.Types.Image",
-            "Stack.Types.NamedComponent",
-            "Stack.Types.Nix",
-            "Stack.Types.Package",
-            "Stack.Types.PackageDump",
-            "Stack.Types.PackageName",
-            "Stack.Types.PrettyPrint",
-            "Stack.Types.Resolver",
-            "Stack.Types.Runner",
-            "Stack.Types.Sig",
-            "Stack.Types.StylesUpdate",
-            "Stack.Types.TemplateName",
-            "Stack.Types.Version",
-            "Stack.Types.VersionIntervals",
-            "Stack.Unpack",
-            "Stack.Upgrade",
-            "Stack.Upload",
-            "Text.PrettyPrint.Leijen.Extended",
-            "System.Permissions",
-            "System.Process.PagerEditor",
-            "System.Terminal"
-        ],
-        "generated-exposed-modules": [
-            "Paths_stack"
-        ],
-        "source-dirs": "src/",
-        "ghc-options": [
-            "-fwarn-identities"
-        ],
-        "when": {
-            "condition": "os(windows)",
-            "then": {
-                "source-dirs": [
-                    "src/windows/"
-                ]
-            },
-            "else": {
-                "source-dirs": [
-                    "src/unix/"
-                ],
-                "c-sources": [
-                    "src/unix/cbits/uname.c"
-                ]
-            }
-        }
-    },
-    "executables": {
-        "stack": {
-            "main": "Main.hs",
-            "generated-other-modules": [
-                "Build_stack",
-                "Paths_stack"
-            ],
-            "source-dirs": [
-                "src/main"
-            ],
-            "ghc-options": [
-                "-threaded",
-                "-rtsopts"
-            ],
-            "dependencies": [
-                "stack"
-            ],
-            "when": [
-                {
-                    "condition": "flag(static)",
-                    "cpp-options": [],
-                    "ld-options": [
-                        "-static",
-                        "-pthread"
-                    ],
-                    "dependencies": []
-                },
-                {
-                    "condition": "!(flag(disable-git-info))",
-                    "cpp-options": [
-                        "-DUSE_GIT_INFO"
-                    ],
-                    "ld-options": [],
-                    "dependencies": [
-                        "githash",
-                        "optparse-simple"
-                    ]
-                },
-                {
-                    "condition": "flag(hide-dependency-versions)",
-                    "cpp-options": [
-                        "-DHIDE_DEP_VERSIONS"
-                    ],
-                    "ld-options": [],
-                    "dependencies": []
-                },
-                {
-                    "condition": "flag(supported-build)",
-                    "cpp-options": [
-                        "-DSUPPORTED_BUILD"
-                    ],
-                    "ld-options": [],
-                    "dependencies": []
-                }
-            ]
-        }
-    },
-    "tests": {
-        "stack-integration-test": {
-            "main": "IntegrationSpec.hs",
-            "source-dirs": [
-                "test/integration",
-                "test/integration/lib"
-            ],
-            "ghc-options": [
-                "-threaded",
-                "-rtsopts",
-                "-with-rtsopts=-N"
-            ],
-            "dependencies": [
-                "hspec"
-            ],
-            "when": {
-                "condition": "!flag(integration-tests)",
-                "buildable": false
-            }
-        },
-        "stack-test": {
-            "main": "Spec.hs",
-            "source-dirs": [
-                "src/test"
-            ],
-            "ghc-options": [
-                "-threaded"
-            ],
-            "dependencies": [
-                "QuickCheck",
-                "hspec",
-                "stack",
-                "smallcheck"
-            ]
-        }
-    }
-}
diff --git a/test/golden/test-files/real-world/stack/stack.yaml b/test/golden/test-files/real-world/stack/stack.yaml
deleted file mode 100644
--- a/test/golden/test-files/real-world/stack/stack.yaml
+++ /dev/null
@@ -1,361 +0,0 @@
-name: stack
-version: 1.10.0
-synopsis: The Haskell Tool Stack
-description: 'Please see the README.md for usage information, and
-
-  the wiki on Github for more details.  Also, note that
-
-  the API for the library is not currently stable, and may
-
-  change significantly, even between minor releases. It is
-
-  currently only intended for use by the executable.'
-category: Development
-homepage: http://haskellstack.org
-author: Commercial Haskell SIG
-maintainer: manny@fpcomplete.com
-license: BSD3
-github: commercialhaskell/stack
-extra-source-files:
-- CONTRIBUTING.md
-- ChangeLog.md
-- README.md
-- doc/*.md
-- src/setup-shim/StackSetupShim.hs
-- stack.yaml
-- test/package-dump/ghc-7.10.txt
-- test/package-dump/ghc-7.8.4-osx.txt
-- test/package-dump/ghc-7.8.txt
-ghc-options:
-- -Wall
-- -fwarn-tabs
-- -fwarn-incomplete-uni-patterns
-- -fwarn-incomplete-record-updates
-- '-optP-Wno-nonportable-include-path # workaround [Filename case on macOS · Issue
-  #4739 · haskell/cabal](https://github.com/haskell/cabal/issues/4739)'
-dependencies:
-- Cabal >= 2.4
-- aeson
-- annotated-wl-pprint
-- ansi-terminal >= 0.8.1
-- array
-- async
-- attoparsec
-- base >=4.10 && < 5
-- base64-bytestring
-- bytestring
-- colour
-- conduit
-- conduit-extra
-- containers
-- cryptonite
-- cryptonite-conduit
-- deepseq
-- directory
-- echo
-- exceptions
-- extra
-- file-embed
-- filelock
-- filepath
-- fsnotify
-- generic-deriving
-- hackage-security
-- hashable
-- hpack
-- hpc
-- http-client
-- http-client-tls
-- http-conduit
-- http-types
-- memory
-- microlens
-- mintty
-- monad-logger
-- mono-traversable
-- mtl
-- mustache
-- neat-interpolation
-- network-uri
-- open-browser
-- optparse-applicative
-- pantry
-- path
-- path-io
-- persistent
-- persistent-sqlite
-- persistent-template
-- pretty
-- primitive
-- process
-- project-template
-- regex-applicative-text
-- resourcet
-- retry >= 0.7
-- rio
-- semigroups
-- split
-- stm
-- store-core
-- streaming-commons
-- tar
-- template-haskell
-- temporary
-- text
-- text-metrics
-- th-reify-many
-- time
-- tls
-- transformers
-- typed-process
-- unicode-transforms
-- unix-compat
-- unliftio >= 0.2.8.0
-- unordered-containers
-- vector
-- yaml
-- zip-archive
-- zlib
-when:
-  condition: os(windows)
-  then:
-    cpp-options:
-    - -DWINDOWS
-    dependencies:
-    - Win32
-  else:
-    dependencies:
-    - unix
-    build-tools:
-    - hsc2hs
-custom-setup:
-  dependencies:
-  - base >=4.10 && < 5
-  - Cabal >= 2.4
-  - filepath
-flags:
-  disable-git-info:
-    description: Disable compile-time inclusion of current git info in stack
-    manual: true
-    default: false
-  hide-dependency-versions:
-    description: Hides dependency versions from "stack --version", used only by building
-      with stack.yaml
-    manual: true
-    default: false
-  integration-tests:
-    description: Run the integration test suite
-    manual: true
-    default: false
-  static:
-    description: Pass -static/-pthread to ghc when linking the stack binary.
-    manual: true
-    default: false
-  supported-build:
-    description: If false, causes "stack --version" to issue a warning about the build
-      being unsupported.  True only if building with stack.yaml
-    manual: true
-    default: false
-library:
-  exposed-modules:
-  - Control.Concurrent.Execute
-  - Data.Attoparsec.Args
-  - Data.Attoparsec.Combinators
-  - Data.Attoparsec.Interpreter
-  - Data.Monoid.Map
-  - Network.HTTP.Download
-  - Network.HTTP.Download.Verified
-  - Network.HTTP.StackClient
-  - Options.Applicative.Args
-  - Options.Applicative.Builder.Extra
-  - Options.Applicative.Complicated
-  - Path.CheckInstall
-  - Path.Extra
-  - Path.Find
-  - Stack.Build
-  - Stack.Build.Cache
-  - Stack.Build.ConstructPlan
-  - Stack.Build.Execute
-  - Stack.Build.Haddock
-  - Stack.Build.Installed
-  - Stack.Build.Source
-  - Stack.Build.Target
-  - Stack.BuildPlan
-  - Stack.Clean
-  - Stack.Config
-  - Stack.Config.Build
-  - Stack.Config.Urls
-  - Stack.Config.Docker
-  - Stack.Config.Nix
-  - Stack.ConfigCmd
-  - Stack.Constants
-  - Stack.Constants.Config
-  - Stack.Coverage
-  - Stack.DefaultColorWhen
-  - Stack.DefaultStyles
-  - Stack.Docker
-  - Stack.Docker.GlobalDB
-  - Stack.Dot
-  - Stack.FileWatch
-  - Stack.Freeze
-  - Stack.GhcPkg
-  - Stack.Ghci
-  - Stack.Ghci.Script
-  - Stack.Hoogle
-  - Stack.IDE
-  - Stack.Image
-  - Stack.Init
-  - Stack.Ls
-  - Stack.New
-  - Stack.Nix
-  - Stack.Options.BenchParser
-  - Stack.Options.BuildMonoidParser
-  - Stack.Options.BuildParser
-  - Stack.Options.CleanParser
-  - Stack.Options.ConfigParser
-  - Stack.Options.Completion
-  - Stack.Options.DockerParser
-  - Stack.Options.DotParser
-  - Stack.Options.ExecParser
-  - Stack.Options.FreezeParser
-  - Stack.Options.GhcBuildParser
-  - Stack.Options.GhciParser
-  - Stack.Options.GhcVariantParser
-  - Stack.Options.GlobalParser
-  - Stack.Options.HaddockParser
-  - Stack.Options.HpcReportParser
-  - Stack.Options.LogLevelParser
-  - Stack.Options.NewParser
-  - Stack.Options.NixParser
-  - Stack.Options.PackageParser
-  - Stack.Options.ResolverParser
-  - Stack.Options.ScriptParser
-  - Stack.Options.SDistParser
-  - Stack.Options.SolverParser
-  - Stack.Options.TestParser
-  - Stack.Options.Utils
-  - Stack.Package
-  - Stack.PackageDump
-  - Stack.Path
-  - Stack.Prelude
-  - Stack.PrettyPrint
-  - Stack.Runners
-  - Stack.Script
-  - Stack.SDist
-  - Stack.Setup
-  - Stack.Setup.Installed
-  - Stack.SetupCmd
-  - Stack.Sig
-  - Stack.Sig.GPG
-  - Stack.Sig.Sign
-  - Stack.Snapshot
-  - Stack.Solver
-  - Stack.StoreTH
-  - Stack.Types.Build
-  - Stack.Types.BuildPlan
-  - Stack.Types.CompilerBuild
-  - Stack.Types.Urls
-  - Stack.Types.Compiler
-  - Stack.Types.Config
-  - Stack.Types.Config.Build
-  - Stack.Types.Docker
-  - Stack.Types.GhcPkgId
-  - Stack.Types.Image
-  - Stack.Types.NamedComponent
-  - Stack.Types.Nix
-  - Stack.Types.Package
-  - Stack.Types.PackageDump
-  - Stack.Types.PackageName
-  - Stack.Types.PrettyPrint
-  - Stack.Types.Resolver
-  - Stack.Types.Runner
-  - Stack.Types.Sig
-  - Stack.Types.StylesUpdate
-  - Stack.Types.TemplateName
-  - Stack.Types.Version
-  - Stack.Types.VersionIntervals
-  - Stack.Unpack
-  - Stack.Upgrade
-  - Stack.Upload
-  - Text.PrettyPrint.Leijen.Extended
-  - System.Permissions
-  - System.Process.PagerEditor
-  - System.Terminal
-  generated-exposed-modules:
-  - Paths_stack
-  source-dirs: src/
-  ghc-options:
-  - -fwarn-identities
-  when:
-    condition: os(windows)
-    then:
-      source-dirs:
-      - src/windows/
-    else:
-      source-dirs:
-      - src/unix/
-      c-sources:
-      - src/unix/cbits/uname.c
-executables:
-  stack:
-    main: Main.hs
-    generated-other-modules:
-    - Build_stack
-    - Paths_stack
-    source-dirs:
-    - src/main
-    ghc-options:
-    - -threaded
-    - -rtsopts
-    dependencies:
-    - stack
-    when:
-    - condition: flag(static)
-      cpp-options: []
-      ld-options:
-      - -static
-      - -pthread
-      dependencies: []
-    - condition: '!(flag(disable-git-info))'
-      cpp-options:
-      - -DUSE_GIT_INFO
-      ld-options: []
-      dependencies:
-      - githash
-      - optparse-simple
-    - condition: flag(hide-dependency-versions)
-      cpp-options:
-      - -DHIDE_DEP_VERSIONS
-      ld-options: []
-      dependencies: []
-    - condition: flag(supported-build)
-      cpp-options:
-      - -DSUPPORTED_BUILD
-      ld-options: []
-      dependencies: []
-tests:
-  stack-integration-test:
-    main: IntegrationSpec.hs
-    source-dirs:
-    - test/integration
-    - test/integration/lib
-    ghc-options:
-    - -threaded
-    - -rtsopts
-    - -with-rtsopts=-N
-    dependencies:
-    - hspec
-    when:
-      condition: '!flag(integration-tests)'
-      buildable: false
-  stack-test:
-    main: Spec.hs
-    source-dirs:
-    - src/test
-    ghc-options:
-    - -threaded
-    dependencies:
-    - QuickCheck
-    - hspec
-    - stack
-    - smallcheck
diff --git a/test/golden/test-files/real-world/stack/stack.yaml.cabal b/test/golden/test-files/real-world/stack/stack.yaml.cabal
deleted file mode 100644
--- a/test/golden/test-files/real-world/stack/stack.yaml.cabal
+++ /dev/null
@@ -1,629 +0,0 @@
-cabal-version: 2.0
-
--- This file has been generated from stack.yaml by hpack version 0.31.2.
---
--- see: https://github.com/sol/hpack
---
--- hash: 33d90e3e81d97f3c404a9e20246cf4aa6942dc054db675cadd50b1edd68582ce
-
-name:           stack
-version:        1.10.0
-synopsis:       The Haskell Tool Stack
-description:    Please see the README.md for usage information, and
-                the wiki on Github for more details.  Also, note that
-                the API for the library is not currently stable, and may
-                change significantly, even between minor releases. It is
-                currently only intended for use by the executable.
-category:       Development
-homepage:       http://haskellstack.org
-bug-reports:    https://github.com/commercialhaskell/stack/issues
-author:         Commercial Haskell SIG
-maintainer:     manny@fpcomplete.com
-license:        BSD3
-build-type:     Custom
-extra-source-files:
-    CONTRIBUTING.md
-    ChangeLog.md
-    README.md
-    src/setup-shim/StackSetupShim.hs
-    stack.yaml
-    test/package-dump/ghc-7.10.txt
-    test/package-dump/ghc-7.8.4-osx.txt
-    test/package-dump/ghc-7.8.txt
-
-source-repository head
-  type: git
-  location: https://github.com/commercialhaskell/stack
-
-custom-setup
-  setup-depends:
-      Cabal >=2.4
-    , base >=4.10 && <5
-    , filepath
-
-flag disable-git-info
-  description: Disable compile-time inclusion of current git info in stack
-  manual: True
-  default: False
-
-flag hide-dependency-versions
-  description: Hides dependency versions from "stack --version", used only by building with stack.yaml
-  manual: True
-  default: False
-
-flag integration-tests
-  description: Run the integration test suite
-  manual: True
-  default: False
-
-flag static
-  description: Pass -static/-pthread to ghc when linking the stack binary.
-  manual: True
-  default: False
-
-flag supported-build
-  description: If false, causes "stack --version" to issue a warning about the build being unsupported.  True only if building with stack.yaml
-  manual: True
-  default: False
-
-library
-  exposed-modules:
-      Control.Concurrent.Execute
-      Data.Attoparsec.Args
-      Data.Attoparsec.Combinators
-      Data.Attoparsec.Interpreter
-      Data.Monoid.Map
-      Network.HTTP.Download
-      Network.HTTP.Download.Verified
-      Network.HTTP.StackClient
-      Options.Applicative.Args
-      Options.Applicative.Builder.Extra
-      Options.Applicative.Complicated
-      Path.CheckInstall
-      Path.Extra
-      Path.Find
-      Stack.Build
-      Stack.Build.Cache
-      Stack.Build.ConstructPlan
-      Stack.Build.Execute
-      Stack.Build.Haddock
-      Stack.Build.Installed
-      Stack.Build.Source
-      Stack.Build.Target
-      Stack.BuildPlan
-      Stack.Clean
-      Stack.Config
-      Stack.Config.Build
-      Stack.Config.Urls
-      Stack.Config.Docker
-      Stack.Config.Nix
-      Stack.ConfigCmd
-      Stack.Constants
-      Stack.Constants.Config
-      Stack.Coverage
-      Stack.DefaultColorWhen
-      Stack.DefaultStyles
-      Stack.Docker
-      Stack.Docker.GlobalDB
-      Stack.Dot
-      Stack.FileWatch
-      Stack.Freeze
-      Stack.GhcPkg
-      Stack.Ghci
-      Stack.Ghci.Script
-      Stack.Hoogle
-      Stack.IDE
-      Stack.Image
-      Stack.Init
-      Stack.Ls
-      Stack.New
-      Stack.Nix
-      Stack.Options.BenchParser
-      Stack.Options.BuildMonoidParser
-      Stack.Options.BuildParser
-      Stack.Options.CleanParser
-      Stack.Options.ConfigParser
-      Stack.Options.Completion
-      Stack.Options.DockerParser
-      Stack.Options.DotParser
-      Stack.Options.ExecParser
-      Stack.Options.FreezeParser
-      Stack.Options.GhcBuildParser
-      Stack.Options.GhciParser
-      Stack.Options.GhcVariantParser
-      Stack.Options.GlobalParser
-      Stack.Options.HaddockParser
-      Stack.Options.HpcReportParser
-      Stack.Options.LogLevelParser
-      Stack.Options.NewParser
-      Stack.Options.NixParser
-      Stack.Options.PackageParser
-      Stack.Options.ResolverParser
-      Stack.Options.ScriptParser
-      Stack.Options.SDistParser
-      Stack.Options.SolverParser
-      Stack.Options.TestParser
-      Stack.Options.Utils
-      Stack.Package
-      Stack.PackageDump
-      Stack.Path
-      Stack.Prelude
-      Stack.PrettyPrint
-      Stack.Runners
-      Stack.Script
-      Stack.SDist
-      Stack.Setup
-      Stack.Setup.Installed
-      Stack.SetupCmd
-      Stack.Sig
-      Stack.Sig.GPG
-      Stack.Sig.Sign
-      Stack.Snapshot
-      Stack.Solver
-      Stack.StoreTH
-      Stack.Types.Build
-      Stack.Types.BuildPlan
-      Stack.Types.CompilerBuild
-      Stack.Types.Urls
-      Stack.Types.Compiler
-      Stack.Types.Config
-      Stack.Types.Config.Build
-      Stack.Types.Docker
-      Stack.Types.GhcPkgId
-      Stack.Types.Image
-      Stack.Types.NamedComponent
-      Stack.Types.Nix
-      Stack.Types.Package
-      Stack.Types.PackageDump
-      Stack.Types.PackageName
-      Stack.Types.PrettyPrint
-      Stack.Types.Resolver
-      Stack.Types.Runner
-      Stack.Types.Sig
-      Stack.Types.StylesUpdate
-      Stack.Types.TemplateName
-      Stack.Types.Version
-      Stack.Types.VersionIntervals
-      Stack.Unpack
-      Stack.Upgrade
-      Stack.Upload
-      Text.PrettyPrint.Leijen.Extended
-      System.Permissions
-      System.Process.PagerEditor
-      System.Terminal
-      Paths_stack
-  autogen-modules:
-      Paths_stack
-  hs-source-dirs:
-      src/
-  ghc-options: -Wall -fwarn-tabs -fwarn-incomplete-uni-patterns -fwarn-incomplete-record-updates -optP-Wno-nonportable-include-path # workaround [Filename case on macOS · Issue #4739 · haskell/cabal](https://github.com/haskell/cabal/issues/4739) -fwarn-identities
-  build-depends:
-      Cabal >=2.4
-    , aeson
-    , annotated-wl-pprint
-    , ansi-terminal >=0.8.1
-    , array
-    , async
-    , attoparsec
-    , base >=4.10 && <5
-    , base64-bytestring
-    , bytestring
-    , colour
-    , conduit
-    , conduit-extra
-    , containers
-    , cryptonite
-    , cryptonite-conduit
-    , deepseq
-    , directory
-    , echo
-    , exceptions
-    , extra
-    , file-embed
-    , filelock
-    , filepath
-    , fsnotify
-    , generic-deriving
-    , hackage-security
-    , hashable
-    , hpack
-    , hpc
-    , http-client
-    , http-client-tls
-    , http-conduit
-    , http-types
-    , memory
-    , microlens
-    , mintty
-    , monad-logger
-    , mono-traversable
-    , mtl
-    , mustache
-    , neat-interpolation
-    , network-uri
-    , open-browser
-    , optparse-applicative
-    , pantry
-    , path
-    , path-io
-    , persistent
-    , persistent-sqlite
-    , persistent-template
-    , pretty
-    , primitive
-    , process
-    , project-template
-    , regex-applicative-text
-    , resourcet
-    , retry >=0.7
-    , rio
-    , semigroups
-    , split
-    , stm
-    , store-core
-    , streaming-commons
-    , tar
-    , template-haskell
-    , temporary
-    , text
-    , text-metrics
-    , th-reify-many
-    , time
-    , tls
-    , transformers
-    , typed-process
-    , unicode-transforms
-    , unix-compat
-    , unliftio >=0.2.8.0
-    , unordered-containers
-    , vector
-    , yaml
-    , zip-archive
-    , zlib
-  if os(windows)
-    cpp-options: -DWINDOWS
-    build-depends:
-        Win32
-  else
-    build-tools:
-        hsc2hs
-    build-depends:
-        unix
-  if os(windows)
-    hs-source-dirs:
-        src/windows/
-  else
-    hs-source-dirs:
-        src/unix/
-    c-sources:
-        src/unix/cbits/uname.c
-  default-language: Haskell2010
-
-executable stack
-  main-is: Main.hs
-  other-modules:
-      Build_stack
-      Paths_stack
-  autogen-modules:
-      Build_stack
-      Paths_stack
-  hs-source-dirs:
-      src/main
-  ghc-options: -Wall -fwarn-tabs -fwarn-incomplete-uni-patterns -fwarn-incomplete-record-updates -optP-Wno-nonportable-include-path # workaround [Filename case on macOS · Issue #4739 · haskell/cabal](https://github.com/haskell/cabal/issues/4739) -threaded -rtsopts
-  build-depends:
-      Cabal >=2.4
-    , aeson
-    , annotated-wl-pprint
-    , ansi-terminal >=0.8.1
-    , array
-    , async
-    , attoparsec
-    , base >=4.10 && <5
-    , base64-bytestring
-    , bytestring
-    , colour
-    , conduit
-    , conduit-extra
-    , containers
-    , cryptonite
-    , cryptonite-conduit
-    , deepseq
-    , directory
-    , echo
-    , exceptions
-    , extra
-    , file-embed
-    , filelock
-    , filepath
-    , fsnotify
-    , generic-deriving
-    , hackage-security
-    , hashable
-    , hpack
-    , hpc
-    , http-client
-    , http-client-tls
-    , http-conduit
-    , http-types
-    , memory
-    , microlens
-    , mintty
-    , monad-logger
-    , mono-traversable
-    , mtl
-    , mustache
-    , neat-interpolation
-    , network-uri
-    , open-browser
-    , optparse-applicative
-    , pantry
-    , path
-    , path-io
-    , persistent
-    , persistent-sqlite
-    , persistent-template
-    , pretty
-    , primitive
-    , process
-    , project-template
-    , regex-applicative-text
-    , resourcet
-    , retry >=0.7
-    , rio
-    , semigroups
-    , split
-    , stack
-    , stm
-    , store-core
-    , streaming-commons
-    , tar
-    , template-haskell
-    , temporary
-    , text
-    , text-metrics
-    , th-reify-many
-    , time
-    , tls
-    , transformers
-    , typed-process
-    , unicode-transforms
-    , unix-compat
-    , unliftio >=0.2.8.0
-    , unordered-containers
-    , vector
-    , yaml
-    , zip-archive
-    , zlib
-  if os(windows)
-    cpp-options: -DWINDOWS
-    build-depends:
-        Win32
-  else
-    build-tools:
-        hsc2hs
-    build-depends:
-        unix
-  if flag(static)
-    ld-options: -static -pthread
-  if !(flag(disable-git-info))
-    cpp-options: -DUSE_GIT_INFO
-    build-depends:
-        githash
-      , optparse-simple
-  if flag(hide-dependency-versions)
-    cpp-options: -DHIDE_DEP_VERSIONS
-  if flag(supported-build)
-    cpp-options: -DSUPPORTED_BUILD
-  default-language: Haskell2010
-
-test-suite stack-integration-test
-  type: exitcode-stdio-1.0
-  main-is: IntegrationSpec.hs
-  other-modules:
-      Paths_stack
-  hs-source-dirs:
-      test/integration
-      test/integration/lib
-  ghc-options: -Wall -fwarn-tabs -fwarn-incomplete-uni-patterns -fwarn-incomplete-record-updates -optP-Wno-nonportable-include-path # workaround [Filename case on macOS · Issue #4739 · haskell/cabal](https://github.com/haskell/cabal/issues/4739) -threaded -rtsopts -with-rtsopts=-N
-  build-depends:
-      Cabal >=2.4
-    , aeson
-    , annotated-wl-pprint
-    , ansi-terminal >=0.8.1
-    , array
-    , async
-    , attoparsec
-    , base >=4.10 && <5
-    , base64-bytestring
-    , bytestring
-    , colour
-    , conduit
-    , conduit-extra
-    , containers
-    , cryptonite
-    , cryptonite-conduit
-    , deepseq
-    , directory
-    , echo
-    , exceptions
-    , extra
-    , file-embed
-    , filelock
-    , filepath
-    , fsnotify
-    , generic-deriving
-    , hackage-security
-    , hashable
-    , hpack
-    , hpc
-    , hspec
-    , http-client
-    , http-client-tls
-    , http-conduit
-    , http-types
-    , memory
-    , microlens
-    , mintty
-    , monad-logger
-    , mono-traversable
-    , mtl
-    , mustache
-    , neat-interpolation
-    , network-uri
-    , open-browser
-    , optparse-applicative
-    , pantry
-    , path
-    , path-io
-    , persistent
-    , persistent-sqlite
-    , persistent-template
-    , pretty
-    , primitive
-    , process
-    , project-template
-    , regex-applicative-text
-    , resourcet
-    , retry >=0.7
-    , rio
-    , semigroups
-    , split
-    , stm
-    , store-core
-    , streaming-commons
-    , tar
-    , template-haskell
-    , temporary
-    , text
-    , text-metrics
-    , th-reify-many
-    , time
-    , tls
-    , transformers
-    , typed-process
-    , unicode-transforms
-    , unix-compat
-    , unliftio >=0.2.8.0
-    , unordered-containers
-    , vector
-    , yaml
-    , zip-archive
-    , zlib
-  if os(windows)
-    cpp-options: -DWINDOWS
-    build-depends:
-        Win32
-  else
-    build-tools:
-        hsc2hs
-    build-depends:
-        unix
-  if !flag(integration-tests)
-    buildable: False
-  default-language: Haskell2010
-
-test-suite stack-test
-  type: exitcode-stdio-1.0
-  main-is: Spec.hs
-  other-modules:
-      Paths_stack
-  hs-source-dirs:
-      src/test
-  ghc-options: -Wall -fwarn-tabs -fwarn-incomplete-uni-patterns -fwarn-incomplete-record-updates -optP-Wno-nonportable-include-path # workaround [Filename case on macOS · Issue #4739 · haskell/cabal](https://github.com/haskell/cabal/issues/4739) -threaded
-  build-depends:
-      Cabal >=2.4
-    , QuickCheck
-    , aeson
-    , annotated-wl-pprint
-    , ansi-terminal >=0.8.1
-    , array
-    , async
-    , attoparsec
-    , base >=4.10 && <5
-    , base64-bytestring
-    , bytestring
-    , colour
-    , conduit
-    , conduit-extra
-    , containers
-    , cryptonite
-    , cryptonite-conduit
-    , deepseq
-    , directory
-    , echo
-    , exceptions
-    , extra
-    , file-embed
-    , filelock
-    , filepath
-    , fsnotify
-    , generic-deriving
-    , hackage-security
-    , hashable
-    , hpack
-    , hpc
-    , hspec
-    , http-client
-    , http-client-tls
-    , http-conduit
-    , http-types
-    , memory
-    , microlens
-    , mintty
-    , monad-logger
-    , mono-traversable
-    , mtl
-    , mustache
-    , neat-interpolation
-    , network-uri
-    , open-browser
-    , optparse-applicative
-    , pantry
-    , path
-    , path-io
-    , persistent
-    , persistent-sqlite
-    , persistent-template
-    , pretty
-    , primitive
-    , process
-    , project-template
-    , regex-applicative-text
-    , resourcet
-    , retry >=0.7
-    , rio
-    , semigroups
-    , smallcheck
-    , split
-    , stack
-    , stm
-    , store-core
-    , streaming-commons
-    , tar
-    , template-haskell
-    , temporary
-    , text
-    , text-metrics
-    , th-reify-many
-    , time
-    , tls
-    , transformers
-    , typed-process
-    , unicode-transforms
-    , unix-compat
-    , unliftio >=0.2.8.0
-    , unordered-containers
-    , vector
-    , yaml
-    , zip-archive
-    , zlib
-  if os(windows)
-    cpp-options: -DWINDOWS
-    build-depends:
-        Win32
-  else
-    build-tools:
-        hsc2hs
-    build-depends:
-        unix
-  default-language: Haskell2010
diff --git a/test/golden/test-files/real-world/stack/stack.yaml.golden b/test/golden/test-files/real-world/stack/stack.yaml.golden
deleted file mode 100644
--- a/test/golden/test-files/real-world/stack/stack.yaml.golden
+++ /dev/null
@@ -1,361 +0,0 @@
-name: stack
-version: 1.10.0
-synopsis: The Haskell Tool Stack
-description: 'Please see the README.md for usage information, and
-
-  the wiki on Github for more details.  Also, note that
-
-  the API for the library is not currently stable, and may
-
-  change significantly, even between minor releases. It is
-
-  currently only intended for use by the executable.'
-category: Development
-homepage: http://haskellstack.org
-author: Commercial Haskell SIG
-maintainer: manny@fpcomplete.com
-license: BSD3
-github: commercialhaskell/stack
-extra-source-files:
-- CONTRIBUTING.md
-- ChangeLog.md
-- README.md
-- doc/*.md
-- src/setup-shim/StackSetupShim.hs
-- stack.yaml
-- test/package-dump/ghc-7.10.txt
-- test/package-dump/ghc-7.8.4-osx.txt
-- test/package-dump/ghc-7.8.txt
-ghc-options:
-- -Wall
-- -fwarn-tabs
-- -fwarn-incomplete-uni-patterns
-- -fwarn-incomplete-record-updates
-- '-optP-Wno-nonportable-include-path # workaround [Filename case on macOS · Issue
-  #4739 · haskell/cabal](https://github.com/haskell/cabal/issues/4739)'
-dependencies:
-- Cabal >= 2.4
-- aeson
-- annotated-wl-pprint
-- ansi-terminal >= 0.8.1
-- array
-- async
-- attoparsec
-- base >=4.10 && < 5
-- base64-bytestring
-- bytestring
-- colour
-- conduit
-- conduit-extra
-- containers
-- cryptonite
-- cryptonite-conduit
-- deepseq
-- directory
-- echo
-- exceptions
-- extra
-- file-embed
-- filelock
-- filepath
-- fsnotify
-- generic-deriving
-- hackage-security
-- hashable
-- hpack
-- hpc
-- http-client
-- http-client-tls
-- http-conduit
-- http-types
-- memory
-- microlens
-- mintty
-- monad-logger
-- mono-traversable
-- mtl
-- mustache
-- neat-interpolation
-- network-uri
-- open-browser
-- optparse-applicative
-- pantry
-- path
-- path-io
-- persistent
-- persistent-sqlite
-- persistent-template
-- pretty
-- primitive
-- process
-- project-template
-- regex-applicative-text
-- resourcet
-- retry >= 0.7
-- rio
-- semigroups
-- split
-- stm
-- store-core
-- streaming-commons
-- tar
-- template-haskell
-- temporary
-- text
-- text-metrics
-- th-reify-many
-- time
-- tls
-- transformers
-- typed-process
-- unicode-transforms
-- unix-compat
-- unliftio >= 0.2.8.0
-- unordered-containers
-- vector
-- yaml
-- zip-archive
-- zlib
-when:
-  condition: os(windows)
-  then:
-    cpp-options:
-    - -DWINDOWS
-    dependencies:
-    - Win32
-  else:
-    dependencies:
-    - unix
-    build-tools:
-    - hsc2hs
-custom-setup:
-  dependencies:
-  - base >=4.10 && < 5
-  - Cabal >= 2.4
-  - filepath
-flags:
-  disable-git-info:
-    description: Disable compile-time inclusion of current git info in stack
-    manual: true
-    default: false
-  hide-dependency-versions:
-    description: Hides dependency versions from "stack --version", used only by building
-      with stack.yaml
-    manual: true
-    default: false
-  integration-tests:
-    description: Run the integration test suite
-    manual: true
-    default: false
-  static:
-    description: Pass -static/-pthread to ghc when linking the stack binary.
-    manual: true
-    default: false
-  supported-build:
-    description: If false, causes "stack --version" to issue a warning about the build
-      being unsupported.  True only if building with stack.yaml
-    manual: true
-    default: false
-library:
-  exposed-modules:
-  - Control.Concurrent.Execute
-  - Data.Attoparsec.Args
-  - Data.Attoparsec.Combinators
-  - Data.Attoparsec.Interpreter
-  - Data.Monoid.Map
-  - Network.HTTP.Download
-  - Network.HTTP.Download.Verified
-  - Network.HTTP.StackClient
-  - Options.Applicative.Args
-  - Options.Applicative.Builder.Extra
-  - Options.Applicative.Complicated
-  - Path.CheckInstall
-  - Path.Extra
-  - Path.Find
-  - Stack.Build
-  - Stack.Build.Cache
-  - Stack.Build.ConstructPlan
-  - Stack.Build.Execute
-  - Stack.Build.Haddock
-  - Stack.Build.Installed
-  - Stack.Build.Source
-  - Stack.Build.Target
-  - Stack.BuildPlan
-  - Stack.Clean
-  - Stack.Config
-  - Stack.Config.Build
-  - Stack.Config.Urls
-  - Stack.Config.Docker
-  - Stack.Config.Nix
-  - Stack.ConfigCmd
-  - Stack.Constants
-  - Stack.Constants.Config
-  - Stack.Coverage
-  - Stack.DefaultColorWhen
-  - Stack.DefaultStyles
-  - Stack.Docker
-  - Stack.Docker.GlobalDB
-  - Stack.Dot
-  - Stack.FileWatch
-  - Stack.Freeze
-  - Stack.GhcPkg
-  - Stack.Ghci
-  - Stack.Ghci.Script
-  - Stack.Hoogle
-  - Stack.IDE
-  - Stack.Image
-  - Stack.Init
-  - Stack.Ls
-  - Stack.New
-  - Stack.Nix
-  - Stack.Options.BenchParser
-  - Stack.Options.BuildMonoidParser
-  - Stack.Options.BuildParser
-  - Stack.Options.CleanParser
-  - Stack.Options.ConfigParser
-  - Stack.Options.Completion
-  - Stack.Options.DockerParser
-  - Stack.Options.DotParser
-  - Stack.Options.ExecParser
-  - Stack.Options.FreezeParser
-  - Stack.Options.GhcBuildParser
-  - Stack.Options.GhciParser
-  - Stack.Options.GhcVariantParser
-  - Stack.Options.GlobalParser
-  - Stack.Options.HaddockParser
-  - Stack.Options.HpcReportParser
-  - Stack.Options.LogLevelParser
-  - Stack.Options.NewParser
-  - Stack.Options.NixParser
-  - Stack.Options.PackageParser
-  - Stack.Options.ResolverParser
-  - Stack.Options.ScriptParser
-  - Stack.Options.SDistParser
-  - Stack.Options.SolverParser
-  - Stack.Options.TestParser
-  - Stack.Options.Utils
-  - Stack.Package
-  - Stack.PackageDump
-  - Stack.Path
-  - Stack.Prelude
-  - Stack.PrettyPrint
-  - Stack.Runners
-  - Stack.Script
-  - Stack.SDist
-  - Stack.Setup
-  - Stack.Setup.Installed
-  - Stack.SetupCmd
-  - Stack.Sig
-  - Stack.Sig.GPG
-  - Stack.Sig.Sign
-  - Stack.Snapshot
-  - Stack.Solver
-  - Stack.StoreTH
-  - Stack.Types.Build
-  - Stack.Types.BuildPlan
-  - Stack.Types.CompilerBuild
-  - Stack.Types.Urls
-  - Stack.Types.Compiler
-  - Stack.Types.Config
-  - Stack.Types.Config.Build
-  - Stack.Types.Docker
-  - Stack.Types.GhcPkgId
-  - Stack.Types.Image
-  - Stack.Types.NamedComponent
-  - Stack.Types.Nix
-  - Stack.Types.Package
-  - Stack.Types.PackageDump
-  - Stack.Types.PackageName
-  - Stack.Types.PrettyPrint
-  - Stack.Types.Resolver
-  - Stack.Types.Runner
-  - Stack.Types.Sig
-  - Stack.Types.StylesUpdate
-  - Stack.Types.TemplateName
-  - Stack.Types.Version
-  - Stack.Types.VersionIntervals
-  - Stack.Unpack
-  - Stack.Upgrade
-  - Stack.Upload
-  - Text.PrettyPrint.Leijen.Extended
-  - System.Permissions
-  - System.Process.PagerEditor
-  - System.Terminal
-  generated-exposed-modules:
-  - Paths_stack
-  source-dirs: src/
-  ghc-options:
-  - -fwarn-identities
-  when:
-    condition: os(windows)
-    then:
-      source-dirs:
-      - src/windows/
-    else:
-      source-dirs:
-      - src/unix/
-      c-sources:
-      - src/unix/cbits/uname.c
-executables:
-  stack:
-    main: Main.hs
-    generated-other-modules:
-    - Build_stack
-    - Paths_stack
-    source-dirs:
-    - src/main
-    ghc-options:
-    - -threaded
-    - -rtsopts
-    dependencies:
-    - stack
-    when:
-    - condition: flag(static)
-      cpp-options: []
-      ld-options:
-      - -static
-      - -pthread
-      dependencies: []
-    - condition: '!(flag(disable-git-info))'
-      cpp-options:
-      - -DUSE_GIT_INFO
-      ld-options: []
-      dependencies:
-      - githash
-      - optparse-simple
-    - condition: flag(hide-dependency-versions)
-      cpp-options:
-      - -DHIDE_DEP_VERSIONS
-      ld-options: []
-      dependencies: []
-    - condition: flag(supported-build)
-      cpp-options:
-      - -DSUPPORTED_BUILD
-      ld-options: []
-      dependencies: []
-tests:
-  stack-integration-test:
-    main: IntegrationSpec.hs
-    source-dirs:
-    - test/integration
-    - test/integration/lib
-    ghc-options:
-    - -threaded
-    - -rtsopts
-    - -with-rtsopts=-N
-    dependencies:
-    - hspec
-    when:
-      condition: '!flag(integration-tests)'
-      buildable: false
-  stack-test:
-    main: Spec.hs
-    source-dirs:
-    - src/test
-    ghc-options:
-    - -threaded
-    dependencies:
-    - QuickCheck
-    - hspec
-    - stack
-    - smallcheck
