Quellcode durchsuchen

Merge branch 'develop' of github.com:pwman3/pwman3 into develop

Oz Tiram vor 6 Jahren
Ursprung
Commit
24d1cdd29b
5 geänderte Dateien mit 52 neuen und 30 gelöschten Zeilen
  1. 4 0
      ChangeLog
  2. 6 3
      pwman/__init__.py
  3. 23 17
      pwman/ui/cli.py
  4. 1 1
      setup.py
  5. 18 9
      tests/test_factory.py

+ 4 - 0
ChangeLog

@@ -1,3 +1,7 @@
+2018-Aug-23  Oz Nahum Tiram <oz.tiram@gmail.com>
+	* Release version 0.9.11
+	* A small fix for the unit test suite
+
 2018-Aug-22  Oz Nahum Tiram <oz.tiram@gmail.com>
 	* Release version 0.9.10
 	* Fix depedency on older version of cryptography

+ 6 - 3
pwman/__init__.py

@@ -41,7 +41,7 @@ appname = "pwman3"
 try:
     version = pkg_resources.get_distribution('pwman3').version
 except pkg_resources.DistributionNotFound:  # pragma: no cover
-    version = "0.9.10"
+    version = "0.9.11"
 
 
 class PkgMetadata(object):
@@ -76,8 +76,8 @@ def parser_options(formatter_class=argparse.HelpFormatter):  # pragma: no cover
                                      formatter_class=formatter_class)
     parser.add_argument('-c', '--config', dest='cfile',
                         default=os.path.join(
-                                             config.find_config_dir('pwman')[0],
-                                             'config'),
+                                             config.find_config_dir(
+                                                 'pwman')[0], 'config'),
                         help='cofiguration file to read')
     parser.add_argument('-d', '--database', dest='dbase')
     parser.add_argument('-i', '--import', nargs=2, dest='file_delim',
@@ -89,6 +89,9 @@ def parser_options(formatter_class=argparse.HelpFormatter):  # pragma: no cover
 
     copy = subparsers.add_parser('cp', help='print password entry')
     copy.add_argument("node", type=int)
+
+    version = subparsers.add_parser('version', help='version')
+    version.add_argument("--latest", action='store_true')
     return parser
 
 

+ 23 - 17
pwman/ui/cli.py

@@ -14,7 +14,7 @@
 # along with Pwman3; if not, write to the Free Software
 # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 # ============================================================================
-# Copyright (C) 2012-2016 Oz N Tiram <oz.tiram@gmail.com>
+# Copyright (C) 2012-2018 Oz N Tiram <oz.tiram@gmail.com>
 # ============================================================================
 # pylint: disable=I0011
 
@@ -22,10 +22,6 @@
 import cmd
 import sys
 
-
-if sys.version_info.major > 2:
-    raw_input = input
-
 try:
     import readline
     _readline_available = True
@@ -93,23 +89,24 @@ def get_ui_platform(platform):  # pragma: no cover
     return PwmanCli, OSX
 
 
+def check_version(version, client_info):
+    _, latest = is_latest_version(version, client_info)
+    if not latest:
+        print("A newer version of Pwman3 was release, you should consider updating")  # noqa
+    return latest
+
+
 def main():
     args = parser_options().parse_args()
     PwmanCli, OSX = get_ui_platform(sys.platform)
     xselpath, dbtype, config = get_conf_options(args, OSX)
     dburi = config.get_value('Database', 'dburi')
 
-    if config.get_value('Updater',
-                        'supress_version_check').lower() != 'yes':
-        client_info = config.get_value('Updater', 'client_info')
-        if not client_info:
-            client_info = calculate_client_info()
-            config.set_value('Updater', 'client_info', client_info)
-
-        _, latest = is_latest_version(version, client_info)
+    client_info = config.get_value('Updater', 'client_info')
 
-        if not latest:
-            print("A newer version of Pwman3 was release, you should consider updating")  # noqa
+    if not client_info:
+        client_info = calculate_client_info()
+        config.set_value('Updater', 'client_info', client_info)
 
     if not has_cryptography:
         import colorama
@@ -120,6 +117,15 @@ def main():
                   "pwman config file.{}".format(colorama.Fore.RED,
                                                 colorama.Style.RESET_ALL))
 
+    if args.cmd == "version":
+        latest = check_version(version, client_info)
+        print("version: %s is latest: %s" % (version, latest))
+        sys.exit(0)
+
+    elif config.get_value('Updater',
+                          'supress_version_check').lower() != 'yes':
+        check_version(version, client_info)
+
     print(dburi)
     dbver = get_db_version(config, args)
     timeout = int(config.get_value('Global', 'lock_timeout'))
@@ -136,11 +142,11 @@ def main():
 
     if args.cmd == "p":
         cli.onecmd("pp %s" % args.node)
-        sys.exit(1)
+        sys.exit(0)
 
     if args.cmd == "cp":
         cli.onecmd("cp %s" % args.node)
-        sys.exit(1)
+        sys.exit(0)
 
     try:
         cli.cmdloop()

+ 1 - 1
setup.py

@@ -348,7 +348,7 @@ packages = find_packages(exclude=['tests', 'pwman/ui/templates'])
 
 
 setup(name='pwman3',
-      version='0.9.10',
+      version='0.9.11',
       description=("a command line password manager with support for multiple"
                    " databases."),
       long_description=long_description,

+ 18 - 9
tests/test_factory.py

@@ -25,11 +25,14 @@ import sys
 from pwman.data import factory
 from pwman.data.database import DatabaseException
 from pwman.data.drivers.sqlite import SQLite
-from pwman.data.drivers.postgresql import PostgresqlDatabase
 from pwman.data.database import __DB_FORMAT__
 from .test_tools import (SetupTester)
-
-db =  ".".join(("pwman","test", sys.version.split(" " ,1)[0], "db"))
+try:
+    from pwman.data.drivers.postgresql import PostgresqlDatabase
+    has_psycopg = True
+except ImportError:
+    has_psycopg = False
+db = ".".join(("pwman", "test", sys.version.split(" ", 1)[0], "db"))
 testdb = os.path.abspath(os.path.join(os.path.dirname(__file__), db))
 
 _saveconfig = False
@@ -49,7 +52,8 @@ class TestFactory(unittest.TestCase):
         self.tester.create()
 
     def test_factory_check_db_ver(self):
-        self.assertEqual(factory.check_db_version('sqlite://'+testdb), u"'0.6'")
+        self.assertEqual(
+            factory.check_db_version('sqlite://'+testdb), u"'0.6'")
 
     @unittest.skip("not supported at the moment")
     def test_factory_check_db_file(self):
@@ -67,21 +71,26 @@ class TestFactory(unittest.TestCase):
         db.close()
         os.unlink(fn)
         self.assertIsInstance(db, SQLite)
-        self.assertRaises(DatabaseException, factory.createdb, *('UNKNOWN',
-                                                                 __DB_FORMAT__))
+        self.assertRaises(DatabaseException, factory.createdb,
+                          *('UNKNOWN', __DB_FORMAT__))
 
     def test_factory_createdb(self):
         db = factory.createdb("sqlite:///test.db", 0.6)
         self.assertIsInstance(db, SQLite)
         del db
-        db = factory.createdb("postgresql:///pwman", 0.6)
-        self.assertIsInstance(db, PostgresqlDatabase)
-        del db
         db = factory.createdb("sqlite:///test.db", 0.7)
         self.assertIsInstance(db, SQLite)
         del db
+
+    @unittest.skipUnless(has_psycopg, "requires psycopg")
+    def test_factory_createdb_postgresql(self):
+        db = factory.createdb("postgresql:///pwman", 0.6)
+        self.assertIsInstance(db, PostgresqlDatabase)
+        del db
         db = factory.createdb("postgresql:///pwman", 0.7)
         self.assertIsInstance(db, PostgresqlDatabase)
+        del db
+
 
 if __name__ == '__main__':
     # make sure we use local pwman