apache / apache/airflow

Improve Code Coverage for Airflow

Open
#35,127 4 comments 3 reactions 0 assignees View on GitHub
good first issue kind:feature
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

Open the contributing 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.