| OLD | NEW |
| 1 #!/usr/bin/env python | 1 #!/usr/bin/env python |
| 2 # Copyright (c) 2011 The Chromium Authors. All rights reserved. | 2 # Copyright (c) 2011 The Chromium Authors. All rights reserved. |
| 3 # Use of this source code is governed by a BSD-style license that can be | 3 # Use of this source code is governed by a BSD-style license that can be |
| 4 # found in the LICENSE file. | 4 # found in the LICENSE file. |
| 5 | 5 |
| 6 """Smoke tests for gclient.py. | 6 """Smoke tests for gclient.py. |
| 7 | 7 |
| 8 Shell out 'gclient' and run basic conformance tests. | 8 Shell out 'gclient' and run basic conformance tests. |
| 9 | 9 |
| 10 This test assumes GClientSmokeBase.URL_BASE is valid. | 10 This test assumes GClientSmokeBase.URL_BASE is valid. |
| (...skipping 790 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 801 ('repo_3@2', 'src/repo2/repo_renamed')) | 801 ('repo_3@2', 'src/repo2/repo_renamed')) |
| 802 tree['src/git_hooked1'] = 'git_hooked1' | 802 tree['src/git_hooked1'] = 'git_hooked1' |
| 803 tree['src/git_hooked2'] = 'git_hooked2' | 803 tree['src/git_hooked2'] = 'git_hooked2' |
| 804 self.assertTree(tree) | 804 self.assertTree(tree) |
| 805 | 805 |
| 806 # Manually remove git_hooked1 before synching to make sure it's not | 806 # Manually remove git_hooked1 before synching to make sure it's not |
| 807 # recreated. | 807 # recreated. |
| 808 os.remove(join(self.root_dir, 'src', 'git_hooked1')) | 808 os.remove(join(self.root_dir, 'src', 'git_hooked1')) |
| 809 | 809 |
| 810 # Test incremental versioned sync: sync backward. | 810 # Test incremental versioned sync: sync backward. |
| 811 diffdir = os.path.join(self.root_dir, 'src', 'repo2', 'repo_renamed') |
| 811 self.parseGclient(['sync', '--jobs', '1', '--revision', | 812 self.parseGclient(['sync', '--jobs', '1', '--revision', |
| 812 'src@' + self.githash('repo_1', 1), | 813 'src@' + self.githash('repo_1', 1), |
| 813 '--deps', 'mac', '--delete_unversioned_trees'], | 814 '--deps', 'mac', '--delete_unversioned_trees'], |
| 814 ['running', 'running', 'deleting']) | 815 ['running', 'running', ('running', diffdir), 'deleting']) |
| 815 tree = self.mangle_git_tree(('repo_1@1', 'src'), | 816 tree = self.mangle_git_tree(('repo_1@1', 'src'), |
| 816 ('repo_2@2', 'src/repo2'), | 817 ('repo_2@2', 'src/repo2'), |
| 817 ('repo_3@1', 'src/repo2/repo3'), | 818 ('repo_3@1', 'src/repo2/repo3'), |
| 818 ('repo_4@2', 'src/repo4')) | 819 ('repo_4@2', 'src/repo4')) |
| 819 tree['src/git_hooked2'] = 'git_hooked2' | 820 tree['src/git_hooked2'] = 'git_hooked2' |
| 820 self.assertTree(tree) | 821 self.assertTree(tree) |
| 821 # Test incremental sync: delete-unversioned_trees isn't there. | 822 # Test incremental sync: delete-unversioned_trees isn't there. |
| 823 expect3 = ('running', os.path.join(self.root_dir, 'src', 'repo2', 'repo3')) |
| 824 expect4 = ('running', os.path.join(self.root_dir, 'src', 'repo4')) |
| 822 self.parseGclient(['sync', '--deps', 'mac', '--jobs', '1'], | 825 self.parseGclient(['sync', '--deps', 'mac', '--jobs', '1'], |
| 823 ['running', 'running', 'running']) | 826 ['running', 'running', 'running', expect3, expect4]) |
| 824 tree = self.mangle_git_tree(('repo_1@2', 'src'), | 827 tree = self.mangle_git_tree(('repo_1@2', 'src'), |
| 825 ('repo_2@1', 'src/repo2'), | 828 ('repo_2@1', 'src/repo2'), |
| 826 ('repo_3@1', 'src/repo2/repo3'), | 829 ('repo_3@1', 'src/repo2/repo3'), |
| 827 ('repo_3@2', 'src/repo2/repo_renamed'), | 830 ('repo_3@2', 'src/repo2/repo_renamed'), |
| 828 ('repo_4@2', 'src/repo4')) | 831 ('repo_4@2', 'src/repo4')) |
| 829 tree['src/git_hooked1'] = 'git_hooked1' | 832 tree['src/git_hooked1'] = 'git_hooked1' |
| 830 tree['src/git_hooked2'] = 'git_hooked2' | 833 tree['src/git_hooked2'] = 'git_hooked2' |
| 831 self.assertTree(tree) | 834 self.assertTree(tree) |
| 832 | 835 |
| 833 def testSyncIgnoredSolutionName(self): | 836 def testSyncIgnoredSolutionName(self): |
| (...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 878 ('repo_3@2', 'src/repo2/repo_renamed')) | 881 ('repo_3@2', 'src/repo2/repo_renamed')) |
| 879 tree['src/git_hooked1'] = 'git_hooked1' | 882 tree['src/git_hooked1'] = 'git_hooked1' |
| 880 tree['src/git_hooked2'] = 'git_hooked2' | 883 tree['src/git_hooked2'] = 'git_hooked2' |
| 881 self.assertTree(tree) | 884 self.assertTree(tree) |
| 882 | 885 |
| 883 # Manually remove git_hooked1 before synching to make sure it's not | 886 # Manually remove git_hooked1 before synching to make sure it's not |
| 884 # recreated. | 887 # recreated. |
| 885 os.remove(join(self.root_dir, 'src', 'git_hooked1')) | 888 os.remove(join(self.root_dir, 'src', 'git_hooked1')) |
| 886 | 889 |
| 887 # Test incremental versioned sync: sync backward. | 890 # Test incremental versioned sync: sync backward. |
| 891 expect3 = ('running', |
| 892 os.path.join(self.root_dir, 'src', 'repo2', 'repo_renamed')) |
| 888 self.parseGclient( | 893 self.parseGclient( |
| 889 ['sync', '--revision', 'src@' + self.githash('repo_1', 1), | 894 ['sync', '--revision', 'src@' + self.githash('repo_1', 1), |
| 890 '--deps', 'mac', '--delete_unversioned_trees', '--jobs', '8'], | 895 '--deps', 'mac', '--delete_unversioned_trees', '--jobs', '8'], |
| 891 ['running', 'running', 'deleting'], | 896 ['running', 'running', expect3, 'deleting'], |
| 892 untangle=True) | 897 untangle=True) |
| 893 tree = self.mangle_git_tree(('repo_1@1', 'src'), | 898 tree = self.mangle_git_tree(('repo_1@1', 'src'), |
| 894 ('repo_2@2', 'src/repo2'), | 899 ('repo_2@2', 'src/repo2'), |
| 895 ('repo_3@1', 'src/repo2/repo3'), | 900 ('repo_3@1', 'src/repo2/repo3'), |
| 896 ('repo_4@2', 'src/repo4')) | 901 ('repo_4@2', 'src/repo4')) |
| 897 tree['src/git_hooked2'] = 'git_hooked2' | 902 tree['src/git_hooked2'] = 'git_hooked2' |
| 898 self.assertTree(tree) | 903 self.assertTree(tree) |
| 899 # Test incremental sync: delete-unversioned_trees isn't there. | 904 # Test incremental sync: delete-unversioned_trees isn't there. |
| 905 expect4 = os.path.join(self.root_dir, 'src', 'repo2', 'repo3') |
| 906 expect5 = os.path.join(self.root_dir, 'src', 'repo4') |
| 900 self.parseGclient(['sync', '--deps', 'mac', '--jobs', '8'], | 907 self.parseGclient(['sync', '--deps', 'mac', '--jobs', '8'], |
| 901 ['running', 'running', 'running'], untangle=True) | 908 ['running', 'running', 'running', |
| 909 ('running', expect4), |
| 910 ('running', expect5)], |
| 911 untangle=True) |
| 902 tree = self.mangle_git_tree(('repo_1@2', 'src'), | 912 tree = self.mangle_git_tree(('repo_1@2', 'src'), |
| 903 ('repo_2@1', 'src/repo2'), | 913 ('repo_2@1', 'src/repo2'), |
| 904 ('repo_3@1', 'src/repo2/repo3'), | 914 ('repo_3@1', 'src/repo2/repo3'), |
| 905 ('repo_3@2', 'src/repo2/repo_renamed'), | 915 ('repo_3@2', 'src/repo2/repo_renamed'), |
| 906 ('repo_4@2', 'src/repo4')) | 916 ('repo_4@2', 'src/repo4')) |
| 907 tree['src/git_hooked1'] = 'git_hooked1' | 917 tree['src/git_hooked1'] = 'git_hooked1' |
| 908 tree['src/git_hooked2'] = 'git_hooked2' | 918 tree['src/git_hooked2'] = 'git_hooked2' |
| 909 self.assertTree(tree) | 919 self.assertTree(tree) |
| 910 | 920 |
| 911 def testRevertAndStatus(self): | 921 def testRevertAndStatus(self): |
| 912 """TODO(maruel): Remove this line once this test is fixed.""" | 922 """TODO(maruel): Remove this line once this test is fixed.""" |
| 913 if not self.enabled: | 923 if not self.enabled: |
| 914 return | 924 return |
| 915 self.gclient(['config', self.git_base + 'repo_1', '--name', 'src']) | 925 self.gclient(['config', self.git_base + 'repo_1', '--name', 'src']) |
| 916 # Tested in testSync. | 926 # Tested in testSync. |
| 917 self.gclient(['sync', '--deps', 'mac']) | 927 self.gclient(['sync', '--deps', 'mac']) |
| 918 write(join(self.root_dir, 'src', 'repo2', 'hi'), 'Hey!') | 928 write(join(self.root_dir, 'src', 'repo2', 'hi'), 'Hey!') |
| 919 | 929 |
| 920 out = self.parseGclient(['status', '--deps', 'mac'], []) | 930 expected1 = ('running', os.path.join(self.root_dir, 'src')) |
| 931 expected2 = ('running', os.path.join(expected1[1], 'repo2')) |
| 932 expected3 = ('running', os.path.join(expected2[1], 'repo_renamed')) |
| 933 out = self.parseGclient(['status', '--deps', 'mac'], |
| 934 [expected1, expected2, expected3]) |
| 921 # TODO(maruel): http://crosbug.com/3584 It should output the unversioned | 935 # TODO(maruel): http://crosbug.com/3584 It should output the unversioned |
| 922 # files. | 936 # files. |
| 923 self.assertEquals(0, len(out)) | 937 self.assertEquals(3, len(out)) |
| 924 | 938 |
| 925 # Revert implies --force implies running hooks without looking at pattern | 939 # Revert implies --force implies running hooks without looking at pattern |
| 926 # matching. | 940 # matching. |
| 927 results = self.gclient(['revert', '--deps', 'mac']) | 941 results = self.gclient(['revert', '--deps', 'mac']) |
| 928 out = results[0].splitlines(False) | 942 out = results[0].splitlines(False) |
| 929 # TODO(maruel): http://crosbug.com/3583 It just runs the hooks right now. | 943 # TODO(maruel): http://crosbug.com/3583 It just runs the hooks right now. |
| 930 self.assertEquals(13, len(out)) | 944 self.assertEquals(13, len(out)) |
| 931 self.checkString('', results[1]) | 945 self.checkString('', results[1]) |
| 932 self.assertEquals(0, results[2]) | 946 self.assertEquals(0, results[2]) |
| 933 tree = self.mangle_git_tree(('repo_1@2', 'src'), | 947 tree = self.mangle_git_tree(('repo_1@2', 'src'), |
| 934 ('repo_2@1', 'src/repo2'), | 948 ('repo_2@1', 'src/repo2'), |
| 935 ('repo_3@2', 'src/repo2/repo_renamed')) | 949 ('repo_3@2', 'src/repo2/repo_renamed')) |
| 936 # TODO(maruel): http://crosbug.com/3583 This file should have been removed. | 950 # TODO(maruel): http://crosbug.com/3583 This file should have been removed. |
| 937 tree[join('src', 'repo2', 'hi')] = 'Hey!' | 951 tree[join('src', 'repo2', 'hi')] = 'Hey!' |
| 938 tree['src/git_hooked1'] = 'git_hooked1' | 952 tree['src/git_hooked1'] = 'git_hooked1' |
| 939 tree['src/git_hooked2'] = 'git_hooked2' | 953 tree['src/git_hooked2'] = 'git_hooked2' |
| 940 self.assertTree(tree) | 954 self.assertTree(tree) |
| 941 | 955 |
| 942 results = self.gclient(['status', '--deps', 'mac']) | 956 results = self.gclient(['status', '--deps', 'mac']) |
| 943 out = results[0].splitlines(False) | 957 out = results[0].splitlines(False) |
| 944 # TODO(maruel): http://crosbug.com/3584 It should output the unversioned | 958 # TODO(maruel): http://crosbug.com/3584 It should output the unversioned |
| 945 # files. | 959 # files. |
| 946 self.assertEquals(0, len(out)) | 960 self.assertEquals(6, len(out)) |
| 947 | 961 |
| 948 def testRunHooks(self): | 962 def testRunHooks(self): |
| 949 if not self.enabled: | 963 if not self.enabled: |
| 950 return | 964 return |
| 951 self.gclient(['config', self.git_base + 'repo_1', '--name', 'src']) | 965 self.gclient(['config', self.git_base + 'repo_1', '--name', 'src']) |
| 952 self.gclient(['sync', '--deps', 'mac']) | 966 self.gclient(['sync', '--deps', 'mac']) |
| 953 tree = self.mangle_git_tree(('repo_1@2', 'src'), | 967 tree = self.mangle_git_tree(('repo_1@2', 'src'), |
| 954 ('repo_2@1', 'src/repo2'), | 968 ('repo_2@1', 'src/repo2'), |
| 955 ('repo_3@2', 'src/repo2/repo_renamed')) | 969 ('repo_3@2', 'src/repo2/repo_renamed')) |
| 956 tree['src/git_hooked1'] = 'git_hooked1' | 970 tree['src/git_hooked1'] = 'git_hooked1' |
| (...skipping 308 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1265 | 1279 |
| 1266 if '-c' in sys.argv: | 1280 if '-c' in sys.argv: |
| 1267 COVERAGE = True | 1281 COVERAGE = True |
| 1268 sys.argv.remove('-c') | 1282 sys.argv.remove('-c') |
| 1269 if os.path.exists('.coverage'): | 1283 if os.path.exists('.coverage'): |
| 1270 os.remove('.coverage') | 1284 os.remove('.coverage') |
| 1271 os.environ['COVERAGE_FILE'] = os.path.join( | 1285 os.environ['COVERAGE_FILE'] = os.path.join( |
| 1272 os.path.dirname(os.path.dirname(os.path.abspath(__file__))), | 1286 os.path.dirname(os.path.dirname(os.path.abspath(__file__))), |
| 1273 '.coverage') | 1287 '.coverage') |
| 1274 unittest.main() | 1288 unittest.main() |
| OLD | NEW |