From 1741e6486dbae821aaac8bc4bd52938e4034f870 Mon Sep 17 00:00:00 2001 From: Jelmer Vernooij Date: Mon, 5 Mar 2012 03:20:13 +0100 Subject: selftest: Factor out expand_environment_strings. --- selftest/run.py | 29 +++++++++++++++++++++++++++++ selftest/selftest.py | 12 ++---------- selftest/tests/__init__.py | 2 +- selftest/tests/test_run.py | 38 ++++++++++++++++++++++++++++++++++++++ 4 files changed, 70 insertions(+), 11 deletions(-) create mode 100644 selftest/run.py create mode 100644 selftest/tests/test_run.py (limited to 'selftest') diff --git a/selftest/run.py b/selftest/run.py new file mode 100644 index 0000000000..4ef10de142 --- /dev/null +++ b/selftest/run.py @@ -0,0 +1,29 @@ +#!/usr/bin/python -u +# Bootstrap Samba and run a number of tests against it. +# Copyright (C) 2012 Jelmer Vernooij + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +import os + +# expand strings from %ENV +def expand_environment_strings(s, vars): + # we use a reverse sort so we do the longer ones first + for k in sorted(vars.keys(), reverse=True): + v = vars[k] + s = s.replace("$%s" % k, v) + return s + + + diff --git a/selftest/selftest.py b/selftest/selftest.py index e619515644..cbc24f13ce 100755 --- a/selftest/selftest.py +++ b/selftest/selftest.py @@ -39,6 +39,7 @@ from selftest import ( subunithelper, testlist, ) +from selftest.run import expand_environment_strings from selftest.target import ( EnvironmentManager, NoneTarget, @@ -118,15 +119,6 @@ def cleanup_pcap(pcap_file, exit_code): os.unlink(pcap_file) -# expand strings from %ENV -def expand_environment_strings(s): - # we use a reverse sort so we do the longer ones first - for k in sorted(os.environ.keys(), reverse=True): - v = os.environ[k] - s = s.replace("$%s" % k, v) - return s - - def run_testsuite(envname, name, cmd): """Run a single testsuite. @@ -156,7 +148,7 @@ def run_testsuite(envname, name, cmd): sys.stdout.write("envlog: %s\n" % envlog) sys.stdout.write("command: %s\n" % cmd) - sys.stdout.write("expanded command: %s\n" % expand_environment_strings(cmd)) + sys.stdout.write("expanded command: %s\n" % expand_environment_strings(cmd, os.environ)) if exitcode == 0: subunit_ops.end_testsuite(name, "success") diff --git a/selftest/tests/__init__.py b/selftest/tests/__init__.py index 3de290c89c..5ff1f6b8d2 100644 --- a/selftest/tests/__init__.py +++ b/selftest/tests/__init__.py @@ -25,7 +25,7 @@ import unittest def test_suite(): result = unittest.TestSuite() - names = ['socket_wrapper', 'target', 'testlist'] + names = ['socket_wrapper', 'target', 'testlist', 'run'] module_names = ['selftest.tests.test_' + name for name in names] loader = unittest.TestLoader() result.addTests(loader.loadTestsFromNames(module_names)) diff --git a/selftest/tests/test_run.py b/selftest/tests/test_run.py new file mode 100644 index 0000000000..040c143895 --- /dev/null +++ b/selftest/tests/test_run.py @@ -0,0 +1,38 @@ +# test_run.py -- Tests for selftest.run +# Copyright (C) 2012 Jelmer Vernooij +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; version 3 +# of the License or (at your option) any later version of +# the License. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, +# MA 02110-1301, USA. + +"""Tests for selftest.run.""" + +from selftest.run import expand_environment_strings + +from selftest.tests import TestCase + + +class ExpandEnvironmentStringsTests(TestCase): + + def test_no_vars(self): + self.assertEquals("foo bar", expand_environment_strings("foo bar", {})) + + def test_simple(self): + self.assertEquals("foo bar", + expand_environment_strings("foo $BLA", {"BLA": "bar"})) + + def test_unknown(self): + self.assertEquals("foo $BLA", + expand_environment_strings("foo $BLA", {})) -- cgit