Test cases and missing RTS linker

Stefan Schulze Frielinghaus ml at stefansf.de
Wed Sep 18 13:15:30 UTC 2019


Hi all,

How is a test case supposed to be marked if it makes use of the RTS linker
which itself is not supported on some architectures?

For example, some test cases are marked for a particular architecutre like
PowerPC64 that it fails because of a missing RTS linker.

Style (A)

  test('T10052', [when(arch('powerpc64') or arch('powerpc64le'),
                  expect_broken(11259)), req_interp],
       makefile_test, ['T10052'])

Whereas another test case is marked to be skipped if RTS linker is missing.

Style (B)

  test('static-plugins',
       [extra_files(['simple-plugin/']),
        unless(config.have_RTS_linker, skip),
        expect_broken_for(16803, prof_ways),
        extra_run_opts('"' + config.libdir + '"')],
       compile_and_run,
       ['-package ghc -isimple-plugin/'])

If style (A) is the way to go, then for every architecture which does not
support the RTS linker a when-clause must be added.

If style (B) is the way to go, then shouldn't we change all test cases of style
(A) to style (B)?

Personally I prefer style (B) over (A) because it makes it easier to add an
architecture where the RTS linker is not provided. Even if the RTS linker is
provided after some time, then the test case must not be changed. Once
PowerPC64 supports the RTS linker all when-clauses must be removed.

Any thoughts which style to use?

Cheers,
Stefan


More information about the ghc-devs mailing list