diff options
-rw-r--r-- | tests/test_data.py | 54 | ||||
-rw-r--r-- | tests/test_html.py | 24 |
2 files changed, 78 insertions, 0 deletions
diff --git a/tests/test_data.py b/tests/test_data.py index 417f9771..4a3db93c 100644 --- a/tests/test_data.py +++ b/tests/test_data.py @@ -184,6 +184,16 @@ class CoverageDataTest(DataTestHelpers, CoverageTest): covdata.touch_file('zzz.py') self.assert_measured_files(covdata, MEASURED_FILES_3 + ['zzz.py']) + def test_set_query_contexts(self): + self.skip_unless_data_storage_is("sql") + covdata = CoverageData() + covdata.set_context('test_a') + covdata.add_lines(LINES_1) + covdata.set_query_contexts(['test_*']) + self.assertEqual(covdata.lines('a.py'), [1, 2]) + covdata.set_query_contexts(['other*']) + self.assertEqual(covdata.lines('a.py'), []) + def test_no_lines_vs_unmeasured_file(self): covdata = CoverageData() covdata.add_lines(LINES_1) @@ -191,6 +201,24 @@ class CoverageDataTest(DataTestHelpers, CoverageTest): self.assertEqual(covdata.lines('zzz.py'), []) self.assertIsNone(covdata.lines('no_such_file.py')) + def test_lines_with_contexts(self): + self.skip_unless_data_storage_is("sql") + covdata = CoverageData() + covdata.set_context('test_a') + covdata.add_lines(LINES_1) + self.assertEqual(covdata.lines('a.py'), [1, 2]) + self.assertEqual(covdata.lines('a.py', contexts=['test*']), [1, 2]) + self.assertEqual(covdata.lines('a.py', contexts=['other*']), []) + + def test_contexts_by_lineno_with_lines(self): + self.skip_unless_data_storage_is("sql") + covdata = CoverageData() + covdata.set_context('test_a') + covdata.add_lines(LINES_1) + self.assertDictEqual( + covdata.contexts_by_lineno('a.py'), + {1: ['test_a'], 2: ['test_a']}) + def test_run_info(self): self.skip_unless_data_storage_is("json") covdata = CoverageData() @@ -225,6 +253,32 @@ class CoverageDataTest(DataTestHelpers, CoverageTest): self.assertEqual(covdata.arcs('zzz.py'), []) self.assertIsNone(covdata.arcs('no_such_file.py')) + def test_arcs_with_contexts(self): + self.skip_unless_data_storage_is("sql") + covdata = CoverageData() + covdata.set_context('test_x') + covdata.add_arcs(ARCS_3) + self.assertEqual( + covdata.arcs('x.py'), [(-1, 1), (1, 2), (2, 3), (3, -1)]) + self.assertEqual(covdata.arcs( + 'x.py', contexts=['test*']), [(-1, 1), (1, 2), (2, 3), (3, -1)]) + self.assertEqual(covdata.arcs('x.py', contexts=['other*']), []) + + def test_contexts_by_lineno_with_arcs(self): + self.skip_unless_data_storage_is("sql") + covdata = CoverageData() + covdata.set_context('test_x') + covdata.add_arcs(ARCS_3) + self.assertDictEqual( + covdata.contexts_by_lineno('x.py'), + {-1: ['test_x'], 1: ['test_x'], 2: ['test_x'], 3: ['test_x']}) + + def test_contexts_by_lineno_with_unknown_file(self): + self.skip_unless_data_storage_is("sql") + covdata = CoverageData() + self.assertDictEqual( + covdata.contexts_by_lineno('xyz.py'), {}) + def test_file_tracer_name(self): covdata = CoverageData() covdata.add_lines({ diff --git a/tests/test_html.py b/tests/test_html.py index 64546df1..c561f99d 100644 --- a/tests/test_html.py +++ b/tests/test_html.py @@ -90,6 +90,30 @@ class HtmlTestHelpers(CoverageTest): ) +class HtmlWithContextsTest(HtmlTestHelpers, CoverageTest): + """Tests of the HTML reports with shown contexts.""" + + def setUp(self): + super(HtmlWithContextsTest, self).setUp() + + # At least one of our tests monkey-patches the version of coverage.py, + # so grab it here to restore it later. + self.real_coverage_version = coverage.__version__ + self.addCleanup(setattr, coverage, "__version__", self.real_coverage_version) + + def test_html_created(self): + # Test basic HTML generation: files should be created. + self.create_initial_files() + self.run_coverage(htmlargs={'show_contexts': True}) + + self.assert_exists("htmlcov/index.html") + self.assert_exists("htmlcov/main_file_py.html") + self.assert_exists("htmlcov/helper1_py.html") + self.assert_exists("htmlcov/helper2_py.html") + self.assert_exists("htmlcov/style.css") + self.assert_exists("htmlcov/coverage_html.js") + + class FileWriteTracker(object): """A fake object to track how `open` is used to write files.""" def __init__(self, written): |