From b2db59f3bcbfd06a60965b19cc06413fd478fd1c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mattias=20Walstr=C3=B6m?= Date: Fri, 10 Jan 2025 14:43:06 +0100 Subject: [PATCH] infamy: Add support for parameters to tests All test added parameters is required and no default behaviour is allowed. --- test/infamy/__init__.py | 1 + test/infamy/env.py | 35 ++++++++++++++++++++++------------- 2 files changed, 23 insertions(+), 13 deletions(-) diff --git a/test/infamy/__init__.py b/test/infamy/__init__.py index abf18f5b..fae02eb0 100644 --- a/test/infamy/__init__.py +++ b/test/infamy/__init__.py @@ -2,6 +2,7 @@ import os from .container import Container from .env import Env +from .env import ArgumentParser from .furl import Furl from .netns import IsolatedMacVlan,IsolatedMacVlans from .sniffer import Sniffer diff --git a/test/infamy/env.py b/test/infamy/env.py index 06f84216..8fd6032f 100644 --- a/test/infamy/env.py +++ b/test/infamy/env.py @@ -16,8 +16,7 @@ class NullEnv: ENV = NullEnv() - -class ArgumentParser(argparse.ArgumentParser): +class ArgumentParser(): def DefaultTransport(): """Pick pseudo-random transport @@ -32,24 +31,34 @@ class ArgumentParser(argparse.ArgumentParser): return random.choice(["netconf", "restconf"]) - def __init__(self, top): - super().__init__() + def __init__(self, top = None): + self.args = argparse.ArgumentParser(top) - self.add_argument("-d", "--debug", default=False, action="store_true") - self.add_argument("-l", "--logical-topology", dest="ltop", default=top) - self.add_argument("-p", "--package", default=None) - self.add_argument("-y", "--yangdir", default=None) - self.add_argument("-t", "--transport", default=ArgumentParser.DefaultTransport()) - self.add_argument("ptop", nargs=1, metavar="topology") + self.args.add_argument("-d", "--debug", default=False, action="store_true") + self.args.add_argument("-p", "--package", default=None) + self.args.add_argument("-y", "--yangdir", default=None) + self.args.add_argument("-t", "--transport", default=ArgumentParser.DefaultTransport()) + self.args.add_argument("ptop", nargs=1, metavar="topology") + self.args.add_argument("-l", "--logical-topology", dest="ltop", default=top) + def add_argument(self, *args, **kwargs): + kwargs["required"] = True + self.args.add_argument(*args, **kwargs) + + def parse_args(self, argv): + return self.args.parse_args(argv) + class Env(object): - def __init__(self, ltop=None, argv=sys.argv[1::], environ=os.environ): + def __init__(self, ltop=None, args=None, argv=sys.argv[1::], environ=os.environ): if "INFAMY_ARGS" in environ: argv = shlex.split(environ["INFAMY_ARGS"]) + argv - self.args = ArgumentParser(ltop).parse_args(argv) - + if args: + self.argp = args + else: + self.argp = ArgumentParser(ltop) + self.args = self.argp.parse_args(argv) pdot = pydot.graph_from_dot_file(self.args.ptop[0])[0] self.ptop = topology.Topology(pdot)