summaryrefslogtreecommitdiff
path: root/QMTest/TestCommonTests.py
diff options
context:
space:
mode:
Diffstat (limited to 'QMTest/TestCommonTests.py')
-rw-r--r--QMTest/TestCommonTests.py2340
1 files changed, 0 insertions, 2340 deletions
diff --git a/QMTest/TestCommonTests.py b/QMTest/TestCommonTests.py
deleted file mode 100644
index 7949cb8..0000000
--- a/QMTest/TestCommonTests.py
+++ /dev/null
@@ -1,2340 +0,0 @@
-#!/usr/bin/env python
-"""
-TestCommonTests.py: Unit tests for the TestCommon.py module.
-
-Copyright 2000-2010 Steven Knight
-This module is free software, and you may redistribute it and/or modify
-it under the same terms as Python itself, so long as this copyright message
-and disclaimer are retained in their original form.
-
-IN NO EVENT SHALL THE AUTHOR BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT,
-SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OF
-THIS CODE, EVEN IF THE AUTHOR HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
-DAMAGE.
-
-THE AUTHOR SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT
-LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
-PARTICULAR PURPOSE. THE CODE PROVIDED HEREUNDER IS ON AN "AS IS" BASIS,
-AND THERE IS NO OBLIGATION WHATSOEVER TO PROVIDE MAINTENANCE,
-SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
-"""
-
-__author__ = "Steven Knight <knight at baldmt dot com>"
-__revision__ = "TestCommonTests.py 1.3.D001 2010/06/03 12:58:27 knight"
-
-import difflib
-import os
-import re
-import signal
-import stat
-import sys
-import unittest
-
-# Strip the current directory so we get the right TestCommon.py module.
-sys.path = sys.path[1:]
-
-import TestCmd
-import TestCommon
-
-def lstrip(s):
- lines = [ _.expandtabs() for _ in s.split('\n') ]
- if lines[0] == '':
- lines = lines[1:]
- spaces = len(re.match('^( *).*', lines[0]).group(1))
- if spaces:
- lines = [ l[spaces:] for l in lines ]
- return '\n'.join(lines)
-
-if sys.version[:3] == '1.5':
- expected_newline = '\\012'
-else:
- expected_newline = '\\n'
-
-def assert_display(expect, result, error=None):
- try:
- expect = expect.pattern
- except AttributeError:
- pass
- result = [
- '\n',
- ('*'*80) + '\n',
- expect,
- ('*'*80) + '\n',
- result,
- ('*'*80) + '\n',
- ]
- if error:
- result.append(error)
- return ''.join(result)
-
-
-class TestCommonTestCase(unittest.TestCase):
- """Base class for TestCommon test cases, fixture and utility methods."""
- create_run_env = True
-
- def setUp(self):
- self.orig_cwd = os.getcwd()
- if self.create_run_env:
- self.run_env = TestCmd.TestCmd(workdir = '')
-
- def tearDown(self):
- os.chdir(self.orig_cwd)
-
- def set_up_execution_scripts(self):
- run_env = self.run_env
-
- run_env.subdir('sub dir')
-
- self.python = sys.executable
-
- self.pass_script = run_env.workpath('sub dir', 'pass')
- self.fail_script = run_env.workpath('sub dir', 'fail')
- self.stdout_script = run_env.workpath('sub dir', 'stdout')
- self.stderr_script = run_env.workpath('sub dir', 'stderr')
- self.signal_script = run_env.workpath('sub dir', 'signal')
- self.stdin_script = run_env.workpath('sub dir', 'stdin')
-
- preamble = "import sys"
- stdout = "; sys.stdout.write(r'%s: STDOUT: ' + repr(sys.argv[1:]) + '\\n')"
- stderr = "; sys.stderr.write(r'%s: STDERR: ' + repr(sys.argv[1:]) + '\\n')"
- exit0 = "; sys.exit(0)"
- exit1 = "; sys.exit(1)"
- if sys.platform == 'win32':
- wrapper = '@python -c "%s" %%1 %%2 %%3 %%4 %%5 %%6 %%7 %%8 %%9\n'
- else:
- wrapper = '#! /usr/bin/env python\n%s\n'
- wrapper = '#! /usr/bin/env python\n%s\n'
-
- pass_body = preamble + stdout % self.pass_script + exit0
- fail_body = preamble + stdout % self.fail_script + exit1
- stderr_body = preamble + stderr % self.stderr_script + exit0
-
- run_env.write(self.pass_script, wrapper % pass_body)
- run_env.write(self.fail_script, wrapper % fail_body)
- run_env.write(self.stderr_script, wrapper % stderr_body)
-
- signal_body = lstrip("""\
- import os
- import signal
- os.kill(os.getpid(), signal.SIGTERM)
- """)
-
- run_env.write(self.signal_script, wrapper % signal_body)
-
- stdin_body = lstrip("""\
- import sys
- input = sys.stdin.read()[:-1]
- sys.stdout.write(r'%s: STDOUT: ' + repr(input) + '\\n')
- sys.stderr.write(r'%s: STDERR: ' + repr(input) + '\\n')
- """ % (self.stdin_script, self.stdin_script))
-
- run_env.write(self.stdin_script, wrapper % stdin_body)
-
- def run_execution_test(self, script, expect_stdout, expect_stderr):
- self.set_up_execution_scripts()
-
- run_env = self.run_env
-
- os.chdir(run_env.workpath('sub dir'))
-
- # Everything before this prepared our "source directory."
- # Now do the real test.
- script = script % self.__dict__
- run_env.run(program=sys.executable, stdin=script)
-
- stdout = run_env.stdout()
- stderr = run_env.stderr()
-
- expect_stdout = expect_stdout % self.__dict__
- assert stdout == expect_stdout, assert_display(expect_stdout,
- stdout,
- stderr)
-
- try:
- match = expect_stderr.match
- except AttributeError:
- expect_stderr = expect_stderr % self.__dict__
- assert stderr == expect_stderr, assert_display(expect_stderr,
- stderr)
- else:
- assert expect_stderr.match(stderr), assert_display(expect_stderr,
- stderr)
-
-
-class __init__TestCase(TestCommonTestCase):
- def test___init__(self):
- """Test initialization"""
- run_env = self.run_env
-
- os.chdir(run_env.workdir)
- script = lstrip("""\
- from __future__ import print_function
- from TestCommon import TestCommon
- tc = TestCommon(workdir='')
- import os
- print(os.getcwd())
- """)
- run_env.run(program=sys.executable, stdin=script)
- stdout = run_env.stdout()[:-1]
- assert stdout != run_env.workdir, stdout
- stderr = run_env.stderr()
- assert stderr == "", stderr
-
-
-class banner_TestCase(TestCommonTestCase):
- create_run_env = False
- def test_banner(self):
- """Test banner()"""
- tc = TestCommon.TestCommon(workdir='')
-
- b = tc.banner('xyzzy ')
- assert b == "xyzzy ==========================================================================", b
-
- tc.banner_width = 10
-
- b = tc.banner('xyzzy ')
- assert b == "xyzzy ====", b
-
- b = tc.banner('xyzzy ', 20)
- assert b == "xyzzy ==============", b
-
- tc.banner_char = '-'
-
- b = tc.banner('xyzzy ')
- assert b == "xyzzy ----", b
-
-class must_be_writable_TestCase(TestCommonTestCase):
- def test_file_does_not_exists(self):
- """Test must_be_writable(): file does not exist"""
- run_env = self.run_env
-
- script = lstrip("""\
- from TestCommon import TestCommon
- tc = TestCommon(workdir='')
- tc.must_be_writable('file1')
- tc.pass_test()
- """)
- run_env.run(program=sys.executable, stdin=script)
- stdout = run_env.stdout()
- assert stdout == "Missing files: `file1'\n", stdout
- stderr = run_env.stderr()
- assert stderr.find("FAILED") != -1, stderr
-
- def test_writable_file_exists(self):
- """Test must_be_writable(): writable file exists"""
- run_env = self.run_env
-
- script = lstrip("""\
- import os
- import stat
- from TestCommon import TestCommon
- tc = TestCommon(workdir='')
- tc.write('file1', "file1\\n")
- f1 = tc.workpath('file1')
- mode = os.stat(f1)[stat.ST_MODE]
- os.chmod(f1, mode | stat.S_IWUSR)
- tc.must_be_writable('file1')
- tc.pass_test()
- """)
- run_env.run(program=sys.executable, stdin=script)
- stdout = run_env.stdout()
- assert stdout == "", stdout
- stderr = run_env.stderr()
- assert stderr == "PASSED\n", stderr
-
- def test_non_writable_file_exists(self):
- """Test must_be_writable(): non-writable file exists"""
- run_env = self.run_env
-
- script = lstrip("""\
- import os
- import stat
- from TestCommon import TestCommon
- tc = TestCommon(workdir='')
- tc.write('file1', "file1\\n")
- f1 = tc.workpath('file1')
- mode = os.stat(f1)[stat.ST_MODE]
- os.chmod(f1, mode & ~stat.S_IWUSR)
- tc.must_be_writable('file1')
- tc.pass_test()
- """)
- run_env.run(program=sys.executable, stdin=script)
- stdout = run_env.stdout()
- assert stdout == "Unwritable files: `file1'\n", stdout
- stderr = run_env.stderr()
- assert stderr.find("FAILED") != -1, stderr
-
- def test_file_specified_as_list(self):
- """Test must_be_writable(): file specified as list"""
- run_env = self.run_env
-
- script = lstrip("""\
- import os
- import stat
- from TestCommon import TestCommon
- tc = TestCommon(workdir='')
- tc.subdir('sub')
- tc.write(['sub', 'file1'], "sub/file1\\n")
- f1 = tc.workpath('sub', 'file1')
- mode = os.stat(f1)[stat.ST_MODE]
- os.chmod(f1, mode | stat.S_IWUSR)
- tc.must_be_writable(['sub', 'file1'])
- tc.pass_test()
- """)
- run_env.run(program=sys.executable, stdin=script)
- stdout = run_env.stdout()
- assert stdout == "", stdout
- stderr = run_env.stderr()
- assert stderr == "PASSED\n", stderr
-
-
-class must_contain_TestCase(TestCommonTestCase):
- def test_success(self):
- """Test must_contain(): success"""
- run_env = self.run_env
-
- script = lstrip("""\
- from TestCommon import TestCommon
- tc = TestCommon(workdir='')
- tc.write('file1', "file1 contents\\n")
- tc.must_contain('file1', "1 c")
- tc.pass_test()
- """)
- run_env.run(program=sys.executable, stdin=script)
- stdout = run_env.stdout()
- assert stdout == "", stdout
- stderr = run_env.stderr()
- assert stderr == "PASSED\n", stderr
-
- def test_file_missing(self):
- """Test must_contain(): file missing"""
- run_env = self.run_env
-
- script = lstrip("""\
- from TestCommon import TestCommon
- tc = TestCommon(workdir='')
- tc.must_contain('file1', "1 c\\n")
- tc.pass_test()
- """)
- run_env.run(program=sys.executable, stdin=script)
- stdout = run_env.stdout()
- assert stdout == "", stdout
- stderr = run_env.stderr()
- assert stderr.find("No such file or directory:") != -1, stderr
-
- def test_failure(self):
- """Test must_contain(): failure"""
- run_env = self.run_env
-
- script = lstrip("""\
- from TestCommon import TestCommon
- tc = TestCommon(workdir='')
- tc.write('file1', "file1 does not match\\n")
- tc.must_contain('file1', "1 c")
- tc.run()
- """)
- expect = lstrip("""\
- File `file1' does not contain required string.
- Required string ================================================================
- 1 c
- file1 contents =================================================================
- file1 does not match
-
- """)
- run_env.run(program=sys.executable, stdin=script)
- stdout = run_env.stdout()
- assert stdout == expect, repr(stdout)
- stderr = run_env.stderr()
- assert stderr.find("FAILED") != -1, stderr
-
- def test_mode(self):
- """Test must_contain(): mode"""
- run_env = self.run_env
-
- script = lstrip("""\
- from TestCommon import TestCommon
- tc = TestCommon(workdir='')
- tc.write('file1', "file1 contents\\n", mode='w')
- tc.must_contain('file1', "1 c", mode='r')
- tc.write('file2', "file2 contents\\n", mode='wb')
- tc.must_contain('file2', "2 c", mode='rb')
- tc.pass_test()
- """)
- run_env.run(program=sys.executable, stdin=script)
- stdout = run_env.stdout()
- assert stdout == "", stdout
- stderr = run_env.stderr()
- assert stderr == "PASSED\n", stderr
-
-
-
-class must_contain_all_lines_TestCase(TestCommonTestCase):
- def test_success(self):
- """Test must_contain_all_lines(): success"""
- run_env = self.run_env
-
- script = lstrip("""
- import TestCommon
- test = TestCommon.TestCommon(workdir='')
-
- lines = [
- 'xxx\\n',
- 'yyy\\n',
- ]
-
- output = '''\\
- www
- xxx
- yyy
- zzz
- '''
-
- test.must_contain_all_lines(output, lines)
-
- test.must_contain_all_lines(output, ['www\\n'])
-
- test.pass_test()
- """)
-
- run_env.run(program=sys.executable, stdin=script)
- stdout = run_env.stdout()
- assert stdout == "", stdout
- stderr = run_env.stderr()
- assert stderr == "PASSED\n", stderr
-
- def test_failure(self):
- """Test must_contain_all_lines(): failure"""
- run_env = self.run_env
-
- script = lstrip("""
- import TestCommon
- test = TestCommon.TestCommon(workdir='')
-
- lines = [
- 'xxx\\n',
- 'yyy\\n',
- ]
-
- output = '''\\
- www
- zzz
- '''
-
- test.must_contain_all_lines(output, lines)
-
- test.pass_test()
- """)
-
- expect = lstrip("""\
- Missing expected lines from output:
- 'xxx%(expected_newline)s'
- 'yyy%(expected_newline)s'
- output =========================================================================
- www
- zzz
- """ % globals())
-
- run_env.run(program=sys.executable, stdin=script)
- stdout = run_env.stdout()
- stderr = run_env.stderr()
- assert stdout == expect, assert_display(expect, stdout, stderr)
- assert stderr.find("FAILED") != -1, stderr
-
- def test_find(self):
- """Test must_contain_all_lines(): find"""
- run_env = self.run_env
-
- script = lstrip("""
- import re
- import TestCommon
- test = TestCommon.TestCommon(workdir='')
-
- lines = [
- 'x.*',
- '.*y',
- ]
-
- output = '''\\
- www
- xxx
- yyy
- zzz
- '''
-
- def re_search(output, line):
- return re.compile(line, re.S).search(output)
- test.must_contain_all_lines(output, lines, find=re_search)
-
- test.pass_test()
- """)
-
- run_env.run(program=sys.executable, stdin=script)
- stdout = run_env.stdout()
- assert stdout == "", stdout
- stderr = run_env.stderr()
- assert stderr == "PASSED\n", stderr
-
- def test_title(self):
- """Test must_contain_all_lines(): title"""
- run_env = self.run_env
-
- script = lstrip("""
- import TestCommon
- test = TestCommon.TestCommon(workdir='')
-
- lines = [
- 'xxx\\n',
- 'yyy\\n',
- ]
-
- output = '''\\
- www
- zzz
- '''
-
- test.must_contain_all_lines(output, lines, title='STDERR')
-
- test.pass_test()
- """)
-
- expect = lstrip("""\
- Missing expected lines from STDERR:
- 'xxx%(expected_newline)s'
- 'yyy%(expected_newline)s'
- STDERR =========================================================================
- www
- zzz
- """ % globals())
-
- run_env.run(program=sys.executable, stdin=script)
- stdout = run_env.stdout()
- stderr = run_env.stderr()
- assert stdout == expect, assert_display(expect, stdout, stderr)
- assert stderr.find("FAILED") != -1, stderr
-
-
-
-class must_contain_any_line_TestCase(TestCommonTestCase):
- def test_success(self):
- """Test must_contain_any_line(): success"""
- run_env = self.run_env
-
- script = lstrip("""
- import TestCommon
- test = TestCommon.TestCommon(workdir='')
-
- lines = [
- 'aaa\\n',
- 'yyy\\n',
- ]
-
- output = '''\\
- www
- xxx
- yyy
- zzz
- '''
-
- test.must_contain_any_line(output, lines)
-
- test.must_contain_any_line(output, ['www\\n'])
-
- test.pass_test()
- """)
-
- run_env.run(program=sys.executable, stdin=script)
- stdout = run_env.stdout()
- assert stdout == "", stdout
- stderr = run_env.stderr()
- assert stderr == "PASSED\n", stderr
-
- def test_failure(self):
- """Test must_contain_any_line(): failure"""
- run_env = self.run_env
-
- script = lstrip("""
- import TestCommon
- test = TestCommon.TestCommon(workdir='')
-
- lines = [
- 'xxx\\n',
- 'yyy\\n',
- ]
-
- output = '''\\
- www
- zzz
- '''
-
- test.must_contain_any_line(output, lines)
-
- test.pass_test()
- """)
-
- expect = lstrip("""\
- Missing any expected line from output:
- 'xxx%(expected_newline)s'
- 'yyy%(expected_newline)s'
- output =========================================================================
- www
- zzz
- """ % globals())
-
- run_env.run(program=sys.executable, stdin=script)
- stdout = run_env.stdout()
- stderr = run_env.stderr()
- assert stdout == expect, assert_display(expect, stdout, stderr)
- assert stderr.find("FAILED") != -1, stderr
-
- def test_find(self):
- """Test must_contain_any_line(): find"""
- run_env = self.run_env
-
- script = lstrip("""
- import re
- import TestCommon
- test = TestCommon.TestCommon(workdir='')
-
- lines = [
- 'aaa',
- '.*y',
- ]
-
- output = '''\\
- www
- xxx
- yyy
- zzz
- '''
-
- def re_search(output, line):
- return re.compile(line, re.S).search(output)
- test.must_contain_any_line(output, lines, find=re_search)
-
- test.pass_test()
- """)
-
- run_env.run(program=sys.executable, stdin=script)
- stdout = run_env.stdout()
- assert stdout == "", stdout
- stderr = run_env.stderr()
- assert stderr == "PASSED\n", stderr
-
- def test_title(self):
- """Test must_contain_any_line(): title"""
- run_env = self.run_env
-
- script = lstrip("""
- import TestCommon
- test = TestCommon.TestCommon(workdir='')
-
- lines = [
- 'xxx\\n',
- 'yyy\\n',
- ]
-
- output = '''\\
- www
- zzz
- '''
-
- test.must_contain_any_line(output, lines, title='STDOUT')
-
- test.pass_test()
- """)
-
- expect = lstrip("""\
- Missing any expected line from STDOUT:
- 'xxx%(expected_newline)s'
- 'yyy%(expected_newline)s'
- STDOUT =========================================================================
- www
- zzz
- """ % globals())
-
- run_env.run(program=sys.executable, stdin=script)
- stdout = run_env.stdout()
- stderr = run_env.stderr()
- assert stdout == expect, assert_display(expect, stdout, stderr)
- assert stderr.find("FAILED") != -1, stderr
-
-
-
-class must_contain_exactly_lines_TestCase(TestCommonTestCase):
- def test_success_list(self):
- """Test must_contain_exactly_lines(): success (input list)"""
- run_env = self.run_env
-
- script = lstrip("""
- import TestCommon
- test = TestCommon.TestCommon(workdir='')
-
- lines = [
- 'yyy\\n',
- 'xxx\\n',
- 'zzz',
- 'www\\n',
- ]
-
- output = '''\\
- www
- xxx
- yyy
- zzz
- '''
-
- test.must_contain_exactly_lines(output, lines)
-
- test.pass_test()
- """)
-
- run_env.run(program=sys.executable, stdin=script)
- stdout = run_env.stdout()
- assert stdout == "", stdout
- stderr = run_env.stderr()
- assert stderr == "PASSED\n", stderr
-
- def test_success_string(self):
- """Test must_contain_exactly_lines(): success (input string)"""
- run_env = self.run_env
-
- script = lstrip("""
- import TestCommon
- test = TestCommon.TestCommon(workdir='')
-
- lines = '''\\
- yyy
- xxx
- zzz
- www
- '''
-
- output = '''\\
- www
- xxx
- yyy
- zzz
- '''
-
- test.must_contain_exactly_lines(output, lines)
-
- test.pass_test()
- """)
-
- run_env.run(program=sys.executable, stdin=script)
- stdout = run_env.stdout()
- assert stdout == "", stdout
- stderr = run_env.stderr()
- assert stderr == "PASSED\n", stderr
-
- def test_failure(self):
- """Test must_contain_exactly_lines(): failure"""
- run_env = self.run_env
-
- script = lstrip("""
- import TestCommon
- test = TestCommon.TestCommon(workdir='')
-
- lines = [
- 'xxx\\n',
- 'yyy\\n',
- ]
-
- output = '''\\
- www
- zzz
- '''
-
- test.must_contain_exactly_lines(output, lines)
-
- test.pass_test()
- """)
-
- expect = lstrip("""\
- Missing expected lines from output:
- 'xxx'
- 'yyy'
- Missing output =================================================================
- Extra unexpected lines from output:
- 'www'
- 'zzz'
- Extra output ===================================================================
- """ % globals())
-
- run_env.run(program=sys.executable, stdin=script)
- stdout = run_env.stdout()
- stderr = run_env.stderr()
- assert stdout == expect, assert_display(expect, stdout, stderr)
- assert stderr.find("FAILED") != -1, stderr
-
- def test_find(self):
- """Test must_contain_exactly_lines(): find"""
- run_env = self.run_env
-
- script = lstrip("""
- import re
- import TestCommon
- test = TestCommon.TestCommon(workdir='')
-
- lines = [
- 'zzz',
- '.*y',
- 'xxx',
- 'www',
- ]
-
- output = '''\\\
- www
- xxx
- yyy
- zzz
- '''
-
- def re_search(output, line):
- pattern = re.compile(line, re.S)
- index = 0
- for o in output:
- if pattern.search(o):
- return index
- index +=1
- return None
- test.must_contain_exactly_lines(output, lines, find=re_search)
-
- test.pass_test()
- """)
-
- run_env.run(program=sys.executable, stdin=script)
- stdout = run_env.stdout()
- assert stdout == "", stdout
- stderr = run_env.stderr()
- assert stderr == "PASSED\n", stderr
-
- def test_title(self):
- """Test must_contain_exactly_lines(): title"""
- run_env = self.run_env
-
- script = lstrip("""
- import TestCommon
- test = TestCommon.TestCommon(workdir='')
-
- lines = [
- 'xxx\\n',
- 'yyy\\n',
- ]
-
- output = '''\\
- www
- zzz
- '''
-
- test.must_contain_exactly_lines(output, lines, title='STDOUT')
-
- test.pass_test()
- """)
-
- expect = lstrip("""\
- Missing expected lines from STDOUT:
- 'xxx'
- 'yyy'
- Missing STDOUT =================================================================
- Extra unexpected lines from STDOUT:
- 'www'
- 'zzz'
- Extra STDOUT ===================================================================
- """ % globals())
-
- run_env.run(program=sys.executable, stdin=script)
- stdout = run_env.stdout()
- stderr = run_env.stderr()
- assert stdout == expect, assert_display(expect, stdout, stderr)
- assert stderr.find("FAILED") != -1, stderr
-
-
-
-class must_contain_lines_TestCase(TestCommonTestCase):
- def test_success(self):
- """Test must_contain_lines(): success"""
- run_env = self.run_env
-
- script = lstrip("""
- import TestCommon
- test = TestCommon.TestCommon(workdir='')
-
- lines = [
- 'xxx\\n',
- 'yyy\\n',
- ]
-
- output = '''\\
- www
- xxx
- yyy
- zzz
- '''
-
- test.must_contain_lines(lines, output)
-
- test.pass_test()
- """)
-
- run_env.run(program=sys.executable, stdin=script)
- stdout = run_env.stdout()
- assert stdout == "", stdout
- stderr = run_env.stderr()
- assert stderr == "PASSED\n", stderr
-
- def test_failure(self):
- """Test must_contain_lines(): failure"""
- run_env = self.run_env
-
- script = lstrip("""
- import TestCommon
- test = TestCommon.TestCommon(workdir='')
-
- lines = [
- 'xxx\\n',
- 'yyy\\n',
- ]
-
- output = '''\\
- www
- zzz
- '''
-
- test.must_contain_lines(lines, output)
-
- test.pass_test()
- """)
-
- expect = lstrip("""\
- Missing expected lines from output:
- 'xxx%(expected_newline)s'
- 'yyy%(expected_newline)s'
- output =========================================================================
- www
- zzz
- """ % globals())
-
- run_env.run(program=sys.executable, stdin=script)
- stdout = run_env.stdout()
- stderr = run_env.stderr()
- assert stdout == expect, assert_display(expect, stdout, stderr)
- assert stderr.find("FAILED") != -1, stderr
-
-
-
-class must_exist_TestCase(TestCommonTestCase):
- def test_success(self):
- """Test must_exist(): success"""
- run_env = self.run_env
-
- script = lstrip("""\
- from TestCommon import TestCommon
- tc = TestCommon(workdir='')
- tc.write('file1', "file1\\n")
- tc.must_exist('file1')
- tc.pass_test()
- """)
- run_env.run(program=sys.executable, stdin=script)
- stdout = run_env.stdout()
- assert stdout == "", stdout
- stderr = run_env.stderr()
- assert stderr == "PASSED\n", stderr
-
- def test_failure(self):
- """Test must_exist(): failure"""
- run_env = self.run_env
-
- script = lstrip("""\
- from TestCommon import TestCommon
- tc = TestCommon(workdir='')
- tc.must_exist('file1')
- tc.pass_test()
- """)
- run_env.run(program=sys.executable, stdin=script)
- stdout = run_env.stdout()
- assert stdout == "Missing files: `file1'\n", stdout
- stderr = run_env.stderr()
- assert stderr.find("FAILED") != -1, stderr
-
- def test_file_specified_as_list(self):
- """Test must_exist(): file specified as list"""
- run_env = self.run_env
-
- script = lstrip("""\
- from TestCommon import TestCommon
- tc = TestCommon(workdir='')
- tc.subdir('sub')
- tc.write(['sub', 'file1'], "sub/file1\\n")
- tc.must_exist(['sub', 'file1'])
- tc.pass_test()
- """)
- run_env.run(program=sys.executable, stdin=script)
- stdout = run_env.stdout()
- assert stdout == "", stdout
- stderr = run_env.stderr()
- assert stderr == "PASSED\n", stderr
-
- def test_broken_link(self) :
- """Test must_exist(): exists but it is a broken link"""
- run_env = self.run_env
-
- script = lstrip("""\
- from TestCommon import TestCommon
- tc = TestCommon(workdir='')
- tc.symlink('badtarget', "brokenlink")
- tc.must_exist('brokenlink')
- tc.pass_test()
- """)
- run_env.run(program=sys.executable, stdin=script)
- stdout = run_env.stdout()
- assert stdout == "", stdout
- stderr = run_env.stderr()
- assert stderr == "PASSED\n", stderr
-
-class must_exist_one_of_TestCase(TestCommonTestCase):
- def test_success(self):
- """Test must_exist_one_of(): success"""
- run_env = self.run_env
-
- script = lstrip("""\
- from TestCommon import TestCommon
- tc = TestCommon(workdir='')
- tc.write('file1', "file1\\n")
- tc.must_exist_one_of(['file1'])
- tc.pass_test()
- """)
- run_env.run(program=sys.executable, stdin=script)
- stdout = run_env.stdout()
- assert stdout == "", stdout
- stderr = run_env.stderr()
- assert stderr == "PASSED\n", stderr
-
- def test_failure(self):
- """Test must_exist_one_of(): failure"""
- run_env = self.run_env
-
- script = lstrip("""\
- from TestCommon import TestCommon
- tc = TestCommon(workdir='')
- tc.must_exist_one_of(['file1'])
- tc.pass_test()
- """)
- run_env.run(program=sys.executable, stdin=script)
- stdout = run_env.stdout()
- assert stdout == "Missing one of: `file1'\n", stdout
- stderr = run_env.stderr()
- assert stderr.find("FAILED") != -1, stderr
-
- def test_files_specified_as_list(self):
- """Test must_exist_one_of(): files specified as list"""
- run_env = self.run_env
-
- script = lstrip("""\
- from TestCommon import TestCommon
- tc = TestCommon(workdir='')
- tc.write('file1', "file1\\n")
- tc.must_exist_one_of(['file2', 'file1'])
- tc.pass_test()
- """)
- run_env.run(program=sys.executable, stdin=script)
- stdout = run_env.stdout()
- assert stdout == "", stdout
- stderr = run_env.stderr()
- assert stderr == "PASSED\n", stderr
-
- def test_files_specified_with_wildcards(self):
- """Test must_exist_one_of(): files specified with wildcards"""
- run_env = self.run_env
-
- script = lstrip("""\
- from TestCommon import TestCommon
- tc = TestCommon(workdir='')
- tc.write('file7', "file7\\n")
- tc.must_exist_one_of(['file?'])
- tc.pass_test()
- """)
- run_env.run(program=sys.executable, stdin=script)
- stdout = run_env.stdout()
- assert stdout == "", stdout
- stderr = run_env.stderr()
- assert stderr == "PASSED\n", stderr
-
- def test_file_given_as_list(self):
- """Test must_exist_one_of(): file given as list"""
- run_env = self.run_env
-
- script = lstrip("""\
- from TestCommon import TestCommon
- tc = TestCommon(workdir='')
- tc.subdir('sub')
- tc.write(['sub', 'file1'], "sub/file1\\n")
- tc.must_exist_one_of(['file2',
- ['sub', 'file1']])
- tc.pass_test()
- """)
- run_env.run(program=sys.executable, stdin=script)
- stdout = run_env.stdout()
- assert stdout == "", stdout
- stderr = run_env.stderr()
- assert stderr == "PASSED\n", stderr
-
- def test_file_given_as_sequence(self):
- """Test must_exist_one_of(): file given as sequence"""
- run_env = self.run_env
-
- script = lstrip("""\
- from TestCommon import TestCommon
- tc = TestCommon(workdir='')
- tc.subdir('sub')
- tc.write(['sub', 'file1'], "sub/file1\\n")
- tc.must_exist_one_of(['file2',
- ('sub', 'file1')])
- tc.pass_test()
- """)
- run_env.run(program=sys.executable, stdin=script)
- stdout = run_env.stdout()
- assert stdout == "", stdout
- stderr = run_env.stderr()
- assert stderr == "PASSED\n", stderr
-
-class must_match_TestCase(TestCommonTestCase):
- def test_success(self):
- """Test must_match(): success"""
- run_env = self.run_env
-
- script = lstrip("""\
- from TestCommon import TestCommon
- tc = TestCommon(workdir='')
- tc.write('file1', "file1\\n")
- tc.must_match('file1', "file1\\n")
- tc.pass_test()
- """)
- run_env.run(program=sys.executable, stdin=script)
- stdout = run_env.stdout()
- assert stdout == "", stdout
- stderr = run_env.stderr()
- assert stderr == "PASSED\n", stderr
-
- def test_file_does_not_exists(self):
- """Test must_match(): file does not exist"""
- run_env = self.run_env
-
- script = lstrip("""\
- from TestCommon import TestCommon
- tc = TestCommon(workdir='')
- tc.must_match('file1', "file1\\n")
- tc.pass_test()
- """)
- run_env.run(program=sys.executable, stdin=script)
- stdout = run_env.stdout()
- assert stdout == "", stdout
- stderr = run_env.stderr()
- assert stderr.find("No such file or directory:") != -1, stderr
-
- def test_failure(self):
- """Test must_match(): failure"""
- run_env = self.run_env
-
- script = lstrip("""\
- from TestCommon import TestCommon
- tc = TestCommon(workdir='')
- tc.write('file1', "file1 does not match\\n")
- tc.must_match('file1', "file1\\n")
- tc.run()
- """)
-
- expect = lstrip("""\
- Unexpected contents of `file1'
- contents =======================================================================
- 1c1
- < file1
- ---
- > file1 does not match
- """)
- run_env.run(program=sys.executable, stdin=script)
- stdout = run_env.stdout()
- assert stdout == expect, stdout
- stderr = run_env.stderr()
- assert stderr.find("FAILED") != -1, stderr
-
- def test_mode(self):
- """Test must_match(): mode"""
- run_env = self.run_env
-
- script = lstrip("""\
- from TestCommon import TestCommon
- tc = TestCommon(workdir='')
- tc.write('file1', "file1\\n", mode='w')
- tc.must_match('file1', "file1\\n", mode='r')
- tc.write('file2', "file2\\n", mode='wb')
- tc.must_match('file2', "file2\\n", mode='rb')
- tc.pass_test()
- """)
- run_env.run(program=sys.executable, stdin=script)
- stdout = run_env.stdout()
- assert stdout == "", stdout
- stderr = run_env.stderr()
- assert stderr == "PASSED\n", stderr
-
-
-
-class must_not_be_writable_TestCase(TestCommonTestCase):
- def test_file_does_not_exists(self):
- """Test must_not_be_writable(): file does not exist"""
- run_env = self.run_env
-
- script = lstrip("""\
- from TestCommon import TestCommon
- tc = TestCommon(workdir='')
- tc.must_not_be_writable('file1')
- tc.pass_test()
- """)
- run_env.run(program=sys.executable, stdin=script)
- stdout = run_env.stdout()
- assert stdout == "Missing files: `file1'\n", stdout
- stderr = run_env.stderr()
- assert stderr.find("FAILED") != -1, stderr
-
- def test_writable_file_exists(self):
- """Test must_not_be_writable(): writable file exists"""
- run_env = self.run_env
-
- script = lstrip("""\
- import os
- import stat
- from TestCommon import TestCommon
- tc = TestCommon(workdir='')
- tc.write('file1', "file1\\n")
- f1 = tc.workpath('file1')
- mode = os.stat(f1)[stat.ST_MODE]
- os.chmod(f1, mode | stat.S_IWUSR)
- tc.must_not_be_writable('file1')
- tc.pass_test()
- """)
- run_env.run(program=sys.executable, stdin=script)
- stdout = run_env.stdout()
- assert stdout == "Writable files: `file1'\n", stdout
- stderr = run_env.stderr()
- assert stderr.find("FAILED") != -1, stderr
-
- def test_non_writable_file_exists(self):
- """Test must_not_be_writable(): non-writable file exists"""
- run_env = self.run_env
-
- script = lstrip("""\
- import os
- import stat
- from TestCommon import TestCommon
- tc = TestCommon(workdir='')
- tc.write('file1', "file1\\n")
- f1 = tc.workpath('file1')
- mode = os.stat(f1)[stat.ST_MODE]
- os.chmod(f1, mode & ~stat.S_IWUSR)
- tc.must_not_be_writable('file1')
- tc.pass_test()
- """)
- run_env.run(program=sys.executable, stdin=script)
- stdout = run_env.stdout()
- assert stdout == "", stdout
- stderr = run_env.stderr()
- assert stderr == "PASSED\n", stderr
-
- def test_file_specified_as_list(self):
- """Test must_not_be_writable(): file specified as list"""
- run_env = self.run_env
-
- script = lstrip("""\
- import os
- import stat
- from TestCommon import TestCommon
- tc = TestCommon(workdir='')
- tc.subdir('sub')
- tc.write(['sub', 'file1'], "sub/file1\\n")
- f1 = tc.workpath('sub', 'file1')
- mode = os.stat(f1)[stat.ST_MODE]
- os.chmod(f1, mode & ~stat.S_IWUSR)
- tc.must_not_be_writable(['sub', 'file1'])
- tc.pass_test()
- """)
- run_env.run(program=sys.executable, stdin=script)
- stdout = run_env.stdout()
- assert stdout == "", stdout
- stderr = run_env.stderr()
- assert stderr == "PASSED\n", stderr
-
-
-
-class must_not_contain_TestCase(TestCommonTestCase):
- def test_success(self):
- """Test must_not_contain(): success"""
- run_env = self.run_env
-
- script = lstrip("""\
- from TestCommon import TestCommon
- tc = TestCommon(workdir='')
- tc.write('file1', "file1 contents\\n")
- tc.must_not_contain('file1', "1 does not contain c")
- tc.pass_test()
- """)
- run_env.run(program=sys.executable, stdin=script)
- stdout = run_env.stdout()
- assert stdout == "", stdout
- stderr = run_env.stderr()
- assert stderr == "PASSED\n", stderr
-
- def test_file_does_not_exist(self):
- """Test must_not_contain(): file does not exist"""
- run_env = self.run_env
-
- script = lstrip("""\
- from TestCommon import TestCommon
- tc = TestCommon(workdir='')
- tc.must_not_contain('file1', "1 c\\n")
- tc.pass_test()
- """)
- run_env.run(program=sys.executable, stdin=script)
- stdout = run_env.stdout()
- assert stdout == "", stdout
- stderr = run_env.stderr()
- assert stderr.find("No such file or directory:") != -1, stderr
-
- def test_failure(self):
- """Test must_not_contain(): failure"""
- run_env = self.run_env
-
- script = lstrip("""\
- from TestCommon import TestCommon
- tc = TestCommon(workdir='')
- tc.write('file1', "file1 does contain contents\\n")
- tc.must_not_contain('file1', "1 does contain c")
- tc.run()
- """)
- expect = lstrip("""\
- File `file1' contains banned string.
- Banned string ==================================================================
- 1 does contain c
- file1 contents =================================================================
- file1 does contain contents
-
- """)
- run_env.run(program=sys.executable, stdin=script)
- stdout = run_env.stdout()
- assert stdout == expect, repr(stdout)
- stderr = run_env.stderr()
- assert stderr.find("FAILED") != -1, stderr
-
- def test_mode(self):
- """Test must_not_contain(): mode"""
- run_env = self.run_env
-
- script = lstrip("""\
- from TestCommon import TestCommon
- tc = TestCommon(workdir='')
- tc.write('file1', "file1 contents\\n", mode='w')
- tc.must_not_contain('file1', "1 does not contain c", mode='r')
- tc.write('file2', "file2 contents\\n", mode='wb')
- tc.must_not_contain('file2', "2 does not contain c", mode='rb')
- tc.pass_test()
- """)
- run_env.run(program=sys.executable, stdin=script)
- stdout = run_env.stdout()
- assert stdout == "", stdout
- stderr = run_env.stderr()
- assert stderr == "PASSED\n", stderr
-
-
-
-class must_not_contain_any_line_TestCase(TestCommonTestCase):
- def test_failure(self):
- """Test must_not_contain_any_line(): failure"""
- run_env = self.run_env
-
- script = lstrip("""
- import TestCommon
- test = TestCommon.TestCommon(workdir='')
-
- lines = [
- 'xxx\\n',
- 'yyy\\n',
- 'www\\n',
- ]
-
- output = '''\\
- www
- xxx
- yyy
- zzz
- '''
-
- test.must_not_contain_any_line(output, lines)
-
- test.pass_test()
- """)
-
- expect = lstrip("""\
- Unexpected lines in output:
- 'xxx%(expected_newline)s'
- 'yyy%(expected_newline)s'
- 'www%(expected_newline)s'
- output =========================================================================
- www
- xxx
- yyy
- zzz
- """ % globals())
-
- run_env.run(program=sys.executable, stdin=script)
- stdout = run_env.stdout()
- stderr = run_env.stderr()
- assert stdout == expect, assert_display(expect, stdout, stderr)
- assert stderr.find("FAILED") != -1, stderr
-
- def test_find(self):
- """Test must_not_contain_any_line(): find"""
- run_env = self.run_env
-
- script = lstrip("""
- import re
- import TestCommon
- test = TestCommon.TestCommon(workdir='')
-
- lines = [
- 'x.*'
- '.*y'
- ]
-
- output = '''\\
- www
- zzz
- '''
-
- def re_search(output, line):
- return re.compile(line, re.S).search(output)
- test.must_not_contain_any_line(output, lines, find=re_search)
-
- test.pass_test()
- """)
-
- run_env.run(program=sys.executable, stdin=script)
- stdout = run_env.stdout()
- assert stdout == "", stdout
- stderr = run_env.stderr()
- assert stderr == "PASSED\n", stderr
-
- def test_success(self):
- """Test must_not_contain_any_line(): success"""
- run_env = self.run_env
-
- script = lstrip("""
- import TestCommon
- test = TestCommon.TestCommon(workdir='')
-
- lines = [
- 'xxx\\n'
- 'yyy\\n'
- ]
-
- output = '''\\
- www
- zzz
- '''
-
- test.must_not_contain_any_line(output, lines)
-
- test.pass_test()
- """)
-
- run_env.run(program=sys.executable, stdin=script)
- stdout = run_env.stdout()
- assert stdout == "", stdout
- stderr = run_env.stderr()
- assert stderr == "PASSED\n", stderr
-
- def test_title(self):
- """Test must_not_contain_any_line(): title"""
- run_env = self.run_env
-
- script = lstrip("""
- import TestCommon
- test = TestCommon.TestCommon(workdir='')
-
- lines = [
- 'xxx\\n',
- 'yyy\\n',
- ]
-
- output = '''\\
- www
- xxx
- yyy
- zzz
- '''
-
- test.must_not_contain_any_line(output, lines, title='XYZZY')
-
- test.pass_test()
- """)
-
- expect = lstrip("""\
- Unexpected lines in XYZZY:
- 'xxx%(expected_newline)s'
- 'yyy%(expected_newline)s'
- XYZZY ==========================================================================
- www
- xxx
- yyy
- zzz
- """ % globals())
-
- run_env.run(program=sys.executable, stdin=script)
- stdout = run_env.stdout()
- stderr = run_env.stderr()
- assert stdout == expect, assert_display(expect, stdout, stderr)
- assert stderr.find("FAILED") != -1, stderr
-
-
-
-class must_not_contain_lines_TestCase(TestCommonTestCase):
- def test_failure(self):
- """Test must_not_contain_lines(): failure"""
- run_env = self.run_env
-
- script = lstrip("""
- import TestCommon
- test = TestCommon.TestCommon(workdir='')
-
- lines = [
- 'xxx\\n',
- 'yyy\\n',
- ]
-
- output = '''\\
- www
- xxx
- yyy
- zzz
- '''
-
- test.must_not_contain_lines(lines, output)
-
- test.pass_test()
- """)
-
- expect = lstrip("""\
- Unexpected lines in output:
- 'xxx%(expected_newline)s'
- 'yyy%(expected_newline)s'
- output =========================================================================
- www
- xxx
- yyy
- zzz
- """ % globals())
-
- run_env.run(program=sys.executable, stdin=script)
- stdout = run_env.stdout()
- stderr = run_env.stderr()
- assert stdout == expect, assert_display(expect, stdout, stderr)
- assert stderr.find("FAILED") != -1, stderr
-
- def test_success(self):
- """Test must_not_contain_lines(): success"""
- run_env = self.run_env
-
- script = lstrip("""
- import TestCommon
- test = TestCommon.TestCommon(workdir='')
-
- lines = [
- 'xxx\\n'
- 'yyy\\n'
- ]
-
- output = '''\\
- www
- zzz
- '''
-
- test.must_not_contain_lines(lines, output)
-
- test.pass_test()
- """)
-
- run_env.run(program=sys.executable, stdin=script)
- stdout = run_env.stdout()
- assert stdout == "", stdout
- stderr = run_env.stderr()
- assert stderr == "PASSED\n", stderr
-
-
-
-class must_not_exist_TestCase(TestCommonTestCase):
- def test_failure(self):
- """Test must_not_exist(): failure"""
- run_env = self.run_env
-
- script = lstrip("""\
- from TestCommon import TestCommon
- tc = TestCommon(workdir='')
- tc.write('file1', "file1\\n")
- tc.must_not_exist('file1')
- tc.pass_test()
- """)
- run_env.run(program=sys.executable, stdin=script)
- stdout = run_env.stdout()
- assert stdout == "Unexpected files exist: `file1'\n", stdout
- stderr = run_env.stderr()
- assert stderr.find("FAILED") != -1, stderr
-
- def test_success(self):
- """Test must_not_exist(): success"""
- run_env = self.run_env
-
- script = lstrip("""\
- from TestCommon import TestCommon
- tc = TestCommon(workdir='')
- tc.must_not_exist('file1')
- tc.pass_test()
- """)
- run_env.run(program=sys.executable, stdin=script)
- stdout = run_env.stdout()
- assert stdout == "", stdout
- stderr = run_env.stderr()
- assert stderr == "PASSED\n", stderr
-
- def test_file_specified_as_list(self):
- """Test must_not_exist(): file specified as list"""
- run_env = self.run_env
-
- script = lstrip("""\
- from TestCommon import TestCommon
- tc = TestCommon(workdir='')
- tc.subdir('sub')
- tc.must_not_exist(['sub', 'file1'])
- tc.pass_test()
- """)
- run_env.run(program=sys.executable, stdin=script)
- stdout = run_env.stdout()
- assert stdout == "", stdout
- stderr = run_env.stderr()
- assert stderr == "PASSED\n", stderr
-
- def test_existing_broken_link(self):
- """Test must_not_exist(): exists but it is a broken link"""
- run_env = self.run_env
-
- script = lstrip("""\
- from TestCommon import TestCommon
- tc = TestCommon(workdir='')
- tc.symlink('badtarget', 'brokenlink')
- tc.must_not_exist('brokenlink')
- tc.pass_test()
- """)
- run_env.run(program=sys.executable, stdin=script)
- stdout = run_env.stdout()
- assert stdout == "Unexpected files exist: `brokenlink'\n", stdout
- stderr = run_env.stderr()
- assert stderr.find("FAILED") != -1, stderr
-
-class must_not_exist_any_of_TestCase(TestCommonTestCase):
- def test_success(self):
- """Test must_not_exist_any_of(): success"""
- run_env = self.run_env
-
- script = lstrip("""\
- from TestCommon import TestCommon
- tc = TestCommon(workdir='')
- tc.must_not_exist_any_of(['file1'])
- tc.pass_test()
- """)
- run_env.run(program=sys.executable, stdin=script)
- stdout = run_env.stdout()
- assert stdout == "", stdout
- stderr = run_env.stderr()
- assert stderr == "PASSED\n", stderr
-
- def test_failure(self):
- """Test must_not_exist_any_of(): failure"""
- run_env = self.run_env
-
- script = lstrip("""\
- from TestCommon import TestCommon
- tc = TestCommon(workdir='')
- tc.write('file1', "file1\\n")
- tc.must_not_exist_any_of(['file1'])
- tc.pass_test()
- """)
- run_env.run(program=sys.executable, stdin=script)
- stdout = run_env.stdout()
- assert stdout == "Unexpected files exist: `file1'\n", stdout
- stderr = run_env.stderr()
- assert stderr.find("FAILED") != -1, stderr
-
- def test_files_specified_as_list(self):
- """Test must_not_exist_any_of(): files specified as list"""
- run_env = self.run_env
-
- script = lstrip("""\
- from TestCommon import TestCommon
- tc = TestCommon(workdir='')
- tc.must_not_exist_any_of(['file2', 'file1'])
- tc.pass_test()
- """)
- run_env.run(program=sys.executable, stdin=script)
- stdout = run_env.stdout()
- assert stdout == "", stdout
- stderr = run_env.stderr()
- assert stderr == "PASSED\n", stderr
-
- def test_files_specified_with_wildcards(self):
- """Test must_not_exist_any_of(): files specified with wildcards"""
- run_env = self.run_env
-
- script = lstrip("""\
- from TestCommon import TestCommon
- tc = TestCommon(workdir='')
- tc.write('file7', "file7\\n")
- tc.must_not_exist_any_of(['files?'])
- tc.pass_test()
- """)
- run_env.run(program=sys.executable, stdin=script)
- stdout = run_env.stdout()
- assert stdout == "", stdout
- stderr = run_env.stderr()
- assert stderr == "PASSED\n", stderr
-
- def test_file_given_as_list(self):
- """Test must_not_exist_any_of(): file given as list"""
- run_env = self.run_env
-
- script = lstrip("""\
- from TestCommon import TestCommon
- tc = TestCommon(workdir='')
- tc.subdir('sub')
- tc.write(['sub', 'file1'], "sub/file1\\n")
- tc.must_not_exist_any_of(['file2',
- ['sub', 'files*']])
- tc.pass_test()
- """)
- run_env.run(program=sys.executable, stdin=script)
- stdout = run_env.stdout()
- assert stdout == "", stdout
- stderr = run_env.stderr()
- assert stderr == "PASSED\n", stderr
-
- def test_file_given_as_sequence(self):
- """Test must_not_exist_any_of(): file given as sequence"""
- run_env = self.run_env
-
- script = lstrip("""\
- from TestCommon import TestCommon
- tc = TestCommon(workdir='')
- tc.subdir('sub')
- tc.write(['sub', 'file1'], "sub/file1\\n")
- tc.must_not_exist_any_of(['file2',
- ('sub', 'files?')])
- tc.pass_test()
- """)
- run_env.run(program=sys.executable, stdin=script)
- stdout = run_env.stdout()
- assert stdout == "", stdout
- stderr = run_env.stderr()
- assert stderr == "PASSED\n", stderr
-
-class run_TestCase(TestCommonTestCase):
- def test_argument_handling(self):
- """Test run(): argument handling"""
-
- script = lstrip("""\
- from TestCommon import TestCommon, match_exact
- tc = TestCommon(program=r'%(pass_script)s',
- interpreter='%(python)s',
- workdir="",
- match=match_exact)
- tc.run(arguments = "arg1 arg2 arg3",
- stdout = r"%(pass_script)s: STDOUT: ['arg1', 'arg2', 'arg3']" + "\\n")
- """)
-
- self.run_execution_test(script, "", "")
-
- def test_default_pass(self):
- """Test run(): default arguments, script passes"""
-
- script = lstrip("""\
- from TestCommon import TestCommon
- tc = TestCommon(program=r'%(pass_script)s',
- interpreter=r'%(python)s',
- workdir='')
- tc.run()
- """)
-
- self.run_execution_test(script, "", "")
-
- def test_default_fail(self):
- """Test run(): default arguments, script fails"""
-
- script = lstrip("""\
- from TestCommon import TestCommon
- tc = TestCommon(program=r'%(fail_script)s',
- interpreter='%(python)s',
- workdir='')
- tc.run()
- """)
-
- expect_stdout = lstrip("""\
- %(fail_script)s returned 1
- STDOUT =========================================================================
- %(fail_script)s: STDOUT: []
-
- STDERR =========================================================================
-
- """)
-
- expect_stderr = lstrip("""\
- FAILED test of .*fail
- \\tat line \\d+ of .*TestCommon\\.py \\(_complete\\)
- \\tfrom line \\d+ of .*TestCommon\\.py \\(run\\)
- \\tfrom line \\d+ of <stdin>( \(<module>\))?
- """)
- expect_stderr = re.compile(expect_stderr, re.M)
-
- self.run_execution_test(script, expect_stdout, expect_stderr)
-
- def test_default_stderr(self):
- """Test run(): default arguments, error output"""
- script = lstrip("""\
- from TestCommon import TestCommon
- tc = TestCommon(program=r'%(stderr_script)s',
- interpreter='%(python)s',
- workdir='')
- tc.run()
- """)
-
- expect_stdout = lstrip("""\
- STDOUT =========================================================================
-
- STDERR =========================================================================
- 0a1
- > %(stderr_script)s: STDERR: []
- """)
-
- expect_stderr = lstrip("""\
- FAILED test of .*stderr
- \\tat line \\d+ of .*TestCommon\\.py \\(_complete\\)
- \\tfrom line \\d+ of .*TestCommon\\.py \\(run\\)
- \\tfrom line \\d+ of <stdin>
- """)
- expect_stderr = re.compile(expect_stderr, re.M)
-
- self.run_execution_test(script, expect_stdout, expect_stderr)
-
- def test_exception_handling(self):
- """Test run(): exception handling"""
- script = lstrip("""\
- import TestCmd
- from TestCommon import TestCommon
- def raise_exception(*args, **kw):
- raise TypeError("forced TypeError")
- TestCmd.TestCmd.start = raise_exception
- tc = TestCommon(program='%(pass_script)s',
- interpreter='%(python)s',
- workdir='')
- tc.run()
- """)
-
- expect_stdout = lstrip("""\
- STDOUT =========================================================================
- STDERR =========================================================================
- """)
-
- expect_stderr = lstrip("""\
- Exception trying to execute: \\[%s, '[^']*pass'\\]
- Traceback \\((innermost|most recent call) last\\):
- File "<stdin>", line \\d+, in (\\?|<module>)
- File "[^"]+TestCommon.py", line \\d+, in run
- TestCmd.run\\(self, \\*\\*kw\\)
- File "[^"]+TestCmd.py", line \\d+, in run
- .*
- File "[^"]+TestCommon.py", line \\d+, in start
- raise e
- TypeError: forced TypeError
- """ % re.escape(repr(sys.executable)))
- expect_stderr = re.compile(expect_stderr, re.M)
-
- self.run_execution_test(script, expect_stdout, expect_stderr)
-
- def test_ignore_stderr(self):
- """Test run(): ignore stderr"""
-
- script = lstrip("""\
- from TestCommon import TestCommon
- tc = TestCommon(program=r'%(stderr_script)s',
- interpreter='%(python)s',
- workdir='')
- tc.run(stderr = None)
- """)
-
- self.run_execution_test(script, "", "")
-
- def test_match_function_stdout(self):
- """Test run(): explicit match function, stdout"""
-
- script = lstrip("""\
- def my_match_exact(actual, expect): return actual == expect
- from TestCommon import TestCommon, match_re_dotall
- tc = TestCommon(program=r'%(pass_script)s',
- interpreter='%(python)s',
- workdir="",
- match=match_re_dotall)
- tc.run(arguments = "arg1 arg2 arg3",
- stdout = r"%(pass_script)s: STDOUT: ['arg1', 'arg2', 'arg3']" + "\\n",
- match = my_match_exact)
- """)
-
- self.run_execution_test(script, "", "")
-
- def test_match_function_stderr(self):
- """Test run(): explicit match function, stderr"""
-
- script = lstrip("""\
- def my_match_exact(actual, expect): return actual == expect
- from TestCommon import TestCommon, match_re_dotall
- tc = TestCommon(program=r'%(stderr_script)s',
- interpreter='%(python)s',
- workdir="",
- match=match_re_dotall)
- tc.run(arguments = "arg1 arg2 arg3",
- stderr = r"%(stderr_script)s: STDERR: ['arg1', 'arg2', 'arg3']" + "\\n",
- match = my_match_exact)
- """)
-
- self.run_execution_test(script, "", "")
-
- def test_matched_status_fails(self):
- """Test run(): matched status, script fails"""
-
- script = lstrip("""\
- from TestCommon import TestCommon
- tc = TestCommon(program=r'%(fail_script)s',
- interpreter='%(python)s',
- workdir='')
- tc.run(status = 1)
- """)
-
- self.run_execution_test(script, "", "")
-
- def test_matched_stdout(self):
- """Test run(): matched stdout"""
-
- script = lstrip("""\
- from TestCommon import TestCommon, match_exact
- tc = TestCommon(program=r'%(pass_script)s',
- interpreter='%(python)s',
- workdir="",
- match=match_exact)
- tc.run(stdout = r"%(pass_script)s: STDOUT: []" + "\\n")
- """)
-
- self.run_execution_test(script, "", "")
-
- def test_matched_stderr(self):
- """Test run(): matched stderr"""
-
- script = lstrip("""\
- from TestCommon import TestCommon, match_exact
- tc = TestCommon(program=r'%(stderr_script)s',
- interpreter='%(python)s',
- workdir="",
- match=match_exact)
- tc.run(stderr = r"%(stderr_script)s: STDERR: []" + "\\n")
- """)
-
- self.run_execution_test(script, "", "")
-
- def test_mismatched_status_pass(self):
- """Test run(): mismatched status, script passes"""
-
- script = lstrip("""\
- from TestCommon import TestCommon
- tc = TestCommon(program=r'%(pass_script)s',
- interpreter='%(python)s',
- workdir='')
- tc.run(status = 1)
- """)
-
- expect_stdout = lstrip("""\
- %(pass_script)s returned 0 (expected 1)
- STDOUT =========================================================================
- %(pass_script)s: STDOUT: []
-
- STDERR =========================================================================
-
- """)
-
- expect_stderr = lstrip("""\
- FAILED test of .*pass
- \\tat line \\d+ of .*TestCommon\\.py \\(_complete\\)
- \\tfrom line \\d+ of .*TestCommon\\.py \\(run\\)
- \\tfrom line \\d+ of <stdin>( \(<module>\))?
- """)
- expect_stderr = re.compile(expect_stderr, re.M)
-
- self.run_execution_test(script, expect_stdout, expect_stderr)
-
- def test_mismatched_status_fail(self):
- """Test run(): mismatched status, script fails"""
-
- script = lstrip("""\
- from TestCommon import TestCommon
- tc = TestCommon(program=r'%(fail_script)s',
- interpreter='%(python)s',
- workdir='')
- tc.run(status = 2)
- """)
-
- expect_stdout = lstrip("""\
- %(fail_script)s returned 1 (expected 2)
- STDOUT =========================================================================
- %(fail_script)s: STDOUT: []
-
- STDERR =========================================================================
-
- """)
-
- expect_stderr = lstrip("""\
- FAILED test of .*fail
- \\tat line \\d+ of .*TestCommon\\.py \\(_complete\\)
- \\tfrom line \\d+ of .*TestCommon\\.py \\(run\\)
- \\tfrom line \\d+ of <stdin>( \(<module>\))?
- """)
- expect_stderr = re.compile(expect_stderr, re.M)
-
- self.run_execution_test(script, expect_stdout, expect_stderr)
-
- def test_mismatched_stdout(self):
- """Test run(): mismatched stdout"""
-
- script = lstrip("""\
- from TestCommon import TestCommon
- tc = TestCommon(program=r'%(pass_script)s',
- interpreter='%(python)s',
- workdir='')
- tc.run(stdout = "Not found\\n")
- """)
-
- expect_stdout = lstrip("""\
- STDOUT =========================================================================
- 1c1
- < Not found
- ---
- > %(pass_script)s: STDOUT: []
- """)
-
- expect_stderr = lstrip("""\
- FAILED test of .*pass
- \\tat line \\d+ of .*TestCommon\\.py \\(_complete\\)
- \\tfrom line \\d+ of .*TestCommon\\.py \\(run\\)
- \\tfrom line \\d+ of <stdin>( \(<module>\))?
- """)
- expect_stderr = re.compile(expect_stderr, re.M)
-
- self.run_execution_test(script, expect_stdout, expect_stderr)
-
- def test_mismatched_stderr(self):
- """Test run(): mismatched stderr"""
-
- script = lstrip("""\
- from TestCommon import TestCommon
- tc = TestCommon(program=r'%(stderr_script)s',
- interpreter='%(python)s',
- workdir='')
- tc.run(stderr = "Not found\\n")
- """)
-
- expect_stdout = lstrip("""\
- STDOUT =========================================================================
-
- STDERR =========================================================================
- 1c1
- < Not found
- ---
- > %(stderr_script)s: STDERR: []
- """)
-
- expect_stderr = lstrip("""\
- FAILED test of .*stderr
- \\tat line \\d+ of .*TestCommon\\.py \\(_complete\\)
- \\tfrom line \\d+ of .*TestCommon\\.py \\(run\\)
- \\tfrom line \\d+ of <stdin>( \(<module>\))?
- """)
- expect_stderr = re.compile(expect_stderr, re.M)
-
- self.run_execution_test(script, expect_stdout, expect_stderr)
-
- def test_option_handling(self):
- """Test run(): option handling"""
-
- script = lstrip("""\
- from TestCommon import TestCommon, match_exact
- tc = TestCommon(program=r'%(pass_script)s',
- interpreter='%(python)s',
- workdir="",
- match=match_exact)
- tc.run(options = "opt1 opt2 opt3",
- stdout = r"%(pass_script)s: STDOUT: ['opt1', 'opt2', 'opt3']" + "\\n")
- """)
-
- self.run_execution_test(script, "", "")
-
- def test_options_plus_arguments(self):
- """Test run(): option handling with arguments"""
-
- script = lstrip("""\
- from TestCommon import TestCommon, match_exact
- tc = TestCommon(program=r'%(pass_script)s',
- interpreter='%(python)s',
- workdir="",
- match=match_exact)
- tc.run(options = "opt1 opt2 opt3",
- arguments = "arg1 arg2 arg3",
- stdout = r"%(pass_script)s: STDOUT: ['opt1', 'opt2', 'opt3', 'arg1', 'arg2', 'arg3']" + "\\n")
- """)
-
- self.run_execution_test(script, "", "")
-
- def test_signal_handling(self):
- """Test run(): signal handling"""
-
- try:
- os.kill
- except AttributeError:
- sys.stderr.write('can not test, no os.kill ... ')
- return
-
- script = lstrip("""\
- from TestCommon import TestCommon
- tc = TestCommon(program=r'%(signal_script)s',
- interpreter='%(python)s',
- workdir='')
- tc.run()
- """)
-
- self.SIGTERM = signal.SIGTERM
-
- # Script returns the signal value as a negative number.
- expect_stdout = lstrip("""\
- %(signal_script)s returned -%(SIGTERM)s
- STDOUT =========================================================================
-
- STDERR =========================================================================
-
- """)
-
- expect_stderr = lstrip("""\
- FAILED test of .*signal
- \\tat line \\d+ of .*TestCommon\\.py \\(_complete\\)
- \\tfrom line \\d+ of .*TestCommon\\.py \\(run\\)
- \\tfrom line \\d+ of <stdin>
- """)
- expect_stderr = re.compile(expect_stderr, re.M)
-
- self.run_execution_test(script, expect_stdout, expect_stderr)
-
- def test_stdin(self):
- """Test run(): stdin handling"""
-
- script = lstrip("""\
- from TestCommon import TestCommon, match_exact
- tc = TestCommon(program=r'%(stdin_script)s',
- interpreter='%(python)s',
- workdir='',
- match=match_exact)
- expect_stdout = r"%(stdin_script)s: STDOUT: 'input'" + "\\n"
- expect_stderr = r"%(stdin_script)s: STDERR: 'input'" + "\\n"
- tc.run(stdin="input\\n", stdout = expect_stdout, stderr = expect_stderr)
- """)
-
- expect_stdout = lstrip("""\
- %(pass_script)s returned 0 (expected 1)
- STDOUT =========================================================================
- %(pass_script)s: STDOUT: []
-
- STDERR =========================================================================
-
- """)
-
- self.run_execution_test(script, "", "")
-
-
-
-class start_TestCase(TestCommonTestCase):
- def test_option_handling(self):
- """Test start(): option handling"""
-
- script = lstrip("""\
- from TestCommon import TestCommon, match_exact
- tc = TestCommon(program=r'%(pass_script)s',
- interpreter='%(python)s',
- workdir="",
- match=match_exact)
- p = tc.start(options = "opt1 opt2 opt3")
- expect = r"%(pass_script)s: STDOUT: ['opt1', 'opt2', 'opt3']" + "\\n"
- tc.finish(p, stdout = expect)
- """)
-
- self.run_execution_test(script, "", "")
-
- def test_options_plus_arguments(self):
- """Test start(): option handling with arguments"""
-
- script = lstrip("""\
- from TestCommon import TestCommon, match_exact
- tc = TestCommon(program=r'%(pass_script)s',
- interpreter='%(python)s',
- workdir="",
- match=match_exact)
- p = tc.start(options = "opt1 opt2 opt3",
- arguments = "arg1 arg2 arg3")
- expect = r"%(pass_script)s: STDOUT: ['opt1', 'opt2', 'opt3', 'arg1', 'arg2', 'arg3']" + "\\n"
- tc.finish(p, stdout = expect)
- """)
-
- self.run_execution_test(script, "", "")
-
-
-
-class skip_test_TestCase(TestCommonTestCase):
- def test_skip_test(self):
- """Test skip_test()"""
- run_env = self.run_env
-
- script = lstrip("""\
- import TestCommon
- test = TestCommon.TestCommon(workdir='')
- test.skip_test()
- """)
- run_env.run(program=sys.executable, stdin=script)
- stdout = run_env.stdout()
- assert stdout == "Skipping test.\n", stdout
- stderr = run_env.stderr()
- expect = [
- "NO RESULT for test at line 3 of <stdin>\n",
- "NO RESULT for test at line 3 of <stdin> (<module>)\n",
- ]
- assert stderr in expect, repr(stderr)
-
- script = lstrip("""\
- import TestCommon
- test = TestCommon.TestCommon(workdir='')
- test.skip_test("skipping test because I said so\\n")
- """)
- run_env.run(program=sys.executable, stdin=script)
- stdout = run_env.stdout()
- assert stdout == "skipping test because I said so\n", stdout
- stderr = run_env.stderr()
- expect = [
- "NO RESULT for test at line 3 of <stdin>\n",
- "NO RESULT for test at line 3 of <stdin> (<module>)\n",
- ]
- assert stderr in expect, repr(stderr)
-
- import os
- os.environ['TESTCOMMON_PASS_SKIPS'] = '1'
-
- try:
- script = lstrip("""\
- import TestCommon
- test = TestCommon.TestCommon(workdir='')
- test.skip_test()
- """)
- run_env.run(program=sys.executable, stdin=script)
- stdout = run_env.stdout()
- assert stdout == "Skipping test.\n", stdout
- stderr = run_env.stderr()
- assert stderr == "PASSED\n", stderr
-
- finally:
- del os.environ['TESTCOMMON_PASS_SKIPS']
-
-
-
-class variables_TestCase(TestCommonTestCase):
- def test_variables(self):
- """Test global variables"""
- run_env = self.run_env
-
- variables = [
- 'fail_test',
- 'no_result',
- 'pass_test',
- 'match_exact',
- 'match_re',
- 'match_re_dotall',
- 'python',
- '_python_',
- 'TestCmd',
-
- 'TestCommon',
- 'exe_suffix',
- 'obj_suffix',
- 'shobj_prefix',
- 'shobj_suffix',
- 'lib_prefix',
- 'lib_suffix',
- 'dll_prefix',
- 'dll_suffix',
- ]
-
- script = "from __future__ import print_function" + \
- "import TestCommon\n" + \
- '\n'.join([ "print(TestCommon.%s)\n" % v for v in variables ])
- run_env.run(program=sys.executable, stdin=script)
- stderr = run_env.stderr()
- assert stderr == "", stderr
-
- script = "from __future__ import print_function" + \
- "from TestCommon import *\n" + \
- '\n'.join([ "print(%s)" % v for v in variables ])
- run_env.run(program=sys.executable, stdin=script)
- stderr = run_env.stderr()
- assert stderr == "", stderr
-
-
-
-if __name__ == "__main__":
- tclasses = [
- __init__TestCase,
- banner_TestCase,
- must_be_writable_TestCase,
- must_contain_TestCase,
- must_contain_all_lines_TestCase,
- must_contain_any_line_TestCase,
- must_contain_exactly_lines_TestCase,
- must_contain_lines_TestCase,
- must_exist_TestCase,
- must_exist_one_of_TestCase,
- must_match_TestCase,
- must_not_be_writable_TestCase,
- must_not_contain_TestCase,
- must_not_contain_any_line_TestCase,
- must_not_contain_lines_TestCase,
- must_not_exist_TestCase,
- must_not_exist_any_of_TestCase,
- run_TestCase,
- start_TestCase,
- skip_test_TestCase,
- variables_TestCase,
- ]
- suite = unittest.TestSuite()
- for tclass in tclasses:
- names = unittest.getTestCaseNames(tclass, 'test_')
- suite.addTests([ tclass(n) for n in names ])
- if not unittest.TextTestRunner().run(suite).wasSuccessful():
- sys.exit(1)
-
-# Local Variables:
-# tab-width:4
-# indent-tabs-mode:nil
-# End:
-# vim: set expandtab tabstop=4 shiftwidth=4: