|
Pierre-Yves Chibon |
479e0a |
#! /usr/bin/env python
|
|
Pierre-Yves Chibon |
479e0a |
|
|
Clement Verna |
37420e |
import argparse
|
|
Clement Verna |
37420e |
import os
|
|
Clement Verna |
37420e |
import subprocess as sp
|
|
Clement Verna |
37420e |
|
|
Clement Verna |
37420e |
|
|
Clement Verna |
37420e |
def setup_parser():
|
|
Clement Verna |
37420e |
""" Setup the cli arguments """
|
|
Clement Verna |
37420e |
parser = argparse.ArgumentParser(prog="pagure-test")
|
|
Clement Verna |
37420e |
parser.add_argument(
|
|
Clement Verna |
37420e |
"test_case", nargs="?", default="", help="Run the given test case"
|
|
Clement Verna |
37420e |
)
|
|
Clement Verna |
37420e |
parser.add_argument(
|
|
Clement Verna |
37420e |
"--fedora",
|
|
Clement Verna |
37420e |
action="store_true",
|
|
Clement Verna |
37420e |
help="Run the tests in fedora environment (DEFAULT)",
|
|
Clement Verna |
37420e |
)
|
|
Clement Verna |
37420e |
parser.add_argument(
|
|
Clement Verna |
37420e |
"--centos",
|
|
Clement Verna |
37420e |
action="store_true",
|
|
Clement Verna |
37420e |
help="Run the tests in centos environment",
|
|
Clement Verna |
37420e |
)
|
|
Clement Verna |
37420e |
parser.add_argument(
|
|
Clement Verna |
37420e |
"--skip-build",
|
|
Clement Verna |
37420e |
dest="skip_build",
|
|
Clement Verna |
37420e |
action="store_false",
|
|
Clement Verna |
37420e |
help="Skip building the container image",
|
|
Clement Verna |
37420e |
)
|
|
Pierre-Yves Chibon |
e944ac |
parser.add_argument(
|
|
Pierre-Yves Chibon |
e944ac |
"--shell",
|
|
Pierre-Yves Chibon |
e944ac |
dest="shell",
|
|
Pierre-Yves Chibon |
e944ac |
action="store_true",
|
|
Pierre-Yves Chibon |
e944ac |
help="Gives you a shell into the container instead "
|
|
Pierre-Yves Chibon |
e944ac |
"of running the tests",
|
|
Pierre-Yves Chibon |
e944ac |
)
|
|
Clement Verna |
37420e |
|
|
Clement Verna |
37420e |
return parser
|
|
Clement Verna |
37420e |
|
|
Clement Verna |
37420e |
|
|
Clement Verna |
37420e |
if __name__ == "__main__":
|
|
Clement Verna |
37420e |
parser = setup_parser()
|
|
Clement Verna |
37420e |
args = parser.parse_args()
|
|
Clement Verna |
37420e |
|
|
Clement Verna |
37420e |
if args.centos is True:
|
|
Pierre-Yves Chibon |
479e0a |
container_names = ["pagure-c7-rpms-py2"]
|
|
Pierre-Yves Chibon |
479e0a |
container_files = ["centos7-rpms-py2"]
|
|
Pierre-Yves Chibon |
479e0a |
elif args.fedora is True:
|
|
Pierre-Yves Chibon |
479e0a |
container_names = ["pagure-f29-rpms-py3"]
|
|
Pierre-Yves Chibon |
479e0a |
container_files = ["f29-rpms-py3"]
|
|
Clement Verna |
37420e |
else:
|
|
Pierre-Yves Chibon |
479e0a |
container_names = ["pagure-f29-rpms-py3", "pagure-c7-rpms-py2"]
|
|
Pierre-Yves Chibon |
479e0a |
container_files = ["f29-rpms-py3", "centos7-rpms-py2"]
|
|
Clement Verna |
37420e |
|
|
Pierre-Yves Chibon |
479e0a |
for idx, container_name in enumerate(container_names):
|
|
Pierre-Yves Chibon |
479e0a |
if args.skip_build is not False:
|
|
Pierre-Yves Chibon |
479e0a |
print("------ Building Container Image -----")
|
|
Pierre-Yves Chibon |
479e0a |
sp.call(
|
|
Pierre-Yves Chibon |
479e0a |
[
|
|
Pierre-Yves Chibon |
479e0a |
"podman",
|
|
Pierre-Yves Chibon |
479e0a |
"build",
|
|
Pierre-Yves Chibon |
479e0a |
"--rm",
|
|
Pierre-Yves Chibon |
479e0a |
"-t",
|
|
Pierre-Yves Chibon |
479e0a |
container_name,
|
|
Pierre-Yves Chibon |
479e0a |
"-f",
|
|
Pierre-Yves Chibon |
479e0a |
"dev/containers/%s" % container_files[idx],
|
|
Pierre-Yves Chibon |
479e0a |
"dev/containers",
|
|
Pierre-Yves Chibon |
479e0a |
]
|
|
Clement Verna |
37420e |
)
|
|
Pierre-Yves Chibon |
e944ac |
|
|
Pierre-Yves Chibon |
479e0a |
result_path = "{}/results_{}".format(os.getcwd(), container_files[idx])
|
|
Pierre-Yves Chibon |
479e0a |
if not os.path.exists(result_path):
|
|
Pierre-Yves Chibon |
479e0a |
os.mkdir(result_path)
|
|
Pierre-Yves Chibon |
e944ac |
|
|
Pierre-Yves Chibon |
479e0a |
if args.shell:
|
|
Pierre-Yves Chibon |
479e0a |
print("--------- Shelling in the container --------------")
|
|
Pierre-Yves Chibon |
479e0a |
command = [
|
|
Pierre-Yves Chibon |
e944ac |
"podman",
|
|
Pierre-Yves Chibon |
e944ac |
"run",
|
|
Pierre-Yves Chibon |
e944ac |
"-it",
|
|
Pierre-Yves Chibon |
e944ac |
"--rm",
|
|
Pierre-Yves Chibon |
e944ac |
"--name",
|
|
Pierre-Yves Chibon |
e944ac |
container_name,
|
|
Pierre-Yves Chibon |
e944ac |
"-v",
|
|
Pierre-Yves Chibon |
b8a95b |
"{}/results_{}:/pagure/results:z".format(
|
|
Pierre-Yves Chibon |
479e0a |
os.getcwd(), container_files[idx]),
|
|
Pierre-Yves Chibon |
479e0a |
"-e",
|
|
Pierre-Yves Chibon |
479e0a |
"BRANCH=$BRANCH",
|
|
Pierre-Yves Chibon |
479e0a |
"-e",
|
|
Pierre-Yves Chibon |
479e0a |
"REPO=$REPO",
|
|
Pierre-Yves Chibon |
479e0a |
"--entrypoint=/bin/bash",
|
|
Pierre-Yves Chibon |
e944ac |
container_name,
|
|
Pierre-Yves Chibon |
e944ac |
]
|
|
Pierre-Yves Chibon |
479e0a |
sp.call(command)
|
|
Pierre-Yves Chibon |
479e0a |
else:
|
|
Pierre-Yves Chibon |
479e0a |
print("--------- Running Test --------------")
|
|
Pierre-Yves Chibon |
479e0a |
sp.call(
|
|
Pierre-Yves Chibon |
479e0a |
[
|
|
Pierre-Yves Chibon |
479e0a |
"podman",
|
|
Pierre-Yves Chibon |
479e0a |
"run",
|
|
Pierre-Yves Chibon |
479e0a |
"-it",
|
|
Pierre-Yves Chibon |
479e0a |
"--rm",
|
|
Pierre-Yves Chibon |
479e0a |
"--name",
|
|
Pierre-Yves Chibon |
479e0a |
container_name,
|
|
Pierre-Yves Chibon |
479e0a |
"-v",
|
|
Pierre-Yves Chibon |
b8a95b |
"{}/results_{}:/pagure/results:z".format(
|
|
Pierre-Yves Chibon |
479e0a |
os.getcwd(), container_files[idx]),
|
|
Pierre-Yves Chibon |
479e0a |
"-e",
|
|
Pierre-Yves Chibon |
479e0a |
"BRANCH={}".format(os.environ.get("BRANCH") or ""),
|
|
Pierre-Yves Chibon |
479e0a |
"-e",
|
|
Pierre-Yves Chibon |
479e0a |
"REPO={}".format(os.environ.get("REPO") or ""),
|
|
Pierre-Yves Chibon |
479e0a |
container_name,
|
|
Pierre-Yves Chibon |
479e0a |
args.test_case,
|
|
Pierre-Yves Chibon |
479e0a |
]
|
|
Pierre-Yves Chibon |
479e0a |
)
|