Added basic fix and test
This commit is contained in:
		
							parent
							
								
									3b3d237f07
								
							
						
					
					
						commit
						2c7f94fdb9
					
				|  | @ -1192,12 +1192,15 @@ class Config(object): | |||
|         # and -o foo1=bar1 -o foo2=bar2 options | ||||
|         # 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 | ||||
|         first_override_set = False | ||||
|         for ini_config_list in self._override_ini: | ||||
|             for ini_config in ini_config_list: | ||||
|                 try: | ||||
|                     (key, user_ini_value) = ini_config.split("=", 1) | ||||
|                     first_override_set = True | ||||
|                 except ValueError: | ||||
|                     raise UsageError("-o/--override-ini expects option=value style.") | ||||
|                     if not first_override_set: | ||||
|                         raise UsageError("-o/--override-ini expects option=value style.") | ||||
|                 if key == name: | ||||
|                     value = user_ini_value | ||||
|         return value | ||||
|  |  | |||
|  | @ -860,3 +860,40 @@ class TestOverrideIniArgs(object): | |||
|         config = get_config() | ||||
|         config._preparse([], addopts=True) | ||||
|         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