Improve Code Coverage for Airflow
- Dominant language
- Python
- Stars
- 46.9k
- Forks
- 17.8k
- Avg merge
- 2d 7h
- Merged PRs (30d)
- 484
Description
### Description
Airflow code coverage is currently at an impressive 84% but we would like to improve the code coverage and get to at least 95%.
This is a call to help improve the code coverage by adding the missing tests.
You can use the code coverage tool to find modules to improve. Here is the link to the documentation: https://github.com/apache/airflow/blob/main/contributing-docs/testing/unit_tests.rst#code-coverage
Below is how you can discover modules to work on, follow the above link for up-to-date instruction:
- Initiate a breeze shell.
- Execute one of the commands below based on the desired coverage area:
**Core:** `python scripts/cov/core_coverage.py`
**REST API:** `python scripts/cov/restapi_coverage.py`
**CLI:** `python scripts/cov/cli_coverage.py`
**Webserver:** `python scripts/cov/www_coverage.py`
After execution, the coverage report will be available at: http://localhost:28000/dev/coverage/index.html.
- Choose any of the modules and improve it
Note
In order to see the coverage report, you must start webserver first in breeze environment via `airflow webserver`. Once you enter breeze, you can start `tmux` (terminal multiplexer) and split the terminal (by pressing `ctrl-B "` for example) to continue testing and run the webserver in one terminal and run tests in the second one (you can switch between the terminals with `ctrl-B `).
PRs should be per module or related codebase
UPDATE (added by @potiuk )
Also you might want to have a look at #35442 - we had a "project structure" test that was supposed to detect modules that do not have corresponding tests and fail our build in this case. This test has been however broken for a long time and we have many missing modules on the list.
Contributor guide
Research direction
Start with contributing-docs/testing/unit_tests.rst and enter a Breeze shell. Run the relevant scripts/cov/core_coverage.py, restapi_coverage.py, cli_coverage.py, or www_coverage.py, then inspect the generated report at localhost:28000/dev/coverage/index.html. Choose one module, add its missing tests, and verify that the module's coverage improves; submit PRs per module or related codebase.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- python
- Domain
- data-engineering, testing
- Issue type
- Refactor
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 30/100