in tools/cloud-build/babysit/runner.py [0:0]
def run(args: RunnerArgs, ui: UIProto) -> None:
assert args.names or args.tags or args.auto or args.all, "At least one test selector is required"
pr = get_pr(args.pr)
print(f"Using PR#{args.pr}: {pr['title']}") # TODO: use UI to log
sha = pr["head"]["sha"]
selectors = []
selectors += [selector_by_tag(t) for t in args.tags or []]
selectors += [selector_by_name(n) for n in args.names or []]
if args.all:
selectors.append(lambda _: True)
if args.auto:
auto_tags = get_changed_files_tags(get_pr_files(args.pr))
selectors += [selector_by_tag(t) for t in auto_tags]
if not selectors:
print("No test selectors found, nothing to do.") # TODO: use UI to log
return
cb = cloudbuild_v1.services.cloud_build.CloudBuildClient()
try:
Babysitter(ui, cb, args.project, sha, selectors, args.concurrency, args.retries).do()
except KeyboardInterrupt:
print("User interrupted") # TODO: use UI to log