Testsuite: delete dead code + cleanup
authorThomas Miedema <thomasmiedema@gmail.com>
Sat, 18 Jun 2016 16:58:02 +0000 (18:58 +0200)
committerThomas Miedema <thomasmiedema@gmail.com>
Mon, 20 Jun 2016 14:22:07 +0000 (16:22 +0200)
* Set config settings directly in mk/test.mk, instead of indirectly in
  config/ghc
* passing --hpcdir for WAY=hpc is unnecessary

12 files changed:
libraries/base/tests/IO/T12010/test.T
testsuite/config/ghc
testsuite/driver/testglobals.py
testsuite/driver/testlib.py
testsuite/driver/testutil.py
testsuite/mk/test.mk
testsuite/tests/ffi/should_run/all.T
testsuite/tests/ghci/scripts/ghci024.stdout
testsuite/tests/hpc/all.T
testsuite/tests/numeric/should_run/all.T
testsuite/tests/plugins/all.T
testsuite/tests/th/all.T

index b7b64c7..73dac44 100644 (file)
@@ -3,6 +3,6 @@ test('T12010',
         extra_files(['cbits/']),
         only_ways(['threaded1']),
         extra_ways(['threaded1']),
-        cmd_prefix('WAY_FLAGS="' + ' '.join(config.way_flags('T12010')['threaded1']) + '"')],
+        cmd_prefix('WAY_FLAGS="' + ' '.join(config.way_flags['threaded1']) + '"')],
      run_command,
      ['$MAKE -s --no-print-directory T12010'])
index cf9a7ba..aa6b047 100644 (file)
@@ -1,5 +1,4 @@
 import re
-import subprocess
 
 # Testsuite configuration setup for GHC
 #
@@ -36,25 +35,13 @@ if (ghc_with_native_codegen == 1):
     config.compile_ways.append('optasm')
     config.run_ways.append('optasm')
 
-config.compiler_debugged = ghc_debugged
-
-if (ghc_with_vanilla == 1):
-    config.have_vanilla = True
-
-if (ghc_with_dynamic == 1):
-    config.have_dynamic = True
-
-if (ghc_with_profiling == 1):
-    config.have_profiling = True
+if config.have_profiling:
     config.compile_ways.append('profasm')
     config.run_ways.append('profasm')
 
-if (ghc_with_interpreter == 1):
-    config.have_interp = True
+if config.have_interp:
     config.run_ways.append('ghci')
 
-config.unregisterised = (ghc_unregisterised == 1)
-
 if (ghc_with_threaded_rts == 1):
     config.run_ways.append('threaded1')
     if (ghc_with_smp == 1):
@@ -64,25 +51,20 @@ if (ghc_with_threaded_rts == 1):
 if (ghc_with_dynamic_rts == 1):
     config.have_shared_libs = True
 
-config.ghc_dynamic_by_default = ghc_dynamic_by_default
-if ghc_dynamic_by_default and ghc_with_vanilla == 1:
+if config.ghc_dynamic_by_default and config.have_vanilla == 1:
     config.run_ways.append('static')
 else:
     if (ghc_with_dynamic_rts == 1):
         config.run_ways.append('dyn')
 
-config.ghc_dynamic = ghc_dynamic
-
-if (ghc_with_profiling == 1 and ghc_with_threaded_rts == 1):
+if (config.have_profiling and ghc_with_threaded_rts == 1):
     config.run_ways.append('profthreaded')
 
 if (ghc_with_llvm == 1):
     config.compile_ways.append('optllvm')
     config.run_ways.append('optllvm')
 
-config.in_tree_compiler = in_tree_compiler
-
-config.way_flags = lambda name : {
+config.way_flags = {
     'normal'       : [],
     'normal_h'     : [],
     'g1'           : [],
@@ -95,12 +77,12 @@ config.way_flags = lambda name : {
     'prof'         : ['-prof', '-static', '-fprof-auto', '-fasm'],
     'profasm'      : ['-O', '-prof', '-static', '-fprof-auto'],
     'profthreaded' : ['-O', '-prof', '-static', '-fprof-auto', '-threaded'],
-    'ghci'         : ['--interactive', '-v0', '-ignore-dot-ghci', '+RTS', '-I0.1', '-RTS'],
+    'ghci'         : ['--interactive', '-v0', '-ignore-dot-ghci', '-fno-ghci-history', '+RTS', '-I0.1', '-RTS'],
     'threaded1'    : ['-threaded', '-debug'],
     'threaded1_ls' : ['-threaded', '-debug'],
     'threaded2'    : ['-O', '-threaded', '-eventlog'],
     'threaded2_hT' : ['-O', '-threaded'],
-    'hpc'          : ['-O', '-fhpc', '-hpcdir', '.hpc.' + name ],
+    'hpc'          : ['-O', '-fhpc'],
     'prof_hc_hb'   : ['-O', '-prof', '-static', '-fprof-auto'],
     'prof_hb'      : ['-O', '-prof', '-static', '-fprof-auto'],
     'prof_hd'      : ['-O', '-prof', '-static', '-fprof-auto'],
@@ -113,7 +95,7 @@ config.way_flags = lambda name : {
     'profllvm'         : ['-prof', '-static', '-fprof-auto', '-fllvm'],
     'profoptllvm'      : ['-O', '-prof', '-static', '-fprof-auto', '-fllvm'],
     'profthreadedllvm' : ['-O', '-prof', '-static', '-fprof-auto', '-threaded', '-fllvm'],
-    'ghci-ext'         : ['--interactive', '-v0', '-ignore-dot-ghci', '-fexternal-interpreter', '+RTS', '-I0.1', '-RTS'],
+    'ghci-ext'         : ['--interactive', '-v0', '-ignore-dot-ghci', '-fno-ghci-history', '-fexternal-interpreter', '+RTS', '-I0.1', '-RTS'],
    }
 
 config.way_rts_flags = {
@@ -153,16 +135,16 @@ config.way_rts_flags = {
 # Useful classes of ways that can be used with only_ways(), omit_ways() and
 # expect_broken_for().
 
-prof_ways     = [x[0] for x in config.way_flags('dummy_name').items()
+prof_ways     = [x[0] for x in config.way_flags.items()
                       if '-prof' in x[1]]
 
-threaded_ways = [x[0] for x in config.way_flags('dummy_name').items()
+threaded_ways = [x[0] for x in config.way_flags.items()
                       if '-threaded' in x[1] or 'ghci' == x[0]]
 
-opt_ways      = [x[0] for x in config.way_flags('dummy_name').items()
+opt_ways      = [x[0] for x in config.way_flags.items()
                       if '-O' in x[1]]
 
-llvm_ways     = [x[0] for x in config.way_flags('dummy_name').items()
+llvm_ways     = [x[0] for x in config.way_flags.items()
                       if '-fflvm' in x[1]]
 
 def get_compiler_info():
@@ -176,15 +158,6 @@ def get_compiler_info():
     # See Note [Replacing backward slashes in config.libdir].
     config.libdir = compilerInfoDict['LibDir'].replace('\\', '/')
 
-    v = compilerInfoDict["Project version"]
-    config.compiler_version = v
-    config.compiler_maj_version = re.sub('^([0-9]+\.[0-9]+).*',r'\1', v)
-
-    # -fno-ghci-history was added in 7.3
-    if version_ge(config.compiler_version, '7.3'):
-       config.compiler_always_flags = \
-          config.compiler_always_flags + ['-fno-ghci-history']
-
     if re.match(".*_p(_.*|$)", rtsInfoDict["RTS way"]):
         config.compiler_profiled = True
     else:
@@ -195,19 +168,8 @@ def get_compiler_info():
     except:
         config.package_conf_cache_file = ''
 
-    try:
-        if compilerInfoDict["GHC Dynamic"] == "YES":
-            ghcDynamic = True
-        elif compilerInfoDict["GHC Dynamic"] == "NO":
-            ghcDynamic = False
-        else:
-            raise 'Bad value for "GHC Dynamic"'
-    except KeyError:
-        # GHC < 7.7 doesn't have a "GHC Dynamic" field
-        ghcDynamic = False
-
     # See Note [WayFlags]
-    if ghcDynamic:
+    if config.ghc_dynamic:
         config.ghc_th_way_flags = "-dynamic"
         config.ghci_way_flags   = "-dynamic"
         config.plugin_way_flags = "-dynamic"
index fbe030a..23fd2f5 100644 (file)
@@ -68,10 +68,6 @@ class TestConfig:
         # Is self.compiler a stage 1, 2 or 3 compiler?
         self.stage = 2
 
-        # Compiler version info
-        self.compiler_version = ''
-        self.compiler_maj_version = ''
-
         # Flags we always give to this compiler
         self.compiler_always_flags = []
         
@@ -190,9 +186,6 @@ class TestOptions:
        # don't give anything as stdin
        self.no_stdin = 0
 
-       # compile this test to .hc only
-       self.compile_to_hc = 0
-
        # We sometimes want to modify the compiler_always_flags, so
        # they are copied from config.compiler_always_flags when we
        # make a new instance of TestOptions.
index c97ff8a..4f18c01 100644 (file)
@@ -7,7 +7,6 @@ from __future__ import print_function
 
 import io
 import shutil
-import sys
 import os
 import errno
 import string
@@ -675,7 +674,6 @@ def get_package_cache_timestamp():
         except:
             return 0.0
 
-
 def test_common_work (name, opts, func, args):
     try:
         t.total_tests = t.total_tests+1
@@ -745,9 +743,12 @@ def test_common_work (name, opts, func, args):
                 files.update((os.path.relpath(f, opts.srcdir)
                             for f in glob.iglob(in_srcdir(filename))))
 
-            else:
+            elif filename:
                 files.add(filename)
 
+            else:
+                framework_fail(name, 'whole-test', 'extra_file is empty string')
+
         # Run the required tests...
         for way in do_ways:
             if stopping():
@@ -766,16 +767,6 @@ def test_common_work (name, opts, func, args):
         if package_conf_cache_file_start_timestamp != package_conf_cache_file_end_timestamp:
             framework_fail(name, 'whole-test', 'Package cache timestamps do not match: ' + str(package_conf_cache_file_start_timestamp) + ' ' + str(package_conf_cache_file_end_timestamp))
 
-        try:
-            for f in files_written[name]:
-                if os.path.exists(f):
-                    try:
-                        if not f in files_written_not_removed[name]:
-                            files_written_not_removed[name].append(f)
-                    except:
-                        files_written_not_removed[name] = [f]
-        except:
-            pass
     except Exception as e:
         framework_fail(name, 'runTest', 'Unhandled exception: ' + str(e))
 
@@ -1009,7 +1000,7 @@ def run_command( name, way, cmd ):
 def ghci_script( name, way, script):
     flags = ' '.join(get_compiler_flags())
 
-    way_flags = ' '.join(config.way_flags(name)[way])
+    way_flags = ' '.join(config.way_flags[way])
 
     # We pass HC and HC_OPTS as environment variables, so that the
     # script can invoke the correct compiler by using ':! $HC $HC_OPTS'
@@ -1202,21 +1193,17 @@ def simple_build(name, way, extra_hc_opts, should_fail, top_mod, link, addsuf):
 
     if top_mod != '':
         srcname = top_mod
-        base, suf = os.path.splitext(top_mod)
     elif addsuf:
         srcname = add_hs_lhs_suffix(name)
     else:
         srcname = name
 
-    to_do = ''
     if top_mod != '':
         to_do = '--make '
         if link:
             to_do = to_do + '-o ' + name
     elif link:
         to_do = '-o ' + name
-    elif opts.compile_to_hc:
-        to_do = '-C'
     else:
         to_do = '-c' # just compile
 
@@ -1236,7 +1223,7 @@ def simple_build(name, way, extra_hc_opts, should_fail, top_mod, link, addsuf):
     else:
         cmd_prefix = getTestOpts().compile_cmd_prefix + ' '
 
-    flags = ' '.join(get_compiler_flags() + config.way_flags(name)[way])
+    flags = ' '.join(get_compiler_flags() + config.way_flags[way])
 
     cmd = ('cd "{opts.testdir}" && {cmd_prefix} '
            '{{compiler}} {to_do} {srcname} {flags} {extra_hc_opts} '
@@ -1410,7 +1397,7 @@ def interpreter_run( name, way, extra_hc_opts, compile_only, top_mod ):
     if os.path.exists(stdin_file):
         os.system('cat "{0}" >> "{1}"'.format(stdin_file, qscriptname))
 
-    flags = ' '.join(get_compiler_flags() + config.way_flags(name)[way])
+    flags = ' '.join(get_compiler_flags() + config.way_flags[way])
 
     if getTestOpts().combined_output:
         redirection        = ' > {0} 2>&1'.format(outname)
@@ -1456,7 +1443,6 @@ def interpreter_run( name, way, extra_hc_opts, compile_only, top_mod ):
     else:
         return failBecause('bad stdout or stderr')
 
-
 def split_file(in_fn, delimiter, out1_fn, out2_fn):
     # See Note [Universal newlines].
     infile = io.open(in_fn, 'r', encoding='utf8', errors='replace', newline=None)
@@ -1998,7 +1984,6 @@ def find_expected_file(name, suff):
 def cleanup():
     shutil.rmtree(getTestOpts().testdir, ignore_errors=True)
 
-
 # -----------------------------------------------------------------------------
 # Return a list of all the files ending in '.T' below directories roots.
 
index 563ba36..2862a44 100644 (file)
@@ -1,26 +1,8 @@
-# -----------------------------------------------------------------------------
-# Utils
-
 import errno
 import os
 import subprocess
 import shutil
 
-def version_to_ints(v):
-    return [ int(x) for x in v.split('.') ]
-
-def version_lt(x, y):
-    return version_to_ints(x) < version_to_ints(y)
-
-def version_le(x, y):
-    return version_to_ints(x) <= version_to_ints(y)
-
-def version_gt(x, y):
-    return version_to_ints(x) > version_to_ints(y)
-
-def version_ge(x, y):
-    return version_to_ints(x) >= version_to_ints(y)
-
 def strip_quotes(s):
     # Don't wrap commands to subprocess.call/Popen in quotes.
     return s.strip('\'"')
index 75944eb..7defc68 100644 (file)
@@ -36,7 +36,7 @@ endif
 # in nested Makefiles
 TEST_HC_OPTS = -dcore-lint -dcmm-lint -dno-debug-output -no-user-$(GhcPackageDbFlag) -rtsopts $(EXTRA_HC_OPTS)
 
-TEST_HC_OPTS_INTERACTIVE = $(TEST_HC_OPTS) --interactive -v0 -ignore-dot-ghci
+TEST_HC_OPTS_INTERACTIVE = $(TEST_HC_OPTS) --interactive -v0 -ignore-dot-ghci -fno-ghci-history
 
 ifeq "$(MinGhcVersion711)" "YES"
 # Don't warn about missing specialisations. They can only occur with `-O`, but
@@ -63,7 +63,7 @@ endif
 
 RUNTEST_OPTS += -e ghc_compiler_always_flags="'$(TEST_HC_OPTS)'"
 
-RUNTEST_OPTS += -e ghc_debugged=$(GhcDebugged)
+RUNTEST_OPTS += -e config.compiler_debugged=$(GhcDebugged)
 
 ifeq "$(GhcWithNativeCodeGen)" "YES"
 RUNTEST_OPTS += -e ghc_with_native_codegen=1
@@ -77,21 +77,21 @@ HAVE_DYNAMIC := $(shell if [ -f $(subst \,/,$(GHC_PRIM_LIBDIR))/GHC/PrimopWrappe
 HAVE_PROFILING := $(shell if [ -f $(subst \,/,$(GHC_PRIM_LIBDIR))/GHC/PrimopWrappers.p_hi ]; then echo YES; else echo NO; fi)
 
 ifeq "$(HAVE_VANILLA)" "YES"
-RUNTEST_OPTS += -e ghc_with_vanilla=1
+RUNTEST_OPTS += -e config.have_vanilla=True
 else
-RUNTEST_OPTS += -e ghc_with_vanilla=0
+RUNTEST_OPTS += -e config.have_vanilla=False
 endif
 
 ifeq "$(HAVE_DYNAMIC)" "YES"
-RUNTEST_OPTS += -e ghc_with_dynamic=1
+RUNTEST_OPTS += -e config.have_dynamic=True
 else
-RUNTEST_OPTS += -e ghc_with_dynamic=0
+RUNTEST_OPTS += -e config.have_dynamic=False
 endif
 
 ifeq "$(HAVE_PROFILING)" "YES"
-RUNTEST_OPTS += -e ghc_with_profiling=1
+RUNTEST_OPTS += -e config.have_profiling=True
 else
-RUNTEST_OPTS += -e ghc_with_profiling=0
+RUNTEST_OPTS += -e config.have_profiling=False
 endif
 
 ifeq "$(filter thr, $(GhcRTSWays))" "thr"
@@ -107,32 +107,32 @@ RUNTEST_OPTS += -e ghc_with_dynamic_rts=0
 endif
 
 ifeq "$(GhcWithInterpreter)" "NO"
-RUNTEST_OPTS += -e ghc_with_interpreter=0
+RUNTEST_OPTS += -e config.have_interp=False
 else ifeq "$(GhcStage)" "1"
-RUNTEST_OPTS += -e ghc_with_interpreter=0
+RUNTEST_OPTS += -e config.have_interp=False
 else
-RUNTEST_OPTS += -e ghc_with_interpreter=1
+RUNTEST_OPTS += -e config.have_interp=True
 endif
 
 ifeq "$(GhcUnregisterised)" "YES"
-RUNTEST_OPTS += -e ghc_unregisterised=1
+RUNTEST_OPTS += -e config.unregisterised=True
 else
-RUNTEST_OPTS += -e ghc_unregisterised=0
+RUNTEST_OPTS += -e config.unregisterised=False
 endif
 
 ifeq "$(GhcDynamicByDefault)" "YES"
-RUNTEST_OPTS += -e ghc_dynamic_by_default=True
+RUNTEST_OPTS += -e config.ghc_dynamic_by_default=True
 CABAL_MINIMAL_BUILD = --enable-shared --disable-library-vanilla
 else
-RUNTEST_OPTS += -e ghc_dynamic_by_default=False
+RUNTEST_OPTS += -e config.ghc_dynamic_by_default=False
 CABAL_MINIMAL_BUILD = --enable-library-vanilla --disable-shared
 endif
 
 ifeq "$(GhcDynamic)" "YES"
-RUNTEST_OPTS += -e ghc_dynamic=True
+RUNTEST_OPTS += -e config.ghc_dynamic=True
 CABAL_PLUGIN_BUILD = --enable-shared --disable-library-vanilla
 else
-RUNTEST_OPTS += -e ghc_dynamic=False
+RUNTEST_OPTS += -e config.ghc_dynamic=False
 CABAL_PLUGIN_BUILD = --enable-library-vanilla --disable-shared
 endif
 
@@ -166,9 +166,9 @@ RUNTEST_OPTS += -e darwin=False
 endif
 
 ifeq "$(IN_TREE_COMPILER)" "YES"
-RUNTEST_OPTS += -e in_tree_compiler=True
+RUNTEST_OPTS += -e config.in_tree_compiler=True
 else
-RUNTEST_OPTS += -e in_tree_compiler=False
+RUNTEST_OPTS += -e config.in_tree_compiler=False
 endif
 
 ifneq "$(THREADS)" ""
index bf9fefd..2b35a0f 100644 (file)
@@ -47,17 +47,12 @@ test('ffi007', omit_ways(['ghci']), compile_and_run, [''])
 test('ffi008', [exit_code(1), omit_ways(['ghci'])], compile_and_run, [''])
 
 # On i386, we need -msse2 to get reliable floating point results
-maybe_skip = normal
-opts = ''
 if config.platform.startswith('i386-'):
-    if version_ge(config.compiler_version, '6.13'):
-        opts = '-msse2'
-    else:
-        maybe_skip = only_ways(['ghci'])
-
-test('ffi009', [when(fast(), skip),
-                reqlib('random'),
-                maybe_skip] ,compile_and_run, [opts])
+    opts = '-msse2'
+else:
+    opts = ''
+
+test('ffi009', [when(fast(), skip), reqlib('random')], compile_and_run, [opts])
 
 test('ffi010', normal, compile_and_run, [''])
 test('ffi011', normal, compile_and_run, [''])
index 4bbb556..e224d80 100644 (file)
@@ -6,6 +6,7 @@ with the following modifiers:
   -XNondecreasingIndentation
 GHCi-specific dynamic flag settings:
 other dynamic, non-language, flag settings:
+  -fno-ghci-history
   -fimplicit-import-qualified
   -fshow-warning-groups
 warning settings:
index 6757338..5653fe4 100644 (file)
@@ -13,7 +13,7 @@ setTestOpts(only_ways(['hpc']))
 def T2991(cmd):
   # The .mix file for the literate module should have non-zero entries.
   # The `grep` should exit with exit code 0.
-  return(cmd + " && grep -q cover_me .hpc.T2991/T2991LiterateModule.mix")
+  return(cmd + " && grep -q cover_me .hpc/T2991LiterateModule.mix")
 test('T2991', [cmd_wrapper(T2991), extra_clean(['T2991LiterateModule.hi',
                                                 'T2991LiterateModule.o'])],
               # Run with 'ghc --main'. Do not list other modules explicitly.
index d1f05fd..a7c7c84 100644 (file)
@@ -12,21 +12,17 @@ test('arith006', normal, compile_and_run, [''])
 test('arith007', normal, compile_and_run, [''])
 
 # On i386, we need -msse2 to get reliable floating point results
-ways = normal
-opts = ''
-if config.platform.startswith('i386-'):
-    if version_ge(config.compiler_version, '6.13'):
-        opts = '-msse2'
-    else:
-        ways = expect_fail_for(['optasm','threaded2','hpc','dyn','profasm'])
-
-test('arith008', ways, compile_and_run, [opts])
+if config.arch == 'i386':
+    opts = '-msse2'
+else:
+    opts = ''
+test('arith008', normal, compile_and_run, [opts])
 
 test('arith009', normal, compile_and_run, [''])
 test('arith010', normal, compile_and_run, [''])
 test('arith011', normal, compile_and_run, [''])
 
-test('arith012', ways, compile_and_run, [opts])
+test('arith012', normal, compile_and_run, [opts])
 
 test('arith013', normal, compile_and_run, [''])
 test('arith014', normal, compile_and_run, [''])
index caa831e..f165c4a 100644 (file)
@@ -1,8 +1,4 @@
-def f(name, opts):
-    if (ghc_with_interpreter == 0):
-        opts.skip = 1
-
-setTestOpts(f)
+setTestOpts(req_interp)
 
 test('plugins01',
      [pre_cmd('$MAKE -s --no-print-directory -C simple-plugin package.plugins01 TOP={top}'),
index bd59c4e..aa87241 100644 (file)
@@ -6,10 +6,8 @@
 
 def f(name, opts):
     opts.extra_hc_opts = '-XTemplateHaskell -package template-haskell'
-    if (ghc_with_interpreter == 0):
-        opts.skip = 1
-
 setTestOpts(f)
+setTestOpts(req_interp)
 setTestOpts(only_ways(['normal','ghci']))
 
 test('TH_mkName', normal, compile, ['-v0'])