Further tweaks from code review
This commit is contained in:
		
							parent
							
								
									c4876c7106
								
							
						
					
					
						commit
						7775e494b1
					
				| 
						 | 
					@ -10,7 +10,7 @@ build-backend = "setuptools.build_meta"
 | 
				
			||||||
write_to = "src/_pytest/_version.py"
 | 
					write_to = "src/_pytest/_version.py"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[tool.pytest.ini_options]
 | 
					[tool.pytest.ini_options]
 | 
				
			||||||
#minversion = "2.0"
 | 
					minversion = "2.0"
 | 
				
			||||||
addopts = "-rfEX -p pytester --strict-markers"
 | 
					addopts = "-rfEX -p pytester --strict-markers"
 | 
				
			||||||
python_files = ["test_*.py", "*_test.py", "testing/python/*.py"]
 | 
					python_files = ["test_*.py", "*_test.py", "testing/python/*.py"]
 | 
				
			||||||
python_classes = ["Test", "Acceptance"]
 | 
					python_classes = ["Test", "Acceptance"]
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -206,20 +206,17 @@ class WarningsRecorder(warnings.catch_warnings):  # type:ignore[type-arg]
 | 
				
			||||||
        return len(self._list)
 | 
					        return len(self._list)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def pop(self, cls: Type[Warning] = Warning) -> "warnings.WarningMessage":
 | 
					    def pop(self, cls: Type[Warning] = Warning) -> "warnings.WarningMessage":
 | 
				
			||||||
        """Pop the first recorded warning which is an instance of ``cls``.
 | 
					        """Pop the first recorded warning which is an instance of ``cls``,
 | 
				
			||||||
 | 
					        but not an instance of a child class of any other match.
 | 
				
			||||||
        But not an instance of a child class of any other match.
 | 
					 | 
				
			||||||
        Raises ``AssertionError`` if there is no match.
 | 
					        Raises ``AssertionError`` if there is no match.
 | 
				
			||||||
 | 
					 | 
				
			||||||
        """
 | 
					        """
 | 
				
			||||||
 | 
					        best_idx: Optional[int] = None
 | 
				
			||||||
        best_idx = None
 | 
					 | 
				
			||||||
        for i, w in enumerate(self._list):
 | 
					        for i, w in enumerate(self._list):
 | 
				
			||||||
            if w.category == cls:
 | 
					            if w.category == cls:
 | 
				
			||||||
                return self._list.pop(i)  # exact match, stop looking
 | 
					                return self._list.pop(i)  # exact match, stop looking
 | 
				
			||||||
            if issubclass(w.category, cls) and (
 | 
					            if issubclass(w.category, cls) and (
 | 
				
			||||||
                best_idx is None
 | 
					                best_idx is None
 | 
				
			||||||
                or not issubclass(w.category, self._list[best_idx].category)  # type: ignore[unreachable]
 | 
					                or not issubclass(w.category, self._list[best_idx].category)
 | 
				
			||||||
            ):
 | 
					            ):
 | 
				
			||||||
                best_idx = i
 | 
					                best_idx = i
 | 
				
			||||||
        if best_idx is not None:
 | 
					        if best_idx is not None:
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -54,7 +54,7 @@ class TestSubclassWarningPop:
 | 
				
			||||||
        for warn in _warnings:
 | 
					        for warn in _warnings:
 | 
				
			||||||
            warnings.warn(f"Warning {warn().__repr__()}", warn)
 | 
					            warnings.warn(f"Warning {warn().__repr__()}", warn)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def test_pop(self):
 | 
					    def test_pop_finds_exact_match(self):
 | 
				
			||||||
        with pytest.warns((self.ParentWarning, self.ChildWarning)) as record:
 | 
					        with pytest.warns((self.ParentWarning, self.ChildWarning)) as record:
 | 
				
			||||||
            self.raise_warnings_from_list(
 | 
					            self.raise_warnings_from_list(
 | 
				
			||||||
                [self.ChildWarning, self.ParentWarning, self.ChildOfChildWarning]
 | 
					                [self.ChildWarning, self.ParentWarning, self.ChildOfChildWarning]
 | 
				
			||||||
| 
						 | 
					@ -64,13 +64,13 @@ class TestSubclassWarningPop:
 | 
				
			||||||
        _warn = record.pop(self.ParentWarning)
 | 
					        _warn = record.pop(self.ParentWarning)
 | 
				
			||||||
        assert _warn.category is self.ParentWarning
 | 
					        assert _warn.category is self.ParentWarning
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def test_pop_raises(self):
 | 
					    def test_pop_raises_if_no_match(self):
 | 
				
			||||||
        with pytest.raises(AssertionError):
 | 
					        with pytest.raises(AssertionError):
 | 
				
			||||||
            with pytest.warns(self.ParentWarning) as record:
 | 
					            with pytest.warns(self.ParentWarning) as record:
 | 
				
			||||||
                self.raise_warnings_from_list([self.ParentWarning])
 | 
					                self.raise_warnings_from_list([self.ParentWarning])
 | 
				
			||||||
            record.pop(self.ChildOfChildWarning)
 | 
					            record.pop(self.ChildOfChildWarning)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def test_pop_most_recent(self):
 | 
					    def test_pop_finds_best_inexact_match(self):
 | 
				
			||||||
        with pytest.warns(self.ParentWarning) as record:
 | 
					        with pytest.warns(self.ParentWarning) as record:
 | 
				
			||||||
            self.raise_warnings_from_list(
 | 
					            self.raise_warnings_from_list(
 | 
				
			||||||
                [self.ChildOfChildWarning, self.ChildWarning, self.ChildOfChildWarning]
 | 
					                [self.ChildOfChildWarning, self.ChildWarning, self.ChildOfChildWarning]
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue