mirror of
https://github.com/github/codeql.git
synced 2025-12-16 08:43:11 +01:00
Tests can be run with ``` bazel test //swift/codegen:tests ``` Coverage can be checked installing `pytest-cov` and running ``` pytest --cov=swift/codegen swift/codegen/test ```
51 lines
1.1 KiB
Python
51 lines
1.1 KiB
Python
import pathlib
|
|
from unittest import mock
|
|
|
|
import pytest
|
|
|
|
from swift.codegen.lib import render, schema
|
|
|
|
schema_dir = pathlib.Path("a", "dir")
|
|
schema_file = schema_dir / "schema.yml"
|
|
|
|
|
|
def write(out, contents=""):
|
|
out.parent.mkdir(parents=True, exist_ok=True)
|
|
with open(out, "w") as out:
|
|
out.write(contents)
|
|
|
|
|
|
@pytest.fixture
|
|
def renderer():
|
|
return mock.Mock(spec=render.Renderer())
|
|
|
|
|
|
@pytest.fixture
|
|
def opts():
|
|
return mock.MagicMock()
|
|
|
|
|
|
@pytest.fixture(autouse=True)
|
|
def override_paths(tmp_path):
|
|
with mock.patch("swift.codegen.lib.paths.swift_dir", tmp_path):
|
|
yield
|
|
|
|
|
|
@pytest.fixture
|
|
def input(opts, tmp_path):
|
|
opts.schema = tmp_path / schema_file
|
|
with mock.patch("swift.codegen.lib.schema.load") as load_mock:
|
|
load_mock.return_value = schema.Schema([])
|
|
yield load_mock.return_value
|
|
assert load_mock.mock_calls == [
|
|
mock.call(opts.schema)
|
|
], load_mock.mock_calls
|
|
|
|
|
|
def run_generation(generate, opts, renderer):
|
|
output = {}
|
|
|
|
renderer.render.side_effect = lambda data, out: output.__setitem__(out, data)
|
|
generate(opts, renderer)
|
|
return output
|