Index: tools/sanitizers/sancov_formatter_test.py |
diff --git a/tools/sanitizers/sancov_formatter_test.py b/tools/sanitizers/sancov_formatter_test.py |
index 4ed61848c0557f59026ff4b9a2259e3851613ec0..6a741c804ca00f3f5343fa8836309807a558a651 100644 |
--- a/tools/sanitizers/sancov_formatter_test.py |
+++ b/tools/sanitizers/sancov_formatter_test.py |
@@ -8,8 +8,11 @@ |
import copy |
import coverage |
import logging |
+import json |
import os |
+import shutil |
import sys |
+import tempfile |
import unittest |
@@ -128,6 +131,44 @@ EXPECTED_COVERED_LINES_DATA = { |
} |
+#------------------------------------------------------------------------------ |
+ |
+# Data for test_split. |
+ |
+EXPECTED_SPLIT_FILES = [ |
+ ( |
+ os.path.join('src', 'baz', 'bar.h.json'), |
+ { |
+ 'version': 1, |
+ 'tests': ['cctest', 'd8', 'unittests'], |
+ 'files': { |
+ 'src/baz/bar.h': [[0, 0b0], [3, 0b11], [7, 0b11], [8, 0b0]], |
+ }, |
+ }, |
+ ), |
+ ( |
+ os.path.join('src', 'baz.cc.json'), |
+ { |
+ 'version': 1, |
+ 'tests': ['cctest', 'd8', 'unittests'], |
+ 'files': { |
+ 'src/baz.cc': [[1, 0b0], [2, 0b101]], |
+ }, |
+ }, |
+ ), |
+ ( |
+ os.path.join('src', 'foo.cc.json'), |
+ { |
+ 'version': 1, |
+ 'tests': ['cctest', 'd8', 'unittests'], |
+ 'files': { |
+ 'src/foo.cc': [[1, 0b1], [11, 0b10], [92, 0b100], [93, 0b0]], |
+ }, |
+ }, |
+ ), |
+] |
+ |
+ |
class FormatterTests(unittest.TestCase): |
@classmethod |
def setUpClass(cls): |
@@ -157,3 +198,25 @@ class FormatterTests(unittest.TestCase): |
sancov_formatter.merge_covered_line_results( |
data, COVERED_LINE_RESULTS) |
self.assertEquals(EXPECTED_COVERED_LINES_DATA, data) |
+ |
+ def test_split(self): |
+ _, json_input = tempfile.mkstemp(prefix='tmp_coverage_test_split') |
+ with open(json_input, 'w') as f: |
+ json.dump(EXPECTED_COVERED_LINES_DATA, f) |
+ output_dir = tempfile.mkdtemp(prefix='tmp_coverage_test_split') |
+ |
+ try: |
+ sancov_formatter.main([ |
+ 'split', |
+ '--json-input', json_input, |
+ '--output-dir', output_dir, |
+ ]) |
+ |
+ for file_name, expected_data in EXPECTED_SPLIT_FILES: |
+ full_path = os.path.join(output_dir, file_name) |
+ self.assertTrue(os.path.exists(full_path)) |
+ with open(full_path) as f: |
+ self.assertEquals(expected_data, json.load(f)) |
+ finally: |
+ os.remove(json_input) |
+ shutil.rmtree(output_dir) |