Revision: 2353
Author: pekka.klarck
Date: Thu Oct 22 05:58:58 2009
Log: di
http://code.google.com/p/robotframework/source/detail?r=2353

Modified:
 /trunk/src/robot/utils/argumentparser.py
 /trunk/utest/utils/test_argumentparser.py

=======================================
--- /trunk/src/robot/utils/argumentparser.py    Sun Apr 19 13:26:54 2009
+++ /trunk/src/robot/utils/argumentparser.py    Thu Oct 22 05:58:58 2009
@@ -143,13 +143,21 @@
         return opts, args

     def _parse_args(self, args):
-        args = [ a.startswith('--') and a.lower() or a for a in args ]
+        args = [ self._lowercase_long_option(a) for a in args ]
         try:
opts, args = getopt.getopt(args, self._short_opts, self._long_opts)
         except getopt.GetoptError, err:
             raise DataError(err)
         return self._process_opts(opts), self._glob_args(args)

+    def _lowercase_long_option(self, opt):
+        if not opt.startswith('--'):
+            return opt
+        if '=' not in opt:
+            return opt.lower()
+        opt, value = opt.split('=', 1)
+        return '%s=%s' % (opt.lower(), value)
+
     def _check_args(self, args):
         if not self._arg_limits:
             raise FrameworkError('No argument information specified.')
=======================================
--- /trunk/utest/utils/test_argumentparser.py   Wed Nov 26 03:43:54 2008
+++ /trunk/utest/utils/test_argumentparser.py   Thu Oct 22 05:58:58 2009
@@ -133,6 +133,17 @@
             opts, args = self.ap.parse_args(inargs.split())
             assert_equals(opts['name'], 'Bar')
             assert_equals(args, ['arg'])
+
+    def test_case_insensitive_long_options(self):
+        opts, args = self.ap.parse_args('--EsCape X:y --HELP arg'.split())
+        assert_equals(opts['escape'], ['X:y'])
+        assert_equals(opts['help'], True)
+        assert_equals(args, ['arg'])
+
+    def test_case_insensitive_long_options_with_equal_sign(self):
+        opts, args = self.ap.parse_args('--EsCape=X:y --escAPE=ZZ'.split())
+        assert_equals(opts['escape'], ['X:y', 'ZZ'])
+        assert_equals(args, [])

     def test_non_ascii_chars(self):
         ap = ArgumentParser(USAGE2)

Reply via email to