Fix bitbucket repo parsing and add tests.

refactor-builder
Eric Holscher 2013-10-28 19:57:43 -07:00
parent efba1dde31
commit 5f8b6aba6a
2 changed files with 43 additions and 3 deletions

View File

@ -208,6 +208,7 @@ class Version(models.Model):
else:
return ''
docroot = self.get_conf_py_path()
repo = repo.rstrip('/')
return GITHUB_URL.format(
user=user,
@ -219,9 +220,9 @@ class Version(models.Model):
def get_bitbucket_url(self, filename):
BB_REGEXS = [
re.compile('bitbucket.com/(.+)/(.+)/'),
re.compile('bitbucket.com/(.+)/(.+)'),
re.compile('bitbucket.com:(.+)/(.+)\.git'),
re.compile('bitbucket.org/(.+)/(.+).git'),
re.compile('bitbucket.org/(.+)/(.+)/'),
re.compile('bitbucket.org/(.+)/(.+)'),
]
BB_URL = 'https://bitbucket.org/{user}/{repo}/src/{version}{docroot}{path}.rst'
@ -237,6 +238,7 @@ class Version(models.Model):
else:
return ''
docroot = self.get_conf_py_path()
repo = repo.rstrip('/')
return BB_URL.format(
user=user,

View File

@ -0,0 +1,38 @@
import json
from django.test import TestCase
from builds.models import Version
from projects.models import Project
class TestRepoParsing(TestCase):
fixtures = ["eric", "test_data"]
def setUp(self):
self.client.login(username='eric', password='test')
self.pip = Project.objects.get(slug='pip')
self.version = Version.objects.create(project=self.pip, identifier='latest',
verbose_name='latest', slug='latest',
active=True)
def test_github(self):
self.pip.repo = 'https://github.com/user/repo'
self.assertEqual(self.version.get_github_url('file'), 'https://github.com/user/repo/blob/master/docs/file.rst')
self.pip.repo = 'https://github.com/user/repo/'
self.assertEqual(self.version.get_github_url('file'), 'https://github.com/user/repo/blob/master/docs/file.rst')
self.pip.repo = 'https://github.com/user/repo.git'
self.assertEqual(self.version.get_github_url('file'), 'https://github.com/user/repo/blob/master/docs/file.rst')
def test_bitbucket(self):
self.pip.repo = 'https://bitbucket.org/user/repo'
self.assertEqual(self.version.get_bitbucket_url('file'), 'https://bitbucket.org/user/repo/src/master/docs/file.rst')
self.pip.repo = 'https://bitbucket.org/user/repo/'
self.assertEqual(self.version.get_bitbucket_url('file'), 'https://bitbucket.org/user/repo/src/master/docs/file.rst')
self.pip.repo = 'https://bitbucket.org/user/repo.git'
self.assertEqual(self.version.get_bitbucket_url('file'), 'https://bitbucket.org/user/repo/src/master/docs/file.rst')