def testMultipleTeamsOneComponent(self): with mock.patch('extract_components.scrape_owners', return_value={ '.': {}, 'dummydir1': { 'team': '*****@*****.**', 'component': 'Dummy>Component', }, 'dummydir2': { 'team': '*****@*****.**', 'component': 'Dummy>Component2', }, 'dummydir1/innerdir1': { 'team': '*****@*****.**', 'component': 'Dummy>Component' } }): saved_output = StringIO() with mock.patch('sys.stdout', saved_output): error_code = extract_components.main(['%prog', 'src']) self.assertEqual(0, error_code) result_minus_readme = json.loads(saved_output.getvalue()) del result_minus_readme['AAA-README'] self.assertEqual( result_minus_readme, { 'component-to-team': { 'Dummy>Component': '*****@*****.**', 'Dummy>Component2': '*****@*****.**' }, 'dir-to-component': { 'dummydir1': 'Dummy>Component', 'dummydir1/innerdir1': 'Dummy>Component', 'dummydir2': 'Dummy>Component2' }, 'dir-to-team': { 'dummydir1': '*****@*****.**', 'dummydir1/innerdir1': '*****@*****.**', 'dummydir2': '*****@*****.**', }, 'teams-per-component': { 'Dummy>Component': [ '*****@*****.**', '*****@*****.**' ], 'Dummy>Component2': ['*****@*****.**'], } })
def testOsTagBreaksDuplication(self): with mock.patch('extract_components.scrape_owners', return_value={ '.': {}, 'dummydir1': { 'team': '*****@*****.**', 'component': 'Dummy>Component', }, 'dummydir2': { 'team': '*****@*****.**', 'component': 'Dummy>Component', 'os': 'Mac' }, 'dummydir1/innerdir1': { 'team': '*****@*****.**', 'component': 'Dummy>Component>Subcomponent' } }): saved_output = StringIO() with mock.patch('sys.stdout', saved_output): error_code = extract_components.main(['%prog', 'src']) self.assertEqual(0, error_code) result_minus_readme = json.loads(saved_output.getvalue()) del result_minus_readme['AAA-README'] self.assertEqual( result_minus_readme, { 'component-to-team': { 'Dummy>Component': '*****@*****.**', 'Dummy>Component(Mac)': '*****@*****.**', 'Dummy>Component>Subcomponent': '*****@*****.**' }, 'dir-to-component': { 'dummydir1': 'Dummy>Component', 'dummydir1/innerdir1': 'Dummy>Component>Subcomponent', 'dummydir2': 'Dummy>Component(Mac)' } })
def testMultipleTeamsOneComponent(self): with mock.patch('extract_components.scrape_owners', return_value={ '.': {}, 'dummydir1': { 'team': '*****@*****.**', 'component': 'Dummy>Component', }, 'dummydir2': { 'team': '*****@*****.**', 'component': 'Dummy>Component', }, 'dummydir1/innerdir1': { 'team': '*****@*****.**', 'component': 'Dummy>Component>Subcomponent' } }): saved_output = StringIO() with mock.patch('sys.stdout', saved_output): error_code = extract_components.main(['%prog', '-w', 'src']) self.assertNotEqual(0, error_code) output = saved_output.getvalue() self.assertIn('has more than one team assigned to it', output) self.assertIn('Not writing to file', output)
def testVerbose(self): saved_output = StringIO() with mock.patch('sys.stdout', saved_output): extract_components.main(['%prog', '-v']) output = saved_output.getvalue() self.assertIn('src/OWNERS has no COMPONENT tag', output)