Merge pull request #1438 from Bachmann1234/issue-1437
Make a good faith effort to display a bytestring when one is provided…
This commit is contained in:
		
						commit
						6d4b14d7ee
					
				
							
								
								
									
										1
									
								
								AUTHORS
								
								
								
								
							
							
						
						
									
										1
									
								
								AUTHORS
								
								
								
								
							|  | @ -59,6 +59,7 @@ Marc Schlaich | |||
| Mark Abramowitz | ||||
| Markus Unterwaditzer | ||||
| Martijn Faassen | ||||
| Matt Bachmann | ||||
| Michael Aquilina | ||||
| Michael Birtwell | ||||
| Michael Droettboom | ||||
|  |  | |||
|  | @ -12,17 +12,19 @@ | |||
| * Fix (`#469`_): junit parses report.nodeid incorrectly, when params IDs | ||||
|   contain ``::``. Thanks `@tomviner`_ for the PR (`#1431`_). | ||||
| 
 | ||||
| * | ||||
| 
 | ||||
| * Fix (`#578 <https://github.com/pytest-dev/pytest/issues/578>`_): SyntaxErrors | ||||
|   containing non-ascii lines at the point of failure generated an internal | ||||
|   py.test error. | ||||
|   Thanks `@asottile`_ for the report and `@nicoddemus`_ for the PR. | ||||
| 
 | ||||
| * | ||||
| * Fix (`#1437`_): When passing in a bytestring regex pattern to parameterize | ||||
|   attempt to decode it as utf-8 ignoring errors. | ||||
| 
 | ||||
| * | ||||
| 
 | ||||
| 
 | ||||
| .. _#1437: https://github.com/pytest-dev/pytest/issues/1437 | ||||
| .. _#469: https://github.com/pytest-dev/pytest/issues/469 | ||||
| .. _#1431: https://github.com/pytest-dev/pytest/pull/1431 | ||||
| 
 | ||||
|  |  | |||
|  | @ -1115,7 +1115,7 @@ def _idval(val, argname, idx, idfn): | |||
|     elif isinstance(val, (float, int, str, bool, NoneType)): | ||||
|         return str(val) | ||||
|     elif isinstance(val, REGEX_TYPE): | ||||
|         return val.pattern | ||||
|         return _escape_bytes(val.pattern) if isinstance(val.pattern, bytes) else val.pattern | ||||
|     elif enum is not None and isinstance(val, enum.Enum): | ||||
|         return str(val) | ||||
|     elif isclass(val) and hasattr(val, '__name__'): | ||||
|  |  | |||
|  | @ -392,6 +392,20 @@ class TestGeneralUsage: | |||
|         monkeypatch.setitem(sys.modules, 'myplugin', mod) | ||||
|         assert pytest.main(args=[str(tmpdir)], plugins=['myplugin']) == 0 | ||||
| 
 | ||||
|     def test_parameterized_with_bytes_regex(self, testdir): | ||||
|         p = testdir.makepyfile(""" | ||||
|             import re | ||||
|             import pytest | ||||
|             @pytest.mark.parametrize('r', [re.compile(b'foo')]) | ||||
|             def test_stuff(r): | ||||
|                 pass | ||||
|         """ | ||||
|         ) | ||||
|         res = testdir.runpytest(p) | ||||
|         res.stdout.fnmatch_lines([ | ||||
|             '*1 passed*' | ||||
|         ]) | ||||
| 
 | ||||
| 
 | ||||
| class TestInvocationVariants: | ||||
|     def test_earlyinit(self, testdir): | ||||
|  |  | |||
|  | @ -170,6 +170,11 @@ class TestMetafunc: | |||
|         result = idmaker((py.builtin._totext("a"), "b"), [({}, b'\xc3\xb4')]) | ||||
|         assert result == ['a0-\\xc3\\xb4'] | ||||
| 
 | ||||
|     def test_idmaker_with_bytes_regex(self): | ||||
|         from _pytest.python import idmaker | ||||
|         result = idmaker(("a"), [(re.compile(b'foo'), 1.0)]) | ||||
|         assert result == ["foo"] | ||||
| 
 | ||||
|     def test_idmaker_native_strings(self): | ||||
|         from _pytest.python import idmaker | ||||
|         totext = py.builtin._totext | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue