summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--tests/test_data.py54
-rw-r--r--tests/test_html.py24
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):