Get command-line arguments as a parameter to ‘main’.
authorBen Finney <redacted>
Wed, 2 Mar 2016 04:43:44 +0000 (15:43 +1100)
committerBen Finney <redacted>
Wed, 2 Mar 2016 04:43:44 +0000 (15:43 +1100)
This makes the ‘main’ function more easily tested: no need for special
patches just for the command-line arguments.

xkcdpass/xkcd_password.py

index a5aa5228ebc5a09616bb4a8a742e645db23891b1..62bb3f2bac3a44d02b1d468f07edeb61cb9fb7fc 100755 (executable)
@@ -314,13 +314,18 @@ class XkcdPassOptionParser(optparse.OptionParser, object):
             help="Separate words within a passphrase with DELIM.")
 
 
-def main():
+def main(argv=None):
+    """ Mainline code for this program. """
+
+    if argv is None:
+        argv = sys.argv
+
     count = 1
 
-    program_name = os.path.basename(sys.argv[0])
+    program_name = os.path.basename(argv[0])
     parser = XkcdPassOptionParser(prog=program_name)
 
-    (options, args) = parser.parse_args(sys.argv[1:])
+    (options, args) = parser.parse_args(argv[1:])
     validate_options(parser, options, args)
 
     my_wordlist = generate_wordlist(wordfile=options.wordfile,
@@ -344,4 +349,4 @@ def main():
 
 
 if __name__ == '__main__':
-    main()
+    main(sys.argv)
git clone https://git.99rst.org/PROJECT