diff --git a/.github/workflows/validate.yml b/.github/workflows/validate.yml index 29380501a5c..396d9a61eac 100644 --- a/.github/workflows/validate.yml +++ b/.github/workflows/validate.yml @@ -23,10 +23,10 @@ on: env: # We choose a stable ghc version across all os's # which will be used to do the next release - GHC_FOR_RELEASE: '9.2.3' + GHC_FOR_RELEASE: '9.6.1' # Ideally we should use the version about to be released for hackage tests and benchmarks - GHC_FOR_SOLVER_BENCHMARKS: '9.2.3' - GHC_FOR_COMPLETE_HACKAGE_TESTS: '9.2.3' + GHC_FOR_SOLVER_BENCHMARKS: '9.6.1' + GHC_FOR_COMPLETE_HACKAGE_TESTS: '9.6.1' COMMON_FLAGS: '-j 2 -v' jobs: @@ -38,7 +38,7 @@ jobs: strategy: matrix: os: ["ubuntu-20.04", "macos-latest", "windows-latest"] - ghc: ["9.4.2", "9.2.3", "9.0.2", "8.10.7", "8.8.4", "8.6.5", "8.4.4"] + ghc: ["9.6.1", "9.4.4", "9.2.7", "9.0.2", "8.10.7", "8.8.4", "8.6.5", "8.4.4"] exclude: # corrupts GHA cache or the fabric of reality itself, see https://github.com/haskell/cabal/issues/8356 - os: "windows-latest" @@ -57,35 +57,21 @@ jobs: - uses: actions/checkout@v3 - # See https://github.com/haskell/cabal/pull/8739 - - name: Sudo chmod to permit ghcup to update its cache - run: | - if [[ "${{ runner.os }}" == "Linux" ]]; then - sudo ls -lah /usr/local/.ghcup/cache - sudo mkdir -p /usr/local/.ghcup/cache - sudo ls -lah /usr/local/.ghcup/cache - sudo chown -R $USER /usr/local/.ghcup - sudo chmod -R 777 /usr/local/.ghcup - fi + - uses: actions/cache@v3 + with: + # validate.sh uses a special build dir + path: | + ${{ steps.setup-haskell.outputs.cabal-store }} + dist-* + key: ${{ runner.os }}-${{ matrix.ghc }}-${{ github.sha }} + restore-keys: ${{ runner.os }}-${{ matrix.ghc }}- + - uses: haskell/actions/setup@v2 id: setup-haskell with: ghc-version: ${{ matrix.ghc }} cabal-version: '3.8.1.0' - # See the following link for a breakdown of the following step - # https://github.com/haskell/actions/issues/7#issuecomment-745697160 - # - # See https://github.com/haskell/cabal/pull/8739 for why Windows is excluded - - if: ${{ runner.os != 'Windows' }} - uses: actions/cache@v3 - with: - # validate.sh uses a special build dir - path: | - ${{ steps.setup-haskell.outputs.cabal-store }} - dist-* - key: ${{ runner.os }}-${{ matrix.ghc }}-20220419-${{ github.sha }} - restore-keys: ${{ runner.os }}-${{ matrix.ghc }}-20220419- - name: Work around git problem https://bugs.launchpad.net/ubuntu/+source/git/+bug/1993586 (cabal PR #8546) run: | @@ -97,7 +83,7 @@ jobs: - name: Install cabal-plan run: | cd $(mktemp -d) - cabal install cabal-plan --constraint='cabal-plan +exe' + cabal install cabal-plan --allow-newer="base" --constraint='cabal-plan +exe' echo "$HOME/.cabal/bin" >> $GITHUB_PATH # The tool is not essential to the rest of the test suite. If @@ -120,9 +106,6 @@ jobs: - name: Set validate inputs run: | FLAGS="${{ env.COMMON_FLAGS }}" - if [[ "${{ matrix.cli }}" == "false" ]]; then - FLAGS="$FLAGS --lib-only" - fi if [[ ${{ matrix.ghc }} == ${{ env.GHC_FOR_SOLVER_BENCHMARKS }} ]]; then FLAGS="$FLAGS --solver-benchmarks" fi @@ -131,6 +114,11 @@ jobs: fi echo "FLAGS=$FLAGS" >> $GITHUB_ENV + - name: Allow newer dependencies when built with latest GHC + if: ${{ matrix.ghc }} == '9.6.1' + run: | + echo "allow-newer: rere:base, rere:transformers" >> cabal.project.validate + - name: Validate print-config run: sh validate.sh $FLAGS -s print-config @@ -141,7 +129,7 @@ jobs: run: sh validate.sh $FLAGS -s build - name: Tar cabal head executable - if: matrix.cli != 'false' && matrix.ghc == env.GHC_FOR_RELEASE + if: matrix.ghc == env.GHC_FOR_RELEASE run: | CABAL_EXEC=$(cabal-plan list-bin --builddir=dist-newstyle-validate-ghc-${{ matrix.ghc }} cabal-install:exe:cabal) # We have to tar the executable to preserve executable permissions @@ -163,7 +151,7 @@ jobs: # - Reuse it in the dogfooding job (although we could use the cached build dir) # - Make it available in the workflow to make easier testing it locally - name: Upload cabal-install executable to workflow artifacts - if: matrix.cli != 'false' && matrix.ghc == env.GHC_FOR_RELEASE + if: matrix.ghc == env.GHC_FOR_RELEASE uses: actions/upload-artifact@v3 with: name: cabal-${{ runner.os }}-${{ matrix.ghc }} @@ -177,6 +165,10 @@ jobs: run: sh validate.sh $FLAGS -s lib-tests - name: Validate lib-suite + # Have to disable *-suite validation: + # - the Windows@9.6.1 problem is tracked at https://github.com/haskell/cabal/issues/8858 + # - but curently can't run it with GHC 9.6, tracking: https://github.com/haskell/cabal/issues/8883 + if: (runner.os != 'Windows') || (matrix.ghc != '9.6.1') run: sh validate.sh $FLAGS -s lib-suite - name: Validate cli-tests @@ -184,138 +176,8 @@ jobs: run: sh validate.sh $FLAGS -s cli-tests - name: Validate cli-suite - if: matrix.cli != 'false' - run: sh validate.sh $FLAGS -s cli-suite - - # The job below is a copy-paste of validate with the necessary tweaks - # to make all work with an upcoming GHC. Those tweaks include: - # - ghcup needs the prerelease channel activated - # - allow-newer for base libraries and Cabal* libraries - # - (sometimes) disabling some parts on Windows because it's hard to figure - # out why they fail - validate-prerelease: - # TODO: reenable when the next GHC prerelease appears - if: false - - name: Validate ${{ matrix.os }} ghc-prerelease - runs-on: ${{ matrix.os }} - outputs: - GHC_FOR_RELEASE: ${{ format('["{0}"]', env.GHC_FOR_RELEASE) }} - strategy: - matrix: - os: ["ubuntu-20.04", "macos-latest", "windows-latest"] - - steps: - - - uses: actions/checkout@v3 - - # See https://github.com/haskell/cabal/pull/8739 - - name: Sudo chmod to permit ghcup to update its cache - run: | - if [[ "${{ runner.os }}" == "Linux" ]]; then - sudo ls -lah /usr/local/.ghcup/cache - sudo mkdir -p /usr/local/.ghcup/cache - sudo ls -lah /usr/local/.ghcup/cache - sudo chown -R $USER /usr/local/.ghcup - sudo chmod -R 777 /usr/local/.ghcup - fi - - - name: ghcup - run: | - ghcup --version - ghcup config set cache true - ghcup config add-release-channel https://raw.githubusercontent.com/haskell/ghcup-metadata/master/ghcup-prereleases-0.0.7.yaml - ghcup install ghc --set 9.6.0.20230210 - ghcup install cabal --set latest - ghc --version - cabal update - - # See the following link for a breakdown of the following step - # https://github.com/haskell/actions/issues/7#issuecomment-745697160 - # - # See https://github.com/haskell/cabal/pull/8739 for why Windows is excluded - - if: ${{ runner.os != 'Windows' }} - uses: actions/cache@v3 - with: - # validate.sh uses a special build dir - path: | - ${{ steps.setup-haskell.outputs.cabal-store }} - dist-* - key: ${{ runner.os }}-${{ matrix.ghc }}-20220419-${{ github.sha }} - restore-keys: ${{ runner.os }}-${{ matrix.ghc }}-20220419- - - - name: Work around git problem https://bugs.launchpad.net/ubuntu/+source/git/+bug/1993586 (cabal PR #8546) - run: | - git config --global protocol.file.allow always - - # The '+exe' constraint below is important, otherwise cabal-install - # might decide to build the library but not the executable which is - # what we need. - - name: Install cabal-plan - run: | - cd $(mktemp -d) - cabal install cabal-plan --constraint='cabal-plan +exe' --allow-newer - echo "$HOME/.cabal/bin" >> $GITHUB_PATH - - # The tool is not essential to the rest of the test suite. If - # hackage-repo-tool is not present, any test that requires it will - # be skipped. - # We want to keep this in the loop but we don't want to fail if - # hackage-repo-tool breaks or fails to support a newer GHC version. - - name: Install hackage-repo-tool - continue-on-error: true - run: | - cd $(mktemp -d) - cabal install hackage-repo-tool - - # Needed by cabal-testsuite/PackageTests/Configure/setup.test.hs - - name: Install Autotools - if: runner.os == 'macOS' - run: | - brew install automake - - - name: Allow newer boot libraries - run: | - echo "allow-newer: base, template-haskell, ghc-prim, Cabal-syntax, Cabal-described, Cabal, cabal-install-solver, cabal-install" >> cabal.project.validate - - - name: Set validate inputs - run: | - FLAGS="${{ env.COMMON_FLAGS }}" - if [[ "${{ matrix.cli }}" == "false" ]]; then - FLAGS="$FLAGS --lib-only" - fi - echo "FLAGS=$FLAGS" >> $GITHUB_ENV - - - name: Validate print-config - run: sh validate.sh $FLAGS -s print-config - - - name: Validate print-tool-versions - run: sh validate.sh $FLAGS -s print-tool-versions - - - name: Validate build - run: sh validate.sh $FLAGS -s build - - - name: Validate lib-tests - env: - # `rawSystemStdInOut reports text decoding errors` - # test does not find ghc without the full path in windows - GHCPATH: ${{ steps.setup-haskell.outputs.ghc-exe }} - run: sh validate.sh $FLAGS -s lib-tests - - - name: Validate lib-suite - # see https://github.com/haskell/cabal/pull/8754#issuecomment-1435025848 - # for discussion about the trouble on Windows - if: ${{ runner.os != 'Windows' }} - run: sh validate.sh $FLAGS -s lib-suite - - - name: Validate cli-tests - if: matrix.cli != 'false' - run: sh validate.sh $FLAGS -s cli-tests - - - name: Validate cli-suite - # see https://github.com/haskell/cabal/pull/8754#issuecomment-1435025848 - # for discussion about the trouble on Windows - if: ( runner.os != 'Windows' ) && ( matrix.cli != 'false' ) + # Have to disable *-suite validation, see above the comment for lib-suite + if: (runner.os != 'Windows') || (matrix.ghc != '9.6.1') run: sh validate.sh $FLAGS -s cli-suite validate-old-ghcs: @@ -370,13 +232,13 @@ jobs: path: | ${{ steps.setup-haskell.outputs.cabal-store }} dist-* - key: ${{ runner.os }}-${{ matrix.ghc }}-20220419-${{ github.sha }} - restore-keys: ${{ runner.os }}-${{ matrix.ghc }}-20220419- + key: ${{ runner.os }}-${{ matrix.ghc }}-${{ github.sha }} + restore-keys: ${{ runner.os }}-${{ matrix.ghc }}- - name: Install cabal-plan run: | cd $(mktemp -d) - cabal install cabal-plan --constraint='cabal-plan +exe' + cabal install cabal-plan --allow-newer="base" --constraint='cabal-plan +exe' echo "$HOME/.cabal/bin" >> $GITHUB_PATH - name: Validate build @@ -424,7 +286,7 @@ jobs: - name: Install cabal-plan run: | cd $(mktemp -d) - cabal install cabal-plan --constraint='cabal-plan +exe' + cabal install cabal-plan --allow-newer="base" --constraint='cabal-plan +exe' echo "$HOME/.cabal/bin" >> $GITHUB_PATH - name: Download cabal executable from workflow artifacts diff --git a/Cabal-tests/Cabal-tests.cabal b/Cabal-tests/Cabal-tests.cabal index ce49eab8eb4..bb42abc7fc7 100644 --- a/Cabal-tests/Cabal-tests.cabal +++ b/Cabal-tests/Cabal-tests.cabal @@ -95,7 +95,7 @@ test-suite parser-tests , tasty-golden >=2.3.1.1 && <2.4 , tasty-hunit , tasty-quickcheck - , tree-diff >=0.1 && <0.3 + , tree-diff >=0.1 && <0.4 ghc-options: -Wall default-language: Haskell2010 @@ -161,7 +161,7 @@ test-suite hackage-tests , optparse-applicative >=0.13.2.0 && <0.17 , stm >=2.4.5.0 && <2.6 , tar >=0.5.0.3 && <0.6 - , tree-diff >=0.1 && <0.3 + , tree-diff >=0.1 && <0.4 ghc-options: -Wall -rtsopts -threaded default-extensions: CPP diff --git a/Cabal-tree-diff/Cabal-tree-diff.cabal b/Cabal-tree-diff/Cabal-tree-diff.cabal index 3d3e8087b3c..9c2d1fdf722 100644 --- a/Cabal-tree-diff/Cabal-tree-diff.cabal +++ b/Cabal-tree-diff/Cabal-tree-diff.cabal @@ -13,7 +13,7 @@ library , base , Cabal-syntax ^>=3.10.0.0 , Cabal ^>=3.10.0.0 - , tree-diff ^>=0.1 || ^>=0.2 + , tree-diff ^>=0.1 || ^>=0.3 exposed-modules: Data.TreeDiff.Instances.Cabal other-modules: diff --git a/cabal-install-solver/cabal-install-solver.cabal b/cabal-install-solver/cabal-install-solver.cabal index 16a0650cbf2..30d14db08ef 100644 --- a/cabal-install-solver/cabal-install-solver.cabal +++ b/cabal-install-solver/cabal-install-solver.cabal @@ -105,7 +105,7 @@ library build-depends: , array >=0.4 && <0.6 - , base >=4.10 && <4.18 + , base >=4.10 && <4.19 , bytestring >=0.10.6.0 && <0.12 , Cabal ^>=3.10 , Cabal-syntax ^>=3.10 @@ -138,7 +138,7 @@ Test-Suite unit-tests UnitTests.Distribution.Solver.Modular.MessageUtils build-depends: - , base >= 4.10 && <4.18 + , base >= 4.10 && <4.19 , Cabal , Cabal-syntax , cabal-install-solver diff --git a/cabal-install/cabal-install.cabal b/cabal-install/cabal-install.cabal index fed9aad89cd..79ef0b0e7b6 100644 --- a/cabal-install/cabal-install.cabal +++ b/cabal-install/cabal-install.cabal @@ -46,7 +46,7 @@ common warnings ghc-options: -Wunused-packages common base-dep - build-depends: base >=4.10 && <4.18 + build-depends: base >=4.10 && <4.19 common cabal-dep build-depends: Cabal ^>=3.10 diff --git a/cabal-testsuite/PackageTests/CustomPreProcess/cabal.test.hs b/cabal-testsuite/PackageTests/CustomPreProcess/cabal.test.hs index b492140b4ed..b6899ebdd1f 100644 --- a/cabal-testsuite/PackageTests/CustomPreProcess/cabal.test.hs +++ b/cabal-testsuite/PackageTests/CustomPreProcess/cabal.test.hs @@ -1,16 +1,13 @@ import Test.Cabal.Prelude -- Test internal custom preprocessor main = cabalTest $ do - isWin <- isWindows - ghc94 <- isGhcVersion "== 9.4.*" - expectBrokenIf (isWin && ghc94) 8451 $ do - skipUnless "no Cabal for GHC" =<< hasCabalForGhc + skipUnless "no Cabal for GHC" =<< hasCabalForGhc - -- old Cabal's ./Setup.hs output is difficult to normalise - recordMode DoNotRecord $ - cabal "v2-build" [] + -- old Cabal's ./Setup.hs output is difficult to normalise + recordMode DoNotRecord $ + cabal "v2-build" [] - -- here, we only care that result works: - withPlan $ do - r <- runPlanExe' "internal-preprocessor-test" "hello-world" [] - assertOutputContains "hello from A" r + -- here, we only care that result works: + withPlan $ do + r <- runPlanExe' "internal-preprocessor-test" "hello-world" [] + assertOutputContains "hello from A" r diff --git a/cabal-testsuite/PackageTests/FFI/ForeignOptsC/cabal.test.hs b/cabal-testsuite/PackageTests/FFI/ForeignOptsC/cabal.test.hs index 377b4a01466..5ccf990ebc1 100644 --- a/cabal-testsuite/PackageTests/FFI/ForeignOptsC/cabal.test.hs +++ b/cabal-testsuite/PackageTests/FFI/ForeignOptsC/cabal.test.hs @@ -1,7 +1,4 @@ import Test.Cabal.Prelude main = cabalTest $ do - isWin <- isWindows - ghc94 <- isGhcVersion "== 9.4.*" - expectBrokenIf (isWin && ghc94) 8451 $ do - cabal "v2-build" ["foreign-opts-c-exe"] - withPlan $ runPlanExe "foreign-opts-c" "foreign-opts-c-exe" [] + cabal "v2-build" ["foreign-opts-c-exe"] + withPlan $ runPlanExe "foreign-opts-c" "foreign-opts-c-exe" [] diff --git a/cabal-testsuite/PackageTests/FFI/ForeignOptsCxx/cabal.test.hs b/cabal-testsuite/PackageTests/FFI/ForeignOptsCxx/cabal.test.hs index 83177d702e3..0e4035296cc 100644 --- a/cabal-testsuite/PackageTests/FFI/ForeignOptsCxx/cabal.test.hs +++ b/cabal-testsuite/PackageTests/FFI/ForeignOptsCxx/cabal.test.hs @@ -1,7 +1,4 @@ import Test.Cabal.Prelude main = cabalTest $ do - isWin <- isWindows - ghc94 <- isGhcVersion "== 9.4.*" - expectBrokenIf (isWin && ghc94) 8451 $ do - cabal "v2-build" ["foreign-opts-cxx-exe"] - withPlan $ runPlanExe "foreign-opts-cxx" "foreign-opts-cxx-exe" [] + cabal "v2-build" ["foreign-opts-cxx-exe"] + withPlan $ runPlanExe "foreign-opts-cxx" "foreign-opts-cxx-exe" [] diff --git a/cabal-testsuite/PackageTests/NewBuild/CmdBench/OptionsFlag/cabal.test.hs b/cabal-testsuite/PackageTests/NewBuild/CmdBench/OptionsFlag/cabal.test.hs index 055979ea65c..70878dc99f8 100644 --- a/cabal-testsuite/PackageTests/NewBuild/CmdBench/OptionsFlag/cabal.test.hs +++ b/cabal-testsuite/PackageTests/NewBuild/CmdBench/OptionsFlag/cabal.test.hs @@ -1,12 +1,9 @@ import Test.Cabal.Prelude main = cabalTest $ do - isWin <- isWindows - ghc94 <- isGhcVersion "== 9.4.*" - expectBrokenIf (isWin && ghc94) 8451 $ do - cabal "v2-bench" - [ "--benchmark-option=1" - , "--benchmark-options=\"2 3\"" - , "--benchmark-option=4" - , "--benchmark-options=\"5 6\"" - ] + cabal "v2-bench" + [ "--benchmark-option=1" + , "--benchmark-options=\"2 3\"" + , "--benchmark-option=4" + , "--benchmark-options=\"5 6\"" + ] diff --git a/cabal-testsuite/PackageTests/NewBuild/CmdBuild/Script/cabal.test.hs b/cabal-testsuite/PackageTests/NewBuild/CmdBuild/Script/cabal.test.hs index 7e4c31a6af7..c803b794da0 100644 --- a/cabal-testsuite/PackageTests/NewBuild/CmdBuild/Script/cabal.test.hs +++ b/cabal-testsuite/PackageTests/NewBuild/CmdBuild/Script/cabal.test.hs @@ -1,13 +1,10 @@ import Test.Cabal.Prelude main = cabalTest . void $ do - isWin <- isWindows - ghc94 <- isGhcVersion "== 9.4.*" - expectBrokenIf (isWin && ghc94) 8451 $ do - cabal' "v2-build" ["script.hs"] + cabal' "v2-build" ["script.hs"] - env <- getTestEnv - cacheDir <- getScriptCacheDirectory $ testCurrentDir env "script.hs" + env <- getTestEnv + cacheDir <- getScriptCacheDirectory $ testCurrentDir env "script.hs" - shouldExist $ cacheDir "fake-package.cabal" - shouldExist $ cacheDir "scriptlocation" + shouldExist $ cacheDir "fake-package.cabal" + shouldExist $ cacheDir "scriptlocation" diff --git a/cabal-testsuite/PackageTests/NewBuild/CmdBuild/ScriptRerun/cabal.test.hs b/cabal-testsuite/PackageTests/NewBuild/CmdBuild/ScriptRerun/cabal.test.hs index 863d7706ab2..42e4b85091a 100644 --- a/cabal-testsuite/PackageTests/NewBuild/CmdBuild/ScriptRerun/cabal.test.hs +++ b/cabal-testsuite/PackageTests/NewBuild/CmdBuild/ScriptRerun/cabal.test.hs @@ -1,8 +1,5 @@ import Test.Cabal.Prelude main = cabalTest . void $ do - isWin <- isWindows - ghc94 <- isGhcVersion "== 9.4.*" - expectBrokenIf (isWin && ghc94) 8451 $ do - cabal' "v2-build" ["script.hs"] - cabal' "v2-build" ["script.hs"] + cabal' "v2-build" ["script.hs"] + cabal' "v2-build" ["script.hs"] diff --git a/cabal-testsuite/PackageTests/NewBuild/CmdClean/Keep/cabal.test.hs b/cabal-testsuite/PackageTests/NewBuild/CmdClean/Keep/cabal.test.hs index f54bf5a4bcf..582224b12d5 100644 --- a/cabal-testsuite/PackageTests/NewBuild/CmdClean/Keep/cabal.test.hs +++ b/cabal-testsuite/PackageTests/NewBuild/CmdClean/Keep/cabal.test.hs @@ -2,20 +2,17 @@ import Test.Cabal.Prelude import System.Directory (copyFile, removeFile) main = cabalTest . void $ do - isWin <- isWindows - ghc94 <- isGhcVersion "== 9.4.*" - expectBrokenIf (isWin && ghc94) 8451 $ do - env <- getTestEnv - let td = testCurrentDir env + env <- getTestEnv + let td = testCurrentDir env - cabal' "v2-build" ["script.hs"] - liftIO $ copyFile (td "script.hs") (td "script2.hs") - cabal' "v2-build" ["script2.hs"] - liftIO $ removeFile (td "script2.hs") - cabal' "v2-clean" [] + cabal' "v2-build" ["script.hs"] + liftIO $ copyFile (td "script.hs") (td "script2.hs") + cabal' "v2-build" ["script2.hs"] + liftIO $ removeFile (td "script2.hs") + cabal' "v2-clean" [] - cacheDir <- getScriptCacheDirectory (td "script.hs") - cacheDir2 <- getScriptCacheDirectory (td "script2.hs") + cacheDir <- getScriptCacheDirectory (td "script.hs") + cacheDir2 <- getScriptCacheDirectory (td "script2.hs") - shouldDirectoryExist cacheDir - shouldDirectoryNotExist cacheDir2 + shouldDirectoryExist cacheDir + shouldDirectoryNotExist cacheDir2 diff --git a/cabal-testsuite/PackageTests/NewBuild/CmdClean/Orphan/cabal.test.hs b/cabal-testsuite/PackageTests/NewBuild/CmdClean/Orphan/cabal.test.hs index 0eac6291ff2..f5da67c5c51 100644 --- a/cabal-testsuite/PackageTests/NewBuild/CmdClean/Orphan/cabal.test.hs +++ b/cabal-testsuite/PackageTests/NewBuild/CmdClean/Orphan/cabal.test.hs @@ -2,20 +2,17 @@ import Test.Cabal.Prelude import System.Directory (copyFile, removeFile) main = cabalTest . void $ do - isWin <- isWindows - ghc94 <- isGhcVersion "== 9.4.*" - expectBrokenIf (isWin && ghc94) 8451 $ do - env <- getTestEnv - let td = testCurrentDir env + env <- getTestEnv + let td = testCurrentDir env - cabal' "v2-build" ["script.hs"] - liftIO $ copyFile (td "script.hs") (td "script2.hs") - cabal' "v2-build" ["script2.hs"] - liftIO $ removeFile (td "script2.hs") - cabal' "v2-clean" ["script.hs"] + cabal' "v2-build" ["script.hs"] + liftIO $ copyFile (td "script.hs") (td "script2.hs") + cabal' "v2-build" ["script2.hs"] + liftIO $ removeFile (td "script2.hs") + cabal' "v2-clean" ["script.hs"] - cacheDir <- getScriptCacheDirectory (td "script.hs") - cacheDir2 <- getScriptCacheDirectory (td "script2.hs") + cacheDir <- getScriptCacheDirectory (td "script.hs") + cacheDir2 <- getScriptCacheDirectory (td "script2.hs") - shouldDirectoryNotExist cacheDir - shouldDirectoryNotExist cacheDir2 + shouldDirectoryNotExist cacheDir + shouldDirectoryNotExist cacheDir2 diff --git a/cabal-testsuite/PackageTests/NewBuild/CmdClean/Script/cabal.test.hs b/cabal-testsuite/PackageTests/NewBuild/CmdClean/Script/cabal.test.hs index aa0fc3e9d2f..bcf83d0d131 100644 --- a/cabal-testsuite/PackageTests/NewBuild/CmdClean/Script/cabal.test.hs +++ b/cabal-testsuite/PackageTests/NewBuild/CmdClean/Script/cabal.test.hs @@ -1,14 +1,11 @@ import Test.Cabal.Prelude main = cabalTest . void $ do - isWin <- isWindows - ghc94 <- isGhcVersion "== 9.4.*" - expectBrokenIf (isWin && ghc94) 8451 $ do - cabal' "v2-build" ["script.hs"] - cabal' "v2-clean" ["script.hs"] + cabal' "v2-build" ["script.hs"] + cabal' "v2-clean" ["script.hs"] - env <- getTestEnv - cacheDir <- getScriptCacheDirectory (testCurrentDir env "script.hs") + env <- getTestEnv + cacheDir <- getScriptCacheDirectory (testCurrentDir env "script.hs") - shouldDirectoryNotExist cacheDir - shouldDirectoryNotExist (testDistDir env) + shouldDirectoryNotExist cacheDir + shouldDirectoryNotExist (testDistDir env) diff --git a/cabal-testsuite/PackageTests/NewBuild/CmdRun/Script/cabal.test.hs b/cabal-testsuite/PackageTests/NewBuild/CmdRun/Script/cabal.test.hs index e145dc9d863..d0566559fbb 100644 --- a/cabal-testsuite/PackageTests/NewBuild/CmdRun/Script/cabal.test.hs +++ b/cabal-testsuite/PackageTests/NewBuild/CmdRun/Script/cabal.test.hs @@ -1,14 +1,11 @@ import Test.Cabal.Prelude main = cabalTest $ do - isWin <- isWindows - ghc94 <- isGhcVersion "== 9.4.*" - expectBrokenIf (isWin && ghc94) 8451 $ do - res <- cabal' "v2-run" ["script.hs"] - assertOutputContains "Hello World" res + res <- cabal' "v2-run" ["script.hs"] + assertOutputContains "Hello World" res - env <- getTestEnv - cacheDir <- getScriptCacheDirectory (testCurrentDir env "script.hs") + env <- getTestEnv + cacheDir <- getScriptCacheDirectory (testCurrentDir env "script.hs") - shouldExist $ cacheDir "fake-package.cabal" - shouldExist $ cacheDir "scriptlocation" + shouldExist $ cacheDir "fake-package.cabal" + shouldExist $ cacheDir "scriptlocation" diff --git a/cabal-testsuite/PackageTests/NewBuild/CmdRun/ScriptNoExtension/cabal.test.hs b/cabal-testsuite/PackageTests/NewBuild/CmdRun/ScriptNoExtension/cabal.test.hs index e010ea6ec05..67f399f33cd 100644 --- a/cabal-testsuite/PackageTests/NewBuild/CmdRun/ScriptNoExtension/cabal.test.hs +++ b/cabal-testsuite/PackageTests/NewBuild/CmdRun/ScriptNoExtension/cabal.test.hs @@ -1,7 +1,4 @@ import Test.Cabal.Prelude main = cabalTest . void $ do - isWin <- isWindows - ghc94 <- isGhcVersion "== 9.4.*" - expectBrokenIf (isWin && ghc94) 8451 $ do - cabal' "v2-run" ["with sp"] >>= assertOutputContains "Hello World" + cabal' "v2-run" ["with sp"] >>= assertOutputContains "Hello World" diff --git a/cabal-testsuite/PackageTests/NewBuild/CmdRun/ScriptRerun/cabal.test.hs b/cabal-testsuite/PackageTests/NewBuild/CmdRun/ScriptRerun/cabal.test.hs index 3092a6ea57b..6a013bd40cf 100644 --- a/cabal-testsuite/PackageTests/NewBuild/CmdRun/ScriptRerun/cabal.test.hs +++ b/cabal-testsuite/PackageTests/NewBuild/CmdRun/ScriptRerun/cabal.test.hs @@ -1,8 +1,5 @@ import Test.Cabal.Prelude main = cabalTest . void $ do - isWin <- isWindows - ghc94 <- isGhcVersion "== 9.4.*" - expectBrokenIf (isWin && ghc94) 8451 $ do - cabal' "v2-run" ["script.hs"] - cabal' "v2-run" ["script.hs"] + cabal' "v2-run" ["script.hs"] + cabal' "v2-run" ["script.hs"] diff --git a/cabal-testsuite/PackageTests/NewBuild/CmdRun/ScriptWithProjectBlock/cabal.test.hs b/cabal-testsuite/PackageTests/NewBuild/CmdRun/ScriptWithProjectBlock/cabal.test.hs index 731fb7182da..a108347b01b 100644 --- a/cabal-testsuite/PackageTests/NewBuild/CmdRun/ScriptWithProjectBlock/cabal.test.hs +++ b/cabal-testsuite/PackageTests/NewBuild/CmdRun/ScriptWithProjectBlock/cabal.test.hs @@ -1,9 +1,6 @@ import Test.Cabal.Prelude main = cabalTest $ do - isWin <- isWindows - ghc94 <- isGhcVersion "== 9.4.*" - expectBrokenIf (isWin && ghc94) 8451 $ do - -- script is called "s.hs" to avoid Windows long path issue in CI - res <- cabal' "v2-run" ["s.hs"] - assertOutputContains "Hello World" res + -- script is called "s.hs" to avoid Windows long path issue in CI + res <- cabal' "v2-run" ["s.hs"] + assertOutputContains "Hello World" res diff --git a/cabal-testsuite/PackageTests/NewBuild/CmdTest/OptionsFlag/cabal.test.hs b/cabal-testsuite/PackageTests/NewBuild/CmdTest/OptionsFlag/cabal.test.hs index c0493cf4629..fd38280c40e 100644 --- a/cabal-testsuite/PackageTests/NewBuild/CmdTest/OptionsFlag/cabal.test.hs +++ b/cabal-testsuite/PackageTests/NewBuild/CmdTest/OptionsFlag/cabal.test.hs @@ -1,12 +1,9 @@ import Test.Cabal.Prelude main = cabalTest $ do - isWin <- isWindows - ghc94 <- isGhcVersion "== 9.4.*" - expectBrokenIf (isWin && ghc94) 8451 $ do - cabal "v2-test" - [ "--test-option=1" - , "--test-options=\"2 3\"" - , "--test-option=4" - , "--test-options=\"5 6\"" - ] + cabal "v2-test" + [ "--test-option=1" + , "--test-options=\"2 3\"" + , "--test-option=4" + , "--test-options=\"5 6\"" + ] diff --git a/cabal-testsuite/cabal-testsuite.cabal b/cabal-testsuite/cabal-testsuite.cabal index e3ba1da7cbb..1919a33bc77 100644 --- a/cabal-testsuite/cabal-testsuite.cabal +++ b/cabal-testsuite/cabal-testsuite.cabal @@ -26,7 +26,7 @@ common shared default-language: Haskell2010 build-depends: - , base >= 4.9 && <4.18 + , base >= 4.9 && <4.19 -- this needs to match the in-tree lib:Cabal version , Cabal ^>= 3.10.0.0 , Cabal-syntax ^>= 3.10.0.0 @@ -80,7 +80,7 @@ library if !os(windows) build-depends: - , unix ^>= 2.6.0.0 || ^>= 2.7.0.0 + , unix ^>= 2.6.0.0 || ^>= 2.8.0.0 else build-depends: , Win32