コード例 #1
0
 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])
コード例 #2
0
    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())
コード例 #3
0
    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)
コード例 #4
0
    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))
コード例 #5
0
    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')
コード例 #6
0
    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())
コード例 #7
0
    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())
コード例 #8
0
    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())
コード例 #9
0
    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())
コード例 #10
0
    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')
コード例 #11
0
    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)
コード例 #12
0
    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')
コード例 #13
0
    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')
コード例 #14
0
 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())
コード例 #15
0
 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)
コード例 #16
0
 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())
コード例 #17
0
 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)
コード例 #18
0
 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)