Log message for revision 71890: Accept duplicate command-line options to work with scripts that embed configuration options, such as the name of the configuration file.
Changed: U zdaemon/trunk/src/zdaemon/tests/tests.py U zdaemon/trunk/src/zdaemon/zdctl.py U zdaemon/trunk/src/zdaemon/zdoptions.py -=- Modified: zdaemon/trunk/src/zdaemon/tests/tests.py =================================================================== --- zdaemon/trunk/src/zdaemon/tests/tests.py 2007-01-10 18:26:21 UTC (rev 71889) +++ zdaemon/trunk/src/zdaemon/tests/tests.py 2007-01-10 18:27:06 UTC (rev 71890) @@ -63,8 +63,29 @@ """ +def allow_duplicate_arguments(): + """ + +Wrapper scripts will often embed configuration arguments. This could +cause a problem when zdaemon reinvokes itself, passing it's own set of +configuration arguments. To deal with this, we'll allow duplicate +arguments that have the same values. + >>> open('conf', 'w').write( + ... ''' + ... <runner> + ... program sleep 10 + ... </runner> + ... ''') + >>> system("./zdaemon -Cconf -Cconf -Cconf start") + . daemon process started, pid=21446 + + >>> system("./zdaemon -Cconf -Cconf -Cconf stop") + daemon process stopped + +""" + def setUp(test): test.globs['_td'] = td = [] here = os.getcwd() Modified: zdaemon/trunk/src/zdaemon/zdctl.py =================================================================== --- zdaemon/trunk/src/zdaemon/zdctl.py 2007-01-10 18:26:21 UTC (rev 71889) +++ zdaemon/trunk/src/zdaemon/zdctl.py 2007-01-10 18:27:06 UTC (rev 71890) @@ -223,7 +223,7 @@ args = [self.options.python, self.options.zdrun] else: args = [self.options.python, sys.argv[0]] - os.environ['ZDAEMON_MODE'] = '1' + os.environ['DAEMON_MANAGER_MODE'] = '1' args += self._get_override("-S", "schemafile") args += self._get_override("-C", "configfile") @@ -605,7 +605,7 @@ if args is None: args = sys.argv[1:] - if os.environ.get('ZDAEMON_MODE'): + if os.environ.get('DAEMON_MANAGER_MODE'): import zdaemon.zdrun return zdaemon.zdrun.main(args) Modified: zdaemon/trunk/src/zdaemon/zdoptions.py =================================================================== --- zdaemon/trunk/src/zdaemon/zdoptions.py 2007-01-10 18:26:21 UTC (rev 71889) +++ zdaemon/trunk/src/zdaemon/zdoptions.py 2007-01-10 18:27:06 UTC (rev 71890) @@ -246,6 +246,10 @@ self.usage("invalid value for %s %r: %s" % (opt, arg, msg)) if name and arg is not None: if getattr(self, name) is not None: + if getattr(self, name) == arg: + # Repeated option, but we don't mind because it + # just reinforces what we have. + continue self.usage("conflicting command line option %r" % opt) setattr(self, name, arg) _______________________________________________ Zope-Checkins maillist - Zope-Checkins@zope.org http://mail.zope.org/mailman/listinfo/zope-checkins