def METHOD_NAME(project_path: os.PathLike, cli: Cli) -> None:
    """
    Check that the cache key of various elements has not changed.
    This ensures that elements do not break cache keys unexpectedly.
    The format of the project is expected to be:
    .. code-block::
        ./
        ./project.conf
        ./elem1.bst
        ./elem1.expected
        ./elem2.bst
        ./elem2.expected
        # Or in sub-directories
        ./mydir/elem3.bst
        ./mydir/elem3.expected
    The ``.expected`` file should contain the expected cache key.
    In order to automatically created the ``.expected`` files, or updated them,
    you can run ``python3 -m buildstream._testing._update_cachekeys`` in the
    project's directory.
    :param project_path: Path to a project
    :param cli: a `cli` object as provided by the fixture :func:`buildstream._testing.runcli.cli`
    """
    result = cli.run(
        project=project_path, silent=True, args=["show", "--format", "%{name}::%{full-key}", "target.bst"]
    )
    result.assert_success()
    _assert_cache_keys(project_path, result.output)