Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(529)

Side by Side Diff: tests/gclient_smoketest.py

Issue 6873110: Add --transitive flag. (Closed) Base URL: http://src.chromium.org/svn/trunk/tools/depot_tools/
Patch Set: '' Created 9 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
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 309 matching lines...) Expand 10 before | Expand all | Expand 10 after
320 ('trunk/src@2', 'src'), 320 ('trunk/src@2', 'src'),
321 ('trunk/third_party/foo@2', 'src/third_party/fpp'), 321 ('trunk/third_party/foo@2', 'src/third_party/fpp'),
322 ('trunk/third_party/foo@1', 'src/third_party/foo'), 322 ('trunk/third_party/foo@1', 'src/third_party/foo'),
323 ('trunk/other@2', 'src/other'), 323 ('trunk/other@2', 'src/other'),
324 ('trunk/third_party/foo@2', 'src/third_party/prout')) 324 ('trunk/third_party/foo@2', 'src/third_party/prout'))
325 tree['src/file/other/DEPS'] = ( 325 tree['src/file/other/DEPS'] = (
326 self.FAKE_REPOS.svn_revs[2]['trunk/other/DEPS']) 326 self.FAKE_REPOS.svn_revs[2]['trunk/other/DEPS'])
327 tree['src/svn_hooked1'] = 'svn_hooked1' 327 tree['src/svn_hooked1'] = 'svn_hooked1'
328 self.assertTree(tree) 328 self.assertTree(tree)
329 329
330 def testSyncTransitive(self):
331 # TODO(maruel): safesync.
332 if not self.enabled:
333 return
334 self.gclient(['config', self.svn_base + 'trunk/src/'])
335 # Test unversioned checkout.
M-A Ruel 2011/04/20 15:43:28 This whole part is unneeded since is already teste
Florian Loitsch 2011/04/20 18:32:01 Done.
336 self.parseGclient(['sync', '--deps', 'mac', '--jobs', '1'],
337 ['running', 'running',
338 # This is due to the way svn update is called for a
339 # single file when File() is used in a DEPS file.
340 ('running', os.path.join(self.root_dir, 'src', 'file', 'other')),
341 'running', 'running', 'running', 'running'])
342 tree = self.mangle_svn_tree(
343 ('trunk/src@2', 'src'),
344 ('trunk/third_party/foo@1', 'src/third_party/foo'),
345 ('trunk/other@2', 'src/other'))
346 tree['src/file/other/DEPS'] = (
347 self.FAKE_REPOS.svn_revs[2]['trunk/other/DEPS'])
348 tree['src/svn_hooked1'] = 'svn_hooked1'
349 self.assertTree(tree)
350
351 # Manually remove svn_hooked1 before synching to make sure it's not
352 # recreated.
353 os.remove(join(self.root_dir, 'src', 'svn_hooked1'))
354
355 # Test incremental versioned sync: sync transitively backward.
356 self.parseGclient(
357 ['sync', '--transitive', '--revision', 'src@1', '--deps', 'mac',
358 '--delete_unversioned_trees', '--jobs', '1'],
359 ['running', 'running', 'running', 'running', 'deleting'])
360 tree = self.mangle_svn_tree(
361 ('trunk/src@1', 'src'),
362 ('trunk/third_party/foo@1', 'src/third_party/fpp'),
363 ('trunk/other@1', 'src/other'),
364 ('trunk/third_party/foo@1', 'src/third_party/prout'))
365 tree['src/file/other/DEPS'] = (
366 self.FAKE_REPOS.svn_revs[2]['trunk/other/DEPS'])
367 self.assertTree(tree)
368 # Test incremental sync: delete-unversioned_trees isn't there.
M-A Ruel 2011/04/20 15:43:28 I don't think the remaining of the test adds any v
Florian Loitsch 2011/04/20 18:32:01 Done.
369 self.parseGclient(['sync', '--deps', 'mac', '--jobs', '1'],
370 ['running', 'running', 'running', 'running', 'running'])
371 tree = self.mangle_svn_tree(
372 ('trunk/src@2', 'src'),
373 ('trunk/third_party/foo@1', 'src/third_party/fpp'),
374 ('trunk/third_party/foo@1', 'src/third_party/foo'),
375 ('trunk/other@2', 'src/other'),
376 ('trunk/third_party/foo@1', 'src/third_party/prout'))
377 tree['src/file/other/DEPS'] = (
378 self.FAKE_REPOS.svn_revs[2]['trunk/other/DEPS'])
379 tree['src/svn_hooked1'] = 'svn_hooked1'
380 self.assertTree(tree)
381
330 def testSyncIgnoredSolutionName(self): 382 def testSyncIgnoredSolutionName(self):
331 """TODO(maruel): This will become an error soon.""" 383 """TODO(maruel): This will become an error soon."""
332 if not self.enabled: 384 if not self.enabled:
333 return 385 return
334 self.gclient(['config', self.svn_base + 'trunk/src/']) 386 self.gclient(['config', self.svn_base + 'trunk/src/'])
335 results = self.gclient( 387 results = self.gclient(
336 ['sync', '--deps', 'mac', '-r', 'invalid@1', '--jobs', '1']) 388 ['sync', '--deps', 'mac', '-r', 'invalid@1', '--jobs', '1'])
337 self.checkBlock(results[0], [ 389 self.checkBlock(results[0], [
338 'running', 'running', 390 'running', 'running',
339 # This is due to the way svn update is called for a single file when 391 # This is due to the way svn update is called for a single file when
(...skipping 371 matching lines...) Expand 10 before | Expand all | Expand 10 after
711 def testSync(self): 763 def testSync(self):
712 if not self.enabled: 764 if not self.enabled:
713 return 765 return
714 # TODO(maruel): safesync. 766 # TODO(maruel): safesync.
715 self.gclient(['config', self.git_base + 'repo_1', '--name', 'src']) 767 self.gclient(['config', self.git_base + 'repo_1', '--name', 'src'])
716 # Test unversioned checkout. 768 # Test unversioned checkout.
717 self.parseGclient(['sync', '--deps', 'mac', '--jobs', '1'], 769 self.parseGclient(['sync', '--deps', 'mac', '--jobs', '1'],
718 ['running', 'running', 'running', 'running', 'running']) 770 ['running', 'running', 'running', 'running', 'running'])
719 # TODO(maruel): http://crosbug.com/3582 hooks run even if not matching, must 771 # TODO(maruel): http://crosbug.com/3582 hooks run even if not matching, must
720 # add sync parsing to get the list of updated files. 772 # add sync parsing to get the list of updated files.
721 tree = self.mangle_git_tree(('repo_1@2', 'src'), 773 tree = self.mangle_git_tree(('repo_1@3', 'src'),
722 ('repo_2@1', 'src/repo2'), 774 ('repo_2@1', 'src/repo2'),
723 ('repo_3@2', 'src/repo2/repo_renamed')) 775 ('repo_3@2', 'src/repo2/repo_renamed'))
724 tree['src/git_hooked1'] = 'git_hooked1' 776 tree['src/git_hooked1'] = 'git_hooked1'
725 tree['src/git_hooked2'] = 'git_hooked2' 777 tree['src/git_hooked2'] = 'git_hooked2'
726 self.assertTree(tree) 778 self.assertTree(tree)
727 779
728 # Manually remove git_hooked1 before synching to make sure it's not 780 # Manually remove git_hooked1 before synching to make sure it's not
729 # recreated. 781 # recreated.
730 os.remove(join(self.root_dir, 'src', 'git_hooked1')) 782 os.remove(join(self.root_dir, 'src', 'git_hooked1'))
731 783
732 # Test incremental versioned sync: sync backward. 784 # Test incremental versioned sync: sync backward.
733 self.parseGclient(['sync', '--jobs', '1', '--revision', 785 self.parseGclient(['sync', '--jobs', '1', '--revision',
734 'src@' + self.githash('repo_1', 1), 786 'src@' + self.githash('repo_1', 1),
735 '--deps', 'mac', '--delete_unversioned_trees'], 787 '--deps', 'mac', '--delete_unversioned_trees'],
736 ['running', 'running', 'deleting']) 788 ['running', 'running', 'deleting'])
737 tree = self.mangle_git_tree(('repo_1@1', 'src'), 789 tree = self.mangle_git_tree(('repo_1@1', 'src'),
738 ('repo_2@2', 'src/repo2'), 790 ('repo_2@2', 'src/repo2'),
739 ('repo_3@1', 'src/repo2/repo3'), 791 ('repo_3@1', 'src/repo2/repo3'),
740 ('repo_4@2', 'src/repo4')) 792 ('repo_4@2', 'src/repo4'))
741 tree['src/git_hooked2'] = 'git_hooked2' 793 tree['src/git_hooked2'] = 'git_hooked2'
742 self.assertTree(tree) 794 self.assertTree(tree)
743 # Test incremental sync: delete-unversioned_trees isn't there. 795 # Test incremental sync: delete-unversioned_trees isn't there.
744 self.parseGclient(['sync', '--deps', 'mac', '--jobs', '1'], 796 self.parseGclient(['sync', '--deps', 'mac', '--jobs', '1'],
745 ['running', 'running', 'running']) 797 ['running', 'running', 'running'])
746 tree = self.mangle_git_tree(('repo_1@2', 'src'), 798 tree = self.mangle_git_tree(('repo_1@3', 'src'),
747 ('repo_2@1', 'src/repo2'), 799 ('repo_2@1', 'src/repo2'),
748 ('repo_3@1', 'src/repo2/repo3'), 800 ('repo_3@1', 'src/repo2/repo3'),
749 ('repo_3@2', 'src/repo2/repo_renamed'), 801 ('repo_3@2', 'src/repo2/repo_renamed'),
750 ('repo_4@2', 'src/repo4')) 802 ('repo_4@2', 'src/repo4'))
751 tree['src/git_hooked1'] = 'git_hooked1' 803 tree['src/git_hooked1'] = 'git_hooked1'
752 tree['src/git_hooked2'] = 'git_hooked2' 804 tree['src/git_hooked2'] = 'git_hooked2'
753 self.assertTree(tree) 805 self.assertTree(tree)
754 806
807 #def testSyncTransitive(self):
808 #if not self.enabled:
809 #return
810 ## TODO(maruel): safesync.
811 #self.gclient(['config', self.git_base + 'repo_1', '--name', 'src'])
812 ## Test unversioned checkout.
813 #self.parseGclient(['sync', '--deps', 'mac', '--jobs', '1'],
814 #['running', 'running', 'running', 'running', 'running'])
815 ## TODO(maruel): http://crosbug.com/3582 hooks run even if not matching, mus t
816 ## add sync parsing to get the list of updated files.
817 #tree = self.mangle_git_tree(('repo_1@3', 'src'),
818 #('repo_2@1', 'src/repo2'),
819 #('repo_3@2', 'src/repo2/repo_renamed'))
820 #tree['src/git_hooked1'] = 'git_hooked1'
821 #tree['src/git_hooked2'] = 'git_hooked2'
822 #self.assertTree(tree)
823
824 ## Manually remove git_hooked1 before synching to make sure it's not
825 ## recreated.
826 #os.remove(join(self.root_dir, 'src', 'git_hooked1'))
827
828 ## Test incremental versioned sync: sync backward.
829 #self.parseGclient(['sync', '--transitive', '--jobs', '1', '--revision',
830 #'src@' + self.githash('repo_1', 2),
831 #'--deps', 'mac', '--delete_unversioned_trees'],
832 #['running', 'running', 'deleting'])
833 #tree = self.mangle_git_tree(('repo_1@2', 'src'),
834 #('repo_2@2', 'src/repo2'),
835 #('repo_3@1', 'src/repo2/repo3'),
836 #('repo_4@1', 'src/repo4'))
837 #tree['src/git_hooked2'] = 'git_hooked2'
838 #self.assertTree(tree)
839 ## Test incremental sync: delete-unversioned_trees isn't there.
840 #self.parseGclient(['sync', '--deps', 'mac', '--jobs', '1'],
841 #['running', 'running', 'running'])
842 #tree = self.mangle_git_tree(('repo_1@3', 'src'),
843 #('repo_2@1', 'src/repo2'),
844 #('repo_3@1', 'src/repo2/repo3'),
845 #('repo_3@2', 'src/repo2/repo_renamed'),
846 #('repo_4@1', 'src/repo4'))
847 #tree['src/git_hooked1'] = 'git_hooked1'
848 #tree['src/git_hooked2'] = 'git_hooked2'
849 #self.assertTree(tree)
850
755 def testSyncIgnoredSolutionName(self): 851 def testSyncIgnoredSolutionName(self):
756 """TODO(maruel): This will become an error soon.""" 852 """TODO(maruel): This will become an error soon."""
757 if not self.enabled: 853 if not self.enabled:
758 return 854 return
759 self.gclient(['config', self.git_base + 'repo_1', '--name', 'src']) 855 self.gclient(['config', self.git_base + 'repo_1', '--name', 'src'])
760 self.parseGclient( 856 self.parseGclient(
761 ['sync', '--deps', 'mac', '--jobs', '1', 857 ['sync', '--deps', 'mac', '--jobs', '1',
762 '--revision', 'invalid@' + self.githash('repo_1', 1)], 858 '--revision', 'invalid@' + self.githash('repo_1', 1)],
763 ['running', 'running', 'running', 'running', 'running'], 859 ['running', 'running', 'running', 'running', 'running'],
764 'Please fix your script, having invalid --revision flags ' 860 'Please fix your script, having invalid --revision flags '
765 'will soon considered an error.\n') 861 'will soon considered an error.\n')
766 tree = self.mangle_git_tree(('repo_1@2', 'src'), 862 tree = self.mangle_git_tree(('repo_1@3', 'src'),
767 ('repo_2@1', 'src/repo2'), 863 ('repo_2@1', 'src/repo2'),
768 ('repo_3@2', 'src/repo2/repo_renamed')) 864 ('repo_3@2', 'src/repo2/repo_renamed'))
769 tree['src/git_hooked1'] = 'git_hooked1' 865 tree['src/git_hooked1'] = 'git_hooked1'
770 tree['src/git_hooked2'] = 'git_hooked2' 866 tree['src/git_hooked2'] = 'git_hooked2'
771 self.assertTree(tree) 867 self.assertTree(tree)
772 868
773 def testSyncNoSolutionName(self): 869 def testSyncNoSolutionName(self):
774 if not self.enabled: 870 if not self.enabled:
775 return 871 return
776 # When no solution name is provided, gclient uses the first solution listed. 872 # When no solution name is provided, gclient uses the first solution listed.
(...skipping 11 matching lines...) Expand all
788 if not self.enabled: 884 if not self.enabled:
789 return 885 return
790 # TODO(maruel): safesync. 886 # TODO(maruel): safesync.
791 self.gclient(['config', self.git_base + 'repo_1', '--name', 'src']) 887 self.gclient(['config', self.git_base + 'repo_1', '--name', 'src'])
792 # Test unversioned checkout. 888 # Test unversioned checkout.
793 self.parseGclient(['sync', '--deps', 'mac', '--jobs', '8'], 889 self.parseGclient(['sync', '--deps', 'mac', '--jobs', '8'],
794 ['running', 'running', 'running', 'running', 'running'], 890 ['running', 'running', 'running', 'running', 'running'],
795 untangle=True) 891 untangle=True)
796 # TODO(maruel): http://crosbug.com/3582 hooks run even if not matching, must 892 # TODO(maruel): http://crosbug.com/3582 hooks run even if not matching, must
797 # add sync parsing to get the list of updated files. 893 # add sync parsing to get the list of updated files.
798 tree = self.mangle_git_tree(('repo_1@2', 'src'), 894 tree = self.mangle_git_tree(('repo_1@3', 'src'),
799 ('repo_2@1', 'src/repo2'), 895 ('repo_2@1', 'src/repo2'),
800 ('repo_3@2', 'src/repo2/repo_renamed')) 896 ('repo_3@2', 'src/repo2/repo_renamed'))
801 tree['src/git_hooked1'] = 'git_hooked1' 897 tree['src/git_hooked1'] = 'git_hooked1'
802 tree['src/git_hooked2'] = 'git_hooked2' 898 tree['src/git_hooked2'] = 'git_hooked2'
803 self.assertTree(tree) 899 self.assertTree(tree)
804 900
805 # Manually remove git_hooked1 before synching to make sure it's not 901 # Manually remove git_hooked1 before synching to make sure it's not
806 # recreated. 902 # recreated.
807 os.remove(join(self.root_dir, 'src', 'git_hooked1')) 903 os.remove(join(self.root_dir, 'src', 'git_hooked1'))
808 904
809 # Test incremental versioned sync: sync backward. 905 # Test incremental versioned sync: sync backward.
810 self.parseGclient( 906 self.parseGclient(
811 ['sync', '--revision', 'src@' + self.githash('repo_1', 1), 907 ['sync', '--revision', 'src@' + self.githash('repo_1', 1),
812 '--deps', 'mac', '--delete_unversioned_trees', '--jobs', '8'], 908 '--deps', 'mac', '--delete_unversioned_trees', '--jobs', '8'],
813 ['running', 'running', 'deleting'], 909 ['running', 'running', 'deleting'],
814 untangle=True) 910 untangle=True)
815 tree = self.mangle_git_tree(('repo_1@1', 'src'), 911 tree = self.mangle_git_tree(('repo_1@1', 'src'),
816 ('repo_2@2', 'src/repo2'), 912 ('repo_2@2', 'src/repo2'),
817 ('repo_3@1', 'src/repo2/repo3'), 913 ('repo_3@1', 'src/repo2/repo3'),
818 ('repo_4@2', 'src/repo4')) 914 ('repo_4@2', 'src/repo4'))
819 tree['src/git_hooked2'] = 'git_hooked2' 915 tree['src/git_hooked2'] = 'git_hooked2'
820 self.assertTree(tree) 916 self.assertTree(tree)
821 # Test incremental sync: delete-unversioned_trees isn't there. 917 # Test incremental sync: delete-unversioned_trees isn't there.
822 self.parseGclient(['sync', '--deps', 'mac', '--jobs', '8'], 918 self.parseGclient(['sync', '--deps', 'mac', '--jobs', '8'],
823 ['running', 'running', 'running'], untangle=True) 919 ['running', 'running', 'running'], untangle=True)
824 tree = self.mangle_git_tree(('repo_1@2', 'src'), 920 tree = self.mangle_git_tree(('repo_1@3', 'src'),
825 ('repo_2@1', 'src/repo2'), 921 ('repo_2@1', 'src/repo2'),
826 ('repo_3@1', 'src/repo2/repo3'), 922 ('repo_3@1', 'src/repo2/repo3'),
827 ('repo_3@2', 'src/repo2/repo_renamed'), 923 ('repo_3@2', 'src/repo2/repo_renamed'),
828 ('repo_4@2', 'src/repo4')) 924 ('repo_4@2', 'src/repo4'))
829 tree['src/git_hooked1'] = 'git_hooked1' 925 tree['src/git_hooked1'] = 'git_hooked1'
830 tree['src/git_hooked2'] = 'git_hooked2' 926 tree['src/git_hooked2'] = 'git_hooked2'
831 self.assertTree(tree) 927 self.assertTree(tree)
832 928
833 def testRevertAndStatus(self): 929 def testRevertAndStatus(self):
834 """TODO(maruel): Remove this line once this test is fixed.""" 930 """TODO(maruel): Remove this line once this test is fixed."""
(...skipping 10 matching lines...) Expand all
845 self.assertEquals(0, len(out)) 941 self.assertEquals(0, len(out))
846 942
847 # Revert implies --force implies running hooks without looking at pattern 943 # Revert implies --force implies running hooks without looking at pattern
848 # matching. 944 # matching.
849 results = self.gclient(['revert', '--deps', 'mac']) 945 results = self.gclient(['revert', '--deps', 'mac'])
850 out = results[0].splitlines(False) 946 out = results[0].splitlines(False)
851 # TODO(maruel): http://crosbug.com/3583 It just runs the hooks right now. 947 # TODO(maruel): http://crosbug.com/3583 It just runs the hooks right now.
852 self.assertEquals(13, len(out)) 948 self.assertEquals(13, len(out))
853 self.checkString('', results[1]) 949 self.checkString('', results[1])
854 self.assertEquals(0, results[2]) 950 self.assertEquals(0, results[2])
855 tree = self.mangle_git_tree(('repo_1@2', 'src'), 951 tree = self.mangle_git_tree(('repo_1@3', 'src'),
856 ('repo_2@1', 'src/repo2'), 952 ('repo_2@1', 'src/repo2'),
857 ('repo_3@2', 'src/repo2/repo_renamed')) 953 ('repo_3@2', 'src/repo2/repo_renamed'))
858 # TODO(maruel): http://crosbug.com/3583 This file should have been removed. 954 # TODO(maruel): http://crosbug.com/3583 This file should have been removed.
859 tree[join('src', 'repo2', 'hi')] = 'Hey!' 955 tree[join('src', 'repo2', 'hi')] = 'Hey!'
860 tree['src/git_hooked1'] = 'git_hooked1' 956 tree['src/git_hooked1'] = 'git_hooked1'
861 tree['src/git_hooked2'] = 'git_hooked2' 957 tree['src/git_hooked2'] = 'git_hooked2'
862 self.assertTree(tree) 958 self.assertTree(tree)
863 959
864 results = self.gclient(['status', '--deps', 'mac']) 960 results = self.gclient(['status', '--deps', 'mac'])
865 out = results[0].splitlines(False) 961 out = results[0].splitlines(False)
866 # TODO(maruel): http://crosbug.com/3584 It should output the unversioned 962 # TODO(maruel): http://crosbug.com/3584 It should output the unversioned
867 # files. 963 # files.
868 self.assertEquals(0, len(out)) 964 self.assertEquals(0, len(out))
869 965
870 def testRunHooks(self): 966 def testRunHooks(self):
871 if not self.enabled: 967 if not self.enabled:
872 return 968 return
873 self.gclient(['config', self.git_base + 'repo_1', '--name', 'src']) 969 self.gclient(['config', self.git_base + 'repo_1', '--name', 'src'])
874 self.gclient(['sync', '--deps', 'mac']) 970 self.gclient(['sync', '--deps', 'mac'])
875 tree = self.mangle_git_tree(('repo_1@2', 'src'), 971 tree = self.mangle_git_tree(('repo_1@3', 'src'),
876 ('repo_2@1', 'src/repo2'), 972 ('repo_2@1', 'src/repo2'),
877 ('repo_3@2', 'src/repo2/repo_renamed')) 973 ('repo_3@2', 'src/repo2/repo_renamed'))
878 tree['src/git_hooked1'] = 'git_hooked1' 974 tree['src/git_hooked1'] = 'git_hooked1'
879 tree['src/git_hooked2'] = 'git_hooked2' 975 tree['src/git_hooked2'] = 'git_hooked2'
880 self.assertTree(tree) 976 self.assertTree(tree)
881 977
882 os.remove(join(self.root_dir, 'src', 'git_hooked1')) 978 os.remove(join(self.root_dir, 'src', 'git_hooked1'))
883 os.remove(join(self.root_dir, 'src', 'git_hooked2')) 979 os.remove(join(self.root_dir, 'src', 'git_hooked2'))
884 # runhooks runs all hooks even if not matching by design. 980 # runhooks runs all hooks even if not matching by design.
885 out = self.parseGclient(['runhooks', '--deps', 'mac'], 981 out = self.parseGclient(['runhooks', '--deps', 'mac'],
886 ['running', 'running']) 982 ['running', 'running'])
887 self.assertEquals(1, len(out[0])) 983 self.assertEquals(1, len(out[0]))
888 self.assertEquals(1, len(out[1])) 984 self.assertEquals(1, len(out[1]))
889 tree = self.mangle_git_tree(('repo_1@2', 'src'), 985 tree = self.mangle_git_tree(('repo_1@3', 'src'),
890 ('repo_2@1', 'src/repo2'), 986 ('repo_2@1', 'src/repo2'),
891 ('repo_3@2', 'src/repo2/repo_renamed')) 987 ('repo_3@2', 'src/repo2/repo_renamed'))
892 tree['src/git_hooked1'] = 'git_hooked1' 988 tree['src/git_hooked1'] = 'git_hooked1'
893 tree['src/git_hooked2'] = 'git_hooked2' 989 tree['src/git_hooked2'] = 'git_hooked2'
894 self.assertTree(tree) 990 self.assertTree(tree)
895 991
896 def testRevInfo(self): 992 def testRevInfo(self):
897 if not self.enabled: 993 if not self.enabled:
898 return 994 return
899 self.gclient(['config', self.git_base + 'repo_1', '--name', 'src']) 995 self.gclient(['config', self.git_base + 'repo_1', '--name', 'src'])
900 self.gclient(['sync', '--deps', 'mac']) 996 self.gclient(['sync', '--deps', 'mac'])
901 results = self.gclient(['revinfo', '--deps', 'mac']) 997 results = self.gclient(['revinfo', '--deps', 'mac'])
902 out = ('src: %(base)srepo_1\n' 998 out = ('src: %(base)srepo_1\n'
903 'src/repo2: %(base)srepo_2@%(hash2)s\n' 999 'src/repo2: %(base)srepo_2@%(hash2)s\n'
904 'src/repo2/repo_renamed: %(base)srepo_3\n' % 1000 'src/repo2/repo_renamed: %(base)srepo_3\n' %
905 { 1001 {
906 'base': self.git_base, 1002 'base': self.git_base,
907 'hash2': self.githash('repo_2', 1)[:7], 1003 'hash2': self.githash('repo_2', 1)[:7],
908 }) 1004 })
909 self.check((out, '', 0), results) 1005 self.check((out, '', 0), results)
910 results = self.gclient(['revinfo', '--deps', 'mac', '--actual']) 1006 results = self.gclient(['revinfo', '--deps', 'mac', '--actual'])
911 out = ('src: %(base)srepo_1@%(hash1)s\n' 1007 out = ('src: %(base)srepo_1@%(hash1)s\n'
912 'src/repo2: %(base)srepo_2@%(hash2)s\n' 1008 'src/repo2: %(base)srepo_2@%(hash2)s\n'
913 'src/repo2/repo_renamed: %(base)srepo_3@%(hash3)s\n' % 1009 'src/repo2/repo_renamed: %(base)srepo_3@%(hash3)s\n' %
914 { 1010 {
915 'base': self.git_base, 1011 'base': self.git_base,
916 'hash1': self.githash('repo_1', 2), 1012 'hash1': self.githash('repo_1', 3),
917 'hash2': self.githash('repo_2', 1), 1013 'hash2': self.githash('repo_2', 1),
918 'hash3': self.githash('repo_3', 2), 1014 'hash3': self.githash('repo_3', 2),
919 }) 1015 })
920 self.check((out, '', 0), results) 1016 self.check((out, '', 0), results)
921 1017
922 1018
923 class GClientSmokeBoth(GClientSmokeBase): 1019 class GClientSmokeBoth(GClientSmokeBase):
924 def setUp(self): 1020 def setUp(self):
925 super(GClientSmokeBoth, self).setUp() 1021 super(GClientSmokeBoth, self).setUp()
926 self.enabled = self.FAKE_REPOS.set_up_svn() and self.FAKE_REPOS.set_up_git() 1022 self.enabled = self.FAKE_REPOS.set_up_svn() and self.FAKE_REPOS.set_up_git()
927 1023
928 def testMultiSolutions(self): 1024 def testMultiSolutions(self):
929 if not self.enabled: 1025 if not self.enabled:
930 return 1026 return
931 self.gclient(['config', '--spec', 1027 self.gclient(['config', '--spec',
932 'solutions=[' 1028 'solutions=['
933 '{"name": "src",' 1029 '{"name": "src",'
934 ' "url": "' + self.svn_base + 'trunk/src/"},' 1030 ' "url": "' + self.svn_base + 'trunk/src/"},'
935 '{"name": "src-git",' 1031 '{"name": "src-git",'
936 '"url": "' + self.git_base + 'repo_1"}]']) 1032 '"url": "' + self.git_base + 'repo_1"}]'])
937 self.parseGclient(['sync', '--deps', 'mac', '--jobs', '1'], 1033 self.parseGclient(['sync', '--deps', 'mac', '--jobs', '1'],
938 ['running', 'running', 'running', 1034 ['running', 'running', 'running',
939 # This is due to the way svn update is called for a single 1035 # This is due to the way svn update is called for a single
940 # file when File() is used in a DEPS file. 1036 # file when File() is used in a DEPS file.
941 ('running', self.root_dir + '/src/file/other'), 1037 ('running', self.root_dir + '/src/file/other'),
942 'running', 'running', 'running', 'running', 'running', 'running', 1038 'running', 'running', 'running', 'running', 'running', 'running',
943 'running', 'running']) 1039 'running', 'running'])
944 tree = self.mangle_git_tree(('repo_1@2', 'src-git'), 1040 tree = self.mangle_git_tree(('repo_1@3', 'src-git'),
945 ('repo_2@1', 'src/repo2'), 1041 ('repo_2@1', 'src/repo2'),
946 ('repo_3@2', 'src/repo2/repo_renamed')) 1042 ('repo_3@2', 'src/repo2/repo_renamed'))
947 tree.update(self.mangle_svn_tree( 1043 tree.update(self.mangle_svn_tree(
948 ('trunk/src@2', 'src'), 1044 ('trunk/src@2', 'src'),
949 ('trunk/third_party/foo@1', 'src/third_party/foo'), 1045 ('trunk/third_party/foo@1', 'src/third_party/foo'),
950 ('trunk/other@2', 'src/other'))) 1046 ('trunk/other@2', 'src/other')))
951 tree['src/file/other/DEPS'] = ( 1047 tree['src/file/other/DEPS'] = (
952 self.FAKE_REPOS.svn_revs[2]['trunk/other/DEPS']) 1048 self.FAKE_REPOS.svn_revs[2]['trunk/other/DEPS'])
953 tree['src/git_hooked1'] = 'git_hooked1' 1049 tree['src/git_hooked1'] = 'git_hooked1'
954 tree['src/git_hooked2'] = 'git_hooked2' 1050 tree['src/git_hooked2'] = 'git_hooked2'
955 tree['src/svn_hooked1'] = 'svn_hooked1' 1051 tree['src/svn_hooked1'] = 'svn_hooked1'
956 self.assertTree(tree) 1052 self.assertTree(tree)
957 1053
958 def testMultiSolutionsJobs(self): 1054 def testMultiSolutionsJobs(self):
959 if not self.enabled: 1055 if not self.enabled:
960 return 1056 return
961 self.gclient(['config', '--spec', 1057 self.gclient(['config', '--spec',
962 'solutions=[' 1058 'solutions=['
963 '{"name": "src",' 1059 '{"name": "src",'
964 ' "url": "' + self.svn_base + 'trunk/src/"},' 1060 ' "url": "' + self.svn_base + 'trunk/src/"},'
965 '{"name": "src-git",' 1061 '{"name": "src-git",'
966 '"url": "' + self.git_base + 'repo_1"}]']) 1062 '"url": "' + self.git_base + 'repo_1"}]'])
967 self.parseGclient(['sync', '--deps', 'mac', '--jobs', '8'], 1063 self.parseGclient(['sync', '--deps', 'mac', '--jobs', '8'],
968 ['running', 'running', 'running', 1064 ['running', 'running', 'running', 'running', 'running',
969 # This is due to the way svn update is called for a single 1065 # This is due to the way svn update is called for a single
970 # file when File() is used in a DEPS file. 1066 # file when File() is used in a DEPS file.
971 ('running', self.root_dir + '/src/file/other'), 1067 ('running', self.root_dir + '/src/file/other'),
972 'running', 'running', 'running', 'running', 'running', 'running', 1068 'running', 'running', 'running', 'running',
973 'running', 'running'], 1069 'running', 'running'],
974 untangle=True) 1070 untangle=True)
975 tree = self.mangle_git_tree(('repo_1@2', 'src-git'), 1071 tree = self.mangle_git_tree(('repo_1@3', 'src-git'),
976 ('repo_2@1', 'src/repo2'), 1072 ('repo_2@1', 'src/repo2'),
977 ('repo_3@2', 'src/repo2/repo_renamed')) 1073 ('repo_3@2', 'src/repo2/repo_renamed'))
978 tree.update(self.mangle_svn_tree( 1074 tree.update(self.mangle_svn_tree(
979 ('trunk/src@2', 'src'), 1075 ('trunk/src@2', 'src'),
980 ('trunk/third_party/foo@1', 'src/third_party/foo'), 1076 ('trunk/third_party/foo@1', 'src/third_party/foo'),
981 ('trunk/other@2', 'src/other'))) 1077 ('trunk/other@2', 'src/other')))
982 tree['src/file/other/DEPS'] = ( 1078 tree['src/file/other/DEPS'] = (
983 self.FAKE_REPOS.svn_revs[2]['trunk/other/DEPS']) 1079 self.FAKE_REPOS.svn_revs[2]['trunk/other/DEPS'])
984 tree['src/git_hooked1'] = 'git_hooked1' 1080 tree['src/git_hooked1'] = 'git_hooked1'
985 tree['src/git_hooked2'] = 'git_hooked2' 1081 tree['src/git_hooked2'] = 'git_hooked2'
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
1037 results = self.gclient(['revinfo', '--deps', 'mac', '--actual']) 1133 results = self.gclient(['revinfo', '--deps', 'mac', '--actual'])
1038 out = ('src: %(svn_base)s/src/@2\n' 1134 out = ('src: %(svn_base)s/src/@2\n'
1039 'src-git: %(git_base)srepo_1@%(hash1)s\n' 1135 'src-git: %(git_base)srepo_1@%(hash1)s\n'
1040 'src/file/other: %(svn_base)s/other/DEPS@2\n' 1136 'src/file/other: %(svn_base)s/other/DEPS@2\n'
1041 'src/other: %(svn_base)s/other@2\n' 1137 'src/other: %(svn_base)s/other@2\n'
1042 'src/repo2: %(git_base)srepo_2@%(hash2)s\n' 1138 'src/repo2: %(git_base)srepo_2@%(hash2)s\n'
1043 'src/repo2/repo_renamed: %(git_base)srepo_3@%(hash3)s\n' 1139 'src/repo2/repo_renamed: %(git_base)srepo_3@%(hash3)s\n'
1044 'src/third_party/foo: %(svn_base)s/third_party/foo@1\n') % { 1140 'src/third_party/foo: %(svn_base)s/third_party/foo@1\n') % {
1045 'svn_base': self.svn_base + 'trunk', 1141 'svn_base': self.svn_base + 'trunk',
1046 'git_base': self.git_base, 1142 'git_base': self.git_base,
1047 'hash1': self.githash('repo_1', 2), 1143 'hash1': self.githash('repo_1', 3),
1048 'hash2': self.githash('repo_2', 1), 1144 'hash2': self.githash('repo_2', 1),
1049 'hash3': self.githash('repo_3', 2), 1145 'hash3': self.githash('repo_3', 2),
1050 } 1146 }
1051 self.check((out, '', 0), results) 1147 self.check((out, '', 0), results)
1052 1148
1053 def testRecurse(self): 1149 def testRecurse(self):
1054 if not self.enabled: 1150 if not self.enabled:
1055 return 1151 return
1056 self.gclient(['config', '--spec', 1152 self.gclient(['config', '--spec',
1057 'solutions=[' 1153 'solutions=['
(...skipping 124 matching lines...) Expand 10 before | Expand all | Expand 10 after
1182 1278
1183 if '-c' in sys.argv: 1279 if '-c' in sys.argv:
1184 COVERAGE = True 1280 COVERAGE = True
1185 sys.argv.remove('-c') 1281 sys.argv.remove('-c')
1186 if os.path.exists('.coverage'): 1282 if os.path.exists('.coverage'):
1187 os.remove('.coverage') 1283 os.remove('.coverage')
1188 os.environ['COVERAGE_FILE'] = os.path.join( 1284 os.environ['COVERAGE_FILE'] = os.path.join(
1189 os.path.dirname(os.path.dirname(os.path.abspath(__file__))), 1285 os.path.dirname(os.path.dirname(os.path.abspath(__file__))),
1190 '.coverage') 1286 '.coverage')
1191 unittest.main() 1287 unittest.main()
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698