From 34cc2fcda6804d42ee66fa5a417fc42b64fe3806 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20Pokorn=C3=BD?= Date: Tue, 10 Jul 2018 19:45:56 +0200 Subject: [PATCH] test: avoid dangerous mutable/sticky default value MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Incl. slight refactoring towards more frequent use of tuples where advantage of lists are dubious. Signed-off-by: Jan Pokorný --- script/unit-test.py.in | 34 ++++++++++++++++------------------ test/assertions.py | 2 +- test/boothrunner.py | 14 +++++++------- test/clientenv.py | 4 ++-- test/serverenv.py | 4 ++-- 5 files changed, 28 insertions(+), 30 deletions(-) diff --git a/script/unit-test.py.in b/script/unit-test.py.in index 4f3cf62..fc98bc1 100644 --- a/script/unit-test.py.in +++ b/script/unit-test.py.in @@ -199,7 +199,7 @@ class UT(): self.booth.close( force=self.booth.isalive() ) - def start_a_process(self, bin, env_add=[], **args): + def start_a_process(self, bin, env_add=(), **args): name = re.sub(r".*/", "", bin) # How to get stderr, too? expct = pexpect.spawn(bin, @@ -220,16 +220,15 @@ class UT(): def start_processes(self, test): self.booth = self.start_a_process(self.binary, - args = [ "daemon", "-D", - "-c", self.test_base + "/booth.conf", - "-s", "127.0.0.1", - "-l", self.lockfile, - ], - env_add=[ ('UNIT_TEST', test), + args = ["daemon", "-D", + "-c", self.test_base + "/booth.conf", + "-s", "127.0.0.1", + "-l", self.lockfile], + env_add=( ('UNIT_TEST', test), ('UNIT_TEST_FILE', os.path.realpath(test)), # provide some space, so that strcpy(getenv()) works ('UNIT_TEST_AUX', "".zfill(1024)), - ]); + )); logging.info("started booth with PID %d, lockfile %s" % (self.booth.pid, self.lockfile)) self.booth.expect("BOOTH site \S+ \(build \S+\) daemon is starting", timeout=2) @@ -237,16 +236,15 @@ class UT(): self.gdb = self.start_a_process("gdb", args=["-quiet", - "-p", str(self.booth.pid), - # Don't use .gdbinit - "-nx", "-nh", - # Run until the defined point. - # This is necessary so that ticket state setting doesn't - # happen _before_ the call to pcmk_load_ticket() - # (which would overwrite our data) - "-ex", "break ticket_cron", - "-ex", "continue", - ]) + "-p", str(self.booth.pid), + # Don't use .gdbinit + "-nx", "-nh", + # Run until the defined point. + # This is necessary so that ticket state setting doesn't + # happen _before_ the call to pcmk_load_ticket() + # (which would overwrite our data) + "-ex", "break ticket_cron", + "-ex", "continue"]) logging.info("started GDB with PID %d" % self.gdb.pid) self.gdb.expect("(gdb)") self.gdb.sendline("set pagination off\n") diff --git a/test/assertions.py b/test/assertions.py index fafb291..db6fcd8 100644 --- a/test/assertions.py +++ b/test/assertions.py @@ -10,7 +10,7 @@ class BoothAssertions: self.assertRegexpMatches(stderr, expected_error) def assertLockFileError(self, config_file=None, config_text=None, - lock_file=True, args=[]): + lock_file=True, args=()): (pid, ret, stdout, stderr, runner) = \ self.run_booth(config_text=config_text, config_file=config_file, lock_file=lock_file, args=args, expected_exitcode=1) diff --git a/test/boothrunner.py b/test/boothrunner.py index 31c2213..0285fe6 100644 --- a/test/boothrunner.py +++ b/test/boothrunner.py @@ -8,14 +8,14 @@ class BoothRunner: def __init__(self, boothd_path, mode, args): self.boothd_path = boothd_path - self.args = [ mode ] - self.final_args = args # will be appended to self.args + self.args = (mode, ) + self.final_args = tuple(args) # will be appended to self.args self.mode = mode self.config_file = None self.lock_file = None def set_config_file_arg(self): - self.args += [ '-c', self.config_file ] + self.args += ('-c', self.config_file) def set_config_file(self, config_file): self.config_file = config_file @@ -23,16 +23,16 @@ class BoothRunner: def set_lock_file(self, lock_file): self.lock_file = lock_file - self.args += [ '-l', self.lock_file ] + self.args += ('-l', self.lock_file) def set_debug(self): - self.args += [ '-D' ] + self.args += ('-D', ) def set_foreground(self): - self.args += [ '-S' ] + self.args += ('-S', ) def all_args(self): - return [ self.boothd_path ] + self.args + self.final_args + return (self.boothd_path, ) + self.args + self.final_args def show_output(self, stdout, stderr): if stdout: diff --git a/test/clientenv.py b/test/clientenv.py index 73b2791..141e33c 100644 --- a/test/clientenv.py +++ b/test/clientenv.py @@ -4,8 +4,8 @@ from boothrunner import BoothRunner class ClientTestEnvironment(BoothTestEnvironment): mode = 'client' - def run_booth(self, config_text=None, config_file=None, lock_file=True, args=[], - expected_exitcode=0, debug=False): + def run_booth(self, config_text=None, config_file=None, lock_file=True, + args=(), expected_exitcode=0, debug=False): ''' Runs boothd. diff --git a/test/serverenv.py b/test/serverenv.py index 7b8915d..62c37d0 100644 --- a/test/serverenv.py +++ b/test/serverenv.py @@ -29,7 +29,7 @@ ticket="ticketB" def run_booth(self, expected_exitcode, expected_daemon, config_text=None, config_file=None, lock_file=True, - args=[], debug=False, foreground=False): + args=(), debug=False, foreground=False): ''' Runs boothd. Defaults to using a temporary lock file and the standard config file path. There are four possible types of @@ -52,7 +52,7 @@ ticket="ticketB" True: pass a temporary lockfile parameter to booth via -l string: pass the given lockfile path to booth via -l args - array of extra args to pass to booth + iterable of extra args to pass to booth expected_exitcode an integer, or False if booth is not expected to terminate within the timeout -- 2.18.0.rc2