ASFHyP3 / actions

BSD 3-Clause "New" or "Revised" License
2 stars 1 forks source link

Use `reusable-pytest.yml` for all repos that use `pytest` #183

Open jtherrmann opened 11 hours ago

jtherrmann commented 11 hours ago

Jira: https://asfdaac.atlassian.net/browse/TOOL-3144

Note: The above link is accessible only to members of ASF.


Currently, reusable-pytest.yml assumes the presence of a local Python package:

  1. It requires a local_package_name input.
  2. It runs python -m pip install --no-deps . before running pytest.

It would be nice to support non-package repos as well, e.g. https://github.com/ASFHyP3/hyp3.

With regard to (1), I would suggest renaming local_package_name to something like pytest_cov_source and make it optional with a default value of "", which means no source filtering (see the --cov documentation in pytest --help after installing pytest-cov).

With regard to (2), one option would be to remove the python -m pip install --no-deps . line from the action and require that any repos with a local package include the following in environment.yml:

  - pip:
    - -e .

Another option would be to use Pixi with the path parameter, as suggested by @jhkennedy.

Also note that any of our repos that set PYTHONPATH in Makefile would need to instead set it in environment.yml before being able to use reusable-pytest.yml (see https://asfdaac.atlassian.net/browse/TOOL-3029).

jhkennedy commented 11 hours ago

An alternative worth considering: Don't have non-package repos.

Right now, we only do that because lambda just Yolo's everything onto the PYTHONPATH, but that's against modern Python practices/styles, where you generally try to avoid manipulating the PYTHONPATH directly.

We could update our repos to package all our code and use the packaged code in lambda.