def test_build_infos_returns_correct_infos(self): BUILD_INFO1 = create_build_info() BUILD_INFO2 = create_build_info() commits_results = CommitsResults([ CommitResults(create_commit(), TestsResults(), BUILD_INFO1), CommitResults(create_commit(), TestsResults(), BUILD_INFO2) ]) self.assertEqual(commits_results.build_infos, [BUILD_INFO1, BUILD_INFO2])
def test_topmost_commit_has_succeeded_returns_false_if_build_failed(self): commit = create_commit() self.db.insert_commit(commit) build_id = self.db.insert_build_started_info(commit, datetime.now()) self.db.insert_build_ended_info(build_id, create_build_info(succeeded=False)) self.assertFalse(self.db.topmost_commit_has_succeeded())
def test_get_results_for_commit_returns_correct_results_when_there_is_build_info(self): commit = create_commit() self.db.insert_commit(commit) START_DATE = datetime.now() build_id = self.db.insert_build_started_info(commit, START_DATE) LOG = 'build log' END_DATE = datetime.now() SUCCEEDED = True self.db.insert_build_ended_info( build_id, create_build_info( start_date=START_DATE, end_date=END_DATE, succeeded=SUCCEEDED, log=LOG ) ) commit_results = self.db.get_results_for_commit(commit) self.assertTrue(commit_results.has_build_info()) self.assertEqual(commit_results.build_info.start_date, START_DATE) self.assertEqual(commit_results.build_info.end_date, END_DATE) self.assertEqual(commit_results.build_info.succeeded, SUCCEEDED) self.assertEqual(commit_results.build_info.log, LOG)
def test_get_commit_for_non_critical_tests_skips_commits_that_failed_to_build(self): commit = create_commit() self.db.insert_commit(commit) build_id = self.db.insert_build_started_info(commit, datetime.now()) self.db.insert_build_ended_info(build_id, create_build_info(succeeded=False)) self.assertIsNone(self.db.get_commit_for_non_critical_tests(1))
def test_creates_correct_body_when_build_failed(self): commit_results = CommitResults(self.commit, TestsResults(), create_build_info(succeeded=False)) email = prepare_email(commit_results, self.subject_prefix, self.web_url, self.wiki_page_url) self.assertRegex(email.body, r'build failed')
def test_initialize_commit_records_clears_build_records_when_build_info_is_present(self): commit = create_commit() self.db.insert_commit(commit) build_id = self.db.insert_build_started_info(commit, datetime.now()) self.db.insert_build_ended_info(build_id, create_build_info()) self.db.initialize_commit_records(commit) commit_results = self.db.get_results_for_commit(commit) self.assertFalse(commit_results.has_build_info())
def test_topmost_commit_has_succeeded_returns_false_if_test_failed(self): commit = create_commit() self.db.insert_commit(commit) build_id = self.db.insert_build_started_info(commit, datetime.now()) self.db.insert_build_ended_info(build_id, create_build_info()) test_results = create_test_results( module_name='module', run_tests=2, failed_tests=1) self.db.insert_test_results(test_results, commit) self.assertFalse(self.db.topmost_commit_has_succeeded())
def test_topmost_commit_has_succeeded_returns_true_if_succeeded(self): commit1 = create_commit() self.db.insert_commit(commit1) build_id = self.db.insert_build_started_info(commit1, datetime.now()) self.db.insert_build_ended_info(build_id, create_build_info()) test_results1 = create_test_results( module_name='module', run_tests=1, failed_tests=1) self.db.insert_test_results(test_results1, commit1) # Topmost commit. commit2 = create_commit() self.db.insert_commit(commit2) build_id = self.db.insert_build_started_info(commit2, datetime.now()) self.db.insert_build_ended_info(build_id, create_build_info()) test_results2 = create_test_results( module_name='module', run_tests=1, failed_tests=0) self.db.insert_test_results(test_results2, commit2) self.assertTrue(self.db.topmost_commit_has_succeeded())
def test_initialize_commit_records_does_not_clear_build_records_when_forced_not_to(self): commit = create_commit() self.db.insert_commit(commit) build_id = self.db.insert_build_started_info(commit, datetime.now()) self.db.insert_build_ended_info(build_id, create_build_info()) self.db.initialize_commit_records(commit, remove_build_infos=False) commit_results = self.db.get_results_for_commit(commit) self.assertTrue(commit_results.has_build_info())
def test_creates_correct_email_when_no_test_failed(self): commit_results = CommitResults( self.commit, TestsResults([create_test_results(run_tests=3, failed_tests=0)]), create_build_info(succeeded=True)) email = prepare_email(commit_results, self.subject_prefix, self.web_url, self.wiki_page_url) self.assertRegex(email.body, r'unknown failure')
def test_sets_correct_addresses_and_urls(self): commit_results = CommitResults(self.commit, TestsResults(), create_build_info()) email = prepare_email(commit_results, self.subject_prefix, self.web_url, self.wiki_page_url) self.assertEqual(email.to_addr, 'Petr Zemek <*****@*****.**>') self.assertRegex(email.subject, r'^{}'.format(self.subject_prefix)) self.assertIn(self.web_url, email.body) self.assertIn(self.wiki_page_url, email.body)
def test_creates_correct_body_when_one_test_failed_in_one_module(self): commit_results = CommitResults( self.commit, TestsResults([ create_test_results(module_name='module1', run_tests=3, failed_tests=1) ]), create_build_info(succeeded=True)) email = prepare_email(commit_results, self.subject_prefix, self.web_url, self.wiki_page_url) self.assertRegex(email.body, r'1 test failed in the following module:') self.assertRegex(email.body, r'module1')
def test_creates_correct_email_when_two_tests_failed_in_two_modules(self): commit_results = CommitResults( self.commit, TestsResults([ create_test_results(module_name='module1', case_name='Test (input.exe)', run_tests=3, failed_tests=1), create_test_results(module_name='module2', case_name='Test (input.exe)', run_tests=1, failed_tests=1) ]), create_build_info(succeeded=True)) email = prepare_email(commit_results, self.subject_prefix, self.web_url, self.wiki_page_url) self.assertRegex(email.body, r'2 tests failed in the following modules:') self.assertRegex(email.body, r'module1') self.assertRegex(email.body, r'module2')
def test_has_build_info_returns_true_when_there_is_build_info(self): commit_results = CommitResults(create_commit(), TestsResults(), create_build_info()) self.assertTrue(commit_results.has_build_info())
def test_build_info_resturns_correct_info(self): BUILD_INFO = create_build_info() commit_results = CommitResults(create_commit(), TestsResults(), BUILD_INFO) self.assertEqual(commit_results.build_info, BUILD_INFO)
def test_build_has_failed_returns_false_if_build_has_succeeded(self): commit_results = CommitResults(create_commit(), TestsResults(), create_build_info(succeeded=True)) self.assertFalse(commit_results.build_has_failed())
def test_insert_build_ended_info_raises_invalid_build_error_when_no_such_build( self): build_info = create_build_info() with self.assertRaises(InvalidBuildError): self.db.insert_build_ended_info(1, build_info)
def test_insert_build_ended_info_passes_when_build_exists(self): commit = create_commit() self.db.insert_commit(commit) build_id = self.db.insert_build_started_info(commit, datetime.now()) build_info = create_build_info() self.db.insert_build_ended_info(build_id, build_info)