Exemplo n.º 1
0
def _ensure_only_one_capture_fixture(request: FixtureRequest, name):
    fixtures = sorted(set(request.fixturenames) & capture_fixtures - {name})
    if fixtures:
        arg = fixtures[0] if len(fixtures) == 1 else fixtures
        raise request.raiseerror(
            "cannot use {} and {} at the same time".format(arg, name)
        )
Exemplo n.º 2
0
    def _capturing_for_request(
        self, request: FixtureRequest
    ) -> Generator["CaptureFixture", None, None]:
        """
        Context manager that creates a ``CaptureFixture`` instance for the
        given ``request``, ensuring there is only a single one being requested
        at the same time.

        This is used as a helper with ``capsys``, ``capfd`` etc.
        """
        if self._capture_fixture:
            other_name = next(
                k
                for k, v in map_fixname_class.items()
                if v is self._capture_fixture.captureclass
            )
            raise request.raiseerror(
                "cannot use {} and {} at the same time".format(
                    request.fixturename, other_name
                )
            )
        capture_class = map_fixname_class[request.fixturename]
        self._capture_fixture = CaptureFixture(capture_class, request)
        self.activate_fixture()
        yield self._capture_fixture
        self._capture_fixture.close()
        self._capture_fixture = None