Merge lp:~dpb/charm-tools/preserve-environment into lp:charm-tools/1.2

Proposed by David Britton
Status: Merged
Merged at revision: 317
Proposed branch: lp:~dpb/charm-tools/preserve-environment
Merge into: lp:charm-tools/1.2
Diff against target: 62 lines (+18/-2)
2 files modified
charmtools/test.py (+8/-1)
tests/test_juju_test.py (+10/-1)
To merge this branch: bzr merge lp:~dpb/charm-tools/preserve-environment
Reviewer Review Type Date Requested Status
charmers Pending
Review via email: mp+208439@code.launchpad.net

Description of the change

Add command line argument --preserve-environment-variables which allows arbitrary variables names to make it to the internal whitelist.

To post a comment you must log in.

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'charmtools/test.py'
2--- charmtools/test.py 2014-01-29 14:38:48 +0000
3+++ charmtools/test.py 2014-02-26 17:40:26 +0000
4@@ -25,7 +25,7 @@
5
6 LOG_LEVELS = [logging.INFO, logging.DEBUG]
7 TEST_RESULT_LEVELV_NUM = 51
8-ENV_WHITELIST = ('PATH', 'SSH_AUTH_SOCK', 'SSH_AGENT_PID', 'PYTHONPATH')
9+ENV_WHITELIST = ['PATH', 'SSH_AUTH_SOCK', 'SSH_AGENT_PID', 'PYTHONPATH']
10
11
12 class NoTests(Exception):
13@@ -65,6 +65,9 @@
14 def __init__(self, arguments=None):
15 self.args = arguments
16 self.env = {'JUJU_HOME': os.path.expanduser('~/.juju')}
17+ if arguments.preserve_environment_variables:
18+ for var in arguments.preserve_environment_variables.split(","):
19+ ENV_WHITELIST.append(var)
20 for var in ENV_WHITELIST:
21 if var in os.environ:
22 self.env[var] = os.environ[var]
23@@ -610,6 +613,10 @@
24 help="make test more verbose")
25 parser.add_argument('-q', '--quiet', default=False, action="store_true",
26 help="quiet all output")
27+ parser.add_argument('-p', '--preserve-environment-variables',
28+ help="Comma separated list of environment variables "
29+ "to preserve. This will be added to the default list "
30+ "of {}.".format(ENV_WHITELIST))
31 # These are bootstrap/juju specific
32 parser.add_argument('-e', '--environment', metavar='JUJU_ENV',
33 default=os.environ.get('JUJU_ENV'),
34
35=== modified file 'tests/test_juju_test.py'
36--- tests/test_juju_test.py 2014-01-29 14:36:02 +0000
37+++ tests/test_juju_test.py 2014-02-26 17:40:26 +0000
38@@ -7,7 +7,6 @@
39 from contextlib import contextmanager
40 from charmtools import test as juju_test
41 from mock import patch, call, Mock, MagicMock
42-from StringIO import StringIO
43
44 RAW_ENVIRONMENTS_YAML = '''
45 default: gojuju
46@@ -133,6 +132,16 @@
47 self.assertEqual('FOOBAR', c.env['SSH_AGENT_PID'])
48 self.assertEqual('FOOBAR', c.env['SSH_AUTH_SOCK'])
49
50+ def test_conductor_allows_addition_to_whitelist_env(self):
51+ """Ensure that the conductor copies the environment whitelist."""
52+ os.environ['FOO'] = 'BAR';
53+ os.environ['BAR'] = 'BAZ';
54+ args = Arguments(tests="dummy")
55+ args.preserve_environment_variables = "FOO,BAR"
56+ c = juju_test.Conductor(args)
57+ self.assertEqual('BAR', c.env['FOO'])
58+ self.assertEqual('BAZ', c.env['BAR'])
59+
60 @patch.object(juju_test.Conductor, 'find_tests')
61 def test_conductor_find_tests_exception(self, mfind_tests):
62 mfind_tests.return_value = None

Subscribers

People subscribed via source and target branches

to all changes: