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')) |