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!