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

Side by Side Diff: appengine/findit/waterfall/test/try_job_util_test.py

Issue 2203643002: [Findit] Use new mock for unittests. (Closed) Base URL: https://chromium.googlesource.com/infra/infra.git@0708-pipeline-refactor
Patch Set: rebase Created 4 years, 4 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
« no previous file with comments | « appengine/findit/waterfall/test/start_try_job_on_demand_pipeline_test.py ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 # Copyright 2015 The Chromium Authors. All rights reserved. 1 # Copyright 2015 The Chromium Authors. All rights reserved.
2 # Use of this source code is governed by a BSD-style license that can be 2 # Use of this source code is governed by a BSD-style license that can be
3 # found in the LICENSE file. 3 # found in the LICENSE file.
4 4
5 from datetime import datetime 5 from datetime import datetime
6 from datetime import timedelta 6 from datetime import timedelta
7 import mock
7 8
8 from common.waterfall import failure_type 9 from common.waterfall import failure_type
9 from model import analysis_status 10 from model import analysis_status
10 from model.wf_analysis import WfAnalysis 11 from model.wf_analysis import WfAnalysis
11 from model.wf_build import WfBuild 12 from model.wf_build import WfBuild
12 from model.wf_failure_group import WfFailureGroup 13 from model.wf_failure_group import WfFailureGroup
13 from model.wf_try_job import WfTryJob 14 from model.wf_try_job import WfTryJob
14 from waterfall import try_job_util 15 from waterfall import try_job_util
15 from waterfall.test import wf_testcase 16 from waterfall.test import wf_testcase
16 17
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
61 } 62 }
62 }, 63 },
63 'failure_type': failure_type.COMPILE 64 'failure_type': failure_type.COMPILE
64 } 65 }
65 66
66 need_try_job = try_job_util.NeedANewTryJob( 67 need_try_job = try_job_util.NeedANewTryJob(
67 master_name, builder_name, build_number, failure_info, None, None) 68 master_name, builder_name, build_number, failure_info, None, None)
68 69
69 self.assertFalse(need_try_job) 70 self.assertFalse(need_try_job)
70 71
71 def testBailOutForTestTryJob(self): 72 @mock.patch.object(try_job_util, '_ShouldBailOutForOutdatedBuild')
73 def testBailOutForTestTryJob(self, mock_fn):
72 master_name = 'master2' 74 master_name = 'master2'
73 builder_name = 'builder2' 75 builder_name = 'builder2'
74 build_number = 223 76 build_number = 223
75 WfAnalysis.Create(master_name, builder_name, build_number).put() 77 WfAnalysis.Create(master_name, builder_name, build_number).put()
76 failure_info = { 78 failure_info = {
77 'master_name': master_name, 79 'master_name': master_name,
78 'builder_name': builder_name, 80 'builder_name': builder_name,
79 'build_number': build_number, 81 'build_number': build_number,
80 'failed_steps': { 82 'failed_steps': {
81 'a_test': {} 83 'a_test': {}
82 }, 84 },
83 'failure_type': failure_type.TEST 85 'failure_type': failure_type.TEST
84 } 86 }
85 87
86 def _MockShouldBailOutForOutdatedBuild(*_): 88 mock_fn.return_value = False
87 return False
88 self.mock(
89 try_job_util, '_ShouldBailOutForOutdatedBuild',
90 _MockShouldBailOutForOutdatedBuild)
91 89
92 need_try_job = try_job_util.NeedANewTryJob( 90 need_try_job = try_job_util.NeedANewTryJob(
93 master_name, builder_name, build_number, failure_info, None, None) 91 master_name, builder_name, build_number, failure_info, None, None)
94 92
95 self.assertFalse(need_try_job) 93 self.assertFalse(need_try_job)
96 94
97 def testBailOutForTryJobWithOutdatedTimestamp(self): 95 @mock.patch.object(try_job_util, '_ShouldBailOutForOutdatedBuild')
96 def testBailOutForTryJobWithOutdatedTimestamp(self, mock_fn):
98 master_name = 'master1' 97 master_name = 'master1'
99 builder_name = 'builder1' 98 builder_name = 'builder1'
100 build_number = 223 99 build_number = 223
101 WfAnalysis.Create(master_name, builder_name, build_number).put() 100 WfAnalysis.Create(master_name, builder_name, build_number).put()
102 failure_info = { 101 failure_info = {
103 'master_name': master_name, 102 'master_name': master_name,
104 'builder_name': builder_name, 103 'builder_name': builder_name,
105 'build_number': build_number, 104 'build_number': build_number,
106 'failed_steps': { 105 'failed_steps': {
107 'compile': { 106 'compile': {
108 'current_failure': 221, 107 'current_failure': 221,
109 'first_failure': 221, 108 'first_failure': 221,
110 'last_pass': 220 109 'last_pass': 220
111 } 110 }
112 }, 111 },
113 'failure_type': failure_type.COMPILE 112 'failure_type': failure_type.COMPILE
114 } 113 }
115 114
116 yesterday = datetime.utcnow() - timedelta(days=1) 115 yesterday = datetime.utcnow() - timedelta(days=1)
117 build = WfBuild.Create(master_name, builder_name, build_number) 116 build = WfBuild.Create(master_name, builder_name, build_number)
118 build.start_time = yesterday 117 build.start_time = yesterday
119 build.put() 118 build.put()
120 119
121 def _MockShouldBailOutForOutdatedBuild(*_): 120 mock_fn.return_value = True
122 return True
123
124 self.mock(
125 try_job_util, '_ShouldBailOutForOutdatedBuild',
126 _MockShouldBailOutForOutdatedBuild)
127 121
128 need_try_job = try_job_util.NeedANewTryJob( 122 need_try_job = try_job_util.NeedANewTryJob(
129 master_name, builder_name, build_number, failure_info, None, None) 123 master_name, builder_name, build_number, failure_info, None, None)
130 124
131 self.assertFalse(need_try_job) 125 self.assertFalse(need_try_job)
132 126
133 def testNotNeedANewTryJobIfNotFirstTimeFailure(self): 127 @mock.patch.object(try_job_util, '_ShouldBailOutForOutdatedBuild')
128 def testNotNeedANewTryJobIfNotFirstTimeFailure(self, mock_fn):
134 master_name = 'm' 129 master_name = 'm'
135 builder_name = 'b' 130 builder_name = 'b'
136 build_number = 223 131 build_number = 223
137 WfAnalysis.Create(master_name, builder_name, build_number).put() 132 WfAnalysis.Create(master_name, builder_name, build_number).put()
138 failure_info = { 133 failure_info = {
139 'master_name': master_name, 134 'master_name': master_name,
140 'builder_name': builder_name, 135 'builder_name': builder_name,
141 'build_number': build_number, 136 'build_number': build_number,
142 'failed_steps': { 137 'failed_steps': {
143 'compile': { 138 'compile': {
(...skipping 18 matching lines...) Expand all
162 '223': { 157 '223': {
163 'blame_list': ['223-1', '223-2', '223-3'], 158 'blame_list': ['223-1', '223-2', '223-3'],
164 'chromium_revision': '223-3' 159 'chromium_revision': '223-3'
165 } 160 }
166 }, 161 },
167 'failure_type': failure_type.COMPILE 162 'failure_type': failure_type.COMPILE
168 } 163 }
169 164
170 WfAnalysis.Create(master_name, builder_name, build_number).put() 165 WfAnalysis.Create(master_name, builder_name, build_number).put()
171 166
172 def _MockShouldBailOutForOutdatedBuild(*_): 167 mock_fn.return_value = False
173 return False
174 self.mock(
175 try_job_util, '_ShouldBailOutForOutdatedBuild',
176 _MockShouldBailOutForOutdatedBuild)
177 168
178 need_try_job = try_job_util.NeedANewTryJob( 169 need_try_job = try_job_util.NeedANewTryJob(
179 master_name, builder_name, build_number, failure_info, None, None) 170 master_name, builder_name, build_number, failure_info, None, None)
180 171
181 self.assertFalse(need_try_job) 172 self.assertFalse(need_try_job)
182 173
183 def testBlameListsIntersect(self): 174 def testBlameListsIntersect(self):
184 self.assertFalse(try_job_util._BlameListsIntersection(['0'], ['1'])) 175 self.assertFalse(try_job_util._BlameListsIntersection(['0'], ['1']))
185 self.assertFalse(try_job_util._BlameListsIntersection(['1'], [])) 176 self.assertFalse(try_job_util._BlameListsIntersection(['1'], []))
186 self.assertFalse(try_job_util._BlameListsIntersection([], [])) 177 self.assertFalse(try_job_util._BlameListsIntersection([], []))
(...skipping 609 matching lines...) Expand 10 before | Expand all | Expand 10 after
796 787
797 WfAnalysis.Create(master_name_2, builder_name, build_number).put() 788 WfAnalysis.Create(master_name_2, builder_name, build_number).put()
798 # Run pipeline with signals that have different failed steps. 789 # Run pipeline with signals that have different failed steps.
799 # Observe new group creation. 790 # Observe new group creation.
800 self.assertTrue(try_job_util._IsBuildFailureUniqueAcrossPlatforms( 791 self.assertTrue(try_job_util._IsBuildFailureUniqueAcrossPlatforms(
801 master_name_2, builder_name, build_number, failure_type.TEST, 792 master_name_2, builder_name, build_number, failure_type.TEST,
802 blame_list, failed_steps_2, None, None)) 793 blame_list, failed_steps_2, None, None))
803 self.assertTrue( 794 self.assertTrue(
804 WfFailureGroup.Get(master_name_2, builder_name, build_number)) 795 WfFailureGroup.Get(master_name_2, builder_name, build_number))
805 796
806 def testNotNeedANewTryJobIfOneWithResultExists(self): 797 @mock.patch.object(try_job_util, '_ShouldBailOutForOutdatedBuild')
798 def testNotNeedANewTryJobIfOneWithResultExists(self, mock_fn):
807 master_name = 'm' 799 master_name = 'm'
808 builder_name = 'b' 800 builder_name = 'b'
809 build_number = 223 801 build_number = 223
810 failure_info = { 802 failure_info = {
811 'failed_steps': { 803 'failed_steps': {
812 'compile': { 804 'compile': {
813 'current_failure': 223, 805 'current_failure': 223,
814 'first_failure': 223, 806 'first_failure': 223,
815 'last_pass': 220 807 'last_pass': 220
816 } 808 }
(...skipping 11 matching lines...) Expand all
828 'failure_type': failure_type.COMPILE 820 'failure_type': failure_type.COMPILE
829 } 821 }
830 822
831 try_job = WfTryJob.Create(master_name, builder_name, build_number) 823 try_job = WfTryJob.Create(master_name, builder_name, build_number)
832 try_job.compile_results = [['rev', 'failed']] 824 try_job.compile_results = [['rev', 'failed']]
833 try_job.status = analysis_status.COMPLETED 825 try_job.status = analysis_status.COMPLETED
834 try_job.put() 826 try_job.put()
835 827
836 WfAnalysis.Create(master_name, builder_name, build_number).put() 828 WfAnalysis.Create(master_name, builder_name, build_number).put()
837 829
838 def _MockShouldBailOutForOutdatedBuild(*_): 830 mock_fn.return_value = False
839 return False
840 self.mock(
841 try_job_util, '_ShouldBailOutForOutdatedBuild',
842 _MockShouldBailOutForOutdatedBuild)
843 831
844 need_try_job = try_job_util.NeedANewTryJob( 832 need_try_job = try_job_util.NeedANewTryJob(
845 master_name, builder_name, build_number, failure_info, None, None) 833 master_name, builder_name, build_number, failure_info, None, None)
846 834
847 self.assertFalse(need_try_job) 835 self.assertFalse(need_try_job)
848 836
849 def testNeedANewTryJobIfExistingOneHasError(self): 837 @mock.patch.object(try_job_util, '_ShouldBailOutForOutdatedBuild')
838 def testNeedANewTryJobIfExistingOneHasError(self, mock_fn):
850 master_name = 'm' 839 master_name = 'm'
851 builder_name = 'b' 840 builder_name = 'b'
852 build_number = 223 841 build_number = 223
853 failure_info = { 842 failure_info = {
854 'failed_steps': { 843 'failed_steps': {
855 'compile': { 844 'compile': {
856 'current_failure': 223, 845 'current_failure': 223,
857 'first_failure': 223, 846 'first_failure': 223,
858 'last_pass': 220 847 'last_pass': 220
859 } 848 }
(...skipping 10 matching lines...) Expand all
870 }, 859 },
871 'failure_type': failure_type.COMPILE 860 'failure_type': failure_type.COMPILE
872 } 861 }
873 862
874 try_job = WfTryJob.Create(master_name, builder_name, build_number) 863 try_job = WfTryJob.Create(master_name, builder_name, build_number)
875 try_job.status = analysis_status.ERROR 864 try_job.status = analysis_status.ERROR
876 try_job.put() 865 try_job.put()
877 866
878 WfAnalysis.Create(master_name, builder_name, build_number).put() 867 WfAnalysis.Create(master_name, builder_name, build_number).put()
879 868
880 def _MockShouldBailOutForOutdatedBuild(*_): 869 mock_fn.return_value = False
881 return False
882 self.mock(
883 try_job_util, '_ShouldBailOutForOutdatedBuild',
884 _MockShouldBailOutForOutdatedBuild)
885 870
886 need_try_job = try_job_util.NeedANewTryJob( 871 need_try_job = try_job_util.NeedANewTryJob(
887 master_name, builder_name, build_number, failure_info, None, None) 872 master_name, builder_name, build_number, failure_info, None, None)
888 873
889 self.assertTrue(need_try_job) 874 self.assertTrue(need_try_job)
890 875
891 def testNotNeedANewTryJobIfNoNewFailure(self): 876 @mock.patch.object(try_job_util, '_ShouldBailOutForOutdatedBuild')
877 def testNotNeedANewTryJobIfNoNewFailure(self, mock_fn):
892 master_name = 'm' 878 master_name = 'm'
893 builder_name = 'b' 879 builder_name = 'b'
894 build_number = 223 880 build_number = 223
895 failure_info = { 881 failure_info = {
896 'failed_steps': { 882 'failed_steps': {
897 'a': { 883 'a': {
898 'current_failure': 223, 884 'current_failure': 223,
899 'first_failure': 222, 885 'first_failure': 222,
900 'last_pass': 221, 886 'last_pass': 221,
901 'tests': { 887 'tests': {
902 'a.t2': { 888 'a.t2': {
903 'current_failure': 223, 889 'current_failure': 223,
904 'first_failure': 222, 890 'first_failure': 222,
905 'last_pass': 221 891 'last_pass': 221
906 } 892 }
907 } 893 }
908 } 894 }
909 }, 895 },
910 'failure_type': failure_type.TEST 896 'failure_type': failure_type.TEST
911 } 897 }
912 898
913 analysis = WfAnalysis.Create(master_name, builder_name, build_number) 899 analysis = WfAnalysis.Create(master_name, builder_name, build_number)
914 analysis.failure_result_map = { 900 analysis.failure_result_map = {
915 'a': { 901 'a': {
916 'a.t2': 'm/b/222' 902 'a.t2': 'm/b/222'
917 } 903 }
918 } 904 }
919 analysis.put() 905 analysis.put()
920 906
921 def _MockShouldBailOutForOutdatedBuild(*_): 907 mock_fn.return_value = False
922 return False
923 self.mock(
924 try_job_util, '_ShouldBailOutForOutdatedBuild',
925 _MockShouldBailOutForOutdatedBuild)
926 908
927 need_try_job = try_job_util.NeedANewTryJob( 909 need_try_job = try_job_util.NeedANewTryJob(
928 master_name, builder_name, build_number, failure_info, None, None) 910 master_name, builder_name, build_number, failure_info, None, None)
929 911
930 self.assertFalse(need_try_job) 912 self.assertFalse(need_try_job)
931 913
932 def testNeedANewTryJobIfTestFailureSwarming(self): 914 @mock.patch.object(try_job_util, '_ShouldBailOutForOutdatedBuild')
915 def testNeedANewTryJobIfTestFailureSwarming(self, mock_fn):
933 master_name = 'm' 916 master_name = 'm'
934 builder_name = 'b' 917 builder_name = 'b'
935 build_number = 223 918 build_number = 223
936 failure_info = { 919 failure_info = {
937 'failed_steps': { 920 'failed_steps': {
938 'a': { 921 'a': {
939 'current_failure': 223, 922 'current_failure': 223,
940 'first_failure': 222, 923 'first_failure': 222,
941 'last_pass': 221, 924 'last_pass': 221,
942 'tests': { 925 'tests': {
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
996 'a.t2': 'm/b/222', 979 'a.t2': 'm/b/222',
997 'a.t3': 'm/b/223' 980 'a.t3': 'm/b/223'
998 }, 981 },
999 'b': { 982 'b': {
1000 'b.t1': 'm/b/222', 983 'b.t1': 'm/b/222',
1001 'b.t2': 'm/b/222' 984 'b.t2': 'm/b/222'
1002 } 985 }
1003 } 986 }
1004 analysis.put() 987 analysis.put()
1005 988
1006 def _MockShouldBailOutForOutdatedBuild(*_): 989 mock_fn.return_value = False
1007 return False
1008 self.mock(
1009 try_job_util, '_ShouldBailOutForOutdatedBuild',
1010 _MockShouldBailOutForOutdatedBuild)
1011 990
1012 need_try_job = try_job_util.NeedANewTryJob( 991 need_try_job = try_job_util.NeedANewTryJob(
1013 master_name, builder_name, build_number, failure_info, None, None) 992 master_name, builder_name, build_number, failure_info, None, None)
1014 993
1015 self.assertTrue(need_try_job) 994 self.assertTrue(need_try_job)
1016 995
1017 def testNeedANewTryJob(self): 996 @mock.patch.object(try_job_util, '_ShouldBailOutForOutdatedBuild')
997 def testNeedANewTryJob(self, mock_fn):
1018 master_name = 'm' 998 master_name = 'm'
1019 builder_name = 'b' 999 builder_name = 'b'
1020 build_number = 223 1000 build_number = 223
1021 failure_info = { 1001 failure_info = {
1022 'master_name': master_name, 1002 'master_name': master_name,
1023 'builder_name': builder_name, 1003 'builder_name': builder_name,
1024 'build_number': build_number, 1004 'build_number': build_number,
1025 'failed_steps': { 1005 'failed_steps': {
1026 'compile': { 1006 'compile': {
1027 'current_failure': 223, 1007 'current_failure': 223,
(...skipping 13 matching lines...) Expand all
1041 }, 1021 },
1042 'failure_type': failure_type.COMPILE 1022 'failure_type': failure_type.COMPILE
1043 } 1023 }
1044 1024
1045 analysis = WfAnalysis.Create(master_name, builder_name, build_number) 1025 analysis = WfAnalysis.Create(master_name, builder_name, build_number)
1046 analysis.failure_result_map = { 1026 analysis.failure_result_map = {
1047 'compile': 'm/b/223' 1027 'compile': 'm/b/223'
1048 } 1028 }
1049 analysis.put() 1029 analysis.put()
1050 1030
1051 def _MockShouldBailOutForOutdatedBuild(*_): 1031 mock_fn.return_value = False
1052 return False
1053 self.mock(
1054 try_job_util, '_ShouldBailOutForOutdatedBuild',
1055 _MockShouldBailOutForOutdatedBuild)
1056 1032
1057 need_try_job = try_job_util.NeedANewTryJob( 1033 need_try_job = try_job_util.NeedANewTryJob(
1058 master_name, builder_name, build_number, failure_info, None, None) 1034 master_name, builder_name, build_number, failure_info, None, None)
1059 1035
1060 self.assertTrue(need_try_job) 1036 self.assertTrue(need_try_job)
1061 1037
1062 def testNotNeedANewTryJobForOtherType(self): 1038 @mock.patch.object(try_job_util, '_ShouldBailOutForOutdatedBuild')
1039 def testNotNeedANewTryJobForOtherType(self, mock_fn):
1063 master_name = 'm' 1040 master_name = 'm'
1064 builder_name = 'b' 1041 builder_name = 'b'
1065 build_number = 223 1042 build_number = 223
1066 failure_info = { 1043 failure_info = {
1067 'master_name': master_name, 1044 'master_name': master_name,
1068 'builder_name': builder_name, 1045 'builder_name': builder_name,
1069 'build_number': build_number, 1046 'build_number': build_number,
1070 'failed_steps': {}, 1047 'failed_steps': {},
1071 'builds': { 1048 'builds': {
1072 '222': { 1049 '222': {
1073 'blame_list': ['222-1'], 1050 'blame_list': ['222-1'],
1074 'chromium_revision': '222-1' 1051 'chromium_revision': '222-1'
1075 }, 1052 },
1076 '223': { 1053 '223': {
1077 'blame_list': ['223-1', '223-2', '223-3'], 1054 'blame_list': ['223-1', '223-2', '223-3'],
1078 'chromium_revision': '223-3' 1055 'chromium_revision': '223-3'
1079 } 1056 }
1080 }, 1057 },
1081 'failure_type': failure_type.UNKNOWN 1058 'failure_type': failure_type.UNKNOWN
1082 } 1059 }
1083 1060
1084 def _MockShouldBailOutForOutdatedBuild(*_): 1061 mock_fn.return_value = False
1085 return False
1086 self.mock(
1087 try_job_util, '_ShouldBailOutForOutdatedBuild',
1088 _MockShouldBailOutForOutdatedBuild)
1089 1062
1090 need_try_job = try_job_util.NeedANewTryJob( 1063 need_try_job = try_job_util.NeedANewTryJob(
1091 master_name, builder_name, build_number, failure_info, None, None) 1064 master_name, builder_name, build_number, failure_info, None, None)
1092 1065
1093 self.assertFalse(need_try_job) 1066 self.assertFalse(need_try_job)
1094 1067
1095 def testNotNeedANewTryJobForCompileTypeNoFailureInfo(self): 1068 @mock.patch.object(try_job_util, '_ShouldBailOutForOutdatedBuild')
1069 def testNotNeedANewTryJobForCompileTypeNoFailureInfo(self, mock_fn):
1096 master_name = 'm' 1070 master_name = 'm'
1097 builder_name = 'b' 1071 builder_name = 'b'
1098 build_number = 223 1072 build_number = 223
1099 failure_info = { 1073 failure_info = {
1100 'master_name': master_name, 1074 'master_name': master_name,
1101 'builder_name': builder_name, 1075 'builder_name': builder_name,
1102 'build_number': build_number, 1076 'build_number': build_number,
1103 'failed_steps': {}, 1077 'failed_steps': {},
1104 'builds': { 1078 'builds': {
1105 '222': { 1079 '222': {
1106 'blame_list': ['222-1'], 1080 'blame_list': ['222-1'],
1107 'chromium_revision': '222-1' 1081 'chromium_revision': '222-1'
1108 }, 1082 },
1109 '223': { 1083 '223': {
1110 'blame_list': ['223-1', '223-2', '223-3'], 1084 'blame_list': ['223-1', '223-2', '223-3'],
1111 'chromium_revision': '223-3' 1085 'chromium_revision': '223-3'
1112 } 1086 }
1113 }, 1087 },
1114 'failure_type': failure_type.COMPILE 1088 'failure_type': failure_type.COMPILE
1115 } 1089 }
1116 1090
1117 def _MockShouldBailOutForOutdatedBuild(*_): 1091 mock_fn.return_value = False
1118 return False
1119 self.mock(
1120 try_job_util, '_ShouldBailOutForOutdatedBuild',
1121 _MockShouldBailOutForOutdatedBuild)
1122 1092
1123 need_try_job = try_job_util.NeedANewTryJob( 1093 need_try_job = try_job_util.NeedANewTryJob(
1124 master_name, builder_name, build_number, failure_info, None, None) 1094 master_name, builder_name, build_number, failure_info, None, None)
1125 1095
1126 self.assertFalse(need_try_job) 1096 self.assertFalse(need_try_job)
1127 1097
1128 def testForceTryJob(self): 1098 def testForceTryJob(self):
1129 master_name = 'm' 1099 master_name = 'm'
1130 builder_name = 'b' 1100 builder_name = 'b'
1131 build_number = 223 1101 build_number = 223
(...skipping 158 matching lines...) Expand 10 before | Expand all | Expand 10 after
1290 'failed_targets': [ 1260 'failed_targets': [
1291 {'source': 'b.cc', 'target': 'b.o'}, 1261 {'source': 'b.cc', 'target': 'b.o'},
1292 ] 1262 ]
1293 } 1263 }
1294 } 1264 }
1295 1265
1296 self.assertEqual( 1266 self.assertEqual(
1297 try_job_util.GetFailedTargetsFromSignals( 1267 try_job_util.GetFailedTargetsFromSignals(
1298 signals, 'master1', 'builder1'), 1268 signals, 'master1', 'builder1'),
1299 ['b.o']) 1269 ['b.o'])
OLDNEW
« no previous file with comments | « appengine/findit/waterfall/test/start_try_job_on_demand_pipeline_test.py ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698