diff --git a/hpack-convert.cabal b/hpack-convert.cabal
--- a/hpack-convert.cabal
+++ b/hpack-convert.cabal
@@ -3,7 +3,7 @@
 -- see: https://github.com/sol/hpack
 
 name:           hpack-convert
-version:        0.14.3
+version:        0.14.4
 synopsis:       Convert Cabal manifests into hpack's package.yamls
 category:       Development
 homepage:       https://github.com/yamadapc/hpack-convert#readme
@@ -13,6 +13,37 @@
 license-file:   LICENSE
 build-type:     Simple
 cabal-version:  >= 1.10
+
+extra-source-files:
+    ./test/data/cabal-init-minimal.cabal
+    ./test/data/cabal-init-minimal.cabal.yaml
+    ./test/data/cabal-init-with-benchmarks.cabal
+    ./test/data/cabal-init-with-benchmarks.cabal.yaml
+    ./test/data/cabal-init-with-conditionals-and-else.cabal
+    ./test/data/cabal-init-with-conditionals-and-else.cabal.yaml
+    ./test/data/cabal-init-with-conditionals-buildable.cabal
+    ./test/data/cabal-init-with-conditionals-buildable.cabal.yaml
+    ./test/data/cabal-init-with-conditionals-buildable2.cabal
+    ./test/data/cabal-init-with-conditionals-buildable2.cabal.yaml
+    ./test/data/cabal-init-with-conditionals-buildable3.cabal
+    ./test/data/cabal-init-with-conditionals-buildable3.cabal.yaml
+    ./test/data/cabal-init-with-conditionals-buildable4.cabal
+    ./test/data/cabal-init-with-conditionals-buildable4.cabal.yaml
+    ./test/data/cabal-init-with-conditionals-buildable5.cabal
+    ./test/data/cabal-init-with-conditionals-buildable5.cabal.yaml
+    ./test/data/cabal-init-with-conditionals.cabal
+    ./test/data/cabal-init-with-conditionals.cabal.yaml
+    ./test/data/cabal-init-with-executables.cabal
+    ./test/data/cabal-init-with-executables.cabal.yaml
+    ./test/data/cabal-init-with-tests.cabal
+    ./test/data/cabal-init-with-tests.cabal.yaml
+    ./test/data/ChangeLog.md
+    ./test/data/docs/stuff
+    ./test/data/getopt-generics.cabal
+    ./test/data/getopt-generics.cabal.yaml
+    ./test/data/hpack.cabal
+    ./test/data/hpack.cabal.yaml
+    ./test/data/LICENSE
 
 source-repository head
   type: git
diff --git a/src/Hpack.hs b/src/Hpack.hs
--- a/src/Hpack.hs
+++ b/src/Hpack.hs
@@ -54,7 +54,7 @@
 
 printHelp :: IO ()
 printHelp = do
-  hPutStrLn stderr $ unlines [
+  hPutStr stderr $ unlines [
       "Usage: hpack-convert [ dir | cabalfile ]"
     , "       hpack-convert --version"
     , "       hpack-convert --help"
diff --git a/test/data/ChangeLog.md b/test/data/ChangeLog.md
new file mode 100644
--- /dev/null
+++ b/test/data/ChangeLog.md
diff --git a/test/data/LICENSE b/test/data/LICENSE
new file mode 100644
--- /dev/null
+++ b/test/data/LICENSE
diff --git a/test/data/cabal-init-minimal.cabal b/test/data/cabal-init-minimal.cabal
new file mode 100644
--- /dev/null
+++ b/test/data/cabal-init-minimal.cabal
@@ -0,0 +1,13 @@
+name:                cabal-init-minimal
+version:             0.1.0.0
+license:             PublicDomain
+author:              Pedro Tacla Yamada
+maintainer:          tacla.yamada@gmail.com
+build-type:          Simple
+extra-source-files:  ChangeLog.md
+cabal-version:       >=1.10
+
+library
+  build-depends:       base >=4.8 && <4.9
+  hs-source-dirs:      src
+  default-language:    Haskell2010
diff --git a/test/data/cabal-init-minimal.cabal.yaml b/test/data/cabal-init-minimal.cabal.yaml
new file mode 100644
--- /dev/null
+++ b/test/data/cabal-init-minimal.cabal.yaml
@@ -0,0 +1,11 @@
+name: cabal-init-minimal
+version: '0.1.0.0'
+author: Pedro Tacla Yamada
+maintainer: tacla.yamada@gmail.com
+license: PublicDomain
+extra-source-files:
+- ChangeLog.md
+dependencies:
+- base >=4.8 && <4.9
+library:
+  source-dirs: src
diff --git a/test/data/cabal-init-with-benchmarks.cabal b/test/data/cabal-init-with-benchmarks.cabal
new file mode 100644
--- /dev/null
+++ b/test/data/cabal-init-with-benchmarks.cabal
@@ -0,0 +1,30 @@
+name:                cabal-init-minimal
+version:             0.1.0.0
+license:             PublicDomain
+author:              Pedro Tacla Yamada
+maintainer:          tacla.yamada@gmail.com
+build-type:          Simple
+extra-source-files:  ChangeLog.md
+cabal-version:       >=1.10
+
+executable hello-world
+  main-is: HelloWorld.hs
+  build-depends: base >=4.8 && <4.9
+  hs-source-dirs: src
+  default-language: Haskell2010
+
+test-suite hello-world-spec
+  main-is: Spec.hs
+  type: exitcode-stdio-1.0
+  build-depends: base >=4.8 && <4.9
+  hs-source-dirs: src
+                , test
+  default-language: Haskell2010
+
+benchmark hello-world-benchmark
+  main-is: Bench.hs
+  type: exitcode-stdio-1.0
+  build-depends: base >=4.8 && <4.9
+  hs-source-dirs: src
+                , benchmarks
+  default-language: Haskell2010
diff --git a/test/data/cabal-init-with-benchmarks.cabal.yaml b/test/data/cabal-init-with-benchmarks.cabal.yaml
new file mode 100644
--- /dev/null
+++ b/test/data/cabal-init-with-benchmarks.cabal.yaml
@@ -0,0 +1,25 @@
+name: cabal-init-minimal
+version: '0.1.0.0'
+author: Pedro Tacla Yamada
+maintainer: tacla.yamada@gmail.com
+license: PublicDomain
+extra-source-files:
+- ChangeLog.md
+dependencies:
+- base >=4.8 && <4.9
+executables:
+  hello-world:
+    main: HelloWorld.hs
+    source-dirs: src
+tests:
+  hello-world-spec:
+    main: Spec.hs
+    source-dirs:
+    - src
+    - test
+benchmarks:
+  hello-world-benchmark:
+    main: Bench.hs
+    source-dirs:
+    - src
+    - benchmarks
diff --git a/test/data/cabal-init-with-conditionals-and-else.cabal b/test/data/cabal-init-with-conditionals-and-else.cabal
new file mode 100644
--- /dev/null
+++ b/test/data/cabal-init-with-conditionals-and-else.cabal
@@ -0,0 +1,19 @@
+name:                cabal-init-minimal
+version:             0.1.0.0
+license:             PublicDomain
+author:              Pedro Tacla Yamada
+maintainer:          tacla.yamada@gmail.com
+build-type:          Simple
+extra-source-files:  ChangeLog.md
+cabal-version:       >=1.10
+
+executable hello-world
+  main-is: HelloWorld.hs
+  build-depends: base >=4.8 && <4.9
+  hs-source-dirs: src
+  default-language: Haskell2010
+
+  if os(darwin)
+     hs-source-dirs: osx
+  else
+     hs-source-dirs: notosx
diff --git a/test/data/cabal-init-with-conditionals-and-else.cabal.yaml b/test/data/cabal-init-with-conditionals-and-else.cabal.yaml
new file mode 100644
--- /dev/null
+++ b/test/data/cabal-init-with-conditionals-and-else.cabal.yaml
@@ -0,0 +1,19 @@
+name: cabal-init-minimal
+version: '0.1.0.0'
+author: Pedro Tacla Yamada
+maintainer: tacla.yamada@gmail.com
+license: PublicDomain
+extra-source-files:
+- ChangeLog.md
+dependencies:
+- base >=4.8 && <4.9
+executables:
+  hello-world:
+    main: HelloWorld.hs
+    source-dirs: src
+    when:
+    - condition: os(osx)
+      then:
+        source-dirs: osx
+      else:
+        source-dirs: notosx
diff --git a/test/data/cabal-init-with-conditionals-buildable.cabal b/test/data/cabal-init-with-conditionals-buildable.cabal
new file mode 100644
--- /dev/null
+++ b/test/data/cabal-init-with-conditionals-buildable.cabal
@@ -0,0 +1,19 @@
+name:                cabal-init-minimal
+version:             0.1.0.0
+license:             PublicDomain
+author:              Pedro Tacla Yamada
+maintainer:          tacla.yamada@gmail.com
+build-type:          Simple
+extra-source-files:  ChangeLog.md
+cabal-version:       >=1.10
+
+executable hello-world
+  main-is: HelloWorld.hs
+  build-depends: base >=4.8 && <4.9
+  hs-source-dirs: src
+  default-language: Haskell2010
+
+  if os(darwin)
+    buildable: True
+  else
+    buildable: False
diff --git a/test/data/cabal-init-with-conditionals-buildable.cabal.yaml b/test/data/cabal-init-with-conditionals-buildable.cabal.yaml
new file mode 100644
--- /dev/null
+++ b/test/data/cabal-init-with-conditionals-buildable.cabal.yaml
@@ -0,0 +1,16 @@
+name: cabal-init-minimal
+version: '0.1.0.0'
+author: Pedro Tacla Yamada
+maintainer: tacla.yamada@gmail.com
+license: PublicDomain
+extra-source-files:
+- ChangeLog.md
+dependencies:
+- base >=4.8 && <4.9
+executables:
+  hello-world:
+    main: HelloWorld.hs
+    source-dirs: src
+    when:
+    - condition: ! '!(os(osx))'
+      buildable: false
diff --git a/test/data/cabal-init-with-conditionals-buildable2.cabal b/test/data/cabal-init-with-conditionals-buildable2.cabal
new file mode 100644
--- /dev/null
+++ b/test/data/cabal-init-with-conditionals-buildable2.cabal
@@ -0,0 +1,29 @@
+name:                cabal-init-minimal
+version:             0.1.0.0
+license:             PublicDomain
+author:              Pedro Tacla Yamada
+maintainer:          tacla.yamada@gmail.com
+build-type:          Simple
+extra-source-files:  ChangeLog.md
+cabal-version:       >=1.10
+
+Flag Something
+  default: False
+
+Flag SomethingElse
+  default: False
+
+executable hello-world
+  main-is: HelloWorld.hs
+  build-depends: base >=4.8 && <4.9
+  hs-source-dirs: src
+  default-language: Haskell2010
+
+  if os(darwin)
+    buildable: True
+    if flag(Something)
+      buildable: True
+      if flag(SomethingElse)
+        buildable: False
+  else
+    buildable: False
diff --git a/test/data/cabal-init-with-conditionals-buildable2.cabal.yaml b/test/data/cabal-init-with-conditionals-buildable2.cabal.yaml
new file mode 100644
--- /dev/null
+++ b/test/data/cabal-init-with-conditionals-buildable2.cabal.yaml
@@ -0,0 +1,32 @@
+name: cabal-init-minimal
+version: '0.1.0.0'
+author: Pedro Tacla Yamada
+maintainer: tacla.yamada@gmail.com
+license: PublicDomain
+extra-source-files:
+- ChangeLog.md
+dependencies:
+- base >=4.8 && <4.9
+executables:
+  hello-world:
+    main: HelloWorld.hs
+    source-dirs: src
+    when:
+    - condition: os(osx)
+      then:
+        when:
+        - condition: flag(something)
+          when:
+          - condition: flag(somethingelse)
+            buildable: false
+      else:
+        buildable: false
+flags:
+  somethingelse:
+    description: null
+    manual: false
+    default: false
+  something:
+    description: null
+    manual: false
+    default: false
diff --git a/test/data/cabal-init-with-conditionals-buildable3.cabal b/test/data/cabal-init-with-conditionals-buildable3.cabal
new file mode 100644
--- /dev/null
+++ b/test/data/cabal-init-with-conditionals-buildable3.cabal
@@ -0,0 +1,30 @@
+name:                cabal-init-minimal
+version:             0.1.0.0
+license:             PublicDomain
+author:              Pedro Tacla Yamada
+maintainer:          tacla.yamada@gmail.com
+build-type:          Simple
+extra-source-files:  ChangeLog.md
+cabal-version:       >=1.10
+
+Flag Something
+  default: False
+
+Flag SomethingElse
+  default: False
+
+executable hello-world
+  main-is: HelloWorld.hs
+  build-depends: base >=4.8 && <4.9
+  hs-source-dirs: src
+  default-language: Haskell2010
+  buildable: False
+
+  if os(darwin)
+    buildable: True
+    if flag(Something)
+      buildable: True
+      if flag(SomethingElse)
+        buildable: False
+  else
+    buildable: False
diff --git a/test/data/cabal-init-with-conditionals-buildable3.cabal.yaml b/test/data/cabal-init-with-conditionals-buildable3.cabal.yaml
new file mode 100644
--- /dev/null
+++ b/test/data/cabal-init-with-conditionals-buildable3.cabal.yaml
@@ -0,0 +1,31 @@
+name: cabal-init-minimal
+version: '0.1.0.0'
+author: Pedro Tacla Yamada
+maintainer: tacla.yamada@gmail.com
+license: PublicDomain
+extra-source-files:
+- ChangeLog.md
+dependencies:
+- base >=4.8 && <4.9
+executables:
+  hello-world:
+    main: HelloWorld.hs
+    source-dirs: src
+    buildable: false
+    when:
+    - condition: os(osx)
+      buildable: true
+      when:
+      - condition: flag(something)
+        when:
+        - condition: flag(somethingelse)
+          buildable: false
+flags:
+  somethingelse:
+    description: null
+    manual: false
+    default: false
+  something:
+    description: null
+    manual: false
+    default: false
diff --git a/test/data/cabal-init-with-conditionals-buildable4.cabal b/test/data/cabal-init-with-conditionals-buildable4.cabal
new file mode 100644
--- /dev/null
+++ b/test/data/cabal-init-with-conditionals-buildable4.cabal
@@ -0,0 +1,19 @@
+name:                cabal-init-minimal
+version:             0.1.0.0
+license:             PublicDomain
+author:              Pedro Tacla Yamada
+maintainer:          tacla.yamada@gmail.com
+build-type:          Simple
+extra-source-files:  ChangeLog.md
+cabal-version:       >=1.10
+
+executable hello-world
+  main-is: HelloWorld.hs
+  build-depends: base >=4.8 && <4.9
+  hs-source-dirs: src
+  default-language: Haskell2010
+
+  if os(darwin)
+    buildable: True
+  if os(linux)
+    buildable: False
diff --git a/test/data/cabal-init-with-conditionals-buildable4.cabal.yaml b/test/data/cabal-init-with-conditionals-buildable4.cabal.yaml
new file mode 100644
--- /dev/null
+++ b/test/data/cabal-init-with-conditionals-buildable4.cabal.yaml
@@ -0,0 +1,16 @@
+name: cabal-init-minimal
+version: '0.1.0.0'
+author: Pedro Tacla Yamada
+maintainer: tacla.yamada@gmail.com
+license: PublicDomain
+extra-source-files:
+- ChangeLog.md
+dependencies:
+- base >=4.8 && <4.9
+executables:
+  hello-world:
+    main: HelloWorld.hs
+    source-dirs: src
+    when:
+    - condition: os(linux)
+      buildable: false
diff --git a/test/data/cabal-init-with-conditionals-buildable5.cabal b/test/data/cabal-init-with-conditionals-buildable5.cabal
new file mode 100644
--- /dev/null
+++ b/test/data/cabal-init-with-conditionals-buildable5.cabal
@@ -0,0 +1,20 @@
+name:                cabal-init-minimal
+version:             0.1.0.0
+license:             PublicDomain
+author:              Pedro Tacla Yamada
+maintainer:          tacla.yamada@gmail.com
+build-type:          Simple
+extra-source-files:  ChangeLog.md
+cabal-version:       >=1.10
+
+executable hello-world
+  main-is: HelloWorld.hs
+  build-depends: base >=4.8 && <4.9
+  hs-source-dirs: src
+  default-language: Haskell2010
+  buildable: False
+
+  if os(darwin)
+    buildable: True
+  if os(linux)
+    buildable: False
diff --git a/test/data/cabal-init-with-conditionals-buildable5.cabal.yaml b/test/data/cabal-init-with-conditionals-buildable5.cabal.yaml
new file mode 100644
--- /dev/null
+++ b/test/data/cabal-init-with-conditionals-buildable5.cabal.yaml
@@ -0,0 +1,17 @@
+name: cabal-init-minimal
+version: '0.1.0.0'
+author: Pedro Tacla Yamada
+maintainer: tacla.yamada@gmail.com
+license: PublicDomain
+extra-source-files:
+- ChangeLog.md
+dependencies:
+- base >=4.8 && <4.9
+executables:
+  hello-world:
+    main: HelloWorld.hs
+    source-dirs: src
+    buildable: false
+    when:
+    - condition: os(osx)
+      buildable: true
diff --git a/test/data/cabal-init-with-conditionals.cabal b/test/data/cabal-init-with-conditionals.cabal
new file mode 100644
--- /dev/null
+++ b/test/data/cabal-init-with-conditionals.cabal
@@ -0,0 +1,17 @@
+name:                cabal-init-minimal
+version:             0.1.0.0
+license:             PublicDomain
+author:              Pedro Tacla Yamada
+maintainer:          tacla.yamada@gmail.com
+build-type:          Simple
+extra-source-files:  ChangeLog.md
+cabal-version:       >=1.10
+
+executable hello-world
+  main-is: HelloWorld.hs
+  build-depends: base >=4.8 && <4.9
+  hs-source-dirs: src
+  default-language: Haskell2010
+
+  if os(darwin)
+     buildable: False
diff --git a/test/data/cabal-init-with-conditionals.cabal.yaml b/test/data/cabal-init-with-conditionals.cabal.yaml
new file mode 100644
--- /dev/null
+++ b/test/data/cabal-init-with-conditionals.cabal.yaml
@@ -0,0 +1,16 @@
+name: cabal-init-minimal
+version: '0.1.0.0'
+author: Pedro Tacla Yamada
+maintainer: tacla.yamada@gmail.com
+license: PublicDomain
+extra-source-files:
+- ChangeLog.md
+dependencies:
+- base >=4.8 && <4.9
+executables:
+  hello-world:
+    main: HelloWorld.hs
+    source-dirs: src
+    when:
+    - condition: os(osx)
+      buildable: false
diff --git a/test/data/cabal-init-with-executables.cabal b/test/data/cabal-init-with-executables.cabal
new file mode 100644
--- /dev/null
+++ b/test/data/cabal-init-with-executables.cabal
@@ -0,0 +1,14 @@
+name:                cabal-init-minimal
+version:             0.1.0.0
+license:             PublicDomain
+author:              Pedro Tacla Yamada
+maintainer:          tacla.yamada@gmail.com
+build-type:          Simple
+extra-source-files:  ChangeLog.md
+cabal-version:       >=1.10
+
+executable hello-world
+  main-is: HelloWorld.hs
+  build-depends: base >=4.8 && <4.9
+  hs-source-dirs: src
+  default-language: Haskell2010
diff --git a/test/data/cabal-init-with-executables.cabal.yaml b/test/data/cabal-init-with-executables.cabal.yaml
new file mode 100644
--- /dev/null
+++ b/test/data/cabal-init-with-executables.cabal.yaml
@@ -0,0 +1,13 @@
+name: cabal-init-minimal
+version: '0.1.0.0'
+author: Pedro Tacla Yamada
+maintainer: tacla.yamada@gmail.com
+license: PublicDomain
+extra-source-files:
+- ChangeLog.md
+dependencies:
+- base >=4.8 && <4.9
+executables:
+  hello-world:
+    main: HelloWorld.hs
+    source-dirs: src
diff --git a/test/data/cabal-init-with-tests.cabal b/test/data/cabal-init-with-tests.cabal
new file mode 100644
--- /dev/null
+++ b/test/data/cabal-init-with-tests.cabal
@@ -0,0 +1,22 @@
+name:                cabal-init-minimal
+version:             0.1.0.0
+license:             PublicDomain
+author:              Pedro Tacla Yamada
+maintainer:          tacla.yamada@gmail.com
+build-type:          Simple
+extra-source-files:  ChangeLog.md
+cabal-version:       >=1.10
+
+executable hello-world
+  main-is: HelloWorld.hs
+  build-depends: base >=4.8 && <4.9
+  hs-source-dirs: src
+  default-language: Haskell2010
+
+test-suite hello-world-spec
+  main-is: Spec.hs
+  type: exitcode-stdio-1.0
+  build-depends: base >=4.8 && <4.9
+  hs-source-dirs: src
+                , test
+  default-language: Haskell2010
diff --git a/test/data/cabal-init-with-tests.cabal.yaml b/test/data/cabal-init-with-tests.cabal.yaml
new file mode 100644
--- /dev/null
+++ b/test/data/cabal-init-with-tests.cabal.yaml
@@ -0,0 +1,19 @@
+name: cabal-init-minimal
+version: '0.1.0.0'
+author: Pedro Tacla Yamada
+maintainer: tacla.yamada@gmail.com
+license: PublicDomain
+extra-source-files:
+- ChangeLog.md
+dependencies:
+- base >=4.8 && <4.9
+executables:
+  hello-world:
+    main: HelloWorld.hs
+    source-dirs: src
+tests:
+  hello-world-spec:
+    main: Spec.hs
+    source-dirs:
+    - src
+    - test
diff --git a/test/data/docs/stuff b/test/data/docs/stuff
new file mode 100644
--- /dev/null
+++ b/test/data/docs/stuff
diff --git a/test/data/getopt-generics.cabal b/test/data/getopt-generics.cabal
new file mode 100644
--- /dev/null
+++ b/test/data/getopt-generics.cabal
@@ -0,0 +1,106 @@
+-- This file has been generated from package.yaml by hpack version 0.5.4.
+--
+-- see: https://github.com/sol/hpack
+
+name:           getopt-generics
+version:        0.13
+synopsis:       Create command line interfaces with ease
+description:    Create command line interfaces with ease
+category:       Console, System
+homepage:       https://github.com/soenkehahn/getopt-generics#readme
+bug-reports:    https://github.com/soenkehahn/getopt-generics/issues
+author:         Linh Nguyen, Sönke Hahn
+maintainer:     linh.nguyen@zalora.com, soenkehahn@gmail.com
+copyright:      Zalora South East Asia Pte Ltd
+license:        BSD3
+license-file:   LICENSE
+build-type:     Simple
+cabal-version:  >=1.10
+
+extra-source-files:
+    docs/stuff
+
+source-repository head
+  type: git
+  location: https://github.com/soenkehahn/getopt-generics
+
+library
+  hs-source-dirs:
+      src
+  ghc-options: -Wall -fno-warn-name-shadowing
+  build-depends:
+      base ==4.*
+    , base-compat >=0.8
+    , base-orphans
+    , generics-sop >=0.1 && <0.3
+    , tagged
+  exposed-modules:
+      WithCli
+      WithCli.Pure
+  other-modules:
+      WithCli.Argument
+      WithCli.Flag
+      WithCli.HasArguments
+      WithCli.Modifier
+      WithCli.Modifier.Types
+      WithCli.Normalize
+      WithCli.Parser
+      WithCli.Pure.Internal
+      WithCli.Result
+  default-language: Haskell2010
+
+test-suite spec
+  type: exitcode-stdio-1.0
+  main-is: Spec.hs
+  hs-source-dirs:
+      src
+    , test
+    , docs
+  ghc-options: -Wall -fno-warn-name-shadowing -threaded -O0
+  build-depends:
+      base ==4.*
+    , base-compat >=0.8
+    , base-orphans
+    , generics-sop >=0.1 && <0.3
+    , tagged
+    , hspec >=2.1.8
+    , QuickCheck
+    , silently
+    , filepath
+    , safe
+  other-modules:
+      WithCli
+      WithCli.Argument
+      WithCli.Flag
+      WithCli.HasArguments
+      WithCli.Modifier
+      WithCli.Modifier.Types
+      WithCli.Normalize
+      WithCli.Parser
+      WithCli.Pure
+      WithCli.Pure.Internal
+      WithCli.Result
+      DocsSpec
+      ModifiersSpec
+      ModifiersSpec.RenameOptionsSpec
+      ModifiersSpec.UseForPositionalArgumentsSpec
+      ShellProtocol
+      Util
+      WithCli.ArgumentSpec
+      WithCli.HasArgumentsSpec
+      WithCli.ModifierSpec
+      WithCli.NormalizeSpec
+      WithCli.ParserSpec
+      WithCli.Pure.RecordSpec
+      WithCli.PureSpec
+      WithCli.ResultSpec
+      WithCliSpec
+      CustomOption
+      CustomOptionRecord
+      RecordType
+      Simple
+      Test01
+      Test02
+      Test03
+      Test04
+  default-language: Haskell2010
diff --git a/test/data/getopt-generics.cabal.yaml b/test/data/getopt-generics.cabal.yaml
new file mode 100644
--- /dev/null
+++ b/test/data/getopt-generics.cabal.yaml
@@ -0,0 +1,42 @@
+name: getopt-generics
+version: '0.13'
+synopsis: Create command line interfaces with ease
+description: Create command line interfaces with ease
+category: Console, System
+author: Linh Nguyen, Sönke Hahn
+maintainer: linh.nguyen@zalora.com, soenkehahn@gmail.com
+copyright: Zalora South East Asia Pte Ltd
+license: BSD3
+github: soenkehahn/getopt-generics
+extra-source-files:
+- docs/stuff
+ghc-options:
+- -Wall
+- -fno-warn-name-shadowing
+dependencies:
+- base ==4.*
+- base-compat >=0.8
+- base-orphans
+- generics-sop >=0.1 && <0.3
+- tagged
+library:
+  source-dirs: src
+  exposed-modules:
+  - WithCli
+  - WithCli.Pure
+tests:
+  spec:
+    main: Spec.hs
+    source-dirs:
+    - src
+    - test
+    - docs
+    ghc-options:
+    - -threaded
+    - -O0
+    dependencies:
+    - hspec >=2.1.8
+    - QuickCheck
+    - silently
+    - filepath
+    - safe
diff --git a/test/data/hpack.cabal b/test/data/hpack.cabal
new file mode 100644
--- /dev/null
+++ b/test/data/hpack.cabal
@@ -0,0 +1,133 @@
+-- This file has been generated from package.yaml by hpack version 0.14.0.
+--
+-- see: https://github.com/sol/hpack
+
+name:           hpack
+version:        0.14.1
+synopsis:       An alternative format for Haskell packages
+category:       Development
+homepage:       https://github.com/sol/hpack#readme
+bug-reports:    https://github.com/sol/hpack/issues
+maintainer:     Simon Hengel <sol@typeful.net>
+license:        MIT
+license-file:   LICENSE
+build-type:     Simple
+cabal-version:  >= 1.10
+
+source-repository head
+  type: git
+  location: https://github.com/sol/hpack
+
+library
+  hs-source-dirs:
+      src
+  ghc-options: -Wall
+  build-depends:
+      base >= 4.7 && < 5
+    , base-compat >= 0.8
+    , Cabal
+    , pretty
+    , deepseq
+    , directory
+    , filepath
+    , Glob
+    , text
+    , containers
+    , unordered-containers
+    , yaml
+    , bytestring
+    , vector
+    , aeson >= 0.8
+  exposed-modules:
+      Hpack
+      Hpack.Config
+      Hpack.Run
+      Hpack.Yaml
+  other-modules:
+      Hpack.Convert
+      Hpack.Convert.Run
+      Hpack.FormattingHints
+      Hpack.GenericsUtil
+      Hpack.Haskell
+      Hpack.Render
+      Hpack.Util
+      Paths_hpack
+  default-language: Haskell2010
+
+executable hpack
+  main-is: Main.hs
+  hs-source-dirs:
+      driver
+  ghc-options: -Wall
+  build-depends:
+      base >= 4.7 && < 5
+    , base-compat >= 0.8
+    , Cabal
+    , pretty
+    , deepseq
+    , directory
+    , filepath
+    , Glob
+    , text
+    , containers
+    , unordered-containers
+    , yaml
+    , bytestring
+    , vector
+    , hpack
+    , aeson >= 0.8
+  default-language: Haskell2010
+
+test-suite spec
+  type: exitcode-stdio-1.0
+  main-is: Spec.hs
+  hs-source-dirs:
+      test
+    , src
+  ghc-options: -Wall
+  cpp-options: -DTEST
+  build-depends:
+      base >= 4.7 && < 5
+    , base-compat >= 0.8
+    , Cabal
+    , pretty
+    , deepseq
+    , directory
+    , filepath
+    , Glob
+    , text
+    , containers
+    , unordered-containers
+    , yaml
+    , bytestring
+    , vector
+    , hspec == 2.*
+    , QuickCheck
+    , temporary
+    , mockery >= 0.3
+    , interpolate
+    , aeson-qq
+    , aeson >= 0.10
+  other-modules:
+      Helper
+      Hpack.ConfigSpec
+      Hpack.ConvertSpec
+      Hpack.FormattingHintsSpec
+      Hpack.GenericsUtilSpec
+      Hpack.HaskellSpec
+      Hpack.RenderSpec
+      Hpack.RunSpec
+      Hpack.UtilSpec
+      HpackSpec
+      Hpack
+      Hpack.Config
+      Hpack.Convert
+      Hpack.Convert.Run
+      Hpack.FormattingHints
+      Hpack.GenericsUtil
+      Hpack.Haskell
+      Hpack.Render
+      Hpack.Run
+      Hpack.Util
+      Hpack.Yaml
+  default-language: Haskell2010
diff --git a/test/data/hpack.cabal.yaml b/test/data/hpack.cabal.yaml
new file mode 100644
--- /dev/null
+++ b/test/data/hpack.cabal.yaml
@@ -0,0 +1,56 @@
+name: hpack
+version: '0.14.1'
+synopsis: An alternative format for Haskell packages
+category: Development
+maintainer: Simon Hengel <sol@typeful.net>
+license: MIT
+github: sol/hpack
+dependencies:
+- base >=4.7 && <5
+- base-compat >=0.8
+- Cabal
+- pretty
+- deepseq
+- directory
+- filepath
+- Glob
+- text
+- containers
+- unordered-containers
+- yaml
+- bytestring
+- vector
+library:
+  source-dirs: src
+  ghc-options: -Wall
+  exposed-modules:
+  - Hpack
+  - Hpack.Config
+  - Hpack.Run
+  - Hpack.Yaml
+  dependencies:
+  - aeson >=0.8
+executables:
+  hpack:
+    main: Main.hs
+    source-dirs: driver
+    ghc-options: -Wall
+    dependencies:
+    - hpack
+    - aeson >=0.8
+tests:
+  spec:
+    main: Spec.hs
+    source-dirs:
+    - test
+    - src
+    ghc-options: -Wall
+    cpp-options: -DTEST
+    dependencies:
+    - hspec ==2.*
+    - QuickCheck
+    - temporary
+    - mockery >=0.3
+    - interpolate
+    - aeson-qq
+    - aeson >=0.10
