def test_violations(self): # Construct the XML report file_paths = ['file1.py', 'subdir/file2.py'] violations = self.MANY_VIOLATIONS measured = self.FEW_MEASURED xml = self._coverage_xml(file_paths, violations, measured) # Parse the report coverage = XmlCoverageReporter(xml) # Expect that the name is set self.assertEqual(coverage.name(), "XML") # By construction, each file has the same set # of covered/uncovered lines self.assertEqual(violations, coverage.violations('file1.py')) self.assertEqual(measured, coverage.measured_lines('file1.py')) # Try getting a smaller range result = coverage.violations('subdir/file2.py') self.assertEqual(result, violations) # Once more on the first file (for caching) result = coverage.violations('file1.py') self.assertEqual(result, violations)