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 |