diff --git a/README.md b/README.md index f9f2e8e..e829edf 100644 --- a/README.md +++ b/README.md @@ -62,7 +62,13 @@ invoke the client. Running the conformance suite locally, ```sh -(env) $ pytest --entrypoint=SIGSTORE_CLIENT --identity-token=$(gh auth token) +(env) $ pytest test --entrypoint=SIGSTORE_CLIENT --identity-token=$(gh auth token) +``` + +Or if you are only checking verification use cases, + +```sh +(env) $ pytest test --skip-signing --entrypoint=SIGSTORE_CLIENT ``` Using the [`gh` CLI](https://cli.github.com/) and noting SIGSTORE_CLIENT is the absolute path to a client implementing the [CLI specification](https://github.com/sigstore/sigstore-conformance/blob/main/docs/cli_protocol.md). diff --git a/test/conftest.py b/test/conftest.py index 131bebd..1d9b5b4 100644 --- a/test/conftest.py +++ b/test/conftest.py @@ -36,6 +36,10 @@ class OidcTokenError(Exception): pass +class ConfigError(Exception): + pass + + def pytest_addoption(parser) -> None: """ Add the `--entrypoint`, `--github-token`, and `--skip-signing` flags to @@ -52,7 +56,6 @@ def pytest_addoption(parser) -> None: "--github-token", action="store", help="the GitHub token to supply to the Sigstore client under test", - required=True, type=str, ) parser.addoption( @@ -68,11 +71,25 @@ def pytest_runtest_setup(item): def pytest_configure(config): + if not config.getoption("--github-token") and not config.getoption("--skip-signing"): + raise ConfigError("Please specify one of '--github-token' or '--skip-signing'") + config.addinivalue_line("markers", "signing: mark test as requiring signing functionality") +def pytest_internalerror(excrepr, excinfo): + if excinfo.type == ConfigError: + print(excinfo.value) + return True + + return False + + @pytest.fixture def identity_token(pytestconfig) -> str: + if pytestconfig.getoption("--skip-signing"): + return "" + gh_token = pytestconfig.getoption("--github-token") session = requests.Session() headers = {