Merge lp:~clint-fewbar/pyjuju/add-version-arg into lp:pyjuju

Proposed by Clint Byrum
Status: Merged
Approved by: Jim Baker
Approved revision: 584
Merged at revision: 588
Proposed branch: lp:~clint-fewbar/pyjuju/add-version-arg
Merge into: lp:pyjuju
Diff against target: 52 lines (+17/-0)
2 files modified
juju/control/__init__.py (+4/-0)
juju/control/tests/test_control.py (+13/-0)
To merge this branch: bzr merge lp:~clint-fewbar/pyjuju/add-version-arg
Reviewer Review Type Date Requested Status
Juju Engineering Pending
Review via email: mp+127109@code.launchpad.net

Description of the change

To post a comment you must log in.
Revision history for this message
Clint Byrum (clint-fewbar) wrote :

Reviewers: mp+127109_code.launchpad.net,

Message:
Please take a look.

Description:
Add --version option

https://code.launchpad.net/~clint-fewbar/juju/add-version-arg/+merge/127109

(do not edit description out of merge proposal)

Please review this at https://codereview.appspot.com/6593044/

Affected files:
   A [revision details]
   M juju/control/__init__.py
   M juju/control/tests/test_control.py

Index: [revision details]
=== added file '[revision details]'
--- [revision details] 2012-01-01 00:00:00 +0000
+++ [revision details] 2012-01-01 00:00:00 +0000
@@ -0,0 +1,2 @@
+Old revision: <email address hidden>
+New revision: <email address hidden>

Index: juju/control/__init__.py
=== modified file 'juju/control/__init__.py'
--- juju/control/__init__.py 2012-03-30 19:12:05 +0000
+++ juju/control/__init__.py 2012-09-29 16:31:24 +0000
@@ -6,6 +6,7 @@
  from .command import Commander
  from .utils import ParseError
  from juju.environment.config import EnvironmentsConfig
+from juju import __version__

  import add_relation
  import add_unit
@@ -106,6 +107,9 @@
          help="Enable verbose logging")

      parser.add_argument(
+ "--version", action="version", version='juju %s' % (__version__))
+
+ parser.add_argument(
          "--log-file", "-l", default=sys.stderr,
type=argparse.FileType('a'),
          help="Log output to file")

Index: juju/control/tests/test_control.py
=== modified file 'juju/control/tests/test_control.py'
--- juju/control/tests/test_control.py 2012-05-04 22:43:40 +0000
+++ juju/control/tests/test_control.py 2012-09-29 16:31:24 +0000
@@ -14,6 +14,7 @@
  from juju.state.tests.common import StateTestBase

  from juju.lib.testing import TestCase
+from juju import __version__

  from .common import ControlToolTest

@@ -62,6 +63,18 @@
          self.assertIn("destroy-environment", output)
          self.assertIn("juju cloud orchestration admin", output)

+ def test_version(self):
+ stderr = self.capture_stream("stderr")
+ try:
+ main(['--version'])
+ except SystemExit, e:
+ self.assertEqual(e.args[0], 0)
+ else:
+ self.fail("Should have exited")
+
+ output = stderr.getvalue()
+ self.assertIn(__version__, output)
+
      def test_custom_parser_does_not_extend_to_subcommand(self):
          stderr = self.capture_stream("stderr")
          self.mocker.replay()

Revision history for this message
Jim Baker (jimbaker) wrote :

LGTM with the minor. One thing I noticed is that I would expect the
output on stdout, not stderr, so that I can do this

export JUJU_VERSION=$(juju --version)

instead of

export JUJU_VERSION=$(juju --version 2>1)

Of course this behavior of using stderr is just what argparse does.
However, in a completely random sampling of commands, most print to
stdout (ls, xargs, bzr). One notable exception: python, it uses stderr.
Same with java -version.

However, supporting --version like this is going to have to work around
the fact that we use argparse to support subcommands. And anything
dealing with subcommands in argparse is possible, but way too
complicated.

So, never mind, let's just do what argparse makes easy :)

https://codereview.appspot.com/6593044/diff/1/juju/control/__init__.py
File juju/control/__init__.py (right):

https://codereview.appspot.com/6593044/diff/1/juju/control/__init__.py#newcode110
juju/control/__init__.py:110: "--version", action="version",
version='juju %s' % (__version__))
version="juju %s" % __version__

would be preferable (we use double quotes uniformly in the Juju
codebase).

https://codereview.appspot.com/6593044/

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'juju/control/__init__.py'
2--- juju/control/__init__.py 2012-03-30 19:12:05 +0000
3+++ juju/control/__init__.py 2012-09-29 16:34:21 +0000
4@@ -6,6 +6,7 @@
5 from .command import Commander
6 from .utils import ParseError
7 from juju.environment.config import EnvironmentsConfig
8+from juju import __version__
9
10 import add_relation
11 import add_unit
12@@ -106,6 +107,9 @@
13 help="Enable verbose logging")
14
15 parser.add_argument(
16+ "--version", action="version", version='juju %s' % (__version__))
17+
18+ parser.add_argument(
19 "--log-file", "-l", default=sys.stderr, type=argparse.FileType('a'),
20 help="Log output to file")
21
22
23=== modified file 'juju/control/tests/test_control.py'
24--- juju/control/tests/test_control.py 2012-05-04 22:43:40 +0000
25+++ juju/control/tests/test_control.py 2012-09-29 16:34:21 +0000
26@@ -14,6 +14,7 @@
27 from juju.state.tests.common import StateTestBase
28
29 from juju.lib.testing import TestCase
30+from juju import __version__
31
32 from .common import ControlToolTest
33
34@@ -62,6 +63,18 @@
35 self.assertIn("destroy-environment", output)
36 self.assertIn("juju cloud orchestration admin", output)
37
38+ def test_version(self):
39+ stderr = self.capture_stream("stderr")
40+ try:
41+ main(['--version'])
42+ except SystemExit, e:
43+ self.assertEqual(e.args[0], 0)
44+ else:
45+ self.fail("Should have exited")
46+
47+ output = stderr.getvalue()
48+ self.assertIn(__version__, output)
49+
50 def test_custom_parser_does_not_extend_to_subcommand(self):
51 stderr = self.capture_stream("stderr")
52 self.mocker.replay()

Subscribers

People subscribed via source and target branches

to status/vote changes: