diff --git a/IPython/config/loader.py b/IPython/config/loader.py index f37e725..f795e91 100644 --- a/IPython/config/loader.py +++ b/IPython/config/loader.py @@ -434,6 +434,8 @@ class KeyValueConfigLoader(CommandLineConfigLoader): if raw == '--': # don't parse arguments after '--' + # this is useful for relaying arguments to scripts, e.g. + # ipython -i foo.py --pylab=qt -- args after '--' go-to-foo.py self.extra_args.extend(uargv[idx+1:]) break @@ -476,9 +478,7 @@ class KeyValueConfigLoader(CommandLineConfigLoader): else: # keep all args that aren't valid in a list, # in case our parent knows what to do with them. - # self.extra_args.append(item) - self.extra_args.extend(uargv[idx:]) - break + self.extra_args.append(item) return self.config class ArgParseConfigLoader(CommandLineConfigLoader): diff --git a/IPython/config/tests/test_application.py b/IPython/config/tests/test_application.py index d74c17d..6e0c473 100644 --- a/IPython/config/tests/test_application.py +++ b/IPython/config/tests/test_application.py @@ -128,8 +128,14 @@ class TestApplication(TestCase): app = MyApp() app.parse_command_line(["--Bar.b=5", 'extra', "--disable", 'args']) app.init_bar() + self.assertEquals(app.bar.enabled, False) + self.assertEquals(app.bar.b, 5) + self.assertEquals(app.extra_args, ['extra', 'args']) + app = MyApp() + app.parse_command_line(["--Bar.b=5", '--', 'extra', "--disable", 'args']) + app.init_bar() self.assertEquals(app.bar.enabled, True) self.assertEquals(app.bar.b, 5) - self.assertEquals(app.extra_args, ['extra', "--disable", 'args']) + self.assertEquals(app.extra_args, ['extra', '--disable', 'args']) diff --git a/IPython/config/tests/test_loader.py b/IPython/config/tests/test_loader.py index 6d9ad69..27f38eb 100755 --- a/IPython/config/tests/test_loader.py +++ b/IPython/config/tests/test_loader.py @@ -130,9 +130,9 @@ class TestKeyValueCL(TestCase): def test_extra_args(self): cl = KeyValueConfigLoader() config = cl.load_config(['--a=5', 'b', '--c=10', 'd']) - self.assertEquals(cl.extra_args, ['b', '--c=10' , 'd']) + self.assertEquals(cl.extra_args, ['b', 'd']) self.assertEquals(config.a, 5) - self.assertRaises(AttributeError, getattr, config, 'c') + self.assertEquals(config.c, 10) config = cl.load_config(['--', '--a=5', '--c=10']) self.assertEquals(cl.extra_args, ['--a=5', '--c=10'])