Allow using different Cabal library versions for cabal-install tests with custom setup.
The idea here is to pass a `--package-db` flag to `cabal-install` which
contains just `Cabal` and `Cabal-syntax` of the specific version. This
allows `cabal-install` tests to use the in-tree `Cabal` version,
something which you can easily run into and get very confused about when
writing tests.
There are a few options which can be passed to `cabal-tests` executable
to control which Cabal library you will test against.
1. --boot-cabal-lib specifies to use the Cabal library bundled with the
test compiler, this is the default and existing behaviour of the
testsuite.
2. --intree-cabal-lib=<root_dir> specifies to use Cabal and Cabal-syntax
from a specific directory, and `--test-tmp` indicates where to put
the package database they are built with.
3. --specific-cabal-lib=<VERSION> specifies to use a specific Cabal
version from hackage (ie 3.10.2.0) and installs the package database
into --test-tmp=<DIR>
The end result is that changes in the Cabal library can be tested with
cabal-install tests in the testsuite.
There have been a number of confusing issues with people writing tests
for changes in the Cabal library which never ran because of
cabal-install tests always used the boot Cabal library (see #9425
for one).
Fixes #9681
This is an automatic backport of pull request #9671 done by Mergify.
Allow using different Cabal library versions for
cabal-install
tests with custom setup.This is an automatic backport of pull request #9671 done by Mergify.