HEADS UP: running tests in /tmp and the `extra_files` setup function

Hello GHC developers, the testsuite driver now runs each test in a temporary directory in /tmp, after first linking/copying all files that the test requires to that directory. When adding a new test: ** if your test requires source files that don't start with the name of your test, then you *have to* specify those files using the `extra_files` setup function. [1]* * you no longer have to specify files to cleanup (`clean_files` and `clean_cmd` are deprecated) * you no longer have to add generated files to `testsuite/.gitignore` * you no longer have to worry about two tests possibly overwriting each others intermediate (.o, .hi) files, and you no longer have to specify `-outputdir` if you want to let multiple tests use the same source files. Example: *BEFORE:* test('driver011', extra_clean(['A011.hi', 'A011.o']), run_command, ['$MAKE -s --no-print-directory test011']) *AFTER:* test('driver011', extra_files(['A011.hs']), run_command, ['$MAKE -s --no-print-directory test011']) See https://ghc.haskell.org/trac/ghc/ticket/11980 and https://ghc.haskell.org/trac/ghc/wiki/Building/RunningTests/Adding for more information. Cheers, Thomas [1] Extra files for existing tests are currently listed in `testsuite/driver/extra_files.py`.

Thomas Miedema
Hello GHC developers,
the testsuite driver now runs each test in a temporary directory in /tmp, after first linking/copying all files that the test requires to that directory.
Hmm, it looks like the new paths rather clutter the testsuite summary produced at the end of the run, /tmp/ghctest/jvZ6KB/1/2/3/./indexed-types/should_fail/T3330a T3330a [stderr mismatch] (normal) /tmp/ghctest/jvZ6KB/1/2/3/./indexed-types/should_fail/T4174 T4174 [stderr mismatch] (normal) /tmp/ghctest/jvZ6KB/1/2/3/./indexed-types/should_fail/T4179 T4179 [stderr mismatch] (normal) Perhaps we should strip off the root path from the test names? Cheers, - Ben

Hello Thomas, Is there a way to change where the temporary directory is made? The test suite can take a lot of disk space and some of us would prefer to store the test output on a different partition. Thanks, Edward Excerpts from Thomas Miedema's message of 2016-05-17 09:11:53 -0700:
Hello GHC developers,
the testsuite driver now runs each test in a temporary directory in /tmp, after first linking/copying all files that the test requires to that directory.
When adding a new test:
** if your test requires source files that don't start with the name of your test, then you *have to* specify those files using the `extra_files` setup function. [1]*
* you no longer have to specify files to cleanup (`clean_files` and `clean_cmd` are deprecated)
* you no longer have to add generated files to `testsuite/.gitignore`
* you no longer have to worry about two tests possibly overwriting each others intermediate (.o, .hi) files, and you no longer have to specify `-outputdir` if you want to let multiple tests use the same source files.
Example:
*BEFORE:* test('driver011', extra_clean(['A011.hi', 'A011.o']), run_command, ['$MAKE -s --no-print-directory test011'])
*AFTER:* test('driver011', extra_files(['A011.hs']), run_command, ['$MAKE -s --no-print-directory test011'])
See https://ghc.haskell.org/trac/ghc/ticket/11980 and https://ghc.haskell.org/trac/ghc/wiki/Building/RunningTests/Adding for more information.
Cheers, Thomas
[1] Extra files for existing tests are currently listed in `testsuite/driver/extra_files.py`.

Is there a way to change where the temporary directory is made? There is not. But it shouldn't be necessary, since during a complete test run, (most) generated files are deleted after each individual test has finished. This behavior recently changed (#9758), see my previous email about this: https://mail.haskell.org/pipermail/ghc-devs/2016-April/011976.html
participants (3)
-
Ben Gamari
-
Edward Z. Yang
-
Thomas Miedema