From: Fred Drake Date: Thu, 1 Apr 2004 07:40:35 +0000 (+0000) Subject: Fix support for the "prog" keyword to the OptionParser constructor, as well X-Git-Tag: v2.4a1~538 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=456d3258d64f4c60a7787dd59f5c68bafb81584c;p=thirdparty%2FPython%2Fcpython.git Fix support for the "prog" keyword to the OptionParser constructor, as well as directly setting the .prog attribute (which should be supported based on the class docstring). Closes SF bug #850964. --- diff --git a/Lib/optparse.py b/Lib/optparse.py index bacef0f311bb..d3593d3cc5cf 100644 --- a/Lib/optparse.py +++ b/Lib/optparse.py @@ -1025,6 +1025,11 @@ class OptionParser (OptionContainer): self.largs = None self.values = None + def _get_prog_name(self): + if self.prog: + return self.prog + else: + return get_prog_name() # -- Simple modifier methods --------------------------------------- @@ -1288,12 +1293,12 @@ class OptionParser (OptionContainer): should either exit or raise an exception. """ self.print_usage(sys.stderr) - sys.exit("%s: error: %s" % (get_prog_name(), msg)) + sys.exit("%s: error: %s" % (self._get_prog_name(), msg)) def get_usage (self): if self.usage: return self.formatter.format_usage( - self.usage.replace("%prog", get_prog_name())) + self.usage.replace("%prog", self._get_prog_name())) else: return "" @@ -1311,7 +1316,7 @@ class OptionParser (OptionContainer): def get_version (self): if self.version: - return self.version.replace("%prog", get_prog_name()) + return self.version.replace("%prog", self._get_prog_name()) else: return "" diff --git a/Lib/test/test_optparse.py b/Lib/test/test_optparse.py index 471244691fde..37e229c0aeee 100644 --- a/Lib/test/test_optparse.py +++ b/Lib/test/test_optparse.py @@ -612,6 +612,22 @@ class TestVersion(BaseTest): self.assertStdoutEquals(["--version"], "bar 0.1\n") sys.argv[0] = oldargv + def test_version_with_prog_keyword(self): + oldargv = sys.argv[0] + sys.argv[0] = "./foo/bar" + self.parser = OptionParser(usage=SUPPRESS_USAGE, version="%prog 0.1", + prog="splat") + self.assertStdoutEquals(["--version"], "splat 0.1\n") + sys.argv[0] = oldargv + + def test_version_with_prog_attribute(self): + oldargv = sys.argv[0] + sys.argv[0] = "./foo/bar" + self.parser = OptionParser(usage=SUPPRESS_USAGE, version="%prog 0.1") + self.parser.prog = "splat" + self.assertStdoutEquals(["--version"], "splat 0.1\n") + sys.argv[0] = oldargv + def test_no_version(self): self.parser = OptionParser(usage=SUPPRESS_USAGE) self.assertParseFail(["--version"],