Skip to content
Snippets Groups Projects
  • Matthew Pickering's avatar
    716b109c
    Allow using different Cabal library versions for `cabal-install` tests with custom setup. · 716b109c
    Matthew Pickering authored
    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
    716b109c
    History
    Allow using different Cabal library versions for `cabal-install` tests with custom setup.
    Matthew Pickering authored
    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
Code owners