Spot ’em bugs..!
pip install bugspots3
Hi, guys! This week was filled mostly with surprises. I just moved to Bangalore on Friday, in a hurry.
And as far as Summer of Code is concerned, it was pretty hectic around. I migrated around a couple of plugins on gitmate-2, bug_spotter
(labels the pull requests with higher bug rate possibility) and issue_labeller
(labels the issues based on keywords captured from the title and description).
So, there’s this cool package bugspots3
, which basically implements Google’s bug prediction algorithm. It pretty much predicts the top 10% of error prone files by weighing them based on their age. More info on the algorithm goes here.
Gitmate has it’s own testcase now, hell yeah!
There was a complete redesign on the testing architecture too. We have a GitmateTestCase
class now, which could be used as a base class for testing gitmate responders. It provides us with a lot of helper methods like setUpWithPlugin
(sets up all the stuff with the specified plugin), simulate_github_webhook_call
(simulates the webhook trigger from github to gitmate server), etc. I also finished tests for all the plugins with 100% coverage.

It eases up writing tests a lot now. Here’s one from gitmate_welcome_commenter
plugin.
from unittest.mock import patch
from IGitt.GitHub.GitHubIssue import GitHubIssue
from rest_framework import status
from gitmate_config.tests.test_base import GitmateTestCase
class TestWelcomeCommenter(GitmateTestCase):
def setUp(self):
super().setUpWithPlugin('welcome_commenter')
@patch.object(GitHubIssue, 'add_comment', autospec=True)
def test_github(self, mock_add_comment):
data = {
'repository': {'full_name': 'star-wars'},
'pull_request': {'number': 7},
'action': 'opened'
}
response = self.simulate_github_webhook_call('pull_request',
data)
self.assertEquals(response.status_code, status.HTTP_200_OK)
mock_add_comment.assert_called_once()
Ugh! Terrible connectivity strikes here..
And most of the tests on gitmate-2
are network based, which could lead to non-deterministic failure of pipelines. So, next week’s focus would be on mocking external requests with suitable data and providing a completely offline way to run tests.
I guess I pretty much need this ASAP, I’ve terrible network bandwidth around here.
Ok, then, catch ya later, guys!