Beispiel #1
0
    def parser_roundtrip(self, lcov_string):
        with TempFile(lcov_string) as fname:
            file_obj = lcov_rewriter.LcovFile([fname])
            out = StringIO()
            file_obj.print_file(out, lambda s: (s, None), lambda x, pp: x)

        return out.getvalue()
Beispiel #2
0
    def test_remap_lcov(self):
        pp_remap = {
            "1941,2158": ("dropPreview.js", 6),
            "2159,2331": ("updater.js", 6),
            "2584,2674": ("intro.js", 6),
            "2332,2443": ("undo.js", 6),
            "864,985": ("cells.js", 6),
            "2444,2454": ("search.js", 6),
            "1567,1712": ("drop.js", 6),
            "2455,2583": ("customize.js", 6),
            "1713,1940": ("dropTargetShim.js", 6),
            "1402,1548": ("drag.js", 6),
            "1549,1566": ("dragDataHelper.js", 6),
            "453,602": ("page.js", 141),
            "2675,2678": ("newTab.js", 70),
            "56,321": ("transformations.js", 6),
            "603,863": ("grid.js", 6),
            "322,452": ("page.js", 6),
            "986,1401": ("sites.js", 6),
        }

        fpath = os.path.join(here, "sample_lcov.info")

        # Read original records
        lcov_file = lcov_rewriter.LcovFile([fpath])
        records = [
            lcov_file.parse_record(r)
            for _, _, r in lcov_file.iterate_records()
        ]

        # This summarization changes values due multiple reports per line coming
        # from the JS engine (bug 1198356).
        for r in records:
            r.resummarize()
            original_line_count = r.line_count
            original_covered_line_count = r.covered_line_count
            original_function_count = r.function_count
            original_covered_function_count = r.covered_function_count

        self.assertEqual(len(records), 1)

        # Rewrite preprocessed entries.
        lcov_file = lcov_rewriter.LcovFile([fpath])
        r_num = []

        def rewrite_source(s):
            r_num.append(1)
            return s, pp_remap

        out = StringIO()
        lcov_file.print_file(out, rewrite_source,
                             self.pp_rewriter.rewrite_record)
        self.assertEqual(len(r_num), 1)

        # Read rewritten lcov.
        with TempFile(out.getvalue()) as fname:
            lcov_file = lcov_rewriter.LcovFile([fname])
            records = [
                lcov_file.parse_record(r)
                for _, _, r in lcov_file.iterate_records()
            ]

        self.assertEqual(len(records), 17)

        # Lines/functions are only "moved" between records, not duplicated or omited.
        self.assertEqual(original_line_count,
                         sum(r.line_count for r in records))
        self.assertEqual(original_covered_line_count,
                         sum(r.covered_line_count for r in records))
        self.assertEqual(original_function_count,
                         sum(r.function_count for r in records))
        self.assertEqual(
            original_covered_function_count,
            sum(r.covered_function_count for r in records),
        )
Beispiel #3
0
 def get_lcov(self, lcov_string):
     fh = StringIO(lcov_string)
     return lcov_rewriter.LcovFile(fh)
Beispiel #4
0
 def get_lcov_file(self, name):
     fpath = os.path.join(here, name)
     with open(fpath) as fh:
         lcov_file = lcov_rewriter.LcovFile(fh)
     return lcov_file
Beispiel #5
0
    def test_remap_lcov(self):
        pp_remap = {
            (1941, 2158): ('dropPreview.js', 6),
            (2159, 2331): ('updater.js', 6),
            (2584, 2674): ('intro.js', 6),
            (2332, 2443): ('undo.js', 6),
            (864, 985): ('cells.js', 6),
            (2444, 2454): ('search.js', 6),
            (1567, 1712): ('drop.js', 6),
            (2455, 2583): ('customize.js', 6),
            (1713, 1940): ('dropTargetShim.js', 6),
            (1402, 1548): ('drag.js', 6),
            (1549, 1566): ('dragDataHelper.js', 6),
            (453, 602): ('page.js', 141),
            (2675, 2678): ('newTab.js', 70),
            (56, 321): ('transformations.js', 6),
            (603, 863): ('grid.js', 6),
            (322, 452): ('page.js', 6),
            (986, 1401): ('sites.js', 6)
        }

        self.pp_rewriter.pp_info['lcov_test_newTab.js'] = pp_remap

        fpath = os.path.join(here, 'sample_lcov.info')

        # Read original records
        lcov_file = lcov_rewriter.LcovFile([fpath])
        records = [
            lcov_file.parse_record(r)
            for _, _, r in lcov_file.iterate_records()
        ]

        # This summarization changes values due multiple reports per line coming
        # from the JS engine (bug 1198356).
        for r in records:
            r.resummarize()
            original_line_count = r.line_count
            original_covered_line_count = r.covered_line_count
            original_function_count = r.function_count
            original_covered_function_count = r.covered_function_count

        self.assertEqual(len(records), 1)

        # Rewrite preprocessed entries.
        lcov_file = lcov_rewriter.LcovFile([fpath])
        r_num = []

        def rewrite_source(s):
            r_num.append(1)
            return s, self.pp_rewriter.has_pp_info(s)

        out = StringIO()
        lcov_file.print_file(out, rewrite_source,
                             self.pp_rewriter.rewrite_record)
        self.assertEqual(len(r_num), 1)

        # Read rewritten lcov.
        with TempFile(out.getvalue()) as fname:
            lcov_file = lcov_rewriter.LcovFile([fname])
            records = [
                lcov_file.parse_record(r)
                for _, _, r in lcov_file.iterate_records()
            ]

        self.assertEqual(len(records), 17)

        # Lines/functions are only "moved" between records, not duplicated or omited.
        self.assertEqual(original_line_count,
                         sum(r.line_count for r in records))
        self.assertEqual(original_covered_line_count,
                         sum(r.covered_line_count for r in records))
        self.assertEqual(original_function_count,
                         sum(r.function_count for r in records))
        self.assertEqual(original_covered_function_count,
                         sum(r.covered_function_count for r in records))