@@ -69,76 +69,76 @@ def cli(ctx, paths, **kwds):
6969
7070 def update (realized_repository ):
7171 collected_data ['results' ]['total' ] += 1
72+ skip_upload = kwds ["skip_upload" ]
73+ skip_metadata = kwds ["skip_metadata" ]
7274 upload_ret_code = 0
7375 upload_ok = True
7476
7577 captured_io = {}
76- if not kwds [ " skip_upload" ] :
78+ if not skip_upload :
7779 with captured_io_for_xunit (kwds , captured_io ):
7880 upload_ret_code = shed .upload_repository (
7981 ctx , realized_repository , ** kwds
8082 )
8183 upload_ok = not upload_ret_code
8284
85+ repo_result = {
86+ 'classname' : realized_repository .name ,
87+ 'time' : captured_io .get ("time" , None ),
88+ 'name' : 'shed-update' ,
89+ 'stdout' : captured_io .get ("stdout" , None ),
90+ 'stderr' : captured_io .get ("stderr" , None ),
91+ }
92+
8393 # Now that we've uploaded (or skipped appropriately), collect results.
8494 if upload_ret_code == 2 :
8595 collected_data ['results' ]['failures' ] += 1
86- collected_data ['tests' ].append ({
87- 'classname' : realized_repository .name ,
96+ repo_result .update ({
8897 'errorType' : 'FailedUpdate' ,
8998 'errorMessage' : 'Failed to update repository as it does not exist in target ToolShed' ,
90- 'time' : captured_io ["time" ],
91- 'name' : 'shed-update' ,
92- 'stdout' : captured_io ["stdout" ],
93- 'stderr' : captured_io ["stderr" ],
9499 })
100+ collected_data ['tests' ].append (repo_result )
95101 error ("Failed to update repository it does not exist "
96102 "in target ToolShed." )
97103 return upload_ret_code
98- repo_id = realized_repository .find_repository_id (ctx , shed_context )
104+
105+ exit = 0
99106 metadata_ok = True
100- if not kwds ["skip_metadata" ]:
101- metadata_ok = realized_repository .update (ctx , shed_context , repo_id )
102- if metadata_ok :
103- info ("Repository metadata updated." )
107+ if not skip_metadata :
108+ repo_id = shed .handle_force_create (realized_repository , ctx , shed_context , ** kwds )
109+ # failing to create the repo, give up
110+ if repo_id is None :
111+ exit = shed .report_non_existent_repository (realized_repository )
112+ metadata_ok = False
113+ else :
114+ metadata_ok = realized_repository .update (ctx , shed_context , repo_id )
104115 else :
116+ info ("Skipping repository metadata update." )
117+
118+ if not metadata_ok :
105119 error ("Failed to update repository metadata." )
106120
107121 if metadata_ok and upload_ok :
108- collected_data ['tests' ].append ({
109- 'classname' : realized_repository .name ,
110- 'time' : captured_io ["time" ],
111- 'name' : 'shed-update' ,
112- 'stdout' : captured_io ["stdout" ],
113- 'stderr' : captured_io ["stderr" ],
114- })
115- return 0
122+ pass
116123 elif upload_ok :
117124 collected_data ['results' ]['skips' ] += 1
118- collected_data ['tests' ].append ({
119- 'classname' : realized_repository .name ,
125+ repo_result .update ({
120126 'errorType' : 'FailedMetadata' ,
121127 'errorMessage' : 'Failed to update repository metadata' ,
122- 'time' : captured_io ["time" ],
123- 'name' : 'shed-update' ,
124- 'stdout' : captured_io ["stdout" ],
125- 'stderr' : captured_io ["stderr" ],
126128 })
127- error ("Repo updated but metadata was not." )
128- return 1
129+ if not skip_upload :
130+ error ("Repo updated but metadata was not." )
131+ exit = exit or 1
129132 else :
130133 collected_data ['results' ]['failures' ] += 1
131- collected_data ['tests' ].append ({
132- 'classname' : realized_repository .name ,
134+ repo_result .update ({
133135 'errorType' : 'FailedUpdate' ,
134136 'errorMessage' : 'Failed to update repository' ,
135- 'time' : captured_io ["time" ],
136- 'name' : 'shed-update' ,
137- 'stdout' : captured_io ["stdout" ],
138- 'stderr' : captured_io ["stderr" ],
139137 })
140138 error ("Failed to update a repository." )
141- return 1
139+ exit = exit or 1
140+ collected_data ['tests' ].append (repo_result )
141+ return exit
142142
143143 exit_code = shed .for_each_repository (ctx , update , paths , ** kwds )
144144
0 commit comments