Skip to content

Commit 7450893

Browse files
authored
Merge pull request tobami#280 from Kami/fix_default_branch_handling
Make sure comparison view works correctly when a default VCS branch is not called "default"
2 parents 2de039c + 650856d commit 7450893

File tree

3 files changed

+101
-2
lines changed

3 files changed

+101
-2
lines changed

codespeed/tests/test_views_data.py

Lines changed: 99 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
from codespeed.models import Project, Executable, Branch, Revision
66
from codespeed.views import getbaselineexecutables
7+
from codespeed.views import getcomparisonexes
78
from codespeed.views_data import get_sanitized_executable_name_for_timeline_view
89
from codespeed.views_data import get_sanitized_executable_name_for_comparison_view
910

@@ -43,6 +44,104 @@ def test_get_baseline_executables(self):
4344
self.assertEqual(len(result), 3)
4445

4546

47+
class TestGetComparisonExes(TestCase):
48+
def setUp(self):
49+
self.project = Project.objects.create(name='Test')
50+
self.executable_1 = Executable.objects.create(
51+
name='TestExecutable1', project=self.project)
52+
self.executable_2 = Executable.objects.create(
53+
name='TestExecutable2', project=self.project)
54+
self.branch_master = Branch.objects.create(name='master',
55+
project=self.project)
56+
self.branch_custom = Branch.objects.create(name='custom',
57+
project=self.project)
58+
59+
self.revision_1_master = Revision.objects.create(
60+
branch=self.branch_master, commitid='1')
61+
self.revision_1_custom = Revision.objects.create(
62+
branch=self.branch_custom, commitid='1')
63+
64+
def test_get_comparisionexes_master_default_branch(self):
65+
# Standard "master" default branch is used
66+
self.project.default_branch = 'master'
67+
self.project.save()
68+
69+
executables, exe_keys = getcomparisonexes()
70+
self.assertEqual(len(executables), 1)
71+
self.assertEqual(len(executables[self.project]), 4)
72+
self.assertEqual(len(exe_keys), 4)
73+
74+
self.assertEqual(executables[self.project][0]['executable'],
75+
self.executable_1)
76+
self.assertEqual(executables[self.project][0]['revision'],
77+
self.revision_1_master)
78+
self.assertEqual(executables[self.project][0]['key'],
79+
'1+L+master')
80+
self.assertEqual(executables[self.project][0]['name'],
81+
'TestExecutable1 latest')
82+
self.assertEqual(executables[self.project][0]['revision'],
83+
self.revision_1_master)
84+
85+
self.assertEqual(executables[self.project][1]['key'],
86+
'2+L+master')
87+
self.assertEqual(executables[self.project][1]['name'],
88+
'TestExecutable2 latest')
89+
90+
self.assertEqual(executables[self.project][2]['key'],
91+
'1+L+custom')
92+
self.assertEqual(executables[self.project][2]['name'],
93+
'TestExecutable1 latest in branch \'custom\'')
94+
95+
self.assertEqual(executables[self.project][3]['key'],
96+
'2+L+custom')
97+
self.assertEqual(executables[self.project][3]['name'],
98+
'TestExecutable2 latest in branch \'custom\'')
99+
100+
self.assertEqual(exe_keys[0], '1+L+master')
101+
self.assertEqual(exe_keys[1], '2+L+master')
102+
103+
def test_get_comparisionexes_custom_default_branch(self):
104+
# Custom default branch is used
105+
self.project.default_branch = 'custom'
106+
self.project.save()
107+
108+
executables, exe_keys = getcomparisonexes()
109+
self.assertEqual(len(executables), 1)
110+
self.assertEqual(len(executables[self.project]), 4)
111+
self.assertEqual(len(exe_keys), 4)
112+
113+
self.assertEqual(executables[self.project][0]['executable'],
114+
self.executable_1)
115+
self.assertEqual(executables[self.project][0]['revision'],
116+
self.revision_1_master)
117+
self.assertEqual(executables[self.project][0]['key'],
118+
'1+L+master')
119+
self.assertEqual(executables[self.project][0]['name'],
120+
'TestExecutable1 latest in branch \'master\'')
121+
self.assertEqual(executables[self.project][0]['revision'],
122+
self.revision_1_master)
123+
124+
self.assertEqual(executables[self.project][1]['key'],
125+
'2+L+master')
126+
self.assertEqual(executables[self.project][1]['name'],
127+
'TestExecutable2 latest in branch \'master\'')
128+
129+
self.assertEqual(executables[self.project][2]['key'],
130+
'1+L+custom')
131+
self.assertEqual(executables[self.project][2]['name'],
132+
'TestExecutable1 latest')
133+
134+
self.assertEqual(executables[self.project][3]['key'],
135+
'2+L+custom')
136+
self.assertEqual(executables[self.project][3]['name'],
137+
'TestExecutable2 latest')
138+
139+
self.assertEqual(exe_keys[0], '1+L+master')
140+
self.assertEqual(exe_keys[1], '2+L+master')
141+
self.assertEqual(exe_keys[2], '1+L+custom')
142+
self.assertEqual(exe_keys[3], '2+L+custom')
143+
144+
46145
class UtilityFunctionsTestCase(TestCase):
47146
@override_settings(TIMELINE_EXECUTABLE_NAME_MAX_LEN=22)
48147
def test_get_sanitized_executable_name_for_timeline_view(self):

codespeed/views.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -225,7 +225,7 @@ def comparison(request):
225225
else:
226226
rev = Revision.objects.get(commitid=rev)
227227
key += str(rev.id)
228-
key += "+default"
228+
key += "+%s" % (exe.project.default_branch)
229229
if key in exekeys:
230230
checkedexecutables.append(key)
231231
else:

codespeed/views_data.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -132,7 +132,7 @@ def getcomparisonexes():
132132
for exe in Executable.objects.filter(project=proj):
133133
exestring = get_sanitized_executable_name_for_comparison_view(exe)
134134
name = exestring + " latest"
135-
if branch.name != 'default':
135+
if branch.name != proj.default_branch:
136136
name += " in branch '" + branch.name + "'"
137137
key = str(exe.id) + "+L+" + branch.name
138138
executablekeys.append(key)

0 commit comments

Comments
 (0)