| Index: appengine/findit/common/test/chrome_dependency_fetcher_test.py
 | 
| diff --git a/appengine/findit/common/test/chrome_dependency_fetcher_test.py b/appengine/findit/common/test/chrome_dependency_fetcher_test.py
 | 
| index 472a9bccb1534103515d48bc531154b924b0c27f..2e5834766b32c38c65a0700d7f29eebea28c5f90 100644
 | 
| --- a/appengine/findit/common/test/chrome_dependency_fetcher_test.py
 | 
| +++ b/appengine/findit/common/test/chrome_dependency_fetcher_test.py
 | 
| @@ -9,14 +9,23 @@ from testing_utils import testing
 | 
|  
 | 
|  from common import chrome_dependency_fetcher
 | 
|  from common import deps_parser
 | 
| -from common import git_repository
 | 
| -from common import repository
 | 
|  from common import retry_http_client
 | 
|  from common import http_client_appengine
 | 
|  from common.dependency import Dependency, DependencyRoll
 | 
| +from lib.gitiles.git_repository import GitRepository
 | 
| +from lib.gitiles import gitiles_repository
 | 
|  
 | 
|  
 | 
| -class DummyGitRepository(repository.Repository):
 | 
| +class MockGitilesRepository(GitRepository):
 | 
| +  """A class for mocking GitilesRepository.
 | 
| +
 | 
| +  N.B., in order to use this class for mocking, every module we want to
 | 
| +  test with a mock GitilesRepository must not import that class directly.
 | 
| +  Instead they must import the gitiles_repository module and rely on
 | 
| +  dynamic dispatch to resolve the GitilesRepository attribute. Otherwise
 | 
| +  those modules will hold direct links to the real GitilesRepository
 | 
| +  class, and so won't dispatch into this mock class for our unit tests."""
 | 
| +
 | 
|    RESPONSES = {}
 | 
|  
 | 
|    def __init__(self, *_):
 | 
| @@ -30,15 +39,15 @@ class ChromiumDEPSTest(testing.AppengineTestCase):
 | 
|    DEPS_GIT = '.DEPS.git'
 | 
|    DEPS = 'DEPS'
 | 
|    deps_downloader = chrome_dependency_fetcher.DEPSDownloader(
 | 
| -      DummyGitRepository())
 | 
| +      MockGitilesRepository())
 | 
|    chrome_dep_fetcher = chrome_dependency_fetcher.ChromeDependencyFetcher(
 | 
| -      DummyGitRepository())
 | 
| +      MockGitilesRepository())
 | 
|  
 | 
|    def testUseDEPS_GIT(self):
 | 
|      revision = 'abc'
 | 
|      expected_content = '.DEPS.git content'
 | 
|  
 | 
| -    DummyGitRepository.RESPONSES = {
 | 
| +    MockGitilesRepository.RESPONSES = {
 | 
|          self.DEPS_GIT: {
 | 
|              revision: expected_content
 | 
|          },
 | 
| @@ -55,7 +64,7 @@ class ChromiumDEPSTest(testing.AppengineTestCase):
 | 
|      revision = 'abc'
 | 
|      expected_content = 'DEPS test'
 | 
|  
 | 
| -    DummyGitRepository.RESPONSES = {
 | 
| +    MockGitilesRepository.RESPONSES = {
 | 
|          self.DEPS_GIT: {
 | 
|              revision: '.DEPS.git content'
 | 
|          },
 | 
| @@ -64,7 +73,7 @@ class ChromiumDEPSTest(testing.AppengineTestCase):
 | 
|          },
 | 
|      }
 | 
|  
 | 
| -    self.mock(git_repository, 'GitRepository', DummyGitRepository)
 | 
| +    self.mock(gitiles_repository, 'GitilesRepository', MockGitilesRepository)
 | 
|  
 | 
|      content = self.deps_downloader.Load(
 | 
|          'https://src.git', revision, 'DEPS')
 | 
| @@ -74,13 +83,13 @@ class ChromiumDEPSTest(testing.AppengineTestCase):
 | 
|      revision = 'abc'
 | 
|      expected_content = 'DEPS test'
 | 
|  
 | 
| -    DummyGitRepository.RESPONSES = {
 | 
| +    MockGitilesRepository.RESPONSES = {
 | 
|          self.DEPS: {
 | 
|              revision: expected_content
 | 
|          },
 | 
|      }
 | 
|  
 | 
| -    self.mock(git_repository, 'GitRepository', DummyGitRepository)
 | 
| +    self.mock(gitiles_repository, 'GitilesRepository', MockGitilesRepository)
 | 
|  
 | 
|      content = self.deps_downloader.Load(
 | 
|          'https://src.git', revision, 'NONEXISTENT_DEPS')
 | 
| @@ -90,7 +99,7 @@ class ChromiumDEPSTest(testing.AppengineTestCase):
 | 
|      revision = 'abc'
 | 
|      expected_content = 'slave DEPS content'
 | 
|  
 | 
| -    DummyGitRepository.RESPONSES = {
 | 
| +    MockGitilesRepository.RESPONSES = {
 | 
|          self.DEPS_GIT: {
 | 
|              revision: '.DEPS.git content'
 | 
|          },
 | 
| @@ -99,14 +108,14 @@ class ChromiumDEPSTest(testing.AppengineTestCase):
 | 
|          },
 | 
|      }
 | 
|  
 | 
| -    self.mock(git_repository, 'GitRepository', DummyGitRepository)
 | 
| +    self.mock(gitiles_repository, 'GitilesRepository', MockGitilesRepository)
 | 
|  
 | 
|      content = self.deps_downloader.Load(
 | 
|          'https://src.git', revision, 'slave.DEPS')
 | 
|      self.assertEqual(expected_content, content)
 | 
|  
 | 
|    def testFailedToPullDEPSFile(self):
 | 
| -    DummyGitRepository.RESPONSES = {}
 | 
| +    MockGitilesRepository.RESPONSES = {}
 | 
|  
 | 
|      self.assertRaisesRegexp(Exception, 'Failed to pull DEPS file.',
 | 
|                              self.deps_downloader.Load,
 | 
| @@ -120,7 +129,7 @@ class ChromiumDEPSTest(testing.AppengineTestCase):
 | 
|      self.mock(http_client_appengine.HttpClientAppengine, '_Get', _MockGet)
 | 
|  
 | 
|      deps_downloader = chrome_dependency_fetcher.DEPSDownloader(
 | 
| -        git_repository.GitRepository(
 | 
| +        gitiles_repository.GitilesRepository(
 | 
|              http_client=http_client_appengine.HttpClientAppengine()))
 | 
|      content = deps_downloader.Load(
 | 
|          'http://chrome-internal', '50.0.1234.0', 'DEPS')
 | 
| @@ -190,7 +199,7 @@ class ChromiumDEPSTest(testing.AppengineTestCase):
 | 
|        child2_dep.SetParent(root_dep)
 | 
|        grand_child1.SetParent(child1_dep)
 | 
|  
 | 
| -    self.mock(git_repository, 'GitRepository', DummyGitRepository)
 | 
| +    self.mock(gitiles_repository, 'GitilesRepository', MockGitilesRepository)
 | 
|      self.mock(deps_parser, 'UpdateDependencyTree', DummyUpdateDependencyTree)
 | 
|  
 | 
|      dependency_dict = self.chrome_dep_fetcher.GetDependency(
 | 
| 
 |