Index: dashboard/dashboard/pinpoint/models/change_test.py |
diff --git a/dashboard/dashboard/pinpoint/models/change_test.py b/dashboard/dashboard/pinpoint/models/change_test.py |
deleted file mode 100644 |
index a9461ed5ef9a3567afa979e08a2aca8e5d61b332..0000000000000000000000000000000000000000 |
--- a/dashboard/dashboard/pinpoint/models/change_test.py |
+++ /dev/null |
@@ -1,405 +0,0 @@ |
-# Copyright 2016 The Chromium Authors. All rights reserved. |
-# Use of this source code is governed by a BSD-style license that can be |
-# found in the LICENSE file. |
- |
-import unittest |
- |
-import mock |
- |
-from dashboard.common import namespaced_stored_object |
-from dashboard.common import testing_common |
-from dashboard.pinpoint.models import change |
- |
- |
-_CATAPULT_URL = ('https://chromium.googlesource.com/' |
- 'external/github.com/catapult-project/catapult') |
-_CHROMIUM_URL = 'https://chromium.googlesource.com/chromium/src' |
- |
- |
-class ChangeTest(testing_common.TestCase): |
- |
- def setUp(self): |
- super(ChangeTest, self).setUp() |
- |
- self.SetCurrentUser('internal@chromium.org', is_admin=True) |
- |
- namespaced_stored_object.Set('repositories', { |
- 'catapult': {'repository_url': _CATAPULT_URL}, |
- 'chromium': {'repository_url': _CHROMIUM_URL}, |
- }) |
- |
- def testChange(self): |
- base_commit = change.Dep('chromium', 'aaa7336c821888839f759c6c0a36b56c6678') |
- dep = change.Dep('catapult', 'e0a2efbb3d1a81aac3c90041eefec24f066d26ba') |
- patch = change.Patch('https://codereview.chromium.org', 2565263002, 20001) |
- |
- # Also test the deps conversion to frozenset. |
- c = change.Change(base_commit, [dep], patch) |
- |
- self.assertEqual(c, change.Change(base_commit, (dep,), patch)) |
- string = ('chromium@aaa7336 catapult@e0a2efb + ' |
- 'https://codereview.chromium.org/2565263002/20001') |
- id_string = ('chromium@aaa7336c821888839f759c6c0a36b56c6678 ' |
- 'catapult@e0a2efbb3d1a81aac3c90041eefec24f066d26ba + ' |
- 'https://codereview.chromium.org/2565263002/20001') |
- self.assertEqual(str(c), string) |
- self.assertEqual(c.id_string, id_string) |
- self.assertEqual(c.base_commit, base_commit) |
- self.assertEqual(c.deps, frozenset((dep,))) |
- self.assertEqual(c.all_deps, (base_commit, dep)) |
- self.assertEqual(c.patch, patch) |
- |
- def testAsDict(self): |
- base_commit = change.Dep('chromium', 'aaa7336c82') |
- dep = change.Dep('catapult', 'e0a2efbb3d') |
- patch = change.Patch('https://codereview.chromium.org', 2565263002, 20001) |
- c = change.Change(base_commit, [dep], patch) |
- |
- expected = { |
- 'base_commit': { |
- 'repository': 'chromium', |
- 'git_hash': 'aaa7336c82', |
- 'url': _CHROMIUM_URL + '/+/aaa7336c82', |
- }, |
- 'deps': [{ |
- 'repository': 'catapult', |
- 'git_hash': 'e0a2efbb3d', |
- 'url': _CATAPULT_URL + '/+/e0a2efbb3d', |
- }], |
- 'patch': { |
- 'server': 'https://codereview.chromium.org', |
- 'issue': 2565263002, |
- 'patchset': 20001, |
- }, |
- } |
- self.assertEqual(c.AsDict(), expected) |
- |
- @mock.patch('dashboard.services.gitiles_service.CommitInfo') |
- def testFromDictWithJustBaseCommit(self, _): |
- c = change.Change.FromDict({ |
- 'base_commit': {'repository': 'chromium', 'git_hash': 'aaa7336'}, |
- }) |
- |
- expected = change.Change(change.Dep('chromium', 'aaa7336')) |
- self.assertEqual(c, expected) |
- |
- @mock.patch('dashboard.services.gitiles_service.CommitInfo') |
- def testFromDictWithAllFields(self, _): |
- c = change.Change.FromDict({ |
- 'base_commit': {'repository': 'chromium', 'git_hash': 'aaa7336'}, |
- 'deps': ({'repository': 'catapult', 'git_hash': 'e0a2efb'},), |
- 'patch': { |
- 'server': 'https://codereview.chromium.org', |
- 'issue': 2565263002, |
- 'patchset': 20001, |
- }, |
- }) |
- |
- base_commit = change.Dep('chromium', 'aaa7336') |
- deps = (change.Dep('catapult', 'e0a2efb'),) |
- patch = change.Patch('https://codereview.chromium.org', 2565263002, 20001) |
- expected = change.Change(base_commit, deps, patch) |
- self.assertEqual(c, expected) |
- |
- @mock.patch('dashboard.services.gitiles_service.CommitRange') |
- def testMidpointSuccess(self, commit_range): |
- commit_range.return_value = [ |
- {'commit': 'babe852'}, |
- {'commit': 'b57345e'}, |
- {'commit': '949b36d'}, |
- {'commit': '1ef4789'}, |
- ] |
- |
- change_a = change.Change(change.Dep('chromium', '0e57e2b'), |
- (change.Dep('catapult', 'e0a2efb'),)) |
- change_b = change.Change(change.Dep('chromium', 'babe852'), |
- (change.Dep('catapult', 'e0a2efb'),)) |
- self.assertEqual(change.Change.Midpoint(change_a, change_b), |
- change.Change(change.Dep('chromium', '949b36d'), |
- (change.Dep('catapult', 'e0a2efb'),))) |
- |
- @mock.patch('dashboard.services.gitiles_service.FileContents') |
- @mock.patch('dashboard.services.gitiles_service.CommitRange') |
- def testMidpointWithDepsRoll(self, commit_range, file_contents): |
- def _CommitRange(repository_url, first_git_hash, last_git_hash): |
- del repository_url |
- if first_git_hash == '0e57e2b' and last_git_hash == 'babe852': |
- return [{'commit': 'babe852'}] |
- if first_git_hash == '0000000' and last_git_hash == '2222222': |
- return [{'commit': '2222222'}, {'commit': '1111111'}] |
- raise NotImplementedError() |
- commit_range.side_effect = _CommitRange |
- |
- def _FileContents(repository_url, git_hash, path): |
- del repository_url |
- del path |
- if git_hash == '0e57e2b': |
- # Also test the stripping of '.git' from repository URLs. |
- return 'deps = {"chromium/catapult": "%s@0000000"}' % ( |
- _CATAPULT_URL + '.git') |
- if git_hash == 'babe852': |
- return 'deps = {"chromium/catapult": "%s@2222222"}' % _CATAPULT_URL |
- raise NotImplementedError() |
- file_contents.side_effect = _FileContents |
- |
- change_a = change.Change(change.Dep('chromium', '0e57e2b')) |
- change_b = change.Change(change.Dep('chromium', 'babe852')) |
- expected = change.Change(change.Dep('chromium', '0e57e2b'), |
- (change.Dep('catapult', '1111111'),)) |
- |
- self.assertEqual(change.Change.Midpoint(change_a, change_b), expected) |
- |
- @mock.patch('dashboard.services.gitiles_service.FileContents') |
- @mock.patch('dashboard.services.gitiles_service.CommitRange') |
- def testMidpointAcrossDepsRoll(self, commit_range, file_contents): |
- def _CommitRange(repository_url, first_git_hash, last_git_hash): |
- del repository_url |
- if first_git_hash == '0e57e2b' and last_git_hash == 'babe852': |
- return [{'commit': 'babe852'}] |
- if first_git_hash == '1111111' and last_git_hash == '3333333': |
- return [{'commit': '3333333'}, {'commit': '2222222'}] |
- raise NotImplementedError() |
- commit_range.side_effect = _CommitRange |
- |
- def _FileContents(repository_url, git_hash, path): |
- del repository_url |
- del path |
- if git_hash == '0e57e2b': |
- return 'deps = {"src/catapult": "%s@0000000"}' % _CATAPULT_URL |
- if git_hash == 'babe852': |
- return 'deps = {"src/catapult": "%s@3333333"}' % _CATAPULT_URL |
- raise NotImplementedError() |
- file_contents.side_effect = _FileContents |
- |
- change_a = change.Change(change.Dep('chromium', '0e57e2b'), |
- (change.Dep('catapult', '1111111'),)) |
- change_b = change.Change(change.Dep('chromium', 'babe852')) |
- expected = change.Change(change.Dep('chromium', '0e57e2b'), |
- (change.Dep('catapult', '2222222'),)) |
- |
- self.assertEqual(change.Change.Midpoint(change_a, change_b), expected) |
- |
- def testMidpointRaisesWithDifferingPatch(self): |
- change_a = change.Change(change.Dep('chromium', '0e57e2b')) |
- change_b = change.Change( |
- change.Dep('chromium', 'babe852'), |
- patch=change.Patch('https://codereview.chromium.org', 2565263002, 20001)) |
- with self.assertRaises(change.NonLinearError): |
- change.Change.Midpoint(change_a, change_b) |
- |
- def testMidpointRaisesWithDifferingRepository(self): |
- change_a = change.Change(change.Dep('chromium', '0e57e2b')) |
- change_b = change.Change(change.Dep('not_chromium', 'babe852')) |
- with self.assertRaises(change.NonLinearError): |
- change.Change.Midpoint(change_a, change_b) |
- |
- @mock.patch('dashboard.services.gitiles_service.FileContents') |
- @mock.patch('dashboard.services.gitiles_service.CommitRange') |
- def testMidpointRaisesAcrossDepsRollWhenDepAlreadyOverridden( |
- self, commit_range, file_contents): |
- def _CommitRange(repository_url, first_git_hash, last_git_hash): |
- del repository_url |
- if first_git_hash == '0e57e2b' and last_git_hash == 'babe852': |
- return [{'commit': 'babe852'}] |
- if first_git_hash == '1111111' and last_git_hash == '3333333': |
- return [{'commit': '3333333'}, {'commit': '2222222'}] |
- raise NotImplementedError() |
- commit_range.side_effect = _CommitRange |
- |
- def _FileContents(repository_url, git_hash, path): |
- del repository_url |
- del path |
- if git_hash == '0e57e2b': |
- return 'deps = {"src/catapult": "%s@0000000"}' % _CATAPULT_URL |
- if git_hash == 'babe852': |
- return 'deps = {"src/catapult": "%s@4444444"}' % _CATAPULT_URL |
- raise NotImplementedError() |
- file_contents.side_effect = _FileContents |
- |
- change_a = change.Change(change.Dep('chromium', '0e57e2b'), |
- (change.Dep('catapult', '1111111'),)) |
- change_b = change.Change(change.Dep('chromium', 'babe852'), |
- (change.Dep('catapult', '3333333'),)) |
- |
- with self.assertRaises(change.NonLinearError): |
- change.Change.Midpoint(change_a, change_b) |
- |
- def testMidpointReturnsNoneWithTheSameChange(self): |
- c = change.Change(change.Dep('chromium', '0e57e2b')) |
- self.assertIsNone(change.Change.Midpoint(c, c)) |
- |
- @mock.patch('dashboard.services.gitiles_service.FileContents') |
- @mock.patch('dashboard.services.gitiles_service.CommitRange') |
- def testMidpointReturnsNoneWithAdjacentCommitsAndNoDepsRoll( |
- self, commit_range, file_contents): |
- commit_range.return_value = [{'commit': 'b57345e'}] |
- file_contents.return_value = 'deps = {}' |
- |
- change_a = change.Change(change.Dep('chromium', '949b36d')) |
- change_b = change.Change(change.Dep('chromium', 'b57345e')) |
- self.assertIsNone(change.Change.Midpoint(change_a, change_b)) |
- |
- |
-class DepTest(testing_common.TestCase): |
- |
- def setUp(self): |
- super(DepTest, self).setUp() |
- |
- self.SetCurrentUser('internal@chromium.org', is_admin=True) |
- |
- namespaced_stored_object.Set('repositories', { |
- 'chromium': {'repository_url': _CHROMIUM_URL}, |
- }) |
- |
- def testDep(self): |
- dep = change.Dep('chromium', 'aaa7336c821888839f759c6c0a36b56c6678') |
- |
- other_dep = change.Dep(u'chromium', u'aaa7336c821888839f759c6c0a36b56c6678') |
- self.assertEqual(dep, other_dep) |
- self.assertEqual(str(dep), 'chromium@aaa7336') |
- self.assertEqual(dep.id_string, |
- 'chromium@aaa7336c821888839f759c6c0a36b56c6678') |
- self.assertEqual(dep.repository, 'chromium') |
- self.assertEqual(dep.git_hash, 'aaa7336c821888839f759c6c0a36b56c6678') |
- self.assertEqual(dep.repository_url, |
- 'https://chromium.googlesource.com/chromium/src') |
- |
- @mock.patch('dashboard.services.gitiles_service.FileContents') |
- def testDeps(self, file_contents): |
- file_contents.return_value = """ |
-vars = { |
- 'chromium_git': 'https://chromium.googlesource.com', |
-} |
-deps = { |
- 'src/v8': Var('chromium_git') + '/v8/v8.git' + '@' + 'c092edb', |
-} |
-deps_os = { |
- 'win': { |
- 'src/third_party/cygwin': |
- Var('chromium_git') + '/chromium/deps/cygwin.git' + '@' + 'c89e446', |
- } |
-} |
- """ |
- |
- dep = change.Dep('chromium', 'aaa7336') |
- expected = frozenset(( |
- change.Dep('cygwin', 'c89e446'), |
- change.Dep('v8', 'c092edb'), |
- )) |
- self.assertEqual(dep.Deps(), expected) |
- |
- def testAsDict(self): |
- dep = change.Dep('chromium', 'aaa7336') |
- expected = { |
- 'repository': 'chromium', |
- 'git_hash': 'aaa7336', |
- 'url': _CHROMIUM_URL + '/+/aaa7336', |
- } |
- self.assertEqual(dep.AsDict(), expected) |
- |
- @mock.patch('dashboard.services.gitiles_service.CommitInfo') |
- def testFromDict(self, _): |
- dep = change.Dep.FromDict({ |
- 'repository': 'chromium', |
- 'git_hash': 'aaa7336', |
- }) |
- |
- expected = change.Dep('chromium', 'aaa7336') |
- self.assertEqual(dep, expected) |
- |
- @mock.patch('dashboard.services.gitiles_service.CommitInfo') |
- def testFromDictWithRepositoryUrl(self, _): |
- dep = change.Dep.FromDict({ |
- 'repository': 'https://chromium.googlesource.com/chromium/src', |
- 'git_hash': 'aaa7336', |
- }) |
- |
- expected = change.Dep('chromium', 'aaa7336') |
- self.assertEqual(dep, expected) |
- |
- def testFromDictFailureFromUnknownRepo(self): |
- with self.assertRaises(KeyError): |
- change.Dep.FromDict({ |
- 'repository': 'unknown repo', |
- 'git_hash': 'git hash', |
- }) |
- |
- @mock.patch('dashboard.services.gitiles_service.CommitInfo') |
- def testFromDictFailureFromUnknownCommit(self, commit_info): |
- commit_info.side_effect = KeyError() |
- |
- with self.assertRaises(KeyError): |
- change.Dep.FromDict({ |
- 'repository': 'chromium', |
- 'git_hash': 'unknown git hash', |
- }) |
- |
- @mock.patch('dashboard.services.gitiles_service.CommitRange') |
- def testMidpointSuccess(self, commit_range): |
- commit_range.return_value = [ |
- {'commit': 'babe852'}, |
- {'commit': 'b57345e'}, |
- {'commit': '949b36d'}, |
- {'commit': '1ef4789'}, |
- ] |
- |
- dep_a = change.Dep('chromium', '0e57e2b') |
- dep_b = change.Dep('chromium', 'babe852') |
- self.assertEqual(change.Dep.Midpoint(dep_a, dep_b), |
- change.Dep('chromium', '949b36d')) |
- |
- def testMidpointRaisesWithDifferingRepositories(self): |
- dep_a = change.Dep('chromium', '0e57e2b') |
- dep_b = change.Dep('not_chromium', 'babe852') |
- |
- with self.assertRaises(ValueError): |
- change.Dep.Midpoint(dep_a, dep_b) |
- |
- @mock.patch('dashboard.services.gitiles_service.CommitRange') |
- def testMidpointReturnsNoneWithAdjacentCommits(self, commit_range): |
- commit_range.return_value = [{'commit': 'b57345e'}] |
- |
- dep_a = change.Dep('chromium', '949b36d') |
- dep_b = change.Dep('chromium', 'b57345e') |
- self.assertIsNone(change.Dep.Midpoint(dep_a, dep_b)) |
- |
- @mock.patch('dashboard.services.gitiles_service.CommitRange') |
- def testMidpointReturnsNoneWithEmptyRange(self, commit_range): |
- commit_range.return_value = [] |
- |
- dep_b = change.Dep('chromium', 'b57345e') |
- dep_a = change.Dep('chromium', '949b36d') |
- self.assertIsNone(change.Dep.Midpoint(dep_a, dep_b)) |
- |
- |
-class PatchTest(unittest.TestCase): |
- |
- def testPatch(self): |
- patch = change.Patch('https://codereview.chromium.org', 2851943002, 40001) |
- |
- other_patch = change.Patch(u'https://codereview.chromium.org', |
- 2851943002, 40001) |
- self.assertEqual(patch, other_patch) |
- string = 'https://codereview.chromium.org/2851943002/40001' |
- self.assertEqual(str(patch), string) |
- self.assertEqual(patch.id_string, string) |
- |
- def testAsDict(self): |
- patch = change.Patch('https://codereview.chromium.org', 2851943002, 40001) |
- expected = { |
- 'server': 'https://codereview.chromium.org', |
- 'issue': 2851943002, |
- 'patchset': 40001, |
- } |
- self.assertEqual(patch.AsDict(), expected) |
- |
- def testFromDict(self): |
- patch = change.Patch.FromDict({ |
- 'server': 'https://codereview.chromium.org', |
- 'issue': 2851943002, |
- 'patchset': 40001, |
- }) |
- |
- expected = change.Patch('https://codereview.chromium.org', |
- 2851943002, 40001) |
- self.assertEqual(patch, expected) |