Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(629)

Unified Diff: tools/telemetry/third_party/coverage/tests/test_debug.py

Issue 1366913004: Add coverage Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: tools/telemetry/third_party/coverage/tests/test_debug.py
diff --git a/tools/telemetry/third_party/coverage/tests/test_debug.py b/tools/telemetry/third_party/coverage/tests/test_debug.py
new file mode 100644
index 0000000000000000000000000000000000000000..4d9e9271763f592c4582d6bcf98915c3e89fb598
--- /dev/null
+++ b/tools/telemetry/third_party/coverage/tests/test_debug.py
@@ -0,0 +1,137 @@
+# Licensed under the Apache License: http://www.apache.org/licenses/LICENSE-2.0
+# For details: https://bitbucket.org/ned/coveragepy/src/default/NOTICE.txt
+
+"""Tests of coverage/debug.py"""
+
+import os
+import re
+
+import coverage
+from coverage.backward import StringIO
+from coverage.debug import info_formatter, info_header
+from tests.coveragetest import CoverageTest
+
+
+class InfoFormatterTest(CoverageTest):
+ """Tests of misc.info_formatter."""
+
+ run_in_temp_dir = False
+
+ def test_info_formatter(self):
+ lines = list(info_formatter([
+ ('x', 'hello there'),
+ ('very long label', ['one element']),
+ ('regular', ['abc', 'def', 'ghi', 'jkl']),
+ ('nothing', []),
+ ]))
+ self.assertEqual(lines, [
+ ' x: hello there',
+ 'very long label: one element',
+ ' regular: abc',
+ ' def',
+ ' ghi',
+ ' jkl',
+ ' nothing: -none-',
+ ])
+
+ def test_info_formatter_with_generator(self):
+ lines = list(info_formatter(('info%d' % i, i) for i in range(3)))
+ self.assertEqual(lines, ['info0: 0', 'info1: 1', 'info2: 2'])
+
+ def test_info_header(self):
+ self.assertEqual(
+ info_header("x"),
+ "-- x ---------------------------------------------------------"
+ )
+ self.assertEqual(
+ info_header("hello there"),
+ "-- hello there -----------------------------------------------"
+ )
+
+
+class DebugTraceTest(CoverageTest):
+ """Tests of debug output."""
+
+ def f1_debug_output(self, debug):
+ """Runs some code with `debug` option, returns the debug output."""
+ # Make code to run.
+ self.make_file("f1.py", """\
+ def f1(x):
+ return x+1
+
+ for i in range(5):
+ f1(i)
+ """)
+
+ debug_out = StringIO()
+ cov = coverage.Coverage(debug=debug)
+ cov._debug_file = debug_out
+ self.start_import_stop(cov, "f1")
+
+ out_lines = debug_out.getvalue().splitlines()
+ return out_lines
+
+ def test_debug_no_trace(self):
+ out_lines = self.f1_debug_output([])
+
+ # We should have no output at all.
+ self.assertFalse(out_lines)
+
+ def test_debug_trace(self):
+ out_lines = self.f1_debug_output(["trace"])
+
+ # We should have a line like "Tracing 'f1.py'"
+ self.assertIn("Tracing 'f1.py'", out_lines)
+
+ # We should have lines like "Not tracing 'collector.py'..."
+ coverage_lines = lines_matching(
+ out_lines,
+ r"^Not tracing .*: is part of coverage.py$"
+ )
+ self.assertTrue(coverage_lines)
+
+ def test_debug_trace_pid(self):
+ out_lines = self.f1_debug_output(["trace", "pid"])
+
+ # Now our lines are always prefixed with the process id.
+ pid_prefix = "^pid %5d: " % os.getpid()
+ pid_lines = lines_matching(out_lines, pid_prefix)
+ self.assertEqual(pid_lines, out_lines)
+
+ # We still have some tracing, and some not tracing.
+ self.assertTrue(lines_matching(out_lines, pid_prefix + "Tracing "))
+ self.assertTrue(lines_matching(out_lines, pid_prefix + "Not tracing "))
+
+ def test_debug_config(self):
+ out_lines = self.f1_debug_output(["config"])
+
+ labels = """
+ attempted_config_files branch config_files cover_pylib data_file
+ debug exclude_list extra_css html_dir html_title ignore_errors
+ include omit parallel partial_always_list partial_list paths
+ precision show_missing source timid xml_output
+ """.split()
+ for label in labels:
+ label_pat = r"^\s*%s: " % label
+ self.assertEqual(len(lines_matching(out_lines, label_pat)), 1)
+
+ def test_debug_sys(self):
+ out_lines = self.f1_debug_output(["sys"])
+
+ labels = """
+ version coverage cover_dirs pylib_dirs tracer config_files
+ configs_read data_path python platform implementation executable
+ cwd path environment command_line cover_match pylib_match
+ """.split()
+ for label in labels:
+ label_pat = r"^\s*%s: " % label
+ self.assertEqual(
+ len(lines_matching(out_lines, label_pat)),
+ 1,
+ msg="Incorrect lines for %r" % label,
+ )
+
+
+def lines_matching(lines, pat):
+ """Gives the list of lines from `lines` that match `pat`."""
+ return [l for l in lines if re.search(pat, l)]
« no previous file with comments | « tools/telemetry/third_party/coverage/tests/test_data.py ('k') | tools/telemetry/third_party/coverage/tests/test_execfile.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698