def runJplagForFile(lang, kind, file, args): print() print(ansi.green(f'Running jplag for file {file}')) runJplag([ '-r', shell.pjoin(resultDir, kind, file), '-l', lang, '-p', file, '.' ], args, file)
def submit_changes( clock: util.Clock, server: GerritServer, changes: List[Change], num_retries: int = 0 ) -> None: # Strip out merged changes. changes = [cl for cl in changes if cl.status != ChangeStatus.MERGED] # For any CL that doesn't have a CQ+1, run it now to speed things up. # As long as the CL isn't changed in the mean-time, it won't be tested # again when we finally get around to +2'ing it. # # We ignore the first one, because we are just about to +2 it anyway. for cl in changes[1:]: if cl.cq_votes() == 0: print("Setting CQ state of CL %d to dry-run." % cl.id) server.set_cq_state(cl.change_id, 1) # Submit the changes in order. for cl in changes: backoff = util.ExponentialBackoff(clock) max_attempts = num_retries + 1 num_attempts = 0 print() print("Submitting CL %d: %s" % (cl.id, cl.subject)) while True: # Fetch the latest information about the CL. current_cl = server.fetch_change(cl.change_id) # Check it still exists. if current_cl is None: raise SubmitError("CL %s could not be found." % cl.id) # If it is merged, we are done. if current_cl.status == ChangeStatus.MERGED: break # If it is not in CQ, add it to CQ. if current_cl.cq_votes() < 2: if num_attempts == 0: print(ansi.gray(" Adding to CQ.")) elif num_attempts < max_attempts: print(ansi.yellow(" CL failed in CQ. Retrying...")) else: print(ansi.red(" CL failed in CQ. Aborting.")) return num_attempts += 1 server.set_cq_state(cl.change_id, 2) # wait. backoff.wait() print(ansi.gray(' Polling...')) # Did we fail? print(ansi.green(" Submitted!"))
def runJplagMerged(lang, kind, ext, args): print() print(ansi.green(f'Running jplag for all assignments of kind {kind}')) runJplag( ['-r', shell.pjoin(resultDir, kind), '-l', lang, '-p', ext, '.'], args, '*' + ext)