def test_format_stderr(self): # SETUP expected_report = "sys.stderr.write('abc') | x = None" # EXEC builder = ReportBuilder() builder.add_output('abc', 1, target_name='sys.stderr') builder.assign(name='x', value=None, line_number=1) # VERIFY self.assertReportEqual(expected_report, builder.report())
def test_assign_function(self): # SETUP expected_report = '' f = lambda n: n + 1 # EXEC builder = ReportBuilder() builder.assign(name='f', value=f, line_number=2) report = builder.report() # VERIFY self.assertEqual(expected_report.splitlines(), report.splitlines())
def test_assign_function(self): # SETUP expected_report = '' f = lambda n: n + 1 # EXEC builder = ReportBuilder() builder.assign(name='f', value=f, line_number=2) report = builder.report() # VERIFY self.assertEqual(expected_report.splitlines(), report.splitlines())
def test_multiple_messages(self): # SETUP expected_report = """\ x = 1 y = 2 """ # EXEC builder = ReportBuilder() builder.assign(name='x', value=1, line_number=1) builder.assign(name='y', value=2, line_number=1) report = builder.report() # VERIFY self.assertEqual(expected_report.splitlines(), report.splitlines())
def test_assign_object_without_repr(self): # SETUP expected_report = '' class class_without_repr(object): pass # EXEC builder = ReportBuilder() builder.assign(name='x', value=class_without_repr(), line_number=2) report = builder.report() # VERIFY self.assertEqual(expected_report.splitlines(), report.splitlines())
def test_multiple_messages(self): # SETUP expected_report = """\ x = 1 y = 2 """ # EXEC builder = ReportBuilder() builder.assign(name='x', value=1, line_number=1) builder.assign(name='y', value=2, line_number=1) report = builder.report() # VERIFY self.assertReportEqual(expected_report, report)
def test_assign_function(self): # SETUP expected_report = '' def f(n): return n + 1 # EXEC builder = ReportBuilder() builder.assign(name='f', value=f, line_number=2) report = builder.report() # VERIFY self.assertReportEqual(expected_report, report)
def test_assign_object_without_repr(self): # SETUP expected_report = '' class class_without_repr(object): pass # EXEC builder = ReportBuilder() builder.assign(name='x', value=class_without_repr(), line_number=2) report = builder.report() # VERIFY self.assertReportEqual(expected_report, report)
def test_assign_function(self): # SETUP expected_report = '' def f(n): return n+1 # EXEC builder = ReportBuilder() builder.assign(name='f', value=f, line_number=2) report = builder.report() # VERIFY self.assertReportEqual(expected_report, report)
def test_assign_object_with_repr_exception(self): # SETUP expected_report = '' class BadReprClass(object): def __repr__(self): raise NotImplementedError() # EXEC builder = ReportBuilder() builder.assign(name='m', value=BadReprClass(), line_number=1) report = builder.report() # VERIFY self.assertReportEqual(expected_report, report)
def test_multiple_lines(self): # SETUP expected_report = """\ a = 3 b = 'xyz' """ # EXEC builder = ReportBuilder() builder.assign(name='a', value=3, line_number=1) builder.assign(name='b', value="xyz", line_number=3) report = builder.report() # VERIFY self.assertEqual(expected_report.splitlines(), report.splitlines())
def test_assign_object_with_repr_exception(self): # SETUP expected_report = '' class BadReprClass(object): def __repr__(self): raise NotImplementedError() # EXEC builder = ReportBuilder() builder.assign(name='m', value=BadReprClass(), line_number=1) report = builder.report() # VERIFY self.assertReportEqual(expected_report, report)
def test_multiple_lines(self): # SETUP expected_report = """\ a = 3 b = 'xyz' """ # EXEC builder = ReportBuilder() builder.assign(name='a', value=3, line_number=1) builder.assign(name='b', value="xyz", line_number=3) report = builder.report() # VERIFY self.assertReportEqual(expected_report, report)
def test_assign_object_with_multiline_repr(self): # SETUP expected_report = 'm = multiline_class(1, 2) ' class multiline_class(object): def __init__(self, x, y): self.x = x self.y = y def __repr__(self): return "multiline_class(%r,\n%r)" % (self.x, self.y) # EXEC builder = ReportBuilder() builder.assign(name='m', value=multiline_class(1, 2), line_number=1) report = builder.report() # VERIFY self.assertEqual(expected_report.splitlines(), report.splitlines())
def test_message_limit(self): # SETUP expected_report = """\ a = 10 b = 20 """ # EXEC builder = ReportBuilder(message_limit=4) builder.assign('a', 10, 1) builder.assign('b', 20, 2) with self.assertRaisesRegex(RuntimeError, r'message limit exceeded'): builder.assign('c', 30, 3) report = builder.report() # VERIFY self.assertReportEqual(expected_report, report)
def test_assign_object_with_multiline_repr(self): # SETUP expected_report = 'm = multiline_class(1, 2) ' class multiline_class(object): def __init__(self, x, y): self.x = x self.y = y def __repr__(self): return "multiline_class(%r,\n%r)" % (self.x, self.y) # EXEC builder = ReportBuilder() builder.assign(name='m', value=multiline_class(1, 2), line_number=1) report = builder.report() # VERIFY self.assertReportEqual(expected_report, report)
def test_assign(self): # SETUP expected_value = 5 expected_report = """\ x = 5 """ # EXEC builder = ReportBuilder() value = builder.assign(name='x', value=expected_value, line_number=2) report = builder.report() # VERIFY self.assertEqual(expected_report.splitlines(), report.splitlines()) self.assertEqual(expected_value, value)
def test_assign(self): # SETUP expected_value = 5 expected_report = """\ x = 5 """ # EXEC builder = ReportBuilder() value = builder.assign(name='x', value=expected_value, line_number=2) report = builder.report() # VERIFY self.assertReportEqual(expected_report, report) self.assertEqual(expected_value, value)
def test_nested_blocks(self): # SETUP expected_report = """\ x = 'first' | x = 'second' | y = 1 | y = 2 """ # EXEC builder = ReportBuilder() builder.start_block(1, 2) builder.assign(name='x', value='first', line_number=1) builder.start_block(1, 2) builder.assign(name='x', value='second', line_number=1) builder.start_block(2, 2) builder.assign(name='y', value=1, line_number=2) builder.start_block(2, 2) builder.assign(name='y', value=2, line_number=2) report = builder.report() # VERIFY self.assertEqual(expected_report.splitlines(), report.splitlines())
def test_nested_blocks(self): # SETUP expected_report = """\ x = 'first' | x = 'second' | y = 1 | y = 2 """ # EXEC builder = ReportBuilder() builder.start_block(1, 2) builder.assign(name='x', value='first', line_number=1) builder.start_block(1, 2) builder.assign(name='x', value='second', line_number=1) builder.start_block(2, 2) builder.assign(name='y', value=1, line_number=2) builder.start_block(2, 2) builder.assign(name='y', value=2, line_number=2) report = builder.report() # VERIFY self.assertReportEqual(expected_report, report)
def test_multiple_visits(self): # SETUP expected_report = """\ x = 'first' | x = 'second' y = 'continue' | """ # EXEC builder = ReportBuilder() builder.start_block(1, 2) builder.assign(name='x', value='first', line_number=1) builder.assign(name='y', value='continue', line_number=2) builder.start_block(1, 2) builder.assign(name='x', value='second', line_number=1) report = builder.report() # VERIFY self.assertEqual(expected_report.splitlines(), report.splitlines())
def test_multiple_visits(self): # SETUP expected_report = """\ x = 'first' | x = 'second' y = 'continue' | """ # EXEC builder = ReportBuilder() builder.start_block(1, 2) builder.assign(name='x', value='first', line_number=1) builder.assign(name='y', value='continue', line_number=2) builder.start_block(1, 2) builder.assign(name='x', value='second', line_number=1) report = builder.report() # VERIFY self.assertReportEqual(expected_report, report)
def test_separate_scopes(self): # SETUP expected_report = """\ x = 'child' | x = 'child again' y = 'main' """ # EXEC builder = ReportBuilder() builder.assign(name='y', value='main', line_number=3) builder.start_block(1, 1) builder.assign(name='x', value='child', line_number=1) builder.start_block(1, 1) builder.assign(name='x', value='child again', line_number=1) report = builder.report() # VERIFY self.assertEqual(expected_report.splitlines(), report.splitlines())
def test_separate_scopes(self): # SETUP expected_report = """\ x = 'child' | x = 'child again' y = 'main' """ # EXEC builder = ReportBuilder() builder.assign(name='y', value='main', line_number=3) builder.start_block(1, 1) builder.assign(name='x', value='child', line_number=1) builder.start_block(1, 1) builder.assign(name='x', value='child again', line_number=1) report = builder.report() # VERIFY self.assertReportEqual(expected_report, report)