Chromium Code Reviews| Index: tests/gclient_smoketest.py | 
| diff --git a/tests/gclient_smoketest.py b/tests/gclient_smoketest.py | 
| index b8673236b743dcbc3f79eed153d616587c9d69af..b88209379c6073eda6d0a96b2680af023ccac417 100755 | 
| --- a/tests/gclient_smoketest.py | 
| +++ b/tests/gclient_smoketest.py | 
| @@ -53,25 +53,28 @@ class GClientSmokeBase(FakeReposTestBase): | 
| return (stdout.replace('\r\n', '\n'), stderr.replace('\r\n', '\n'), | 
| process.returncode) | 
| + def untangle(self, stdout): | 
| + tasks = {} | 
| + remaining = [] | 
| + for line in stdout.splitlines(False): | 
| + m = re.match(r'^(\d)+>(.*)$', line) | 
| + if not m: | 
| + remaining.append(line) | 
| + else: | 
| + self.assertEquals([], remaining) | 
| + tasks.setdefault(int(m.group(1)), []).append(m.group(2)) | 
| + out = [] | 
| + for key in sorted(tasks.iterkeys()): | 
| + out.extend(tasks[key]) | 
| + out.extend(remaining) | 
| + return '\n'.join(out) | 
| + | 
| def parseGclient(self, cmd, items, expected_stderr='', untangle=False): | 
| """Parse gclient's output to make it easier to test. | 
| If untangle is True, tries to sort out the output from parallel checkout.""" | 
| (stdout, stderr, returncode) = self.gclient(cmd) | 
| if untangle: | 
| - tasks = {} | 
| - remaining = [] | 
| - for line in stdout.splitlines(False): | 
| - m = re.match(r'^(\d)+>(.*)$', line) | 
| - if not m: | 
| - remaining.append(line) | 
| - else: | 
| - self.assertEquals([], remaining) | 
| - tasks.setdefault(int(m.group(1)), []).append(m.group(2)) | 
| - out = [] | 
| - for key in sorted(tasks.iterkeys()): | 
| - out.extend(tasks[key]) | 
| - out.extend(remaining) | 
| - stdout = '\n'.join(out) | 
| + stdout = self.untangle(stdout) | 
| self.checkString(expected_stderr, stderr) | 
| self.assertEquals(0, returncode) | 
| return self.checkBlock(stdout, items) | 
| @@ -610,17 +613,17 @@ class GClientSmokeSVN(GClientSmokeBase): | 
| out = self.parseGclient( | 
| ['status', '--deps', 'mac', '--verbose', '--jobs', '1'], | 
| [['running', join(self.root_dir, 'src')], | 
| - ['running', join(self.root_dir, 'src', 'third_party', 'fpp')], | 
| ['running', join(self.root_dir, 'src', 'other')], | 
| + ['running', join(self.root_dir, 'src', 'third_party', 'fpp')], | 
| ['running', join(self.root_dir, 'src', 'third_party', 'prout')]]) | 
| out = self.svnBlockCleanup(out) | 
| self.checkString('other', out[0][1]) | 
| self.checkString(join('third_party', 'fpp'), out[0][2]) | 
| self.checkString(join('third_party', 'prout'), out[0][3]) | 
| - self.checkString('hi', out[2][1]) | 
| + self.checkString('hi', out[1][1]) | 
| self.assertEquals(4, len(out[0])) | 
| - self.assertEquals(1, len(out[1])) | 
| - self.assertEquals(2, len(out[2])) | 
| + self.assertEquals(2, len(out[1])) | 
| + self.assertEquals(1, len(out[2])) | 
| self.assertEquals(1, len(out[3])) | 
| self.assertEquals(4, len(out)) | 
| @@ -1048,11 +1051,6 @@ class GClientSmokeBoth(GClientSmokeBase): | 
| self.assertTree(tree) | 
| def testMultiSolutionsJobs(self): | 
| - print >> sys.stderr, ( | 
| - 'Warning: testMultiSolutionsJobs is temporarily disabled') | 
| - return | 
| - # unreachable code | 
| - # pylint: disable=W0101 | 
| if not self.enabled: | 
| return | 
| self.gclient(['config', '--spec', | 
| @@ -1061,14 +1059,14 @@ class GClientSmokeBoth(GClientSmokeBase): | 
| ' "url": "' + self.svn_base + 'trunk/src/"},' | 
| '{"name": "src-git",' | 
| '"url": "' + self.git_base + 'repo_1"}]']) | 
| - self.parseGclient(['sync', '--deps', 'mac', '--jobs', '8'], | 
| - ['running', 'running', 'running', | 
| - # This is due to the way svn update is called for a single | 
| - # file when File() is used in a DEPS file. | 
| - ('running', self.root_dir + '/src/file/other'), | 
| - 'running', 'running', 'running', 'running', 'running', 'running', | 
| - 'running', 'running'], | 
| - untangle=True) | 
| + # There is no guarantee that the ordering will be consistent. | 
| + (stdout, stderr, returncode) = self.gclient( | 
| + ['sync', '--deps', 'mac', '--jobs', '8']) | 
| + stdout = self.untangle(stdout) | 
| + self.checkString('', stderr) | 
| + self.assertEquals(0, returncode) | 
| + results = self.splitBlock(stdout) | 
| + self.assertEquals(12, len(results)) | 
| 
 
M-A Ruel
2011/10/11 02:29:36
This verifies that all 12 steps went on and the tr
 
 | 
| tree = self.mangle_git_tree(('repo_1@2', 'src-git'), | 
| ('repo_2@1', 'src/repo2'), | 
| ('repo_3@2', 'src/repo2/repo_renamed')) |