Added basic fix and test
This commit is contained in:
		
							parent
							
								
									3b3d237f07
								
							
						
					
					
						commit
						2c7f94fdb9
					
				|  | @ -1192,11 +1192,14 @@ class Config(object): | ||||||
|         # and -o foo1=bar1 -o foo2=bar2 options |         # and -o foo1=bar1 -o foo2=bar2 options | ||||||
|         # always use the last item if multiple value set for same ini-name, |         # always use the last item if multiple value set for same ini-name, | ||||||
|         # e.g. -o foo=bar1 -o foo=bar2 will set foo to bar2 |         # e.g. -o foo=bar1 -o foo=bar2 will set foo to bar2 | ||||||
|  |         first_override_set = False | ||||||
|         for ini_config_list in self._override_ini: |         for ini_config_list in self._override_ini: | ||||||
|             for ini_config in ini_config_list: |             for ini_config in ini_config_list: | ||||||
|                 try: |                 try: | ||||||
|                     (key, user_ini_value) = ini_config.split("=", 1) |                     (key, user_ini_value) = ini_config.split("=", 1) | ||||||
|  |                     first_override_set = True | ||||||
|                 except ValueError: |                 except ValueError: | ||||||
|  |                     if not first_override_set: | ||||||
|                         raise UsageError("-o/--override-ini expects option=value style.") |                         raise UsageError("-o/--override-ini expects option=value style.") | ||||||
|                 if key == name: |                 if key == name: | ||||||
|                     value = user_ini_value |                     value = user_ini_value | ||||||
|  |  | ||||||
|  | @ -860,3 +860,40 @@ class TestOverrideIniArgs(object): | ||||||
|         config = get_config() |         config = get_config() | ||||||
|         config._preparse([], addopts=True) |         config._preparse([], addopts=True) | ||||||
|         assert config._override_ini == [['cache_dir=%s' % cache_dir]] |         assert config._override_ini == [['cache_dir=%s' % cache_dir]] | ||||||
|  | 
 | ||||||
|  |     def test_all_the_things(self, testdir): | ||||||
|  |         testdir.makeconftest(""" | ||||||
|  |         def pytest_addoption(parser): | ||||||
|  |             addini = parser.addini | ||||||
|  |             addini("custom_option_1", "", default="o1") | ||||||
|  |             addini("custom_option_2", "", default="o2")""") | ||||||
|  |         testdir.makepyfile(""" | ||||||
|  |             def test_multiple_options(pytestconfig): | ||||||
|  |                 prefix = "custom_option" | ||||||
|  |                 for x in range(1, 3): | ||||||
|  |                     ini_value=pytestconfig.getini("%s_%d" % (prefix, x)) | ||||||
|  |                     print('\\nini%d:%s' % (x, ini_value))""") | ||||||
|  | 
 | ||||||
|  |         result = testdir.runpytest( | ||||||
|  |             "--override-ini", 'custom_option_1=fulldir=/tmp/user1', | ||||||
|  |             'custom_option_2=url=/tmp/user2?a=b&d=e', | ||||||
|  |             "test_all_the_things.py") | ||||||
|  |         assert "ERROR: -o/--override-ini expects option=value style." not in result.stderr.str() | ||||||
|  | 
 | ||||||
|  |     def test_throw_exception_if_not_value_pair(self, testdir): | ||||||
|  |         testdir.makeconftest(""" | ||||||
|  |         def pytest_addoption(parser): | ||||||
|  |             addini = parser.addini | ||||||
|  |             addini("custom_option_1", "", default="o1") | ||||||
|  |             addini("custom_option_2", "", default="o2")""") | ||||||
|  |         testdir.makepyfile(""" | ||||||
|  |             def test_multiple_options(pytestconfig): | ||||||
|  |                 prefix = "custom_option" | ||||||
|  |                 for x in range(1, 3): | ||||||
|  |                     ini_value=pytestconfig.getini("%s_%d" % (prefix, x)) | ||||||
|  |                     print('\\nini%d:%s' % (x, ini_value))""") | ||||||
|  | 
 | ||||||
|  |         result = testdir.runpytest( | ||||||
|  |             "--override-ini", 'custom_option_1', | ||||||
|  |             "test_all_the_things.py") | ||||||
|  |         assert "ERROR: -o/--override-ini expects option=value style." in result.stderr.str() | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue