[py3] Let InstanceCommand.run_arg() always return an int
authorDenis Laxalde <denis.laxalde@logilab.fr>
Wed, 13 Jun 2018 11:09:17 +0200
changeset 12317 5166a1a7e4f4
parent 12316 b80f186b9dbe
child 12318 e947954e0ffc
[py3] Let InstanceCommand.run_arg() always return an int The caller of this method (which is method "run_args") does `max(status, self.run_arg(appid))` and run_arg might return None if the underlying <cmdname>_instance method returns None. On python3 max(1, None) breaks with "TypeError: unorderable types: int() > NoneType()". So we enforce run_arg() method to return an integer even if the underlying method returns None. This fixes call of "cubicweb-ctl i18ninstance" with Python3.
cubicweb/cwctl.py
--- a/cubicweb/cwctl.py	Fri Jun 15 17:42:50 2018 +0200
+++ b/cubicweb/cwctl.py	Wed Jun 13 11:09:17 2018 +0200
@@ -148,7 +148,7 @@
     def run_arg(self, appid):
         cmdmeth = getattr(self, '%s_instance' % self.name)
         try:
-            status = cmdmeth(appid)
+            status = cmdmeth(appid) or 0
         except (ExecutionError, ConfigurationError) as ex:
             sys.stderr.write('instance %s not %s: %s\n' % (
                     appid, self.actionverb, ex))