summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZubin Duggal <zubin.duggal@gmail.com>2021-10-04 21:54:45 +0530
committerZubin Duggal <zubin.duggal@gmail.com>2021-10-13 13:51:03 +0530
commit8d5a5ecf620bf440a5cb853687c2d0e7ed5f488f (patch)
tree5de62f478cd1a33c4bfb0c49aaba37aeddf26945
parent8c224b6d43e220930ef0a60e50636e4910d15229 (diff)
downloadhaskell-8d5a5ecf620bf440a5cb853687c2d0e7ed5f488f.tar.gz
hadrian: avoid building check-{exact,ppr} and count-deps when the tests don't need them
hadrian: build optional dependencies with test compiler
-rw-r--r--hadrian/src/CommandLine.hs2
-rw-r--r--hadrian/src/Rules/Test.hs54
-rw-r--r--testsuite/tests/count-deps/all.T4
-rw-r--r--testsuite/tests/printer/all.T292
4 files changed, 185 insertions, 167 deletions
diff --git a/hadrian/src/CommandLine.hs b/hadrian/src/CommandLine.hs
index 2bee0e44e9..e2316057e3 100644
--- a/hadrian/src/CommandLine.hs
+++ b/hadrian/src/CommandLine.hs
@@ -77,6 +77,8 @@ data TestArgs = TestArgs
-- the rts sources and the haddock stats directory even if the test
-- compiler is not in-tree
-- If this flag is set, then those tests will also be run.
+ -- This is useful when we want to test the bindist, but we still
+ -- have access to the build directory
}
deriving (Eq, Show)
diff --git a/hadrian/src/Rules/Test.hs b/hadrian/src/Rules/Test.hs
index 31d9427513..9f81ea5f41 100644
--- a/hadrian/src/Rules/Test.hs
+++ b/hadrian/src/Rules/Test.hs
@@ -44,11 +44,11 @@ countDepsSourcePath = "utils/count-deps/Main.hs"
countDepsExtra :: Maybe String
countDepsExtra = Just "-iutils/count-deps"
-checkPrograms :: [(FilePath, FilePath, Maybe String, Package)]
+checkPrograms :: [(String,FilePath, FilePath, Maybe String, Package)]
checkPrograms =
- [ (checkPprProgPath, checkPprSourcePath, checkPprExtra, checkPpr)
- , (checkExactProgPath, checkExactSourcePath, checkExactExtra, checkExact)
- , (countDepsProgPath, countDepsSourcePath, countDepsExtra, countDeps)
+ [ ("test:check-ppr",checkPprProgPath, checkPprSourcePath, checkPprExtra, checkPpr)
+ , ("test:check-exact",checkExactProgPath, checkExactSourcePath, checkExactExtra, checkExact)
+ , ("test:count-deps",countDepsProgPath, countDepsSourcePath, countDepsExtra, countDeps)
]
ghcConfigPath :: FilePath
@@ -69,23 +69,26 @@ testRules = do
-- Rules for building check-ppr, check-exact and
-- check-ppr-annotations with the compiler we are going to test
-- (in-tree or out-of-tree).
- forM_ checkPrograms $ \(progPath, sourcePath, mextra, progPkg) ->
+ forM_ checkPrograms $ \(name, progPath, sourcePath, mextra, progPkg) -> do
+ name ~> need [root -/- progPath]
root -/- progPath %> \path -> do
need [ sourcePath ]
testGhc <- testCompiler <$> userSetting defaultTestArgs
- top <- topDirectory
- depsPkgs <- packageDependencies <$> readPackageData progPkg
-- when we're about to test an in-tree compiler, just build the package
-- normally, NOT stage3, as there are no rules for stage4 yet
if (testGhc `elem` ["stage1", "stage2"])
then do
let stg = stageOf testGhc
+ fs <- pkgFile stg progPkg
+ need [fs]
prog_path <- programPath =<< programContext stg progPkg
abs_prog_path <- liftIO (IO.canonicalizePath prog_path)
createFileLink abs_prog_path path
-- otherwise, build it by directly invoking ghc
else do
+ top <- topDirectory
+ depsPkgs <- packageDependencies <$> readPackageData progPkg
bindir <- getBinaryDirectory testGhc
debugged <- ghcDebugged <$> flavour
dynPrograms <- dynamicGhcPrograms =<< flavour
@@ -143,10 +146,6 @@ testRules = do
ccFlags <- settingsFileSetting SettingsFileSetting_CCompilerFlags
pythonPath <- builderPath Python
- need [ root -/- checkPprProgPath
- , root -/- checkExactProgPath
- , root -/- countDepsProgPath
- ]
-- Set environment variables for test's Makefile.
-- TODO: Ideally we would define all those env vars in 'env', so that
@@ -174,21 +173,37 @@ testRules = do
let test_target tt = target (vanillaContext Stage2 compiler) (Testsuite tt) [] []
- when (isInTreeCompiler testCompilerArg) $ do
- -- We need to ask the testsuite if it needs any extra hadrian dependencies for the
- -- tests it is going to run,
- -- for example "docs_haddock"
- -- We then need to go and build these dependencies
- extra_targets <- words <$> askWithResources [] (test_target GetExtraDeps)
- need extra_targets
+ -- We need to ask the testsuite if it needs any extra hadrian dependencies for the
+ -- tests it is going to run,
+ -- for example "docs_haddock"
+ -- We then need to go and build these dependencies
+ extra_targets <- words <$> askWithResources [] (test_target GetExtraDeps)
+ need $ filter (isOkToBuild args) extra_targets
-- Execute the test target.
-- We override the verbosity setting to make sure the user can see
-- the test output: https://gitlab.haskell.org/ghc/ghc/issues/15951.
withVerbosity Diagnostic $ buildWithCmdOptions env $ test_target RunTest
+-- | Given a test compiler and a hadrian dependency (target), check if we
+-- can build the target with the compiler
+--
+-- We can always build a target with an intree compiler But we can only build
+-- targets with special support (checkPrograms) with arbitrary compilers.
+--
+-- We need to build the dependencies if --test-have-intree-files is set.
+-- We should have built them already by this point, but
+isOkToBuild :: TestArgs -> String -> Bool
+isOkToBuild args target
+ = isInTreeCompiler (testCompiler args)
+ || testHasInTreeFiles args
+ || target `elem` map fst5 checkPrograms
+ where
+ fst5 (a,_,_,_,_) = a
+
-- | Build the timeout program.
-- See: https://github.com/ghc/ghc/blob/master/testsuite/timeout/Makefile#L23
+
timeoutProgBuilder :: Action ()
timeoutProgBuilder = do
root <- buildRoot
@@ -218,9 +233,8 @@ needTestsuitePackages testGhc = do
let stg = stageOf testGhc
allpkgs <- packages <$> flavour
stgpkgs <- allpkgs (succ stg)
- testpkgs <- testsuitePackages
let pkgs = filter (\p -> not $ "iserv" `isInfixOf` pkgName p)
- (stgpkgs ++ testpkgs)
+ (stgpkgs ++ [ timeout | windowsHost ])
need =<< mapM (pkgFile stg) pkgs
needIservBins
diff --git a/testsuite/tests/count-deps/all.T b/testsuite/tests/count-deps/all.T
index 6b8abd9c95..a7c31b50c9 100644
--- a/testsuite/tests/count-deps/all.T
+++ b/testsuite/tests/count-deps/all.T
@@ -1,2 +1,2 @@
-test('CountDepsAst', [], makefile_test, ['count-deps-ast'])
-test('CountDepsParser', [], makefile_test, ['count-deps-parser'])
+test('CountDepsAst', [req_hadrian_deps(["test:count-deps"])], makefile_test, ['count-deps-ast'])
+test('CountDepsParser', [req_hadrian_deps(["test:count-deps"])], makefile_test, ['count-deps-parser'])
diff --git a/testsuite/tests/printer/all.T b/testsuite/tests/printer/all.T
index 7ef327b716..18ba7ca5d7 100644
--- a/testsuite/tests/printer/all.T
+++ b/testsuite/tests/printer/all.T
@@ -1,70 +1,72 @@
-test('Ppr001', ignore_stderr, makefile_test, ['ppr001'])
-test('Ppr002', ignore_stderr, makefile_test, ['ppr002'])
-test('Ppr002a', ignore_stderr, makefile_test, ['ppr002a'])
-test('Ppr003', ignore_stderr, makefile_test, ['ppr003'])
-test('Ppr004', ignore_stderr, makefile_test, ['ppr004'])
-test('Ppr005', ignore_stderr, makefile_test, ['ppr005'])
-test('Ppr006', ignore_stderr, makefile_test, ['ppr006'])
-test('Ppr007', ignore_stderr, makefile_test, ['ppr007'])
+req_ppr_deps = req_hadrian_deps(['test:check-ppr','test:check-exact'])
+
+test('Ppr001', [ignore_stderr,req_ppr_deps], makefile_test, ['ppr001'])
+test('Ppr002', [ignore_stderr,req_ppr_deps], makefile_test, ['ppr002'])
+test('Ppr002a', [ignore_stderr,req_ppr_deps], makefile_test, ['ppr002a'])
+test('Ppr003', [ignore_stderr,req_ppr_deps], makefile_test, ['ppr003'])
+test('Ppr004', [ignore_stderr,req_ppr_deps], makefile_test, ['ppr004'])
+test('Ppr005', [ignore_stderr,req_ppr_deps], makefile_test, ['ppr005'])
+test('Ppr006', [ignore_stderr,req_ppr_deps], makefile_test, ['ppr006'])
+test('Ppr007', [ignore_stderr,req_ppr_deps], makefile_test, ['ppr007'])
# These tests have CPP, and as of 2021-03-15 the processing on the
# darwin and windows platforms is slightly different.
-#test('Ppr008', [ignore_stderr,expect_fail], makefile_test, ['ppr008'])
-#test('Ppr010', [ignore_stderr,expect_fail], makefile_test, ['ppr010'])
+#test('Ppr008', [ignore_stderr,expect_fail,req_ppr_deps], makefile_test, ['ppr008'])
+#test('Ppr010', [ignore_stderr,expect_fail,req_ppr_deps], makefile_test, ['ppr010'])
-test('Ppr009', ignore_stderr, makefile_test, ['ppr009'])
-test('Ppr011', ignore_stderr, makefile_test, ['ppr011'])
-test('Ppr012', ignore_stderr, makefile_test, ['ppr012'])
-test('Ppr013', ignore_stderr, makefile_test, ['ppr013'])
-test('Ppr014', ignore_stderr, makefile_test, ['ppr014'])
-test('Ppr015', ignore_stderr, makefile_test, ['ppr015'])
-test('Ppr016', ignore_stderr, makefile_test, ['ppr016'])
-test('Ppr017', ignore_stderr, makefile_test, ['ppr017'])
-test('Ppr018', ignore_stderr, makefile_test, ['ppr018'])
-test('Ppr019', ignore_stderr, makefile_test, ['ppr019'])
-test('Ppr020', ignore_stderr, makefile_test, ['ppr020'])
-test('Ppr021', ignore_stderr, makefile_test, ['ppr021'])
-test('Ppr022', ignore_stderr, makefile_test, ['ppr022'])
-test('Ppr023', ignore_stderr, makefile_test, ['ppr023'])
-test('Ppr024', ignore_stderr, makefile_test, ['ppr024'])
-test('Ppr025', ignore_stderr, makefile_test, ['ppr025'])
-test('Ppr026', ignore_stderr, makefile_test, ['ppr026'])
-test('Ppr027', [ignore_stderr, req_interp], makefile_test, ['ppr027'])
-test('Ppr028', ignore_stderr, makefile_test, ['ppr028'])
-test('Ppr029', ignore_stderr, makefile_test, ['ppr029'])
-test('Ppr030', ignore_stderr, makefile_test, ['ppr030'])
-test('Ppr031', ignore_stderr, makefile_test, ['ppr031'])
-test('Ppr032', ignore_stderr, makefile_test, ['ppr032'])
-test('Ppr033', ignore_stderr, makefile_test, ['ppr033'])
-test('Ppr034', ignore_stderr, makefile_test, ['ppr034'])
-test('Ppr035', ignore_stderr, makefile_test, ['ppr035'])
-test('Ppr036', ignore_stderr, makefile_test, ['ppr036'])
-test('Ppr037', ignore_stderr, makefile_test, ['ppr037'])
-test('Ppr038', ignore_stderr, makefile_test, ['ppr038'])
-test('Ppr039', ignore_stderr, makefile_test, ['ppr039'])
-test('Ppr040', [ignore_stderr, req_interp], makefile_test, ['ppr040'])
-test('Ppr041', ignore_stderr, makefile_test, ['ppr041'])
-test('Ppr042', ignore_stderr, makefile_test, ['ppr042'])
-test('Ppr043', [ignore_stderr, req_interp], makefile_test, ['ppr043'])
-test('Ppr044', ignore_stderr, makefile_test, ['ppr044'])
-test('Ppr045', ignore_stderr, makefile_test, ['ppr045'])
-test('Ppr046', ignore_stderr, makefile_test, ['ppr046'])
-test('Ppr048', ignore_stderr, makefile_test, ['ppr048'])
-test('Ppr049', ignore_stderr, makefile_test, ['ppr049'])
-test('Ppr050', ignore_stderr, makefile_test, ['ppr050'])
-test('Ppr051', ignore_stderr, makefile_test, ['ppr051'])
-test('Ppr052', ignore_stderr, makefile_test, ['ppr052'])
-test('Ppr053', ignore_stderr, makefile_test, ['ppr053'])
-test('Ppr054', ignore_stderr, makefile_test, ['ppr054'])
-test('Ppr055', ignore_stderr, makefile_test, ['ppr055'])
-test('T13050p', ignore_stderr, makefile_test, ['T13050p'])
-test('T13199', [ignore_stderr, req_interp], makefile_test, ['T13199'])
-test('T13550', [ignore_stderr, req_interp], makefile_test, ['T13550'])
-test('T13942', [ignore_stderr, req_interp], makefile_test, ['T13942'])
-test('T14289', [ignore_stderr, req_interp], makefile_test, ['T14289'])
-test('T14289b', [ignore_stderr, req_interp], makefile_test, ['T14289b'])
-test('T14289c', [ignore_stderr, req_interp], makefile_test, ['T14289c'])
-test('T14306', ignore_stderr, makefile_test, ['T14306'])
+test('Ppr009', [ignore_stderr, req_ppr_deps], makefile_test, ['ppr009'])
+test('Ppr011', [ignore_stderr, req_ppr_deps], makefile_test, ['ppr011'])
+test('Ppr012', [ignore_stderr, req_ppr_deps], makefile_test, ['ppr012'])
+test('Ppr013', [ignore_stderr, req_ppr_deps], makefile_test, ['ppr013'])
+test('Ppr014', [ignore_stderr, req_ppr_deps], makefile_test, ['ppr014'])
+test('Ppr015', [ignore_stderr, req_ppr_deps], makefile_test, ['ppr015'])
+test('Ppr016', [ignore_stderr, req_ppr_deps], makefile_test, ['ppr016'])
+test('Ppr017', [ignore_stderr, req_ppr_deps], makefile_test, ['ppr017'])
+test('Ppr018', [ignore_stderr, req_ppr_deps], makefile_test, ['ppr018'])
+test('Ppr019', [ignore_stderr, req_ppr_deps], makefile_test, ['ppr019'])
+test('Ppr020', [ignore_stderr, req_ppr_deps], makefile_test, ['ppr020'])
+test('Ppr021', [ignore_stderr, req_ppr_deps], makefile_test, ['ppr021'])
+test('Ppr022', [ignore_stderr, req_ppr_deps], makefile_test, ['ppr022'])
+test('Ppr023', [ignore_stderr, req_ppr_deps], makefile_test, ['ppr023'])
+test('Ppr024', [ignore_stderr, req_ppr_deps], makefile_test, ['ppr024'])
+test('Ppr025', [ignore_stderr, req_ppr_deps], makefile_test, ['ppr025'])
+test('Ppr026', [ignore_stderr, req_ppr_deps], makefile_test, ['ppr026'])
+test('Ppr027', [ignore_stderr, req_interp,req_ppr_deps], makefile_test, ['ppr027'])
+test('Ppr028', [ignore_stderr, req_ppr_deps], makefile_test, ['ppr028'])
+test('Ppr029', [ignore_stderr, req_ppr_deps], makefile_test, ['ppr029'])
+test('Ppr030', [ignore_stderr, req_ppr_deps], makefile_test, ['ppr030'])
+test('Ppr031', [ignore_stderr, req_ppr_deps], makefile_test, ['ppr031'])
+test('Ppr032', [ignore_stderr, req_ppr_deps], makefile_test, ['ppr032'])
+test('Ppr033', [ignore_stderr, req_ppr_deps], makefile_test, ['ppr033'])
+test('Ppr034', [ignore_stderr, req_ppr_deps], makefile_test, ['ppr034'])
+test('Ppr035', [ignore_stderr, req_ppr_deps], makefile_test, ['ppr035'])
+test('Ppr036', [ignore_stderr, req_ppr_deps], makefile_test, ['ppr036'])
+test('Ppr037', [ignore_stderr, req_ppr_deps], makefile_test, ['ppr037'])
+test('Ppr038', [ignore_stderr, req_ppr_deps], makefile_test, ['ppr038'])
+test('Ppr039', [ignore_stderr, req_ppr_deps], makefile_test, ['ppr039'])
+test('Ppr040', [ignore_stderr, req_interp,req_ppr_deps], makefile_test, ['ppr040'])
+test('Ppr041', [ignore_stderr, req_ppr_deps], makefile_test, ['ppr041'])
+test('Ppr042', [ignore_stderr, req_ppr_deps], makefile_test, ['ppr042'])
+test('Ppr043', [ignore_stderr, req_interp,req_ppr_deps], makefile_test, ['ppr043'])
+test('Ppr044', [ignore_stderr, req_ppr_deps], makefile_test, ['ppr044'])
+test('Ppr045', [ignore_stderr, req_ppr_deps], makefile_test, ['ppr045'])
+test('Ppr046', [ignore_stderr, req_ppr_deps], makefile_test, ['ppr046'])
+test('Ppr048', [ignore_stderr, req_ppr_deps], makefile_test, ['ppr048'])
+test('Ppr049', [ignore_stderr, req_ppr_deps], makefile_test, ['ppr049'])
+test('Ppr050', [ignore_stderr, req_ppr_deps], makefile_test, ['ppr050'])
+test('Ppr051', [ignore_stderr, req_ppr_deps], makefile_test, ['ppr051'])
+test('Ppr052', [ignore_stderr, req_ppr_deps], makefile_test, ['ppr052'])
+test('Ppr053', [ignore_stderr, req_ppr_deps], makefile_test, ['ppr053'])
+test('Ppr054', [ignore_stderr, req_ppr_deps], makefile_test, ['ppr054'])
+test('Ppr055', [ignore_stderr, req_ppr_deps], makefile_test, ['ppr055'])
+test('T13050p', [ignore_stderr, req_ppr_deps], makefile_test, ['T13050p'])
+test('T13199', [ignore_stderr, req_interp,req_ppr_deps], makefile_test, ['T13199'])
+test('T13550', [ignore_stderr, req_interp,req_ppr_deps], makefile_test, ['T13550'])
+test('T13942', [ignore_stderr, req_interp,req_ppr_deps], makefile_test, ['T13942'])
+test('T14289', [ignore_stderr, req_interp,req_ppr_deps], makefile_test, ['T14289'])
+test('T14289b', [ignore_stderr, req_interp,req_ppr_deps], makefile_test, ['T14289b'])
+test('T14289c', [ignore_stderr, req_interp,req_ppr_deps], makefile_test, ['T14289c'])
+test('T14306', [ignore_stderr, req_ppr_deps], makefile_test, ['T14306'])
test('T14343', normal, compile_fail, [''])
test('T14343b', normal, compile_fail, [''])
test('T15761', normal, compile_fail, [''])
@@ -72,104 +74,104 @@ test('T17697', normal, compile, [''])
test('T18052a', normal, compile,
['-ddump-simpl -ddump-types -dno-typeable-binds -dsuppress-uniques'])
test('T18791', normal, compile, ['-ddump-parsed-ast'])
-test('RdrNames', ignore_stderr, makefile_test, ['RdrNames'])
-test('StarBinderAnns', ignore_stderr, makefile_test, ['StarBinderAnns'])
-test('Test10255', ignore_stderr, makefile_test, ['Test10255'])
-test('Test10268', ignore_stderr, makefile_test, ['Test10268'])
-test('Test10269', ignore_stderr, makefile_test, ['Test10269'])
-test('Test10276', ignore_stderr, makefile_test, ['Test10276'])
-test('Test10278', ignore_stderr, makefile_test, ['Test10278'])
-test('Test10280', ignore_stderr, makefile_test, ['Test10280'])
-test('Test10307', ignore_stderr, makefile_test, ['Test10307'])
-test('Test10309', ignore_stderr, makefile_test, ['Test10309'])
-test('Test10312', ignore_stderr, makefile_test, ['Test10312'])
-test('Test10313', ignore_stderr, makefile_test, ['Test10313'])
-test('Test10354', ignore_stderr, makefile_test, ['Test10354'])
-test('Test10357', ignore_stderr, makefile_test, ['Test10357'])
-test('Test10358', ignore_stderr, makefile_test, ['Test10358'])
-test('Test10396', ignore_stderr, makefile_test, ['Test10396'])
-test('Test10399', ignore_stderr, makefile_test, ['Test10399'])
-test('Test10598', ignore_stderr, makefile_test, ['Test10598'])
+test('RdrNames', [ignore_stderr, req_ppr_deps], makefile_test, ['RdrNames'])
+test('StarBinderAnns', [ignore_stderr, req_ppr_deps], makefile_test, ['StarBinderAnns'])
+test('Test10255', [ignore_stderr, req_ppr_deps], makefile_test, ['Test10255'])
+test('Test10268', [ignore_stderr, req_ppr_deps], makefile_test, ['Test10268'])
+test('Test10269', [ignore_stderr, req_ppr_deps], makefile_test, ['Test10269'])
+test('Test10276', [ignore_stderr, req_ppr_deps], makefile_test, ['Test10276'])
+test('Test10278', [ignore_stderr, req_ppr_deps], makefile_test, ['Test10278'])
+test('Test10280', [ignore_stderr, req_ppr_deps], makefile_test, ['Test10280'])
+test('Test10307', [ignore_stderr, req_ppr_deps], makefile_test, ['Test10307'])
+test('Test10309', [ignore_stderr, req_ppr_deps], makefile_test, ['Test10309'])
+test('Test10312', [ignore_stderr, req_ppr_deps], makefile_test, ['Test10312'])
+test('Test10313', [ignore_stderr, req_ppr_deps], makefile_test, ['Test10313'])
+test('Test10354', [ignore_stderr, req_ppr_deps], makefile_test, ['Test10354'])
+test('Test10357', [ignore_stderr, req_ppr_deps], makefile_test, ['Test10357'])
+test('Test10358', [ignore_stderr, req_ppr_deps], makefile_test, ['Test10358'])
+test('Test10396', [ignore_stderr, req_ppr_deps], makefile_test, ['Test10396'])
+test('Test10399', [ignore_stderr, req_ppr_deps], makefile_test, ['Test10399'])
+test('Test10598', [ignore_stderr, req_ppr_deps], makefile_test, ['Test10598'])
# PPR of unicode -> does not roundtrip. See #18846
-test('Test11018', [ignore_stderr,expect_fail], makefile_test, ['Test11018'])
-test('Test17519', [ignore_stderr,expect_fail], makefile_test, ['Test17519'])
+test('Test11018', [ignore_stderr,expect_fail,req_ppr_deps], makefile_test, ['Test11018'])
+test('Test17519', [ignore_stderr,expect_fail,req_ppr_deps], makefile_test, ['Test17519'])
-test('Test11321', ignore_stderr, makefile_test, ['Test11321'])
-test('Test11332', ignore_stderr, makefile_test, ['Test11332'])
+test('Test11321', [ignore_stderr, req_ppr_deps], makefile_test, ['Test11321'])
+test('Test11332', [ignore_stderr, req_ppr_deps], makefile_test, ['Test11332'])
-test('Test11430', ignore_stderr, makefile_test, ['Test11430'])
-test('Test12417', ignore_stderr, makefile_test, ['Test12417'])
-test('Test13163', ignore_stderr, makefile_test, ['Test13163'])
-test('Test15303', ignore_stderr, makefile_test, ['Test15303'])
-test('Test16212', ignore_stderr, makefile_test, ['Test16212'])
-test('Test16230', ignore_stderr, makefile_test, ['Test16230'])
-test('Test16236', ignore_stderr, makefile_test, ['Test16236'])
-test('Test16279', ignore_stderr, makefile_test, ['Test16279'])
-test('Test17388', ignore_stderr, makefile_test, ['Test17388'])
-test('Test15242', ignore_stderr, makefile_test, ['Test15242'])
-test('AnnotationLet', ignore_stderr, makefile_test, ['AnnotationLet'])
-test('TestBoolFormula', ignore_stderr, makefile_test, ['TestBoolFormula'])
-test('BundleExport', ignore_stderr, makefile_test, ['BundleExport'])
-test('AnnotationTuple', ignore_stderr, makefile_test, ['AnnotationTuple'])
-test('ListComprehensions', ignore_stderr, makefile_test, ['ListComprehensions'])
-test('load-main', ignore_stderr, makefile_test, ['load-main'])
+test('Test11430', [ignore_stderr, req_ppr_deps], makefile_test, ['Test11430'])
+test('Test12417', [ignore_stderr, req_ppr_deps], makefile_test, ['Test12417'])
+test('Test13163', [ignore_stderr, req_ppr_deps], makefile_test, ['Test13163'])
+test('Test15303', [ignore_stderr, req_ppr_deps], makefile_test, ['Test15303'])
+test('Test16212', [ignore_stderr, req_ppr_deps], makefile_test, ['Test16212'])
+test('Test16230', [ignore_stderr, req_ppr_deps], makefile_test, ['Test16230'])
+test('Test16236', [ignore_stderr, req_ppr_deps], makefile_test, ['Test16236'])
+test('Test16279', [ignore_stderr, req_ppr_deps], makefile_test, ['Test16279'])
+test('Test17388', [ignore_stderr, req_ppr_deps], makefile_test, ['Test17388'])
+test('Test15242', [ignore_stderr, req_ppr_deps], makefile_test, ['Test15242'])
+test('AnnotationLet', [ignore_stderr, req_ppr_deps], makefile_test, ['AnnotationLet'])
+test('TestBoolFormula', [ignore_stderr, req_ppr_deps], makefile_test, ['TestBoolFormula'])
+test('BundleExport', [ignore_stderr, req_ppr_deps], makefile_test, ['BundleExport'])
+test('AnnotationTuple', [ignore_stderr, req_ppr_deps], makefile_test, ['AnnotationTuple'])
+test('ListComprehensions', [ignore_stderr, req_ppr_deps], makefile_test, ['ListComprehensions'])
+test('load-main', [ignore_stderr, req_ppr_deps], makefile_test, ['load-main'])
-test('PprRecordDotSyntax1', ignore_stderr, makefile_test, ['PprRecordDotSyntax1'])
-test('PprRecordDotSyntax2', ignore_stderr, makefile_test, ['PprRecordDotSyntax2'])
-test('PprRecordDotSyntax3', ignore_stderr, makefile_test, ['PprRecordDotSyntax3'])
-test('PprRecordDotSyntax4', ignore_stderr, makefile_test, ['PprRecordDotSyntax4'])
-test('PprRecordDotSyntaxA', ignore_stderr, makefile_test, ['PprRecordDotSyntaxA'])
-test('CommentsTest', ignore_stderr, makefile_test, ['CommentsTest'])
-test('InTreeAnnotations1', ignore_stderr, makefile_test, ['InTreeAnnotations1'])
+test('PprRecordDotSyntax1', [ignore_stderr, req_ppr_deps], makefile_test, ['PprRecordDotSyntax1'])
+test('PprRecordDotSyntax2', [ignore_stderr, req_ppr_deps], makefile_test, ['PprRecordDotSyntax2'])
+test('PprRecordDotSyntax3', [ignore_stderr, req_ppr_deps], makefile_test, ['PprRecordDotSyntax3'])
+test('PprRecordDotSyntax4', [ignore_stderr, req_ppr_deps], makefile_test, ['PprRecordDotSyntax4'])
+test('PprRecordDotSyntaxA', [ignore_stderr, req_ppr_deps], makefile_test, ['PprRecordDotSyntaxA'])
+test('CommentsTest', [ignore_stderr, req_ppr_deps], makefile_test, ['CommentsTest'])
+test('InTreeAnnotations1', [ignore_stderr, req_ppr_deps], makefile_test, ['InTreeAnnotations1'])
# Normal ppr does not reproduce unicode linear arrows, commented out
# in the Makefile for this test. See #18846
-test('PprLinearArrow', ignore_stderr, makefile_test, ['PprLinearArrow'])
+test('PprLinearArrow', [ignore_stderr, req_ppr_deps], makefile_test, ['PprLinearArrow'])
-test('Test19784', ignore_stderr, makefile_test, ['Test19784'])
-test('Test19798', ignore_stderr, makefile_test, ['Test19798'])
+test('Test19784', [ignore_stderr, req_ppr_deps], makefile_test, ['Test19784'])
+test('Test19798', [ignore_stderr, req_ppr_deps], makefile_test, ['Test19798'])
# The exact printing manages the extra semicolons, normal ppr not, so
# disabled in the Makefile for this test.
-test('Test19813', ignore_stderr, makefile_test, ['Test19813'])
+test('Test19813', [ignore_stderr, req_ppr_deps], makefile_test, ['Test19813'])
-test('Test19814', ignore_stderr, makefile_test, ['Test19814'])
-test('Test19821', ignore_stderr, makefile_test, ['Test19821'])
-test('Test19834', ignore_stderr, makefile_test, ['Test19834'])
-test('Test19839', ignore_stderr, makefile_test, ['Test19839'])
-test('Test19840', ignore_stderr, makefile_test, ['Test19840'])
-test('Test19850', ignore_stderr, makefile_test, ['Test19850'])
-test('PprCommentsOnly', ignore_stderr, makefile_test, ['PprCommentsOnly'])
-test('PprSemis', ignore_stderr, makefile_test, ['PprSemis'])
+test('Test19814', [ignore_stderr, req_ppr_deps], makefile_test, ['Test19814'])
+test('Test19821', [ignore_stderr, req_ppr_deps], makefile_test, ['Test19821'])
+test('Test19834', [ignore_stderr, req_ppr_deps], makefile_test, ['Test19834'])
+test('Test19839', [ignore_stderr, req_ppr_deps], makefile_test, ['Test19839'])
+test('Test19840', [ignore_stderr, req_ppr_deps], makefile_test, ['Test19840'])
+test('Test19850', [ignore_stderr, req_ppr_deps], makefile_test, ['Test19850'])
+test('PprCommentsOnly', [ignore_stderr, req_ppr_deps], makefile_test, ['PprCommentsOnly'])
+test('PprSemis', [ignore_stderr, req_ppr_deps], makefile_test, ['PprSemis'])
# Normal ppr does not reproduce all foreign decls, commented out
# in the Makefile for this test.
-test('PprForeignDecl', ignore_stderr, makefile_test, ['PprForeignDecl'])
+test('PprForeignDecl', [ignore_stderr, req_ppr_deps], makefile_test, ['PprForeignDecl'])
-test('PprRoles', ignore_stderr, makefile_test, ['PprRoles'])
-test('PprTypeSynParens', ignore_stderr, makefile_test, ['PprTypeSynParens'])
-test('PprEmptyMostlyInst', ignore_stderr, makefile_test, ['PprEmptyMostlyInst'])
-test('PprParenFunBind', ignore_stderr, makefile_test, ['PprParenFunBind'])
-test('PprRecordSemi', ignore_stderr, makefile_test, ['PprRecordSemi'])
-test('PprCompleteSig', ignore_stderr, makefile_test, ['PprCompleteSig'])
-test('PprOverloadedLabels', ignore_stderr, makefile_test, ['PprOverloadedLabels'])
-test('PprArrows', ignore_stderr, makefile_test, ['PprArrows'])
-test('PprOverloadedRecords', ignore_stderr, makefile_test, ['PprOverloadedRecords'])
-test('PprArrowLambdaCase', ignore_stderr, makefile_test, ['PprArrowLambdaCase'])
-test('PprRecursiveDo', ignore_stderr, makefile_test, ['PprRecursiveDo'])
-test('PprTypeBrackets', ignore_stderr, makefile_test, ['PprTypeBrackets'])
-test('PprDynamic', ignore_stderr, makefile_test, ['PprDynamic'])
-test('PprEmptyMostly', ignore_stderr, makefile_test, ['PprEmptyMostly'])
-test('PprClassParens', ignore_stderr, makefile_test, ['PprClassParens'])
-test('PprThAbstractFamily', ignore_stderr, makefile_test, ['PprThAbstractFamily'])
-test('PprClassTypeFamily', ignore_stderr, makefile_test, ['PprClassTypeFamily'])
-test('PprT13747', ignore_stderr, makefile_test, ['PprT13747'])
-test('PprBracesSemiDataDecl', ignore_stderr, makefile_test, ['PprBracesSemiDataDecl'])
-test('PprUnicodeSyntax', ignore_stderr, makefile_test, ['PprUnicodeSyntax'])
-test('PprCommentPlacement2', ignore_stderr, makefile_test, ['PprCommentPlacement2'])
+test('PprRoles', [ignore_stderr, req_ppr_deps], makefile_test, ['PprRoles'])
+test('PprTypeSynParens', [ignore_stderr, req_ppr_deps], makefile_test, ['PprTypeSynParens'])
+test('PprEmptyMostlyInst', [ignore_stderr, req_ppr_deps], makefile_test, ['PprEmptyMostlyInst'])
+test('PprParenFunBind', [ignore_stderr, req_ppr_deps], makefile_test, ['PprParenFunBind'])
+test('PprRecordSemi', [ignore_stderr, req_ppr_deps], makefile_test, ['PprRecordSemi'])
+test('PprCompleteSig', [ignore_stderr, req_ppr_deps], makefile_test, ['PprCompleteSig'])
+test('PprOverloadedLabels', [ignore_stderr, req_ppr_deps], makefile_test, ['PprOverloadedLabels'])
+test('PprArrows', [ignore_stderr, req_ppr_deps], makefile_test, ['PprArrows'])
+test('PprOverloadedRecords', [ignore_stderr, req_ppr_deps], makefile_test, ['PprOverloadedRecords'])
+test('PprArrowLambdaCase', [ignore_stderr, req_ppr_deps], makefile_test, ['PprArrowLambdaCase'])
+test('PprRecursiveDo', [ignore_stderr, req_ppr_deps], makefile_test, ['PprRecursiveDo'])
+test('PprTypeBrackets', [ignore_stderr, req_ppr_deps], makefile_test, ['PprTypeBrackets'])
+test('PprDynamic', [ignore_stderr, req_ppr_deps], makefile_test, ['PprDynamic'])
+test('PprEmptyMostly', [ignore_stderr, req_ppr_deps], makefile_test, ['PprEmptyMostly'])
+test('PprClassParens', [ignore_stderr, req_ppr_deps], makefile_test, ['PprClassParens'])
+test('PprThAbstractFamily', [ignore_stderr, req_ppr_deps], makefile_test, ['PprThAbstractFamily'])
+test('PprClassTypeFamily', [ignore_stderr, req_ppr_deps], makefile_test, ['PprClassTypeFamily'])
+test('PprT13747', [ignore_stderr, req_ppr_deps], makefile_test, ['PprT13747'])
+test('PprBracesSemiDataDecl', [ignore_stderr, req_ppr_deps], makefile_test, ['PprBracesSemiDataDecl'])
+test('PprUnicodeSyntax', [ignore_stderr, req_ppr_deps], makefile_test, ['PprUnicodeSyntax'])
+test('PprCommentPlacement2', [ignore_stderr, req_ppr_deps], makefile_test, ['PprCommentPlacement2'])
-test('Test20243', ignore_stderr, makefile_test, ['Test20243'])
-test('Test20258', ignore_stderr, makefile_test, ['Test20258'])
-test('Test20297', ignore_stderr, makefile_test, ['Test20297'])
+test('Test20243', [ignore_stderr, req_ppr_deps], makefile_test, ['Test20243'])
+test('Test20258', [ignore_stderr, req_ppr_deps], makefile_test, ['Test20258'])
+test('Test20297', [ignore_stderr, req_ppr_deps], makefile_test, ['Test20297'])