See: cl/4840
When importing Python modules, we include `functional2` in the module
path, like this:
from functional2.testlib.fixtures.env import ManagedEnv
This means that python expects to see a file like
`functional2/testlib/fixtures/env.py`. We run `pytest` from `tests/` in
the `justfile` and have `tests/functional2/__init__.py` so `pytest` in
`meson` is able to find these imports.
However, language servers generally consider the `pyproject.toml` to be
the project root, so (e.g.) `pyright` is unable to follow any of the
`functional2` imports, leading to lots of spurious errors.
In cl/4840 I moved `tests/functional2/pyproject.toml` to
`tests/pyproject.toml`, which worked but was considered aesthetically
unappealing.
This diff is much larger but it's a more elegant solution.
Change-Id: I2983c7b87f88f59a4e3521451a9f5acd6a6a6964
59 lines
1.4 KiB
Makefile
59 lines
1.4 KiB
Makefile
# https://just.systems/man/en/
|
|
|
|
# List all available targets
|
|
list:
|
|
just --list
|
|
|
|
# Clean build artifacts
|
|
clean:
|
|
rm -rf build
|
|
|
|
# Prepare meson for building with extra options
|
|
setup-custom *OPTIONS:
|
|
meson setup build --prefix="$PWD/outputs/out" $mesonFlags {{ OPTIONS }}
|
|
|
|
# Prepare meson for building
|
|
setup: (setup-custom)
|
|
|
|
# Build lix with extra options
|
|
build-custom *OPTIONS:
|
|
meson compile -C build {{ OPTIONS }}
|
|
|
|
# Build lix
|
|
build: (build-custom)
|
|
|
|
alias compile := build
|
|
|
|
# Install lix for local development with extra options
|
|
install-custom *OPTIONS: (build-custom OPTIONS)
|
|
meson install -C build
|
|
|
|
# Install lix for local development
|
|
install: (install-custom)
|
|
|
|
# Run tests (usually requires `install`) with extra options
|
|
test *OPTIONS:
|
|
meson test -C build --print-errorlogs {{ OPTIONS }}
|
|
|
|
# Run unit tests only
|
|
test-unit *OPTIONS: (test "--suite" "check")
|
|
|
|
# Run integration tests only
|
|
test-integration *OPTIONS: install (test "--suite" "installcheck")
|
|
|
|
# Run functional2 tests using pytest directly, allowing for additional arguments to be passed to pytest e.g. for more granular test selection
|
|
test-functional2 *OPTIONS:
|
|
cd tests/functional2 && python -m pytest -v {{ OPTIONS }}
|
|
|
|
alias clang-tidy := lint
|
|
|
|
# Lint with `clang-tidy`
|
|
lint:
|
|
ninja -C build clang-tidy
|
|
|
|
alias clang-tidy-fix := lint-fix
|
|
|
|
# Fix lints with `clang-tidy-fix`
|
|
lint-fix:
|
|
ninja -C build clang-tidy-fix
|