From 96697c1ebeaab9b7998386a4ba6d3548d475321a Mon Sep 17 00:00:00 2001 From: Connor Chen <67431889+connorjchen@users.noreply.github.com> Date: Mon, 3 Oct 2022 10:53:15 -0400 Subject: [PATCH] feat: poetry script for easier test case running (#445) * Add poetry run test shortcut scripts * Add test coverage scripts --- .github/workflows/integration_test.yml | 4 ++-- .github/workflows/unit_test.yml | 4 ++-- CONTRIBUTING.md | 24 ++++++++++++++++++++++-- poetry.lock | 25 +++++++++++++++++++++++++ pyproject.toml | 18 ++++++++++++++++++ 5 files changed, 69 insertions(+), 6 deletions(-) diff --git a/.github/workflows/integration_test.yml b/.github/workflows/integration_test.yml index 56c28a8e4..b4aa67284 100644 --- a/.github/workflows/integration_test.yml +++ b/.github/workflows/integration_test.yml @@ -52,5 +52,5 @@ jobs: - name: Integration test run: | - poetry run coverage run -m unittest discover tests.integration - poetry run coverage report -m --fail-under=70 + poetry run poe test_integration + poetry run coverage report --fail-under=70 diff --git a/.github/workflows/unit_test.yml b/.github/workflows/unit_test.yml index 6eb429cb4..25425d7c3 100644 --- a/.github/workflows/unit_test.yml +++ b/.github/workflows/unit_test.yml @@ -79,5 +79,5 @@ jobs: - name: Unit test run: | - poetry run coverage run -m unittest discover tests.unit - poetry run coverage report -m --fail-under=85 + poetry run poe test_unit + poetry run coverage report --fail-under=85 diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 365a9fc09..14787bbb3 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -68,10 +68,18 @@ poetry run flake8 ./xrpl ### Running Tests +#### Individual Tests + +```bash +# Works for single or multiple unit/integration tests +# Ex: poetry run poe test tests/unit/models/test_response.py tests/integration/transactions/test_account_delete.py +poetry run poe test FILE_PATHS +``` + #### Unit Tests ```bash -poetry run python3 -m unittest discover tests/unit +poetry run poe test_unit ``` #### Integration Tests @@ -84,7 +92,19 @@ docker run -p 5005:5005 -p 6006:6006 -it natenichols/rippled-standalone:latest To actually run the tests: ```bash -poetry run python3 -m unittest discover tests/integration +poetry run poe test_integration +``` + +#### Code Coverage + +To run both unit and integration tests and see code coverage: +```bash +poetry run poe test_coverage +``` + +To see manually code coverage after running unit tests or integration tests: +```bash +poetry run coverage report ``` #### Running tests with different Python versions diff --git a/poetry.lock b/poetry.lock index 43a3f8f71..533714460 100644 --- a/poetry.lock +++ b/poetry.lock @@ -403,6 +403,14 @@ python-versions = ">=3.6" [package.dependencies] pyparsing = ">=2.0.2,<3.0.5 || >3.0.5" +[[package]] +name = "pastel" +version = "0.2.1" +description = "Bring colors to your terminal." +category = "dev" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" + [[package]] name = "pathspec" version = "0.9.0" @@ -423,6 +431,21 @@ python-versions = ">=3.7" docs = ["furo (>=2021.7.5b38)", "proselint (>=0.10.2)", "sphinx-autodoc-typehints (>=1.12)", "sphinx (>=4)"] test = ["appdirs (==1.4.4)", "pytest-cov (>=2.7)", "pytest-mock (>=3.6)", "pytest (>=6)"] +[[package]] +name = "poethepoet" +version = "0.16.2" +description = "A task runner that works well with poetry." +category = "dev" +optional = false +python-versions = ">=3.7" + +[package.dependencies] +pastel = ">=0.2.1,<0.3.0" +tomli = ">=1.2.2" + +[package.extras] +poetry_plugin = ["poetry (>=1.0,<2.0)"] + [[package]] name = "pycodestyle" version = "2.7.0" @@ -780,8 +803,10 @@ mccabe = [] mypy = [] mypy-extensions = [] packaging = [] +pastel = [] pathspec = [] platformdirs = [] +poethepoet = [] pycodestyle = [] pydocstyle = [] pyflakes = [] diff --git a/pyproject.toml b/pyproject.toml index 6bfea30a7..96294ae61 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -59,6 +59,7 @@ coverage = "^6.4.1" Jinja2 = "^2.11.3" MarkupSafe = "2.0.1" Sphinx = "^5.1.1" +poethepoet = "^0.16.2" [tool.isort] # Make sure that isort's settings line up with black @@ -71,3 +72,20 @@ build-backend = "poetry.core.masonry.api" [tool.coverage.run] branch = true source = ["xrpl"] + +[tool.coverage.report] +show_missing = true +skip_covered = true +skip_empty = true +precision = 2 + +[tool.poe.tasks] +test_unit = "coverage run -m unittest discover tests/unit" +test_integration = "coverage run -m unittest discover tests/integration" + +[tool.poe.tasks.test] +cmd = "python3 -m unittest ${FILE_PATHS}" +args = [{ name = "FILE_PATHS", positional = true, multiple = true}] + +[tool.poe.tasks.test_coverage] +sequence = [{ cmd = "coverage run -m unittest discover" }, { cmd = "coverage report --fail-under=90" }]