haskell / cabal

Official upstream development repository for Cabal and cabal-install
https://haskell.org/cabal
Other
1.6k stars 689 forks source link

Where to put project tests, cabal-testsuite/ProjectTests? #9798

Open philderbeast opened 5 months ago

philderbeast commented 5 months ago

I've been adding tests of projects to cabal-testsuite/PackageTests where all other cabal-testsuite tests are. Can I start adding project tests (and moving some misplaced ones) to cabal-testsuite/ProjectTests?

ffaf1 commented 5 months ago

I always thought about it as a “this is where golden tests go” folder. Do we gain something by dividing it in two? If there is a build command test for a package and one for a package in the context of a project, do they go one in PackageTests and the other in ProjectTests?

philderbeast commented 5 months ago

Do we gain something by dividing it in two?

Yes we see how few (or how many) project tests we have.

alt-romes commented 5 months ago

The package tests often depend on project files, so I think the line between a package test and a project test is rather blurry... I'm not sure if separating them will gain us any clarity and will introduce another decision one has to make before they start writing a test (friction).

philderbeast commented 5 months ago

I'm suggesting moving only the project-specific tests (imports and the like), not tests with a project, not tests with a cabal.project as simple as:

https://github.com/haskell/cabal/blob/74b1f2152aafff08d92493ef2cdb0c28630bae14/cabal-testsuite/PackageTests/NewConfigure/ConfigFile/cabal.project#L1

alt-romes commented 5 months ago

I'm suggesting moving only the project-specific tests (imports and the like), not tests with a project, not tests with a cabal.project as simple as:

https://github.com/haskell/cabal/blob/74b1f2152aafff08d92493ef2cdb0c28630bae14/cabal-testsuite/PackageTests/NewConfigure/ConfigFile/cabal.project#L1

I suppose that is more reasonable, but the test you linked also contains a Cabal package, how do you tell it is a project test?

philderbeast commented 5 months ago

We had 3 projects in cabal-testsuite with import: ... 6 weeks ago.

$ git checkout 72a91600c67f5b0d6b9e176bd5fb7bb64230d392

$ git log -1 --pretty=%cr
6 weeks ago

$ grep -rwn --include="*.project" cabal-testsuite -e 'import:'
cabal-testsuite/PackageTests/ConditionalAndImport/cabal-cyclical.project:3:import: cabal-cyclical.project
cabal-testsuite/PackageTests/ConditionalAndImport/cabal.project:3:import: extra.project
cabal-testsuite/PackageTests/RelativePathProjectImports/cabal.project:1:import: ./dep/cabal.project

I've added a few more recently.

$ git rev-parse HEAD
74b1f2152aafff08d92493ef2cdb0c28630bae14

$ grep -rwn --include="*.project" cabal-testsuite -e 'import:'
cabal-testsuite/PackageTests/ConditionalAndImport/cyclical-2-out-out-back.project:3:import: cyclical-2-out-out-back-a.config
cabal-testsuite/PackageTests/ConditionalAndImport/cyclical-2-out-out-backback.project:3:import: cyclical-2-out-out-backback-a.config
cabal-testsuite/PackageTests/ConditionalAndImport/cyclical-1-out-back.project:3:import: cyclical-1-out-back.config
cabal-testsuite/PackageTests/ConditionalAndImport/cyclical-same-filename-out-out-back.project:3:import: cyclical-same-filename-out-out-back.config
cabal-testsuite/PackageTests/ConditionalAndImport/cabal.project:3:import: extra.project
cabal-testsuite/PackageTests/ConditionalAndImport/cyclical-1-out-self.project:3:import: cyclical-1-out-self.config
cabal-testsuite/PackageTests/ConditionalAndImport/noncyclical-same-filename-a.project:3:import: noncyclical-same-filename-a.config
cabal-testsuite/PackageTests/ConditionalAndImport/cyclical-2-out-out-self.project:3:import: cyclical-2-out-out-self-a.config
cabal-testsuite/PackageTests/ConditionalAndImport/noncyclical-same-filename-b.project:3:import: same-filename/noncyclical-same-filename-b.config
cabal-testsuite/PackageTests/ConditionalAndImport/cabal-cyclical-1-hop.project:3:import: cabal-cyclical-1-hop.config
cabal-testsuite/PackageTests/ConditionalAndImport/cyclical-0-self.project:3:import: cyclical-0-self.project
cabal-testsuite/PackageTests/ConditionalAndImport/hops-0.project:3:import: hops/hops-1.config
cabal-testsuite/PackageTests/ConditionalAndImport/cyclical-same-filename-out-out-backback.project:3:import: cyclical-same-filename-out-out-backback.config
cabal-testsuite/PackageTests/ConditionalAndImport/cyclical-same-filename-out-out-self.project:3:import: cyclical-same-filename-out-out-self.config
cabal-testsuite/PackageTests/ConditionalAndImport/cabal-cyclical-2-hop.project:3:import: cabal-cyclical-2-hop-1.config
cabal-testsuite/PackageTests/RelativePathProjectImports/cabal.project:1:import: ./dep/cabal.project
cabal-testsuite/PackageTests/VersionPriority/2-local-constraints-import.project:4:import: hop-local.config
cabal-testsuite/PackageTests/VersionPriority/1-local-import-constraints.project:3:import: stackage-local.config
cabal-testsuite/PackageTests/VersionPriority/1-web-constraints-import.project:9:import: project-stackage/nightly-2023-12-07.config
cabal-testsuite/PackageTests/VersionPriority/1-web-constraints-import.project:11:import: with-ghc.config
cabal-testsuite/PackageTests/VersionPriority/2-local-import-constraints.project:3:import: hop-local.config
cabal-testsuite/PackageTests/VersionPriority/3-web-constraints-import.project:4:import: hop-web.config
cabal-testsuite/PackageTests/VersionPriority/3-web-constraints-import.project:5:import: with-ghc.config
cabal-testsuite/PackageTests/VersionPriority/1-local-constraints-import.project:4:import: stackage-local.config
cabal-testsuite/PackageTests/VersionPriority/2-web-import-constraints.project:3:import: stackage-web.config
cabal-testsuite/PackageTests/VersionPriority/2-web-import-constraints.project:5:import: with-ghc.config
cabal-testsuite/PackageTests/VersionPriority/1-web-import-constraints.project:8:import: project-stackage/nightly-2023-12-07.config
cabal-testsuite/PackageTests/VersionPriority/1-web-import-constraints.project:11:import: with-ghc.config
cabal-testsuite/PackageTests/VersionPriority/2-web-constraints-import.project:4:import: stackage-web.config
cabal-testsuite/PackageTests/VersionPriority/2-web-constraints-import.project:5:import: with-ghc.config
cabal-testsuite/PackageTests/VersionPriority/3-web-import-constraints.project:3:import: hop-web.config
cabal-testsuite/PackageTests/VersionPriority/3-web-import-constraints.project:5:import: with-ghc.config
philderbeast commented 5 months ago

I worked through the project reference seeing which project settings are in cabal-testsuite projects (assuming they're named *.project). Most settings from the reference aren't found in these projects. For some, there's an equivalent test using the setting's command option equivalent, such as with-compiler: being tested with the --with-compiler command line option.

$ grep -rwn --include="*.hs" cabal-testsuite -e '--with-compiler'
cabal-testsuite/PackageTests/GHCJS/BuildRunner/cabal.test.hs:15:        , "--with-compiler", cwd </> fakeGhcjsPath
$ git checkout 72a91600c67f5b0d6b9e176bd5fb7bb64230d392

$ git log -1 --pretty=%cr
6 weeks ago

$ grep -rwn --include="*.project" cabal-testsuite -e 'source-repository-package'
cabal-testsuite/PackageTests/postCheckoutCommand/cabal.positive.project:3:source-repository-package
cabal-testsuite/PackageTests/postCheckoutCommand/cabal.negative.project:3:source-repository-package

$ grep -rwn --include="*.project" cabal-testsuite -e 'constraints'
cabal-testsuite/PackageTests/RequireExplicit/MultiPkg/cabal.project:5:constraints:

grep -rwn --include="*.project" cabal-testsuite -e '^package .\+'
cabal-testsuite/PackageTests/CopyHie/cabal.project:2:package hie-dependency
cabal-testsuite/PackageTests/Regression/T4720/cabal.project:3:package bug
cabal-testsuite/PackageTests/Regression/T5213ExeCoverage/cabal.project:3:package cabal-gh5213
cabal-testsuite/PackageTests/Regression/T5213/cabal.project:3:package cabal-gh5213
cabal-testsuite/PackageTests/RelativePathProjectImports/dep/cabal.project:1:package dep
cabal-testsuite/PackageTests/NewBuild/T3827/cabal.project:3:package q
cabal-testsuite/PackageTests/ProjectDir/proj/nix/cabal.project:3:package proj
cabal-testsuite/PackageTests/HaddockProject/cabal.project:7:package async

$ grep -rwn --include="*.project" cabal-testsuite -e 'with-compiler'

$ grep -rwn --include="*.project" cabal-testsuite -e 'optimization'
cabal-testsuite/PackageTests/Regression/T5213ExeCoverage/cabal.project:5:  optimization: False

$ grep -rwn --include="*.project" cabal-testsuite -e 'optional-packages'
cabal-testsuite/PackageTests/BuildToolDepends/cabal.project:2:optional-packages: pre-proc

$ grep -rwn --include="*.project" cabal-testsuite -e 'extra-packages'
cabal-testsuite/PackageTests/ExtraPackages/cabal.project:2:extra-packages: some-exe
cabal-testsuite/PackageTests/SDist/T7698/cabal.project:2:extra-packages: lens
cabal-testsuite/PackageTests/Regression/T9640/cabal.project:2:extra-packages: one-custom
cabal-testsuite/PackageTests/ConditionalAndImport/extra.project:2:  extra-packages: no-such-package
cabal-testsuite/PackageTests/ConditionalAndImport/extra.project:4:  extra-packages: no-can-do
cabal-testsuite/PackageTests/ConditionalAndImport/extra.project:6:  extra-packages: some-exe
cabal-testsuite/PackageTests/ConditionalAndImport/extra.project:8:  extra-packages: nope

$ grep -rwn --include="*.project" cabal-testsuite -e 'verbose'

$ grep -rwn --include="*.project" cabal-testsuite -e 'jobs'
cabal-testsuite/PackageTests/HaddockProject/cabal.project:2:-- `jobs` is necessary to use `InternalMethod :: SetupMethod`.
cabal-testsuite/PackageTests/HaddockProject/cabal.project:3:jobs: 1

$ grep -rwn --include="*.project" cabal-testsuite -e 'semaphore'

$ grep -rwn --include="*.project" cabal-testsuite -e 'keep-going'

$ grep -rwn --include="*.project" cabal-testsuite -e 'package-dbs'
cabal-testsuite/PackageTests/PackageDB/p-no-package-dbs/cabal.project:2:package-dbs: clear

$ grep -rwn --include="*.project" cabal-testsuite -e 'preferences'

$ grep -rwn --include="*.project" cabal-testsuite -e 'allow-newer'

$ grep -rwn --include="*.project" cabal-testsuite -e 'allow-older'
cabal-testsuite/PackageTests/NewBuild/T4017/cabal.project:2:allow-older: p:base
cabal-testsuite/PackageTests/NewBuild/T3978/cabal.project:2:allow-older: p:base

$ grep -rwn --include="*.project" cabal-testsuite -e 'index-state'

$ grep -rwn --include="*.project" cabal-testsuite -e 'active-repositories'

$ grep -rwn --include="*.project" cabal-testsuite -e 'reject-unconstrained-dependencies'
cabal-testsuite/PackageTests/RequireExplicit/FlagInProject/cabal.project:3:reject-unconstrained-dependencies: all

$ grep -rwn --include="*.project" cabal-testsuite -e 'flags'
cabal-testsuite/PackageTests/ProjectDir/proj/nix/cabal.project:4:  flags: +extra

$ grep -rwn --include="*.project" cabal-testsuite -e 'with-compiler'

$ grep -rwn --include="*.project" cabal-testsuite -e 'with-hc-pkg'

$ grep -rwn --include="*.project" cabal-testsuite -e 'optimization'
cabal-testsuite/PackageTests/Regression/T5213ExeCoverage/cabal.project:5:  optimization: False

$ grep -rwn --include="*.project" cabal-testsuite -e 'configure-options'

$ grep -rwn --include="*.project" cabal-testsuite -e 'compiler'
cabal-testsuite/PackageTests/ConditionalAndImport/cabal-bad-conditional.project:4:  compiler: ghc

$ grep -rwn --include="*.project" cabal-testsuite -e 'tests'
cabal-testsuite/PackageTests/ShowBuildInfo/Complex/cabal.project:3:tests: True

$ grep -rwn --include="*.project" cabal-testsuite -e 'benchmarks'
cabal-testsuite/PackageTests/ShowBuildInfo/Complex/cabal.project:4:benchmarks: True

$ grep -rwn --include="*.project" cabal-testsuite -e 'extra-prog-path'

$ grep -rwn --include="*.project" cabal-testsuite -e 'run-tests'

$ grep -rwn --include="*.project" cabal-testsuite -e 'debug-info'

$ grep -rwn --include="*.project" cabal-testsuite -e 'split-sections'

$ grep -rwn --include="*.project" cabal-testsuite -e 'split-objs'

$ grep -rwn --include="*.project" cabal-testsuite -e 'executable-stripping'

$ grep -rwn --include="*.project" cabal-testsuite -e 'library-stripping'

$ grep -rwn --include="*.project" cabal-testsuite -e 'program-prefix'

$ grep -rwn --include="*.project" cabal-testsuite -e 'program-sufix'

$ grep -rwn --include="*.project" cabal-testsuite -e 'program-suffix'

$ grep -rwn --include="*.project" cabal-testsuite -e 'shared'

$ grep -rwn --include="*.project" cabal-testsuite -e 'executable-dynamic'
cabal-testsuite/PackageTests/CmmSourcesDyn/cabal.project:2:executable-dynamic: True

$ grep -rwn --include="*.project" cabal-testsuite -e 'library-for-ghci'

$ grep -rwn --include="*.project" cabal-testsuite -e 'relocatable'

$ grep -rwn --include="*.project" cabal-testsuite -e 'static'

$ grep -rwn --include="*.project" cabal-testsuite -e 'executable-static'

$ grep -rwn --include="*.project" cabal-testsuite -e 'extra-lib-dirs'

$ grep -rwn --include="*.project" cabal-testsuite -e 'extra-framework-dirs'

$ grep -rwn --include="*.project" cabal-testsuite -e 'profiling'
cabal-testsuite/PackageTests/NewBuild/T3827/cabal.project:2:profiling-detail: all-functions
cabal-testsuite/PackageTests/NewBuild/T3827/cabal.project:4:    profiling: True

$ grep -rwn --include="*.project" cabal-testsuite -e 'profiling-detail'
cabal-testsuite/PackageTests/NewBuild/T3827/cabal.project:2:profiling-detail: all-functions

$ grep -rwn --include="*.project" cabal-testsuite -e 'library-profiling-detail'

$ grep -rwn --include="*.project" cabal-testsuite -e 'library-vanilla'

$ grep -rwn --include="*.project" cabal-testsuite -e 'library-profiling'

$ grep -rwn --include="*.project" cabal-testsuite -e 'executable-profiling'

$ grep -rwn --include="*.project" cabal-testsuite -e 'coverage'
cabal-testsuite/PackageTests/Regression/T5213ExeCoverage/cabal.project:4:  coverage: True
cabal-testsuite/PackageTests/Regression/T5213/cabal.project:4:  library-coverage: true

$ grep -rwn --include="*.project" cabal-testsuite -e 'library-coverage'
cabal-testsuite/PackageTests/Regression/T5213/cabal.project:4:  library-coverage: true

$ grep -rwn --include="*.project" cabal-testsuite -e 'documentation'
cabal-testsuite/PackageTests/HaddockProject/cabal.project:5:documentation: True
cabal-testsuite/PackageTests/HaddockProject/cabal.project:8:  documentation: True

$ grep -rwn --include="*.project" cabal-testsuite -e 'doc-index-file'

$ grep -rwn --include="*.project" cabal-testsuite -e 'haddock-hoogle'

$ grep -rwn --include="*.project" cabal-testsuite -e 'haddock-html'

$ grep -rwn --include="*.project" cabal-testsuite -e 'haddock-quickjump'

$ grep -rwn --include="*.project" cabal-testsuite -e 'haddock-html-location'

$ grep -rwn --include="*.project" cabal-testsuite -e 'haddock-executable'

$ grep -rwn --include="*.project" cabal-testsuite -e 'haddock-tests'

$ grep -rwn --include="*.project" cabal-testsuite -e 'haddock-benchmarks'

$ grep -rwn --include="*.project" cabal-testsuite -e 'haddock-internal'

$ grep -rwn --include="*.project" cabal-testsuite -e 'haddock-all'

$ grep -rwn --include="*.project" cabal-testsuite -e 'haddock-css'

$ grep -rwn --include="*.project" cabal-testsuite -e 'haddock-hyperlink-source'

$ grep -rwn --include="*.project" cabal-testsuite -e 'haddock-hscolour-css'

$ grep -rwn --include="*.project" cabal-testsuite -e 'haddock-contents-location'

$ grep -rwn --include="*.project" cabal-testsuite -e 'haddock-keep-temp-files'

$ grep -rwn --include="*.project" cabal-testsuite -e 'haddock-output-dir'
cabal-testsuite/PackageTests/NewHaddock/HaddockOutput/HaddockOutputConfig/cabal.project:3:haddock-output-dir: docs

$ grep -rwn --include="*.project" cabal-testsuite -e 'open'

$ grep -rwn --include="*.project" cabal-testsuite -e 'write-ghc-environment-files'

$ grep -rwn --include="*.project" cabal-testsuite -e 'build-info'

$ grep -rwn --include="*.project" cabal-testsuite -e 'http-transport'

$ grep -rwn --include="*.project" cabal-testsuite -e 'ignore-expiry'

$ grep -rwn --include="*.project" cabal-testsuite -e 'remote-repo-cache'

$ grep -rwn --include="*.project" cabal-testsuite -e 'logs-dir'

$ grep -rwn --include="*.project" cabal-testsuite -e 'build-summary'

$ grep -rwn --include="*.project" cabal-testsuite -e 'solver'

$ grep -rwn --include="*.project" cabal-testsuite -e 'max-backjumps'

$ grep -rwn --include="*.project" cabal-testsuite -e 'reorder-goals'

$ grep -rwn --include="*.project" cabal-testsuite -e 'count-conflicts'

$ grep -rwn --include="*.project" cabal-testsuite -e 'fine-grained-conflicts'

$ grep -rwn --include="*.project" cabal-testsuite -e 'minimize-conflict-set'

$ grep -rwn --include="*.project" cabal-testsuite -e 'strong-flags'

$ grep -rwn --include="*.project" cabal-testsuite -e 'allow-boot-library-installs'

$ grep -rwn --include="*.project" cabal-testsuite -e 'cabal-lib-version'

$ grep -rwn --include="*.project" cabal-testsuite -e 'prefer-oldest'
philderbeast commented 5 months ago

Here's all the *.project projects:

$ tree -P '*.project' --prune cabal-testsuite
cabal-testsuite
└── PackageTests
    ├── AllowNewer
    │   └── cabal.project
    ├── AllowOlder
    │   └── cabal.project
    ├── AutogenModulesToggling
    │   └── cabal.project
    ├── Backpack
    │   ├── bkpcabal01
    │   │   └── cabal.project
    │   ├── Includes2
    │   │   ├── cabal.external.project
    │   │   ├── cabal.internal.project
    │   │   └── cabal.project
    │   ├── Includes3
    │   │   ├── cabal.external.project
    │   │   ├── cabal.internal.project
    │   │   └── cabal.repo.project
    │   ├── Reexport2
    │   │   └── cabal.project
    │   ├── T4447
    │   │   └── cabal.project
    │   ├── T6385
    │   │   └── cabal.project
    │   └── T8582
    │       └── cabal.project
    ├── BuildAutogenPackageGuard
    │   └── cabal.project
    ├── BuildDeps
    │   ├── DepCycle
    │   │   └── cabal.project
    │   └── InternalLibrary1
    │       └── cabal.project
    ├── BuildTargets
    │   ├── UseLocalPackage
    │   │   └── cabal.project
    │   └── UseLocalPackageForSetup
    │       └── cabal.project
    ├── BuildToolDepends
    │   └── cabal.project
    ├── BuildTools
    │   ├── External
    │   │   └── cabal.project
    │   └── Internal
    │       └── cabal.project
    ├── CmmSources
    │   └── cabal.project
    ├── CmmSourcesDyn
    │   └── cabal.project
    ├── CmmSourcesExe
    │   └── cabal.project
    ├── ConditionalAndImport
    │   ├── cabal-bad-conditional.project
    │   ├── cabal-cyclical.project
    │   ├── cabal.project
    │   └── extra.project
    ├── ConfigFile
    │   └── T8487
    │       └── cabal.project
    ├── Configure
    │   └── cabal.project
    ├── CopyHie
    │   └── cabal.project
    ├── CustomDep
    │   └── cabal.project
    ├── CustomPlain
    │   └── cabal.project
    ├── CustomPreProcess
    │   └── cabal.project
    ├── CustomSegfault
    │   └── cabal.project
    ├── CustomTestCoverage
    │   └── cabal.project
    ├── CustomWithoutCabal
    │   └── cabal.project
    ├── CustomWithoutCabalDefaultMain
    │   └── cabal.project
    ├── Exec
    │   └── cabal.project
    ├── ExecModern
    │   └── cabal.project
    ├── ExternalCommand
    │   └── cabal.project
    ├── ExternalCommandEnv
    │   └── cabal.project
    ├── ExternalCommandHelp
    │   └── cabal.project
    ├── ExtraPackages
    │   └── cabal.project
    ├── ExtraProgPath
    │   └── cabal.project
    ├── FFI
    │   ├── ForeignOptsC
    │   │   └── cabal.project
    │   └── ForeignOptsCxx
    │       └── cabal.project
    ├── GHCJS
    │   └── BuildRunner
    │       └── cabal.project
    ├── HaddockArgs
    │   └── cabal.project
    ├── HaddockBuildDepends
    │   └── cabal.project
    ├── HaddockProject
    │   └── cabal.project
    ├── HaddockWarn
    │   └── cabal.project
    ├── InternalLibraries
    │   └── cabal.project
    ├── JS
    │   ├── JsSources
    │   │   └── cabal.project
    │   └── JsSourcesExe
    │       └── cabal.project
    ├── LinkerOptions
    │   └── NonignoredConfigs
    │       ├── basic
    │       │   └── cabal.project
    │       └── reinstall.dist
    │           ├── basic0
    │           │   └── cabal.project
    │           ├── basic1
    │           │   └── cabal.project
    │           ├── basic2
    │           │   └── cabal.project
    │           └── basic3
    │               └── cabal.project
    ├── ListBin
    │   └── SelectedComponent
    │       └── cabal.project
    ├── MultipleLibraries
    │   ├── Failing
    │   │   └── cabal.project
    │   ├── Successful
    │   │   └── cabal.project
    │   ├── T6083Post
    │   │   └── cabal.project
    │   ├── T6083PostMixin
    │   │   └── cabal.project
    │   ├── T6083Pre
    │   │   └── cabal.project
    │   ├── T6083PreMixin
    │   │   └── cabal.project
    │   └── T6894
    │       └── cabal.project
    ├── MultiRepl
    │   ├── CabalTooOld
    │   │   └── cabal.project
    │   ├── EnabledClosure
    │   │   └── cabal.project
    │   ├── EnabledSucc
    │   │   └── cabal.project
    │   └── NotEnabledFail
    │       └── cabal.project
    ├── NewBuild
    │   ├── CmdBench
    │   │   ├── MultipleBenchmarks
    │   │   │   └── cabal.project
    │   │   ├── OptionsFlag
    │   │   │   └── cabal.project
    │   │   └── WarningRTS
    │   │       └── cabal.project
    │   ├── CmdBuild
    │   │   └── OnlyConfigure
    │   │       └── cabal.project
    │   ├── CmdExec
    │   │   ├── GhcInvocation
    │   │   │   └── cabal.project
    │   │   └── RunExe
    │   │       └── cabal.project
    │   ├── CmdRun
    │   │   ├── Datafiles
    │   │   │   └── cabal.project
    │   │   ├── ExeAndLib
    │   │   │   └── cabal.project
    │   │   ├── ExitCodePropagation
    │   │   │   └── cabal.project
    │   │   ├── MultipleExes
    │   │   │   └── cabal.project
    │   │   ├── MultiplePackages
    │   │   │   └── cabal.project
    │   │   ├── Script
    │   │   │   └── cabal.project
    │   │   ├── ScriptBad
    │   │   │   └── cabal.project
    │   │   ├── ScriptLiterate
    │   │   │   └── cabal.project
    │   │   ├── Single
    │   │   │   └── cabal.project
    │   │   ├── Terminate
    │   │   │   └── cabal.project
    │   │   └── WarningRTS
    │   │       └── cabal.project
    │   ├── CmdTest
    │   │   ├── OptionsFlag
    │   │   │   └── cabal.project
    │   │   └── WarningRTS
    │   │       └── cabal.project
    │   ├── CustomSetup
    │   │   ├── LocalPackageWithCustomSetup
    │   │   │   └── cabal.project
    │   │   └── RemotePackageWithCustomSetup
    │   │       └── cabal.project
    │   ├── MonitorCabalFiles
    │   │   └── cabal.project
    │   ├── Semaphore
    │   │   └── cabal.project
    │   ├── T3460
    │   │   └── cabal.project
    │   ├── T3827
    │   │   └── cabal.project
    │   ├── T3978
    │   │   └── cabal.project
    │   ├── T4017
    │   │   └── cabal.project
    │   ├── T4288
    │   │   └── cabal.project
    │   ├── T4375
    │   │   └── cabal.project
    │   ├── T4405
    │   │   └── cabal.project
    │   ├── T4450
    │   │   └── cabal.project
    │   ├── T4477
    │   │   └── cabal.project
    │   └── T5164
    │       └── cabal.project
    ├── NewConfigure
    │   ├── ConfigFile
    │   │   └── cabal.project
    │   └── LocalConfigOverwrite
    │       ├── cabal.project
    │       └── foo.project
    ├── NewFreeze
    │   ├── BuildTools
    │   │   └── cabal.project
    │   ├── Flags
    │   │   └── cabal.project
    │   └── FreezeFile
    │       └── cabal.project
    ├── NewHaddock
    │   ├── DisableDoc
    │   │   └── cabal.project
    │   ├── Fails
    │   │   └── cabal.project
    │   ├── HaddockOutput
    │   │   ├── HaddockForHackageCmdOutput
    │   │   │   └── cabal.project
    │   │   ├── HaddockOutputCmd
    │   │   │   └── cabal.project
    │   │   └── HaddockOutputConfig
    │   │       └── cabal.project
    │   └── ImplyDependencies
    │       └── cabal.project
    ├── NewSdist
    │   ├── DeterministicTrivial
    │   │   └── cabal.project
    │   ├── Globbing
    │   │   └── cabal.project
    │   ├── ManyDataFiles
    │   │   └── cabal.project
    │   ├── MultiTarget
    │   │   └── cabal.project
    │   └── NullTerminated
    │       └── cabal.project
    ├── NewUpdate
    │   └── RejectFutureIndexStates
    │       └── cabal.project
    ├── OfflineFlag
    │   └── cabal.repo.project
    ├── Outdated
    │   ├── cabal.project
    │   └── variant.project
    ├── PackageDB
    │   ├── p
    │   │   └── cabal.project
    │   ├── p-no-package-dbs
    │   │   └── cabal.project
    │   └── q
    │       └── cabal.project
    ├── PkgConfigParse
    │   └── cabal.project
    ├── postCheckoutCommand
    │   ├── cabal.negative.project
    │   └── cabal.positive.project
    ├── ProfLate
    │   └── cabal.project
    ├── Project
    │   ├── CoverageProject
    │   │   └── cabal.project
    │   └── WarnBuilddir
    │       └── cabal.project
    ├── ProjectDir
    │   └── proj
    │       ├── cabal.project
    │       └── nix
    │           └── cabal.project
    ├── Regression
    │   ├── T3932
    │   │   └── cabal.project
    │   ├── T4154
    │   │   └── cabal.project
    │   ├── T4202
    │   │   └── cabal.project
    │   ├── T4720
    │   │   └── cabal.project
    │   ├── T4798
    │   │   └── cabal.project
    │   ├── T4986
    │   │   └── cabal.project
    │   ├── T5213
    │   │   └── cabal.project
    │   ├── T5213ExeCoverage
    │   │   └── cabal.project
    │   ├── T5309
    │   │   └── cabal.project
    │   ├── T5318
    │   │   └── cabal.project
    │   ├── T5386
    │   │   └── cabal.project
    │   ├── T5409
    │   │   └── cabal.project
    │   ├── T5677
    │   │   └── cabal.project
    │   ├── T5782Diamond
    │   │   └── cabal.project
    │   ├── T6334
    │   │   └── cabal.project
    │   ├── T6440
    │   │   └── cabal.project
    │   ├── T6853
    │   │   └── cabal.project
    │   ├── T6906
    │   │   └── cabal.project
    │   ├── T6961
    │   │   ├── DepExternal
    │   │   │   └── cabal.project
    │   │   ├── DepInternal
    │   │   │   └── cabal.project
    │   │   ├── Exe
    │   │   │   └── cabal.project
    │   │   └── Test
    │   │       └── cabal.project
    │   ├── T7234
    │   │   ├── Fail
    │   │   │   └── cabal.project
    │   │   └── Success
    │   │       └── cabal.project
    │   ├── T8507
    │   │   └── cabal.project
    │   └── T9640
    │       ├── cabal.project
    │       └── repo
    │           └── one-custom-0.1.0.0
    │               └── cabal.project
    ├── RelativePathProjectImports
    │   ├── cabal.project
    │   └── dep
    │       └── cabal.project
    ├── ReplBuildDepends
    │   └── cabal.project
    ├── ReplCSources
    │   └── cabal.project
    ├── ReplNoLoad
    │   └── cabal.project
    ├── ReplOptions
    │   └── cabal.project
    ├── RequireExplicit
    │   ├── FlagInProject
    │   │   └── cabal.project
    │   └── MultiPkg
    │       └── cabal.project
    ├── SDist
    │   ├── Respect-Project-File
    │   │   ├── cabal.project
    │   │   ├── Projects-Default-No
    │   │   │   ├── cabal.dot-uv.project
    │   │   │   ├── cabal.sub-pq.project
    │   │   │   └── cabal.sub-rs.project
    │   │   └── Projects-Default-Yes
    │   │       ├── cabal.dot-uv.project
    │   │       ├── cabal.project
    │   │       ├── cabal.sub-pq.project
    │   │       └── cabal.sub-rs.project
    │   ├── T5195
    │   │   └── cabal.project
    │   ├── T7028
    │   │   └── cabal.project
    │   ├── T7124
    │   │   └── cabal.project
    │   └── T7698
    │       └── cabal.project
    ├── ShowBuildInfo
    │   ├── A
    │   │   └── cabal.project
    │   ├── CompileFail
    │   │   └── cabal.project
    │   ├── Complex
    │   │   └── cabal.project
    │   └── Custom
    │       └── cabal.project
    ├── SimpleDefault
    │   └── cabal.project
    ├── SPDX
    │   └── cabal.project
    ├── TestCodeGenerator
    │   └── cabal.project
    ├── TestSuiteTests
    │   └── ExeV10
    │       └── cabal.project
    └── WarnEarlyOverwrite
        └── cabal.project

219 directories, 194 files