コード例 #1
0
class AnalyzerManagerTests(unittest.TestCase):
    def setUp(self):
        self.data_service = FakeDataService()
        self.model_repository = FakeModelRepository()
        self.manager = AnalyzerManager([FakeAnalyzer, FakeAnalyzer],
                                       self.model_repository,
                                       self.data_service)
        FakeAnalyzer.stub = None

    def test_process_review_event(self):
        request = ReviewEvent()
        request.configuration.update({"FakeAnalyzer": {"one": "two"}})
        request.commit_revision.base.internal_repository_url = "foo"
        request.commit_revision.base.reference_name = "refs/heads/master"
        request.commit_revision.base.hash = "00" * 20
        request.commit_revision.head.internal_repository_url = "bar"
        request.commit_revision.head.reference_name = "refs/heads/master"
        request.commit_revision.head.hash = "ff" * 20
        response = self.manager.process_review_event(request)
        self.assertIsInstance(response, EventResponse)
        self.assertEqual(response.analyzer_version,
                         "FakeAnalyzer/1 FakeAnalyzer/1")
        self.assertEqual(len(response.comments), 2)
        self.assertEqual(*response.comments)
        self.assertEqual(response.comments[0].text,
                         "%s|%s" % ("00" * 20, "ff" * 20))
        self.assertEqual(self.model_repository.get_calls,
                         [("FakeAnalyzer/1", FakeModel, "foo")] * 2)
        self.assertEqual(FakeAnalyzer.instance.one, "two")
        self.assertEqual(FakeAnalyzer.stub, "XXX")

    def test_process_push_event(self):
        request = PushEvent()
        request.commit_revision.head.internal_repository_url = "wow"
        request.commit_revision.head.reference_name = "refs/heads/master"
        request.commit_revision.head.hash = "80" * 20
        response = self.manager.process_push_event(request)
        self.assertIsInstance(response, EventResponse)
        self.assertEqual(response.analyzer_version,
                         "FakeAnalyzer/1 FakeAnalyzer/1")
        self.assertEqual(len(response.comments), 0)
        self.assertEqual(len(self.model_repository.set_calls), 2)
        self.assertEqual(self.model_repository.set_calls[0][:2],
                         ("FakeAnalyzer/1", "wow"))
        self.assertIsInstance(self.model_repository.set_calls[0][2], FakeModel)
        self.assertEqual(self.model_repository.set_calls[1][:2],
                         ("FakeAnalyzer/1", "wow"))
        self.assertIsInstance(self.model_repository.set_calls[1][2], FakeModel)
        self.assertEqual(FakeAnalyzer.stub, "XXX")
コード例 #2
0
class AnalyzerManagerTests(unittest.TestCase):
    @classmethod
    def setUpClass(cls):
        slogging.setup(logging.DEBUG, False)

    def setUp(self):
        self.data_service = FakeDataService()
        self.model_repository = FakeModelRepository()
        self.manager = AnalyzerManager(
            [FakeAnalyzer, FakeAnalyzer, FakeDummyAnalyzer],
            self.model_repository, self.data_service)
        FakeAnalyzer.stub = None
        FakeDummyAnalyzer.skip_train = False
        FakeAnalyzer.service = None

    def test_process_review_event(self):
        request = ReviewEvent()
        request.configuration.update(
            {"fake.analyzer.FakeAnalyzer": {
                "one": "two"
            }})
        request.commit_revision.base.internal_repository_url = "foo"
        request.commit_revision.base.reference_name = "refs/heads/master"
        request.commit_revision.base.hash = "00" * 20
        request.commit_revision.head.internal_repository_url = "bar"
        request.commit_revision.head.reference_name = "refs/heads/master"
        request.commit_revision.head.hash = "ff" * 20
        response = self.manager.process_review_event(request)
        self.assertIsInstance(response, EventResponse)
        self.assertEqual(
            response.analyzer_version, "fake.analyzer.FakeAnalyzer/1 "
            "fake.analyzer.FakeAnalyzer/1 "
            "fake.analyzer.FakeDummyAnalyzer/1")
        self.assertEqual(len(response.comments), 2)
        self.assertEqual(*response.comments)
        self.assertEqual(response.comments[0].text,
                         "%s|%s" % ("00" * 20, "ff" * 20))
        self.assertEqual(self.model_repository.get_calls,
                         [("fake.analyzer.FakeAnalyzer/1", FakeModel, "foo")] *
                         2)
        self.assertEqual(FakeAnalyzer.instance.config["one"], "two")
        self.assertEqual(FakeAnalyzer.service.get_data(), "XXX")
        self.assertTrue(FakeDummyAnalyzer.instance.analyzed)

    def test_process_push_event(self):
        request = PushEvent()
        request.commit_revision.head.internal_repository_url = "wow"
        request.commit_revision.head.reference_name = "refs/heads/master"
        request.commit_revision.head.hash = "80" * 20
        response = self.manager.process_push_event(request)
        self.assertIsInstance(response, EventResponse)
        self.assertEqual(
            response.analyzer_version, "fake.analyzer.FakeAnalyzer/1 "
            "fake.analyzer.FakeAnalyzer/1 "
            "fake.analyzer.FakeDummyAnalyzer/1")
        self.assertEqual(len(response.comments), 0)
        self.assertEqual(len(self.model_repository.set_calls), 2)
        self.assertEqual(self.model_repository.set_calls[0][:2],
                         ("fake.analyzer.FakeAnalyzer/1", "wow"))
        self.assertIsInstance(self.model_repository.set_calls[0][2], FakeModel)
        self.assertEqual(self.model_repository.set_calls[1][:2],
                         ("fake.analyzer.FakeAnalyzer/1", "wow"))
        self.assertIsInstance(self.model_repository.set_calls[1][2], FakeModel)
        self.assertEqual(FakeAnalyzer.service.get_bblfsh(), "YYY")
        self.assertFalse(FakeDummyAnalyzer.trained)

    def test_process_push_event_skip(self):
        FakeAnalyzer.skip_train = True
        request = PushEvent()
        request.commit_revision.head.internal_repository_url = "wow"
        request.commit_revision.head.reference_name = "refs/heads/master"
        request.commit_revision.head.hash = "80" * 20
        response = self.manager.process_push_event(request)
        self.assertIsInstance(response, EventResponse)
        self.assertEqual(
            response.analyzer_version, "fake.analyzer.FakeAnalyzer/1 "
            "fake.analyzer.FakeAnalyzer/1 "
            "fake.analyzer.FakeDummyAnalyzer/1")
        self.assertEqual(len(response.comments), 0)
        self.assertEqual(len(self.model_repository.get_calls), 2)
        self.assertEqual(len(self.model_repository.set_calls), 0)
        self.assertIsNone(FakeAnalyzer.service)