Moved project into a src-based layout and reorganized tests.
CI / Formatting (push) Failing after 5s
CI / Linting (push) Successful in 5s
CI / Tests (push) Successful in 8s
CI / Type Checking (push) Successful in 9s
CI / Spelling (push) Successful in 4s

This commit is contained in:
2026-06-16 14:21:02 -04:00
parent 1aafecf20e
commit 49062159f9
30 changed files with 47 additions and 8 deletions
+1 -1
View File
@@ -65,7 +65,7 @@ jobs:
- name: Install dependencies - name: Install dependencies
run: uv sync --locked run: uv sync --locked
- name: Run unit tests with Pytest - name: Run tests with Pytest
run: uv run pytest -v --cov --cov-report= run: uv run pytest -v --cov --cov-report=
- name: Report code coverage - name: Report code coverage
+1 -1
View File
@@ -1,5 +1,5 @@
# Version file (auto-generated by hatch-vcs) # Version file (auto-generated by hatch-vcs)
crabstero/_version.py src/crabstero/_version.py
# Byte-compiled / optimized / DLL files # Byte-compiled / optimized / DLL files
__pycache__/ __pycache__/
+15 -6
View File
@@ -44,24 +44,33 @@ build-backend = "hatchling.build"
source = "vcs" source = "vcs"
[tool.hatch.build.targets.wheel] [tool.hatch.build.targets.wheel]
packages = ["crabstero"] packages = ["src/crabstero"]
[tool.hatch.build.hooks.vcs] [tool.hatch.build.hooks.vcs]
version-file = "crabstero/_version.py" version-file = "src/crabstero/_version.py"
[tool.mypy] [tool.mypy]
python_version = "3.14" python_version = "3.14"
strict = true strict = true
warn_unreachable = true warn_unreachable = true
explicit_package_bases = true explicit_package_bases = true
mypy_path = "$MYPY_CONFIG_FILE_DIR/src"
[tool.pytest.ini_options] [tool.pytest.ini_options]
asyncio_mode = "auto" asyncio_mode = "auto"
asyncio_default_fixture_loop_scope = "function" asyncio_default_fixture_loop_scope = "function"
testpaths = ["tests"]
pythonpath = ["src"]
addopts = [
"--import-mode=importlib",
"--strict-config",
"--strict-markers",
]
xfail_strict = true
[tool.ruff] [tool.ruff]
target-version = "py314" target-version = "py314"
extend-exclude = ["crabstero/_version.py"] # auto-generated by hatch-vcs extend-exclude = ["src/crabstero/_version.py"] # auto-generated by hatch-vcs
[tool.ruff.lint] [tool.ruff.lint]
select = ["ALL"] select = ["ALL"]
@@ -81,7 +90,7 @@ ignore = [
] ]
[tool.ruff.lint.per-file-ignores] [tool.ruff.lint.per-file-ignores]
"crabstero/__init__.py" = ["E402"] # version fallback is resolved before public imports "src/crabstero/__init__.py" = ["E402"] # version fallback is resolved before public imports
"tests/**" = [ "tests/**" = [
"S101", # assert is standard for pytest "S101", # assert is standard for pytest
"S311", # pseudo-random generators are fine in tests "S311", # pseudo-random generators are fine in tests
@@ -91,12 +100,12 @@ ignore = [
] ]
[tool.codespell] [tool.codespell]
skip = "crabstero/_version.py,uv.lock" skip = "src/crabstero/_version.py,uv.lock"
[tool.coverage.run] [tool.coverage.run]
source = ["crabstero"] source = ["crabstero"]
omit = [ omit = [
"crabstero/_version.py", "src/crabstero/_version.py",
] ]
[tool.coverage.report] [tool.coverage.report]
+15
View File
@@ -0,0 +1,15 @@
# Copyright 2026 Logan Fick
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
"""Integration tests for Crabstero."""
+15
View File
@@ -0,0 +1,15 @@
# Copyright 2026 Logan Fick
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
"""Unit tests for Crabstero."""