diff options
author | Thomas Miedema <thomasmiedema@gmail.com> | 2016-02-02 19:07:51 +0100 |
---|---|---|
committer | Thomas Miedema <thomasmiedema@gmail.com> | 2016-05-24 11:08:59 +0200 |
commit | 35053eb6c3f9058020f9818bf0de672aef6894c9 (patch) | |
tree | 400b2f93351db98d12d1466cf518d6e9ebb8e7ed | |
parent | 9c3e55bd029447d9c2cac1c9ca1607a8a803cd79 (diff) | |
download | haskell-35053eb6c3f9058020f9818bf0de672aef6894c9.tar.gz |
Testsuite: delete check_files_written
The CHECK_FILES_WRITTEN feature is no longer necessary, since tests
don't write to the source directory anymore (#11980).
Reviewed by: bgamari
Differential Revision: https://phabricator.haskell.org/D2162
-rw-r--r-- | testsuite/driver/runtests.py | 3 | ||||
-rw-r--r-- | testsuite/driver/testglobals.py | 3 | ||||
-rw-r--r-- | testsuite/driver/testlib.py | 180 | ||||
-rw-r--r-- | testsuite/mk/test.mk | 4 |
4 files changed, 1 insertions, 189 deletions
diff --git a/testsuite/driver/runtests.py b/testsuite/driver/runtests.py index 496fb35d3b..629a85e18d 100644 --- a/testsuite/driver/runtests.py +++ b/testsuite/driver/runtests.py @@ -107,9 +107,6 @@ for opt,arg in opts: config.threads = int(arg) config.use_threads = 1 - if opt == '--check-files-written': - config.check_files_written = True - if opt == '--skip-perf-tests': config.skip_perf_tests = True diff --git a/testsuite/driver/testglobals.py b/testsuite/driver/testglobals.py index 9f88acf445..17aa6d36b8 100644 --- a/testsuite/driver/testglobals.py +++ b/testsuite/driver/testglobals.py @@ -115,9 +115,6 @@ class TestConfig: self.threads = 1 self.use_threads = 0 - # Should we check for files being written more than once? - self.check_files_written = False - # Should we skip performance tests self.skip_perf_tests = False diff --git a/testsuite/driver/testlib.py b/testsuite/driver/testlib.py index b5761606ec..b302d8f88c 100644 --- a/testsuite/driver/testlib.py +++ b/testsuite/driver/testlib.py @@ -1894,15 +1894,7 @@ def runCmdFor( name, cmd, timeout_multiplier=1.0 ): timeout = int(ceil(config.timeout * timeout_multiplier)) if config.timeout_prog != '': - if config.check_files_written: - fn = name + ".strace" - r = rawSystemWithTimeout( - ["strace", "-o", fn, "-fF", - "-e", "creat,open,chdir,clone,vfork", - strip_quotes(config.timeout_prog), str(timeout), cmd]) - addTestFilesWritten(name, fn) - else: - r = rawSystemWithTimeout([config.timeout_prog, str(timeout), cmd]) + r = rawSystemWithTimeout([config.timeout_prog, str(timeout), cmd]) else: r = os.system(cmd) return r << 8 @@ -1912,43 +1904,11 @@ def runCmdExitCode( cmd ): # ----------------------------------------------------------------------------- -# checking for files being written to by multiple tests - -re_strace_call_end = '(\) += ([0-9]+|-1 E.*)| <unfinished ...>)$' -re_strace_unavailable_end ='\) += \? <unavailable>$' - -re_strace_unavailable_line = re.compile('^' + re_strace_unavailable_end) -re_strace_unavailable_cntnt = re.compile('^<\.\.\. .* resumed> ' + re_strace_unavailable_end) -re_strace_pid = re.compile('^([0-9]+) +(.*)') -re_strace_clone = re.compile('^(clone\(|<... clone resumed> ).*\) = ([0-9]+)$') -re_strace_clone_unfinished = re.compile('^clone\( <unfinished \.\.\.>$') -re_strace_vfork = re.compile('^(vfork\(\)|<\.\.\. vfork resumed> \)) += ([0-9]+)$') -re_strace_vfork_unfinished = re.compile('^vfork\( <unfinished \.\.\.>$') -re_strace_chdir = re.compile('^chdir\("([^"]*)"(\) += 0| <unfinished ...>)$') -re_strace_chdir_resumed = re.compile('^<\.\.\. chdir resumed> \) += 0$') -re_strace_open = re.compile('^open\("([^"]*)", ([A-Z_|]*)(, [0-9]+)?' + re_strace_call_end) -re_strace_open_resumed = re.compile('^<... open resumed> ' + re_strace_call_end) -re_strace_ignore_sigchild = re.compile('^--- SIGCHLD \(Child exited\) @ 0 \(0\) ---$') -re_strace_ignore_sigchild2 = re.compile('^--- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_EXITED, .*} ---$') -re_strace_ignore_exited = re.compile('^\+\+\+ exited with [0-9]* \+\+\+$') -re_strace_ignore_sigvtalarm = re.compile('^--- SIGVTALRM \(Virtual timer expired\) @ 0 \(0\) ---$') -re_strace_ignore_sigvtalarm2= re.compile('^--- SIGVTALRM {si_signo=SIGVTALRM, si_code=SI_TIMER, .*} ---$') -re_strace_ignore_sigint = re.compile('^--- SIGINT \(Interrupt\) @ 0 \(0\) ---$') -re_strace_ignore_sigfpe = re.compile('^--- SIGFPE \(Floating point exception\) @ 0 \(0\) ---$') -re_strace_ignore_sigsegv = re.compile('^--- SIGSEGV \(Segmentation fault\) @ 0 \(0\) ---$') -re_strace_ignore_sigpipe = re.compile('^--- SIGPIPE \(Broken pipe\) @ 0 \(0\) ---$') - # Files that are read or written but shouldn't be: # * ghci_history shouldn't be read or written by tests # * things under package.conf.d shouldn't be written by tests bad_file_usages = {} -# Mapping from tests to the list of files that they write -files_written = {} - -# Mapping from tests to the list of files that they write but don't clean -files_written_not_removed = {} - def add_bad_file_usage(name, file): try: if not file in bad_file_usages[name]: @@ -1961,141 +1921,6 @@ def mkPath(curdir, path): # path to 'path'? return os.path.realpath(os.path.join(curdir, path)) -def addTestFilesWritten(name, fn): - if config.use_threads: - with t.lockFilesWritten: - addTestFilesWrittenHelper(name, fn) - else: - addTestFilesWrittenHelper(name, fn) - -def addTestFilesWrittenHelper(name, fn): - started = False - working_directories = {} - - with open(fn, 'r') as f: - for line in f: - m_pid = re_strace_pid.match(line) - if m_pid: - pid = m_pid.group(1) - content = m_pid.group(2) - elif re_strace_unavailable_line.match(line): - next - else: - framework_fail(name, 'strace', "Can't find pid in strace line: " + line) - - m_open = re_strace_open.match(content) - m_chdir = re_strace_chdir.match(content) - m_clone = re_strace_clone.match(content) - m_vfork = re_strace_vfork.match(content) - - if not started: - working_directories[pid] = os.getcwd() - started = True - - if m_open: - file = m_open.group(1) - file = mkPath(working_directories[pid], file) - if file.endswith("ghci_history"): - add_bad_file_usage(name, file) - elif not file in ['/dev/tty', '/dev/null'] and not file.startswith("/tmp/ghc"): - flags = m_open.group(2).split('|') - if 'O_WRONLY' in flags or 'O_RDWR' in flags: - if re.match('package\.conf\.d', file): - add_bad_file_usage(name, file) - else: - try: - if not file in files_written[name]: - files_written[name].append(file) - except: - files_written[name] = [file] - elif 'O_RDONLY' in flags: - pass - else: - framework_fail(name, 'strace', "Can't understand flags in open strace line: " + line) - elif m_chdir: - # We optimistically assume that unfinished chdir's are going to succeed - dir = m_chdir.group(1) - working_directories[pid] = mkPath(working_directories[pid], dir) - elif m_clone: - working_directories[m_clone.group(2)] = working_directories[pid] - elif m_vfork: - working_directories[m_vfork.group(2)] = working_directories[pid] - elif re_strace_open_resumed.match(content): - pass - elif re_strace_chdir_resumed.match(content): - pass - elif re_strace_vfork_unfinished.match(content): - pass - elif re_strace_clone_unfinished.match(content): - pass - elif re_strace_ignore_sigchild.match(content): - pass - elif re_strace_ignore_sigchild2.match(content): - pass - elif re_strace_ignore_exited.match(content): - pass - elif re_strace_ignore_sigvtalarm.match(content): - pass - elif re_strace_ignore_sigvtalarm2.match(content): - pass - elif re_strace_ignore_sigint.match(content): - pass - elif re_strace_ignore_sigfpe.match(content): - pass - elif re_strace_ignore_sigsegv.match(content): - pass - elif re_strace_ignore_sigpipe.match(content): - pass - elif re_strace_unavailable_cntnt.match(content): - pass - else: - framework_fail(name, 'strace', "Can't understand strace line: " + line) - -def checkForFilesWrittenProblems(file): - foundProblem = False - - files_written_inverted = {} - for t in files_written.keys(): - for f in files_written[t]: - try: - files_written_inverted[f].append(t) - except: - files_written_inverted[f] = [t] - - for f in files_written_inverted.keys(): - if len(files_written_inverted[f]) > 1: - if not foundProblem: - foundProblem = True - file.write("\n") - file.write("\nSome files are written by multiple tests:\n") - file.write(" " + f + " (" + str(files_written_inverted[f]) + ")\n") - if foundProblem: - file.write("\n") - - # ----- - - if len(files_written_not_removed) > 0: - file.write("\n") - file.write("\nSome files written but not removed:\n") - tests = list(files_written_not_removed.keys()) - tests.sort() - for t in tests: - for f in files_written_not_removed[t]: - file.write(" " + t + ": " + f + "\n") - file.write("\n") - - # ----- - - if len(bad_file_usages) > 0: - file.write("\n") - file.write("\nSome bad file usages:\n") - tests = list(bad_file_usages.keys()) - tests.sort() - for t in tests: - for f in bad_file_usages[t]: - file.write(" " + t + ": " + f + "\n") - file.write("\n") - # ----------------------------------------------------------------------------- # checking if ghostscript is available for checking the output of hp2ps @@ -2256,9 +2081,6 @@ def summary(t, file, short=False): file.write('Test framework failures:\n') printFrameworkFailureSummary(file, t.framework_failures) - if config.check_files_written: - checkForFilesWrittenProblems(file) - if stopping(): file.write('WARNING: Testsuite run was terminated early\n') diff --git a/testsuite/mk/test.mk b/testsuite/mk/test.mk index ccaf0f8048..66d611c7e9 100644 --- a/testsuite/mk/test.mk +++ b/testsuite/mk/test.mk @@ -197,10 +197,6 @@ else RUNTEST_OPTS += -e cleanup=True endif -ifneq "$(CHECK_FILES_WRITTEN)" "" -RUNTEST_OPTS += --check-files-written -endif - RUNTEST_OPTS += \ --rootdir=. \ --configfile=$(CONFIG) \ |