Merge lp:~ericsnowcurrently/fake-juju/python-lib-helpers into lp:~landscape/fake-juju/trunk-old

Proposed by Eric Snow
Status: Merged
Approved by: Eric Snow
Approved revision: 43
Merged at revision: 38
Proposed branch: lp:~ericsnowcurrently/fake-juju/python-lib-helpers
Merge into: lp:~landscape/fake-juju/trunk-old
Prerequisite: lp:~ericsnowcurrently/fake-juju/python-lib-init
Diff against target: 212 lines (+187/-0)
4 files modified
python/fakejuju/__init__.py (+14/-0)
python/fakejuju/fakejuju.py (+32/-0)
python/fakejuju/tests/test___init__.py (+24/-0)
python/fakejuju/tests/test_fakejuju.py (+117/-0)
To merge this branch: bzr merge lp:~ericsnowcurrently/fake-juju/python-lib-helpers
Reviewer Review Type Date Requested Status
🤖 Landscape Builder test results Approve
Free Ekanayaka (community) Approve
Review via email: mp+307892@code.launchpad.net

This proposal supersedes a proposal from 2016-10-06.

Commit message

Add helper functions to the fakejuju.fakejuju module.

Description of the change

Add helper functions to the fakejuju.fakejuju module.

Testing instructions:

Run the unit tests.

To post a comment you must log in.
Revision history for this message
🤖 Landscape Builder (landscape-builder) : Posted in a previous version of this proposal
review: Abstain (executing tests)
Revision history for this message
🤖 Landscape Builder (landscape-builder) :
review: Abstain (executing tests)
Revision history for this message
🤖 Landscape Builder (landscape-builder) wrote : Posted in a previous version of this proposal

Command: make ci-test
Result: Success
Revno: 42
Branch: lp:~ericsnowcurrently/fake-juju/python-lib-helpers
Jenkins: https://ci.lscape.net/job/latch-test-xenial/15/

review: Approve (test results)
Revision history for this message
🤖 Landscape Builder (landscape-builder) wrote :

Command: make ci-test
Result: Success
Revno: 42
Branch: lp:~ericsnowcurrently/fake-juju/python-lib-helpers
Jenkins: https://ci.lscape.net/job/latch-test-xenial/16/

review: Approve (test results)
Revision history for this message
Free Ekanayaka (free.ekanayaka) wrote :

+1 with a couple of comments

review: Approve
37. By Eric Snow

Merge python-lib-init [f=] [r=chad.smith,free.ekanayaka,landscape-builder] [a=Eric Snow]
Init the Python project for a fake-juju library.

Revision history for this message
Eric Snow (ericsnowcurrently) :
Revision history for this message
🤖 Landscape Builder (landscape-builder) :
review: Abstain (executing tests)
Revision history for this message
🤖 Landscape Builder (landscape-builder) wrote :

Command: make ci-test
Result: Success
Revno: 44
Branch: lp:~ericsnowcurrently/fake-juju/python-lib-helpers
Jenkins: https://ci.lscape.net/job/latch-test-xenial/19/

review: Approve (test results)
42. By Eric Snow

Move get_bootstrap_spec() to __init__.py.

43. By Eric Snow

Split the helper tests into separate test classes.

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== modified file 'python/fakejuju/__init__.py'
--- python/fakejuju/__init__.py 2016-10-06 21:43:43 +0000
+++ python/fakejuju/__init__.py 2016-10-13 18:45:47 +0000
@@ -45,4 +45,18 @@
4545
46"""46"""
4747
48
48__version__ = "0.9.0b1"49__version__ = "0.9.0b1"
50
51
52def get_bootstrap_spec(name, admin_secret=None):
53 """Return the BootstrapSpec instance for the given controller.
54
55 @param name: The controller name to set up.
56 @param admin_secret: The admin user password to use.
57 """
58 import txjuju.cli
59
60 driver = "dummy"
61 default_series = None # Use the default.
62 return txjuju.cli.BootstrapSpec(name, driver, default_series, admin_secret)
4963
=== added file 'python/fakejuju/fakejuju.py'
--- python/fakejuju/fakejuju.py 1970-01-01 00:00:00 +0000
+++ python/fakejuju/fakejuju.py 2016-10-13 18:45:47 +0000
@@ -0,0 +1,32 @@
1# Copyright 2016 Canonical Limited. All rights reserved.
2
3import os.path
4
5
6def get_filename(version, bindir=None):
7 """Return the full path to the fake-juju binary for the given version.
8
9 @param version: The Juju version to use.
10 @param bindir: The directory containing the fake-juju binary.
11 This defaults to /usr/bin.
12 """
13 if not version:
14 raise ValueError("version not provided")
15 filename = "fake-juju-{}".format(version)
16 if bindir is None:
17 # XXX Search $PATH.
18 bindir = "/usr/bin"
19 return os.path.join(bindir, filename)
20
21
22def set_envvars(envvars, failures_filename=None, logsdir=None):
23 """Return the environment variables with which to run fake-juju.
24
25 @param envvars: The env dict to update.
26 @param failures_filename: The path to the failures file that
27 fake-juju will use.
28 @params logsdir: The path to the directory where fake-juju will
29 write its log files.
30 """
31 envvars["FAKE_JUJU_FAILURES"] = failures_filename or ""
32 envvars["FAKE_JUJU_LOGS_DIR"] = logsdir or ""
033
=== added directory 'python/fakejuju/tests'
=== added file 'python/fakejuju/tests/__init__.py'
=== added file 'python/fakejuju/tests/test___init__.py'
--- python/fakejuju/tests/test___init__.py 1970-01-01 00:00:00 +0000
+++ python/fakejuju/tests/test___init__.py 2016-10-13 18:45:47 +0000
@@ -0,0 +1,24 @@
1# Copyright 2016 Canonical Limited. All rights reserved.
2
3import unittest
4
5import txjuju.cli
6
7from fakejuju import get_bootstrap_spec
8
9
10class GetBootstrapTests(unittest.TestCase):
11
12 def test_get_bootstrap_spec_full(self):
13 """get_bootstrap_spec() works correctly when given all args."""
14 spec = get_bootstrap_spec("my-env", "pw")
15
16 self.assertEqual(
17 spec,
18 txjuju.cli.BootstrapSpec("my-env", "dummy", admin_secret="pw"))
19
20 def test_get_bootstrap_spec_minimal(self):
21 """get_bootstrap_spec() works correctly when given minimal args."""
22 spec = get_bootstrap_spec("my-env")
23
24 self.assertEqual(spec, txjuju.cli.BootstrapSpec("my-env", "dummy"))
025
=== added file 'python/fakejuju/tests/test_fakejuju.py'
--- python/fakejuju/tests/test_fakejuju.py 1970-01-01 00:00:00 +0000
+++ python/fakejuju/tests/test_fakejuju.py 2016-10-13 18:45:47 +0000
@@ -0,0 +1,117 @@
1# Copyright 2016 Canonical Limited. All rights reserved.
2
3import unittest
4
5from fakejuju.fakejuju import get_filename, set_envvars
6
7
8class GetFilenameTests(unittest.TestCase):
9
10 def test_all_args(self):
11 """get_filename() works correctly when given all args."""
12 filename = get_filename("1.25.6", "/spam")
13
14 self.assertEqual(filename, "/spam/fake-juju-1.25.6")
15
16 def test_minimal_args(self):
17 """get_filename() works correctly when given minimal args."""
18 filename = get_filename("1.25.6")
19
20 self.assertEqual(filename, "/usr/bin/fake-juju-1.25.6")
21
22 def test_empty_bindir(self):
23 """get_filename() works correctly when given an empty string
24 for bindir."""
25 filename = get_filename("1.25.6", "")
26
27 self.assertEqual(filename, "fake-juju-1.25.6")
28
29 def test_missing_version(self):
30 """get_filename() fails if version is None or empty."""
31 with self.assertRaises(ValueError):
32 get_filename(None)
33 with self.assertRaises(ValueError):
34 get_filename("")
35
36
37class SetEnvvarsTests(unittest.TestCase):
38
39 def test_all_args(self):
40 """set_envvars() works correctly when given all args."""
41 envvars = {}
42 set_envvars(envvars, "/spam/failures", "/eggs/logsdir")
43
44 self.assertEqual(envvars, {
45 "FAKE_JUJU_FAILURES": "/spam/failures",
46 "FAKE_JUJU_LOGS_DIR": "/eggs/logsdir",
47 })
48
49 def test_minimal_args(self):
50 """set_envvars() works correctly when given minimal args."""
51 envvars = {}
52 set_envvars(envvars)
53
54 self.assertEqual(envvars, {
55 "FAKE_JUJU_FAILURES": "",
56 "FAKE_JUJU_LOGS_DIR": "",
57 })
58
59 def test_start_empty(self):
60 """set_envvars() sets all values on an empty dict."""
61 envvars = {}
62 set_envvars(envvars, "x", "y")
63
64 self.assertEqual(envvars, {
65 "FAKE_JUJU_FAILURES": "x",
66 "FAKE_JUJU_LOGS_DIR": "y",
67 })
68
69 def test_no_collisions(self):
70 """set_envvars() sets all values when none are set yet."""
71 envvars = {"SPAM": "eggs"}
72 set_envvars(envvars, "x", "y")
73
74 self.assertEqual(envvars, {
75 "SPAM": "eggs",
76 "FAKE_JUJU_FAILURES": "x",
77 "FAKE_JUJU_LOGS_DIR": "y",
78 })
79
80 def test_empty_to_nonempty(self):
81 """set_envvars() updates empty values."""
82 envvars = {
83 "FAKE_JUJU_FAILURES": "",
84 "FAKE_JUJU_LOGS_DIR": "",
85 }
86 set_envvars(envvars, "x", "y")
87
88 self.assertEqual(envvars, {
89 "FAKE_JUJU_FAILURES": "x",
90 "FAKE_JUJU_LOGS_DIR": "y",
91 })
92
93 def test_nonempty_to_nonempty(self):
94 """set_envvars() overwrites existing values."""
95 envvars = {
96 "FAKE_JUJU_FAILURES": "spam",
97 "FAKE_JUJU_LOGS_DIR": "ham",
98 }
99 set_envvars(envvars, "x", "y")
100
101 self.assertEqual(envvars, {
102 "FAKE_JUJU_FAILURES": "x",
103 "FAKE_JUJU_LOGS_DIR": "y",
104 })
105
106 def test_nonempty_to_empty(self):
107 """set_envvars() with no args "unsets" existing values."""
108 envvars = {
109 "FAKE_JUJU_FAILURES": "x",
110 "FAKE_JUJU_LOGS_DIR": "y",
111 }
112 set_envvars(envvars)
113
114 self.assertEqual(envvars, {
115 "FAKE_JUJU_FAILURES": "",
116 "FAKE_JUJU_LOGS_DIR": "",
117 })

Subscribers

People subscribed via source and target branches

to all changes: