| # Copyright (c) 2014 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 chromium_deps |
| from common import utils |
| |
| |
| class ChromiumDEPSTest(unittest.TestCase): |
| DEPS_TEMPLATE = """ |
| vars = { |
| "googlecode_url": "http://%%s.googlecode.com/svn", |
| "webkit_trunk": "http://src.chromium.org/blink/trunk", |
| "webkit_revision": "%s", |
| "chromium_git": "https://chromium.googlesource.com", |
| } |
| |
| deps = { |
| "src/breakpad/src": |
| (Var("googlecode_url") %% "google-breakpad") + "/trunk/src@%s", |
| |
| "src/third_party/WebKit": |
| Var("webkit_trunk") + "@" + Var("webkit_revision"), |
| } |
| |
| deps_os = { |
| "unix": { |
| "src/third_party/liblouis/src": |
| Var("chromium_git") + |
| "/external/liblouis.git@%s", |
| } |
| } |
| """ |
| |
| def __init__(self, *args, **kwargs): |
| super(ChromiumDEPSTest, self).__init__(*args, **kwargs) |
| |
| def testGetChromiumComponents(self): |
| chromium_revision = '283296' |
| chromium_revision_git_hash = 'b041fda2e8493dcb26aac08deb493943df240cbb' |
| webkit_revision = '178200' |
| breakpad_revision = '1345' |
| liblouis_commit_hashcode = '3c2daee56250162e5a75830871601d74328d39f5' |
| |
| def _GetContentOfDEPS(chromium_revision_tmp): |
| self.assertEqual(chromium_revision_tmp, chromium_revision_git_hash) |
| return self.DEPS_TEMPLATE % (webkit_revision, breakpad_revision, |
| liblouis_commit_hashcode) |
| |
| expected_results = { |
| 'src/breakpad/src/': { |
| 'path': 'src/breakpad/src/', |
| 'repository_type': 'svn', |
| 'name': 'breakpad', |
| 'repository': 'http://google-breakpad.googlecode.com/svn/trunk/src', |
| 'revision': breakpad_revision |
| }, |
| 'src/third_party/liblouis/src/': { |
| 'path': 'src/third_party/liblouis/src/', |
| 'repository_type': 'git', |
| 'name': 'liblouis', |
| 'repository': |
| 'https://chromium.googlesource.com/external/liblouis.git', |
| 'revision': liblouis_commit_hashcode |
| }, |
| 'src/': { |
| 'path': 'src/', |
| 'repository_type': 'git', |
| 'name': 'chromium', |
| 'repository': 'https://chromium.googlesource.com/chromium/src/', |
| 'revision': chromium_revision_git_hash |
| }, |
| 'src/third_party/WebKit/': { |
| 'path': 'src/third_party/WebKit/', |
| 'repository_type': 'svn', |
| 'name': 'blink', |
| 'repository': 'http://src.chromium.org/blink/trunk', |
| 'revision': webkit_revision |
| } |
| } |
| |
| components = chromium_deps.GetChromiumComponents( |
| chromium_revision, deps_file_downloader=_GetContentOfDEPS) |
| self.assertEqual(expected_results, components) |
| |
| def testGetChromiumComponentRange(self): |
| chromium_revision1 = '283200' |
| chromium_revision_git_hash1 = 'c53c387f46a2ff0cf7c072222b826cff0817a80f' |
| webkit_revision1 = '178084' |
| breakpad_revision1 = '1345' |
| liblouis_commit_hashcode1 = '3c2daee56250162e5a75830871601d74328d39f5' |
| |
| chromium_revision2 = '283296' |
| chromium_revision_git_hash2 = 'b041fda2e8493dcb26aac08deb493943df240cbb' |
| webkit_revision2 = '178200' |
| breakpad_revision2 = '1345' |
| liblouis_commit_hashcode2 = '3c2daee56250162e5a75830871601d74328d39f5' |
| |
| def _GetContentOfDEPS(chromium_revision): |
| chromium_revision = str(chromium_revision) |
| if chromium_revision == chromium_revision_git_hash1: |
| return self.DEPS_TEMPLATE % (webkit_revision1, breakpad_revision1, |
| liblouis_commit_hashcode1) |
| else: |
| self.assertEqual(chromium_revision, chromium_revision_git_hash2) |
| return self.DEPS_TEMPLATE % (webkit_revision2, breakpad_revision2, |
| liblouis_commit_hashcode2) |
| |
| expected_results = { |
| 'src/breakpad/src/': { |
| 'old_revision': breakpad_revision1, |
| 'name': 'breakpad', |
| 'repository': 'http://google-breakpad.googlecode.com/svn/trunk/src', |
| 'rolled': False, |
| 'new_revision': breakpad_revision2, |
| 'path': 'src/breakpad/src/', |
| 'repository_type': 'svn' |
| }, |
| 'src/third_party/liblouis/src/': { |
| 'old_revision': liblouis_commit_hashcode1, |
| 'name': 'liblouis', |
| 'repository': |
| 'https://chromium.googlesource.com/external/liblouis.git', |
| 'rolled': False, |
| 'new_revision': liblouis_commit_hashcode2, |
| 'path': 'src/third_party/liblouis/src/', |
| 'repository_type': 'git' |
| }, |
| 'src/': { |
| 'old_revision': chromium_revision_git_hash1, |
| 'name': 'chromium', |
| 'repository': 'https://chromium.googlesource.com/chromium/src/', |
| 'rolled': True, |
| 'new_revision': chromium_revision_git_hash2, |
| 'path': 'src/', |
| 'repository_type': 'git' |
| }, |
| 'src/third_party/WebKit/': { |
| 'old_revision': webkit_revision1, |
| 'name': 'blink', |
| 'repository': 'http://src.chromium.org/blink/trunk', |
| 'rolled': True, |
| 'new_revision': webkit_revision2, |
| 'path': 'src/third_party/WebKit/', |
| 'repository_type': 'svn' |
| } |
| } |
| |
| components = chromium_deps.GetChromiumComponentRange( |
| chromium_revision1, chromium_revision2, |
| deps_file_downloader=_GetContentOfDEPS) |
| self.assertEqual(expected_results, components) |
| |
| def _VerifyGitHashForAllComponents(self, deps): |
| self.assertTrue(deps) |
| self.assertTrue(isinstance(deps, dict)) |
| for component in deps.values(): |
| for key in ['revision', 'old_revision', 'new_revision']: |
| if key in component: |
| self.assertTrue(utils.IsGitHash(component[key])) |
| |
| def testComponentRangeCrossGitMigrationPoint(self): |
| # The old revision is from svn. |
| # The new revision is from git. |
| deps = chromium_deps.GetChromiumComponentRange( |
| '291440', |
| '744746cc51ef81c8f8d727fafa46b14d1c03fe44') |
| self._VerifyGitHashForAllComponents(deps) |
| |
| def testGetSvnRevision(self): |
| # For this case, svn revision needs converting to git hash and there will be |
| # .DEPS.git and DEPS. |
| deps = chromium_deps.GetChromiumComponents(284750) |
| self._VerifyGitHashForAllComponents(deps) |
| |
| def testGetGitRevisionWithoutDEPS_dot_GIT(self): |
| # For this case, there is only DEPS, not .DEPS.git. |
| deps = chromium_deps.GetChromiumComponents( |
| 'f8b3fe9660d8dda318800f55d5e29799bbfd43f7') |
| self._VerifyGitHashForAllComponents(deps) |
| |
| |
| def testGetGitRevisionWithDEPS_dot_GIT(self): |
| # For this case, there will be .DEPS.git. |
| deps = chromium_deps.GetChromiumComponents( |
| '8ae88241aa9f224e8ce97250f32469d616e437aa') |
| self._VerifyGitHashForAllComponents(deps) |