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

Side by Side Diff: tests/gclient_smoketest.py

Issue 227163002: Revamped terminal output for update. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/tools/depot_tools
Patch Set: rebase Created 6 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
« no previous file with comments | « tests/gclient_scm_test.py ('k') | tests/gclient_test.py » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 #!/usr/bin/env python 1 #!/usr/bin/env python
2 # Copyright (c) 2012 The Chromium Authors. All rights reserved. 2 # Copyright (c) 2012 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 526 matching lines...) Expand 10 before | Expand all | Expand 10 after
537 self.checkString('hi', out[1][1]) 537 self.checkString('hi', out[1][1])
538 self.assertEquals(5, len(out[0])) 538 self.assertEquals(5, len(out[0]))
539 self.assertEquals(2, len(out[1])) 539 self.assertEquals(2, len(out[1]))
540 540
541 # Revert implies --force implies running hooks without looking at pattern 541 # Revert implies --force implies running hooks without looking at pattern
542 # matching. 542 # matching.
543 results = self.gclient(['revert', '--deps', 'mac', '--jobs', '1']) 543 results = self.gclient(['revert', '--deps', 'mac', '--jobs', '1'])
544 out = self.splitBlock(results[0]) 544 out = self.splitBlock(results[0])
545 # src, src/other is missing, src/other, src/third_party/foo is missing, 545 # src, src/other is missing, src/other, src/third_party/foo is missing,
546 # src/third_party/foo, 2 svn hooks, 3 related to File(). 546 # src/third_party/foo, 2 svn hooks, 3 related to File().
547 self.assertEquals(10, len(out)) 547 self.assertEquals( 8, len(out))
548 self.checkString('', results[1]) 548 self.checkString('', results[1])
549 self.assertEquals(0, results[2]) 549 self.assertEquals(0, results[2])
550 tree = self.mangle_svn_tree( 550 tree = self.mangle_svn_tree(
551 ('trunk/src@2', 'src'), 551 ('trunk/src@2', 'src'),
552 ('trunk/third_party/foo@1', 'src/third_party/foo'), 552 ('trunk/third_party/foo@1', 'src/third_party/foo'),
553 ('trunk/other@2', 'src/other')) 553 ('trunk/other@2', 'src/other'))
554 tree['src/file/other/DEPS'] = ( 554 tree['src/file/other/DEPS'] = (
555 self.FAKE_REPOS.svn_revs[2]['trunk/other/DEPS']) 555 self.FAKE_REPOS.svn_revs[2]['trunk/other/DEPS'])
556 tree['src/svn_hooked1'] = 'svn_hooked1' 556 tree['src/svn_hooked1'] = 'svn_hooked1'
557 tree['src/svn_hooked2'] = 'svn_hooked2' 557 tree['src/svn_hooked2'] = 'svn_hooked2'
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
590 self.assertEquals(2, len(out[1])) 590 self.assertEquals(2, len(out[1]))
591 591
592 # So verify it works with --verbose. 592 # So verify it works with --verbose.
593 out = self.parseGclient( 593 out = self.parseGclient(
594 ['status', '--deps', 'mac', '--verbose', '--jobs', '1'], 594 ['status', '--deps', 'mac', '--verbose', '--jobs', '1'],
595 [['running', join(self.root_dir, 'src')], 595 [['running', join(self.root_dir, 'src')],
596 ['running', join(self.root_dir, 'src', 'other')], 596 ['running', join(self.root_dir, 'src', 'other')],
597 ['running', join(self.root_dir, 'src', 'third_party', 'fpp')], 597 ['running', join(self.root_dir, 'src', 'third_party', 'fpp')],
598 ['running', join(self.root_dir, 'src', 'third_party', 'prout')]]) 598 ['running', join(self.root_dir, 'src', 'third_party', 'prout')]])
599 out = self.svnBlockCleanup(out) 599 out = self.svnBlockCleanup(out)
600 self.checkString('other', out[0][1]) 600 self.checkString('other', out[0][5])
601 self.checkString(join('third_party', 'fpp'), out[0][2]) 601 self.checkString(join('third_party', 'fpp'), out[0][7])
602 self.checkString(join('third_party', 'prout'), out[0][3]) 602 self.checkString(join('third_party', 'prout'), out[0][8])
603 self.checkString('hi', out[1][1]) 603 self.checkString('hi', out[1][5])
604 self.assertEquals(4, len(out[0])) 604 self.assertEquals(9, len(out[0]))
605 self.assertEquals(2, len(out[1])) 605 self.assertEquals(7, len(out[1]))
606 self.assertEquals(1, len(out[2])) 606 self.assertEquals(6, len(out[2]))
607 self.assertEquals(1, len(out[3])) 607 self.assertEquals(6, len(out[3]))
608 self.assertEquals(4, len(out)) 608 self.assertEquals(4, len(out))
609 609
610 # Revert implies --force implies running hooks without looking at pattern 610 # Revert implies --force implies running hooks without looking at pattern
611 # matching. 611 # matching.
612 # TODO(maruel): In general, gclient revert output is wrong. It should output 612 # TODO(maruel): In general, gclient revert output is wrong. It should output
613 # the file list after some ___ running 'svn status' 613 # the file list after some ___ running 'svn status'
614 results = self.gclient(['revert', '--deps', 'mac', '--jobs', '1']) 614 results = self.gclient(['revert', '--deps', 'mac', '--jobs', '1'])
615 out = self.splitBlock(results[0]) 615 out = self.splitBlock(results[0])
616 self.assertEquals(7, len(out)) 616 self.assertEquals(4, len(out))
617 self.checkString('', results[1]) 617 self.checkString('', results[1])
618 self.assertEquals(0, results[2]) 618 self.assertEquals(0, results[2])
619 tree = self.mangle_svn_tree( 619 tree = self.mangle_svn_tree(
620 ('trunk/src@1', 'src'), 620 ('trunk/src@1', 'src'),
621 ('trunk/third_party/foo@2', 'src/third_party/fpp'), 621 ('trunk/third_party/foo@2', 'src/third_party/fpp'),
622 ('trunk/other@1', 'src/other'), 622 ('trunk/other@1', 'src/other'),
623 ('trunk/third_party/prout@2', 'src/third_party/prout')) 623 ('trunk/third_party/prout@2', 'src/third_party/prout'))
624 self.assertTree(tree) 624 self.assertTree(tree)
625 625
626 out = self.parseGclient(['status', '--deps', 'mac', '--jobs', '1'], 626 out = self.parseGclient(['status', '--deps', 'mac', '--jobs', '1'],
(...skipping 214 matching lines...) Expand 10 before | Expand all | Expand 10 after
841 self.enabled = self.FAKE_REPOS.set_up_git() 841 self.enabled = self.FAKE_REPOS.set_up_git()
842 842
843 def testSync(self): 843 def testSync(self):
844 if not self.enabled: 844 if not self.enabled:
845 return 845 return
846 # TODO(maruel): safesync. 846 # TODO(maruel): safesync.
847 self.gclient(['config', self.git_base + 'repo_1', '--name', 'src']) 847 self.gclient(['config', self.git_base + 'repo_1', '--name', 'src'])
848 # Test unversioned checkout. 848 # Test unversioned checkout.
849 self.parseGclient( 849 self.parseGclient(
850 ['sync', '--deps', 'mac', '--jobs', '1'], 850 ['sync', '--deps', 'mac', '--jobs', '1'],
851 ['running', 'running', 'running', 'running', 'running']) 851 ['running', 'running'])
852 # TODO(maruel): http://crosbug.com/3582 hooks run even if not matching, must 852 # TODO(maruel): http://crosbug.com/3582 hooks run even if not matching, must
853 # add sync parsing to get the list of updated files. 853 # add sync parsing to get the list of updated files.
854 tree = self.mangle_git_tree(('repo_1@2', 'src'), 854 tree = self.mangle_git_tree(('repo_1@2', 'src'),
855 ('repo_2@1', 'src/repo2'), 855 ('repo_2@1', 'src/repo2'),
856 ('repo_3@2', 'src/repo2/repo_renamed')) 856 ('repo_3@2', 'src/repo2/repo_renamed'))
857 tree['src/git_hooked1'] = 'git_hooked1' 857 tree['src/git_hooked1'] = 'git_hooked1'
858 tree['src/git_hooked2'] = 'git_hooked2' 858 tree['src/git_hooked2'] = 'git_hooked2'
859 self.assertTree(tree) 859 self.assertTree(tree)
860 860
861 # Manually remove git_hooked1 before synching to make sure it's not 861 # Manually remove git_hooked1 before synching to make sure it's not
862 # recreated. 862 # recreated.
863 os.remove(join(self.root_dir, 'src', 'git_hooked1')) 863 os.remove(join(self.root_dir, 'src', 'git_hooked1'))
864 864
865 # Test incremental versioned sync: sync backward. 865 # Test incremental versioned sync: sync backward.
866 self.parseGclient( 866 self.parseGclient(
867 ['sync', '--jobs', '1', '--revision', 867 ['sync', '--jobs', '1', '--revision',
868 'src@' + self.githash('repo_1', 1), 868 'src@' + self.githash('repo_1', 1),
869 '--deps', 'mac', '--delete_unversioned_trees'], 869 '--deps', 'mac', '--delete_unversioned_trees'],
870 ['running', 'running', 'deleting']) 870 ['deleting'])
871 tree = self.mangle_git_tree(('repo_1@1', 'src'), 871 tree = self.mangle_git_tree(('repo_1@1', 'src'),
872 ('repo_2@2', 'src/repo2'), 872 ('repo_2@2', 'src/repo2'),
873 ('repo_3@1', 'src/repo2/repo3'), 873 ('repo_3@1', 'src/repo2/repo3'),
874 ('repo_4@2', 'src/repo4')) 874 ('repo_4@2', 'src/repo4'))
875 tree['src/git_hooked2'] = 'git_hooked2' 875 tree['src/git_hooked2'] = 'git_hooked2'
876 self.assertTree(tree) 876 self.assertTree(tree)
877 # Test incremental sync: delete-unversioned_trees isn't there. 877 # Test incremental sync: delete-unversioned_trees isn't there.
878 self.parseGclient( 878 self.parseGclient(
879 ['sync', '--deps', 'mac', '--jobs', '1'], 879 ['sync', '--deps', 'mac', '--jobs', '1'],
880 ['running', 'running', 'running']) 880 ['running', 'running'])
881 tree = self.mangle_git_tree(('repo_1@2', 'src'), 881 tree = self.mangle_git_tree(('repo_1@2', 'src'),
882 ('repo_2@1', 'src/repo2'), 882 ('repo_2@1', 'src/repo2'),
883 ('repo_3@1', 'src/repo2/repo3'), 883 ('repo_3@1', 'src/repo2/repo3'),
884 ('repo_3@2', 'src/repo2/repo_renamed'), 884 ('repo_3@2', 'src/repo2/repo_renamed'),
885 ('repo_4@2', 'src/repo4')) 885 ('repo_4@2', 'src/repo4'))
886 tree['src/git_hooked1'] = 'git_hooked1' 886 tree['src/git_hooked1'] = 'git_hooked1'
887 tree['src/git_hooked2'] = 'git_hooked2' 887 tree['src/git_hooked2'] = 'git_hooked2'
888 self.assertTree(tree) 888 self.assertTree(tree)
889 889
890 def testSyncIgnoredSolutionName(self): 890 def testSyncIgnoredSolutionName(self):
891 """TODO(maruel): This will become an error soon.""" 891 """TODO(maruel): This will become an error soon."""
892 if not self.enabled: 892 if not self.enabled:
893 return 893 return
894 self.gclient(['config', self.git_base + 'repo_1', '--name', 'src']) 894 self.gclient(['config', self.git_base + 'repo_1', '--name', 'src'])
895 self.parseGclient( 895 self.parseGclient(
896 ['sync', '--deps', 'mac', '--jobs', '1', 896 ['sync', '--deps', 'mac', '--jobs', '1',
897 '--revision', 'invalid@' + self.githash('repo_1', 1)], 897 '--revision', 'invalid@' + self.githash('repo_1', 1)],
898 ['running', 'running', 'running', 'running', 'running'], 898 ['running', 'running'],
899 'Please fix your script, having invalid --revision flags ' 899 'Please fix your script, having invalid --revision flags '
900 'will soon considered an error.\n') 900 'will soon considered an error.\n')
901 tree = self.mangle_git_tree(('repo_1@2', 'src'), 901 tree = self.mangle_git_tree(('repo_1@2', 'src'),
902 ('repo_2@1', 'src/repo2'), 902 ('repo_2@1', 'src/repo2'),
903 ('repo_3@2', 'src/repo2/repo_renamed')) 903 ('repo_3@2', 'src/repo2/repo_renamed'))
904 tree['src/git_hooked1'] = 'git_hooked1' 904 tree['src/git_hooked1'] = 'git_hooked1'
905 tree['src/git_hooked2'] = 'git_hooked2' 905 tree['src/git_hooked2'] = 'git_hooked2'
906 self.assertTree(tree) 906 self.assertTree(tree)
907 907
908 def testSyncNoSolutionName(self): 908 def testSyncNoSolutionName(self):
909 if not self.enabled: 909 if not self.enabled:
910 return 910 return
911 # When no solution name is provided, gclient uses the first solution listed. 911 # When no solution name is provided, gclient uses the first solution listed.
912 self.gclient(['config', self.git_base + 'repo_1', '--name', 'src']) 912 self.gclient(['config', self.git_base + 'repo_1', '--name', 'src'])
913 self.parseGclient( 913 self.parseGclient(
914 ['sync', '--deps', 'mac', '--jobs', '1', 914 ['sync', '--deps', 'mac', '--jobs', '1',
915 '--revision', self.githash('repo_1', 1)], 915 '--revision', self.githash('repo_1', 1)],
916 ['running', 'running', 'running', 'running']) 916 [])
917 tree = self.mangle_git_tree(('repo_1@1', 'src'), 917 tree = self.mangle_git_tree(('repo_1@1', 'src'),
918 ('repo_2@2', 'src/repo2'), 918 ('repo_2@2', 'src/repo2'),
919 ('repo_3@1', 'src/repo2/repo3'), 919 ('repo_3@1', 'src/repo2/repo3'),
920 ('repo_4@2', 'src/repo4')) 920 ('repo_4@2', 'src/repo4'))
921 self.assertTree(tree) 921 self.assertTree(tree)
922 922
923 def testSyncJobs(self): 923 def testSyncJobs(self):
924 if not self.enabled: 924 if not self.enabled:
925 return 925 return
926 # TODO(maruel): safesync. 926 # TODO(maruel): safesync.
927 self.gclient(['config', self.git_base + 'repo_1', '--name', 'src']) 927 self.gclient(['config', self.git_base + 'repo_1', '--name', 'src'])
928 # Test unversioned checkout. 928 # Test unversioned checkout.
929 self.parseGclient( 929 self.parseGclient(
930 ['sync', '--deps', 'mac', '--jobs', '8'], 930 ['sync', '--deps', 'mac', '--jobs', '8'],
931 ['running', 'running', 'running', 'running', 'running'], 931 ['running', 'running'],
932 untangle=True) 932 untangle=True)
933 # TODO(maruel): http://crosbug.com/3582 hooks run even if not matching, must 933 # TODO(maruel): http://crosbug.com/3582 hooks run even if not matching, must
934 # add sync parsing to get the list of updated files. 934 # add sync parsing to get the list of updated files.
935 tree = self.mangle_git_tree(('repo_1@2', 'src'), 935 tree = self.mangle_git_tree(('repo_1@2', 'src'),
936 ('repo_2@1', 'src/repo2'), 936 ('repo_2@1', 'src/repo2'),
937 ('repo_3@2', 'src/repo2/repo_renamed')) 937 ('repo_3@2', 'src/repo2/repo_renamed'))
938 tree['src/git_hooked1'] = 'git_hooked1' 938 tree['src/git_hooked1'] = 'git_hooked1'
939 tree['src/git_hooked2'] = 'git_hooked2' 939 tree['src/git_hooked2'] = 'git_hooked2'
940 self.assertTree(tree) 940 self.assertTree(tree)
941 941
942 # Manually remove git_hooked1 before synching to make sure it's not 942 # Manually remove git_hooked1 before synching to make sure it's not
943 # recreated. 943 # recreated.
944 os.remove(join(self.root_dir, 'src', 'git_hooked1')) 944 os.remove(join(self.root_dir, 'src', 'git_hooked1'))
945 945
946 # Test incremental versioned sync: sync backward. 946 # Test incremental versioned sync: sync backward.
947 # Use --jobs 1 otherwise the order is not deterministic. 947 # Use --jobs 1 otherwise the order is not deterministic.
948 self.parseGclient( 948 self.parseGclient(
949 ['sync', '--revision', 'src@' + self.githash('repo_1', 1), 949 ['sync', '--revision', 'src@' + self.githash('repo_1', 1),
950 '--deps', 'mac', '--delete_unversioned_trees', '--jobs', '1'], 950 '--deps', 'mac', '--delete_unversioned_trees', '--jobs', '1'],
951 [ 'running', 'running', 'deleting'], 951 ['deleting'],
952 untangle=True) 952 untangle=True)
953 tree = self.mangle_git_tree(('repo_1@1', 'src'), 953 tree = self.mangle_git_tree(('repo_1@1', 'src'),
954 ('repo_2@2', 'src/repo2'), 954 ('repo_2@2', 'src/repo2'),
955 ('repo_3@1', 'src/repo2/repo3'), 955 ('repo_3@1', 'src/repo2/repo3'),
956 ('repo_4@2', 'src/repo4')) 956 ('repo_4@2', 'src/repo4'))
957 tree['src/git_hooked2'] = 'git_hooked2' 957 tree['src/git_hooked2'] = 'git_hooked2'
958 self.assertTree(tree) 958 self.assertTree(tree)
959 # Test incremental sync: delete-unversioned_trees isn't there. 959 # Test incremental sync: delete-unversioned_trees isn't there.
960 self.parseGclient( 960 self.parseGclient(
961 ['sync', '--deps', 'mac', '--jobs', '8'], 961 ['sync', '--deps', 'mac', '--jobs', '8'],
962 ['running', 'running', 'running'], 962 ['running', 'running'],
963 untangle=True) 963 untangle=True)
964 tree = self.mangle_git_tree(('repo_1@2', 'src'), 964 tree = self.mangle_git_tree(('repo_1@2', 'src'),
965 ('repo_2@1', 'src/repo2'), 965 ('repo_2@1', 'src/repo2'),
966 ('repo_3@1', 'src/repo2/repo3'), 966 ('repo_3@1', 'src/repo2/repo3'),
967 ('repo_3@2', 'src/repo2/repo_renamed'), 967 ('repo_3@2', 'src/repo2/repo_renamed'),
968 ('repo_4@2', 'src/repo4')) 968 ('repo_4@2', 'src/repo4'))
969 tree['src/git_hooked1'] = 'git_hooked1' 969 tree['src/git_hooked1'] = 'git_hooked1'
970 tree['src/git_hooked2'] = 'git_hooked2' 970 tree['src/git_hooked2'] = 'git_hooked2'
971 self.assertTree(tree) 971 self.assertTree(tree)
972 972
(...skipping 21 matching lines...) Expand all
994 ('repo_3@2', 'src/repo2/repo_renamed')) 994 ('repo_3@2', 'src/repo2/repo_renamed'))
995 tree['src/git_hooked1'] = 'git_hooked1' 995 tree['src/git_hooked1'] = 'git_hooked1'
996 tree['src/git_hooked2'] = 'git_hooked2' 996 tree['src/git_hooked2'] = 'git_hooked2'
997 self.assertTree(tree) 997 self.assertTree(tree)
998 998
999 def testPreDepsHooks(self): 999 def testPreDepsHooks(self):
1000 if not self.enabled: 1000 if not self.enabled:
1001 return 1001 return
1002 self.gclient(['config', self.git_base + 'repo_5', '--name', 'src']) 1002 self.gclient(['config', self.git_base + 'repo_5', '--name', 'src'])
1003 expectation = [ 1003 expectation = [
1004 ('running', self.root_dir), # git clone repo_5
1005 ('running', self.root_dir), # pre-deps hook 1004 ('running', self.root_dir), # pre-deps hook
1006 ('running', self.root_dir), # git clone repo_1
1007 ('running', self.root_dir), # git clone repo_1
1008 ] 1005 ]
1009 out = self.parseGclient(['sync', '--deps', 'mac', '--jobs=1', 1006 out = self.parseGclient(['sync', '--deps', 'mac', '--jobs=1',
1010 '--revision', 'src@' + self.githash('repo_5', 2)], 1007 '--revision', 'src@' + self.githash('repo_5', 2)],
1011 expectation) 1008 expectation)
1012 self.assertEquals(2, len(out[1])) 1009 self.assertEquals(2, len(out[0]))
1013 self.assertEquals('pre-deps hook', out[1][1]) 1010 self.assertEquals('pre-deps hook', out[0][1])
1014 tree = self.mangle_git_tree(('repo_5@2', 'src'), 1011 tree = self.mangle_git_tree(('repo_5@2', 'src'),
1015 ('repo_1@2', 'src/repo1'), 1012 ('repo_1@2', 'src/repo1'),
1016 ('repo_2@1', 'src/repo2') 1013 ('repo_2@1', 'src/repo2')
1017 ) 1014 )
1018 tree['src/git_pre_deps_hooked'] = 'git_pre_deps_hooked' 1015 tree['src/git_pre_deps_hooked'] = 'git_pre_deps_hooked'
1019 self.assertTree(tree) 1016 self.assertTree(tree)
1020 1017
1021 os.remove(join(self.root_dir, 'src', 'git_pre_deps_hooked')) 1018 os.remove(join(self.root_dir, 'src', 'git_pre_deps_hooked'))
1022 1019
1023 # Pre-DEPS hooks don't run with runhooks. 1020 # Pre-DEPS hooks don't run with runhooks.
(...skipping 23 matching lines...) Expand all
1047 ('repo_1@2', 'src/repo1'), 1044 ('repo_1@2', 'src/repo1'),
1048 ('repo_2@1', 'src/repo2') 1045 ('repo_2@1', 'src/repo2')
1049 ) 1046 )
1050 self.assertTree(tree) 1047 self.assertTree(tree)
1051 1048
1052 def testPreDepsHooksError(self): 1049 def testPreDepsHooksError(self):
1053 if not self.enabled: 1050 if not self.enabled:
1054 return 1051 return
1055 self.gclient(['config', self.git_base + 'repo_5', '--name', 'src']) 1052 self.gclient(['config', self.git_base + 'repo_5', '--name', 'src'])
1056 expectated_stdout = [ 1053 expectated_stdout = [
1057 ('running', self.root_dir), # git clone repo_5
1058 ('running', self.root_dir), # pre-deps hook 1054 ('running', self.root_dir), # pre-deps hook
1059 ('running', self.root_dir), # pre-deps hook (fails) 1055 ('running', self.root_dir), # pre-deps hook (fails)
1060 ] 1056 ]
1061 expected_stderr = ('Error: Command /usr/bin/python -c import sys; ' 1057 expected_stderr = ('Error: Command /usr/bin/python -c import sys; '
1062 'sys.exit(1) returned non-zero exit status 1 in %s\n' 1058 'sys.exit(1) returned non-zero exit status 1 in %s\n'
1063 % self.root_dir) 1059 % self.root_dir)
1064 stdout, stderr, retcode = self.gclient(['sync', '--deps', 'mac', '--jobs=1', 1060 stdout, stderr, retcode = self.gclient(['sync', '--deps', 'mac', '--jobs=1',
1065 '--revision', 1061 '--revision',
1066 'src@' + self.githash('repo_5', 3)]) 1062 'src@' + self.githash('repo_5', 3)])
1067 self.assertEquals(stderr, expected_stderr) 1063 self.assertEquals(stderr, expected_stderr)
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
1127 1123
1128 self.gclient(['config', '--spec', config_template % { 1124 self.gclient(['config', '--spec', config_template % {
1129 'git_base': self.git_base, 1125 'git_base': self.git_base,
1130 'custom_vars': {} 1126 'custom_vars': {}
1131 }]) 1127 }])
1132 1128
1133 # Tested in testSync. 1129 # Tested in testSync.
1134 self.gclient(['sync', '--deps', 'mac']) 1130 self.gclient(['sync', '--deps', 'mac'])
1135 write(join(self.root_dir, 'src', 'repo2', 'hi'), 'Hey!') 1131 write(join(self.root_dir, 'src', 'repo2', 'hi'), 'Hey!')
1136 1132
1137 expected1 = ('running', os.path.join(self.root_dir, 'src'))
1138 expected2 = ('running', os.path.join(expected1[1], 'repo2'))
1139 expected3 = ('running', os.path.join(expected2[1], 'repo_renamed'))
1140 out = self.parseGclient(['status', '--deps', 'mac', '--jobs', '1'], []) 1133 out = self.parseGclient(['status', '--deps', 'mac', '--jobs', '1'], [])
1141 # TODO(maruel): http://crosbug.com/3584 It should output the unversioned 1134 # TODO(maruel): http://crosbug.com/3584 It should output the unversioned
1142 # files. 1135 # files.
1143 self.assertEquals(0, len(out)) 1136 self.assertEquals(0, len(out))
1144 1137
1145 # Revert implies --force implies running hooks without looking at pattern 1138 # Revert implies --force implies running hooks without looking at pattern
1146 # matching. For each expected path, 'git reset' and 'git clean' are run, so 1139 # matching. For each expected path, 'git reset' and 'git clean' are run, so
1147 # there should be two results for each. The last two results should reflect 1140 # there should be two results for each. The last two results should reflect
1148 # writing git_hooked1 and git_hooked2. There's only one result for the third 1141 # writing git_hooked1 and git_hooked2. There's only one result for the third
1149 # because it is clean and has no output for 'git clean'. 1142 # because it is clean and has no output for 'git clean'.
1150 expected4 = ('running', self.root_dir)
1151 out = self.parseGclient(['revert', '--deps', 'mac', '--jobs', '1'], 1143 out = self.parseGclient(['revert', '--deps', 'mac', '--jobs', '1'],
1152 [expected1, expected1, 1144 ['running', 'running'])
1153 expected2, expected2, 1145 self.assertEquals(2, len(out))
1154 expected3,
1155 expected4, expected4])
1156 self.assertEquals(7, len(out))
1157 tree = self.mangle_git_tree(('repo_1@3', 'src'), 1146 tree = self.mangle_git_tree(('repo_1@3', 'src'),
1158 ('repo_2@1', 'src/repo2'), 1147 ('repo_2@1', 'src/repo2'),
1159 ('repo_3@2', 'src/repo2/repo_renamed')) 1148 ('repo_3@2', 'src/repo2/repo_renamed'))
1160 tree['src/git_hooked1'] = 'git_hooked1' 1149 tree['src/git_hooked1'] = 'git_hooked1'
1161 tree['src/git_hooked2'] = 'git_hooked2' 1150 tree['src/git_hooked2'] = 'git_hooked2'
1162 self.assertTree(tree) 1151 self.assertTree(tree)
1163 1152
1164 # Make a new commit object in the origin repo, to force reset to fetch. 1153 # Make a new commit object in the origin repo, to force reset to fetch.
1165 self.FAKE_REPOS._commit_git('repo_2', { # pylint: disable=W0212 1154 self.FAKE_REPOS._commit_git('repo_2', { # pylint: disable=W0212
1166 'origin': 'git/repo_2@3\n', 1155 'origin': 'git/repo_2@3\n',
1167 }) 1156 })
1168 1157
1169 self.gclient(['config', '--spec', config_template % { 1158 self.gclient(['config', '--spec', config_template % {
1170 'git_base': self.git_base, 1159 'git_base': self.git_base,
1171 'custom_vars': {'r2hash': self.FAKE_REPOS.git_hashes['repo_2'][-1][0] } 1160 'custom_vars': {'r2hash': self.FAKE_REPOS.git_hashes['repo_2'][-1][0] }
1172 }]) 1161 }])
1173 out = self.parseGclient(['revert', '--deps', 'mac', '--jobs', '1'], 1162 out = self.parseGclient(['revert', '--deps', 'mac', '--jobs', '1'],
1174 [expected1, expected1, 1163 ['running', 'running'])
1175 expected2, expected2, 1164 self.assertEquals(2, len(out))
1176 expected3,
1177 expected4, expected4])
1178 self.assertEquals(7, len(out))
1179 tree = self.mangle_git_tree(('repo_1@3', 'src'), 1165 tree = self.mangle_git_tree(('repo_1@3', 'src'),
1180 ('repo_2@3', 'src/repo2'), 1166 ('repo_2@3', 'src/repo2'),
1181 ('repo_3@2', 'src/repo2/repo_renamed')) 1167 ('repo_3@2', 'src/repo2/repo_renamed'))
1182 tree['src/git_hooked1'] = 'git_hooked1' 1168 tree['src/git_hooked1'] = 'git_hooked1'
1183 tree['src/git_hooked2'] = 'git_hooked2' 1169 tree['src/git_hooked2'] = 'git_hooked2'
1184 self.assertTree(tree) 1170 self.assertTree(tree)
1185 1171
1186 results = self.gclient(['status', '--deps', 'mac', '--jobs', '1']) 1172 results = self.gclient(['status', '--deps', 'mac', '--jobs', '1'])
1187 out = results[0].splitlines(False) 1173 out = results[0].splitlines(False)
1188 # TODO(maruel): http://crosbug.com/3584 It should output the unversioned 1174 # TODO(maruel): http://crosbug.com/3584 It should output the unversioned
1189 # files. 1175 # files.
1190 self.assertEquals(0, len(out)) 1176 self.assertEquals(0, len(out))
1191 1177
1192 class GClientSmokeBoth(GClientSmokeBase): 1178 class GClientSmokeBoth(GClientSmokeBase):
1193 def setUp(self): 1179 def setUp(self):
1194 super(GClientSmokeBoth, self).setUp() 1180 super(GClientSmokeBoth, self).setUp()
1195 self.enabled = self.FAKE_REPOS.set_up_svn() and self.FAKE_REPOS.set_up_git() 1181 self.enabled = self.FAKE_REPOS.set_up_svn() and self.FAKE_REPOS.set_up_git()
1196 1182
1197 def testMultiSolutions(self): 1183 def testMultiSolutions(self):
1198 if not self.enabled: 1184 if not self.enabled:
1199 return 1185 return
1200 self.gclient(['config', '--spec', 1186 self.gclient(['config', '--spec',
1201 'solutions=[' 1187 'solutions=['
1202 '{"name": "src",' 1188 '{"name": "src",'
1203 ' "url": "' + self.svn_base + 'trunk/src/"},' 1189 ' "url": "' + self.svn_base + 'trunk/src/"},'
1204 '{"name": "src-git",' 1190 '{"name": "src-git",'
1205 '"url": "' + self.git_base + 'repo_1"}]']) 1191 '"url": "' + self.git_base + 'repo_1"}]'])
1206 self.parseGclient(['sync', '--deps', 'mac', '--jobs', '1'], 1192 self.parseGclient(['sync', '--deps', 'mac', '--jobs', '1'],
1207 ['running', 'running', 'running', 1193 ['running', 'running',
1208 # This is due to the way svn update is called for a single 1194 # This is due to the way svn update is called for a single
1209 # file when File() is used in a DEPS file. 1195 # file when File() is used in a DEPS file.
1210 ('running', self.root_dir + '/src/file/other'), 1196 ('running', self.root_dir + '/src/file/other'),
1211 'running', 'running', 'running', 'running', 1197 'running', 'running', 'running', 'running',
1212 'running', 'running', 'running', 'running']) 1198 'running', 'running'])
1213 tree = self.mangle_git_tree(('repo_1@2', 'src-git'), 1199 tree = self.mangle_git_tree(('repo_1@2', 'src-git'),
1214 ('repo_2@1', 'src/repo2'), 1200 ('repo_2@1', 'src/repo2'),
1215 ('repo_3@2', 'src/repo2/repo_renamed')) 1201 ('repo_3@2', 'src/repo2/repo_renamed'))
1216 tree.update(self.mangle_svn_tree( 1202 tree.update(self.mangle_svn_tree(
1217 ('trunk/src@2', 'src'), 1203 ('trunk/src@2', 'src'),
1218 ('trunk/third_party/foo@1', 'src/third_party/foo'), 1204 ('trunk/third_party/foo@1', 'src/third_party/foo'),
1219 ('trunk/other@2', 'src/other'))) 1205 ('trunk/other@2', 'src/other')))
1220 tree['src/file/other/DEPS'] = ( 1206 tree['src/file/other/DEPS'] = (
1221 self.FAKE_REPOS.svn_revs[2]['trunk/other/DEPS']) 1207 self.FAKE_REPOS.svn_revs[2]['trunk/other/DEPS'])
1222 tree['src/git_hooked1'] = 'git_hooked1' 1208 tree['src/git_hooked1'] = 'git_hooked1'
(...skipping 10 matching lines...) Expand all
1233 ' "url": "' + self.svn_base + 'trunk/src/"},' 1219 ' "url": "' + self.svn_base + 'trunk/src/"},'
1234 '{"name": "src-git",' 1220 '{"name": "src-git",'
1235 '"url": "' + self.git_base + 'repo_1"}]']) 1221 '"url": "' + self.git_base + 'repo_1"}]'])
1236 # There is no guarantee that the ordering will be consistent. 1222 # There is no guarantee that the ordering will be consistent.
1237 (stdout, stderr, returncode) = self.gclient( 1223 (stdout, stderr, returncode) = self.gclient(
1238 ['sync', '--deps', 'mac', '--jobs', '8']) 1224 ['sync', '--deps', 'mac', '--jobs', '8'])
1239 stdout = self.untangle(stdout) 1225 stdout = self.untangle(stdout)
1240 self.checkString('', stderr) 1226 self.checkString('', stderr)
1241 self.assertEquals(0, returncode) 1227 self.assertEquals(0, returncode)
1242 results = self.splitBlock(stdout) 1228 results = self.splitBlock(stdout)
1243 self.assertEquals(12, len(results)) 1229 self.assertEquals(9, len(results))
1244 tree = self.mangle_git_tree(('repo_1@2', 'src-git'), 1230 tree = self.mangle_git_tree(('repo_1@2', 'src-git'),
1245 ('repo_2@1', 'src/repo2'), 1231 ('repo_2@1', 'src/repo2'),
1246 ('repo_3@2', 'src/repo2/repo_renamed')) 1232 ('repo_3@2', 'src/repo2/repo_renamed'))
1247 tree.update(self.mangle_svn_tree( 1233 tree.update(self.mangle_svn_tree(
1248 ('trunk/src@2', 'src'), 1234 ('trunk/src@2', 'src'),
1249 ('trunk/third_party/foo@1', 'src/third_party/foo'), 1235 ('trunk/third_party/foo@1', 'src/third_party/foo'),
1250 ('trunk/other@2', 'src/other'))) 1236 ('trunk/other@2', 'src/other')))
1251 tree['src/file/other/DEPS'] = ( 1237 tree['src/file/other/DEPS'] = (
1252 self.FAKE_REPOS.svn_revs[2]['trunk/other/DEPS']) 1238 self.FAKE_REPOS.svn_revs[2]['trunk/other/DEPS'])
1253 tree['src/git_hooked1'] = 'git_hooked1' 1239 tree['src/git_hooked1'] = 'git_hooked1'
1254 tree['src/git_hooked2'] = 'git_hooked2' 1240 tree['src/git_hooked2'] = 'git_hooked2'
1255 tree['src/svn_hooked1'] = 'svn_hooked1' 1241 tree['src/svn_hooked1'] = 'svn_hooked1'
1256 self.assertTree(tree) 1242 self.assertTree(tree)
1257 1243
1258 def testMultiSolutionsMultiRev(self): 1244 def testMultiSolutionsMultiRev(self):
1259 if not self.enabled: 1245 if not self.enabled:
1260 return 1246 return
1261 self.gclient(['config', '--spec', 1247 self.gclient(['config', '--spec',
1262 'solutions=[' 1248 'solutions=['
1263 '{"name": "src",' 1249 '{"name": "src",'
1264 ' "url": "' + self.svn_base + 'trunk/src/"},' 1250 ' "url": "' + self.svn_base + 'trunk/src/"},'
1265 '{"name": "src-git",' 1251 '{"name": "src-git",'
1266 '"url": "' + self.git_base + 'repo_1"}]']) 1252 '"url": "' + self.git_base + 'repo_1"}]'])
1267 self.parseGclient( 1253 self.parseGclient(
1268 ['sync', '--deps', 'mac', '--jobs', '1', '--revision', '1', 1254 ['sync', '--deps', 'mac', '--jobs', '1', '--revision', '1',
1269 '-r', 'src-git@' + self.githash('repo_1', 1)], 1255 '-r', 'src-git@' + self.githash('repo_1', 1)],
1270 ['running', 'running', 'running', 'running', 'running', 1256 ['running', 'running', 'running', 'running'],
1271 'running', 'running', 'running'],
1272 expected_stderr= 1257 expected_stderr=
1273 'You must specify the full solution name like --revision src@1\n' 1258 'You must specify the full solution name like --revision src@1\n'
1274 'when you have multiple solutions setup in your .gclient file.\n' 1259 'when you have multiple solutions setup in your .gclient file.\n'
1275 'Other solutions present are: src-git.\n') 1260 'Other solutions present are: src-git.\n')
1276 tree = self.mangle_git_tree(('repo_1@1', 'src-git'), 1261 tree = self.mangle_git_tree(('repo_1@1', 'src-git'),
1277 ('repo_2@2', 'src/repo2'), 1262 ('repo_2@2', 'src/repo2'),
1278 ('repo_3@1', 'src/repo2/repo3'), 1263 ('repo_3@1', 'src/repo2/repo3'),
1279 ('repo_4@2', 'src/repo4')) 1264 ('repo_4@2', 'src/repo4'))
1280 tree.update(self.mangle_svn_tree( 1265 tree.update(self.mangle_svn_tree(
1281 ('trunk/src@1', 'src'), 1266 ('trunk/src@1', 'src'),
(...skipping 173 matching lines...) Expand 10 before | Expand all | Expand 10 after
1455 1440
1456 if '-c' in sys.argv: 1441 if '-c' in sys.argv:
1457 COVERAGE = True 1442 COVERAGE = True
1458 sys.argv.remove('-c') 1443 sys.argv.remove('-c')
1459 if os.path.exists('.coverage'): 1444 if os.path.exists('.coverage'):
1460 os.remove('.coverage') 1445 os.remove('.coverage')
1461 os.environ['COVERAGE_FILE'] = os.path.join( 1446 os.environ['COVERAGE_FILE'] = os.path.join(
1462 os.path.dirname(os.path.dirname(os.path.abspath(__file__))), 1447 os.path.dirname(os.path.dirname(os.path.abspath(__file__))),
1463 '.coverage') 1448 '.coverage')
1464 unittest.main() 1449 unittest.main()
OLDNEW
« no previous file with comments | « tests/gclient_scm_test.py ('k') | tests/gclient_test.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698