| Index: testing_support/fake_repos.py
 | 
| diff --git a/testing_support/fake_repos.py b/testing_support/fake_repos.py
 | 
| index 8a5cf6be0736289896f79efe8c81f8d56ac636c1..25e3a9be1c1be6b4ec8415a23f56214e15e979d5 100755
 | 
| --- a/testing_support/fake_repos.py
 | 
| +++ b/testing_support/fake_repos.py
 | 
| @@ -752,6 +752,82 @@ class FakeRepoTransitive(FakeReposBase):
 | 
|      pass
 | 
|  
 | 
|  
 | 
| +class FakeRepoSkiaDEPS(FakeReposBase):
 | 
| +  """Simulates the Skia DEPS transition in Chrome."""
 | 
| +
 | 
| +  NB_GIT_REPOS = 5
 | 
| +
 | 
| +  DEPS_svn_pre = """deps = {
 | 
| +  'src/third_party/skia/gyp': '%(svn_base)sskia/gyp',
 | 
| +  'src/third_party/skia/include': '%(svn_base)sskia/include',
 | 
| +  'src/third_party/skia/src': '%(svn_base)sskia/src',
 | 
| +}"""
 | 
| +
 | 
| +  DEPS_git_pre = """deps = {
 | 
| +  'src/third_party/skia/gyp': '%(git_base)srepo_3',
 | 
| +  'src/third_party/skia/include': '%(git_base)srepo_4',
 | 
| +  'src/third_party/skia/src': '%(git_base)srepo_5',
 | 
| +}"""
 | 
| +
 | 
| +  DEPS_post = """deps = {
 | 
| +  'src/third_party/skia': '%(git_base)srepo_1',
 | 
| +}"""
 | 
| +
 | 
| +  def populateSvn(self):
 | 
| +    """Create revisions which simulate the Skia DEPS transition in Chrome."""
 | 
| +    subprocess2.check_call(
 | 
| +        ['svn', 'checkout', self.svn_base, self.svn_checkout,
 | 
| +         '-q', '--non-interactive', '--no-auth-cache',
 | 
| +         '--username', self.USERS[0][0], '--password', self.USERS[0][1]])
 | 
| +    assert os.path.isdir(join(self.svn_checkout, '.svn'))
 | 
| +
 | 
| +    # Skia repo.
 | 
| +    self._commit_svn({
 | 
| +        'skia/skia_base_file': 'root-level file.',
 | 
| +        'skia/gyp/gyp_file': 'file in the gyp directory',
 | 
| +        'skia/include/include_file': 'file in the include directory',
 | 
| +        'skia/src/src_file': 'file in the src directory',
 | 
| +    })
 | 
| +
 | 
| +    # Chrome repo.
 | 
| +    self._commit_svn({
 | 
| +        'trunk/src/DEPS': self.DEPS_svn_pre % {'svn_base': self.svn_base},
 | 
| +        'trunk/src/myfile': 'svn/trunk/src@1'
 | 
| +    })
 | 
| +    self._commit_svn({
 | 
| +        'trunk/src/DEPS': self.DEPS_post % {'git_base': self.git_base},
 | 
| +        'trunk/src/myfile': 'svn/trunk/src@2'
 | 
| +    })
 | 
| +
 | 
| +  def populateGit(self):
 | 
| +    # Skia repo.
 | 
| +    self._commit_git('repo_1', {
 | 
| +        'skia_base_file': 'root-level file.',
 | 
| +        'gyp/gyp_file': 'file in the gyp directory',
 | 
| +        'include/include_file': 'file in the include directory',
 | 
| +        'src/src_file': 'file in the src directory',
 | 
| +    })
 | 
| +    self._commit_git('repo_3', { # skia/gyp
 | 
| +        'gyp_file': 'file in the gyp directory',
 | 
| +    })
 | 
| +    self._commit_git('repo_4', { # skia/include
 | 
| +        'include_file': 'file in the include directory',
 | 
| +    })
 | 
| +    self._commit_git('repo_5', { # skia/src
 | 
| +        'src_file': 'file in the src directory',
 | 
| +    })
 | 
| +
 | 
| +    # Chrome repo.
 | 
| +    self._commit_git('repo_2', {
 | 
| +        'DEPS': self.DEPS_git_pre % {'git_base': self.git_base},
 | 
| +        'myfile': 'svn/trunk/src@1'
 | 
| +    })
 | 
| +    self._commit_git('repo_2', {
 | 
| +        'DEPS': self.DEPS_post % {'git_base': self.git_base},
 | 
| +        'myfile': 'svn/trunk/src@2'
 | 
| +    })
 | 
| +
 | 
| +
 | 
|  class FakeReposTestBase(trial_dir.TestCase):
 | 
|    """This is vaguely inspired by twisted."""
 | 
|    # Static FakeRepos instances. Lazy loaded.
 | 
| 
 |