Skip to content

Commit

Permalink
Migrate unit and integration tests from TravisCI to GitHub Actions (#580
Browse files Browse the repository at this point in the history
)

Co-authored-by: Jessica Scheick <JessicaS11@users.noreply.github.com>
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
  • Loading branch information
3 people authored Aug 29, 2024
1 parent a52bc37 commit bd09d73
Show file tree
Hide file tree
Showing 5 changed files with 124 additions and 50 deletions.
19 changes: 19 additions & 0 deletions .github/actions/install-icepyx/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
name: 'Install icepyx'
description: 'Install icepyx and dev dependencies'

inputs:
python-version:
required: true

runs:
using: "composite"
steps:
- uses: "actions/setup-python@v5"
with:
python-version: "${{ inputs.python-version }}"

- name: "Install package and test dependencies"
shell: "bash"
run: |
python -m pip install .
python -m pip install -r requirements-dev.txt
53 changes: 53 additions & 0 deletions .github/workflows/integration_test.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
name: "Integration test"
# NOTE: We're just running the tests that require earthdata login here; we
# don't distinguish between unit and integration tests yet.

on:
push:
branches:
- "main" # Releases
- "development" # PR merges
pull_request:
branches:
- "main" # Release pull requests
pull_request_review:
types:
- "submitted"
paths:
- ".github/**"
- "icepyx/**/*.py"
- "pyproject.toml"
- "requirements*.txt"


jobs:
test:
name: "Integration test"
# Job is conditional:
# - Do not run on PRs from forks
# - Do not run on `pull_request_review` events unless the PR is approved.
if: "${{ !github.event.pull_request.head.repo.fork && (github.event.action != 'pull_request_review' || github.event.review.state == 'approved') }}"
runs-on: "ubuntu-latest"

steps:
- uses: "actions/checkout@v4"
with:
fetch-depth: 0

- uses: "./.github/actions/install-icepyx"
with:
python-version: "3.12"

- name: "Run tests"
env:
EARTHDATA_PASSWORD: "${{ secrets.EARTHDATA_PASSWORD }}"
NSIDC_LOGIN: "${{ secrets.EARTHDATA_PASSWORD }}"
run: |
pytest icepyx/ --verbose --cov app \
icepyx/tests/test_behind_NSIDC_API_login.py \
icepyx/tests/test_auth.py
- name: "Upload coverage report"
uses: "codecov/codecov-action@v4.5.0"
with:
token: "${{ secrets.CODECOV_TOKEN }}"
40 changes: 40 additions & 0 deletions .github/workflows/unit_test.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
name: "Unit test"
# NOTE: We're just skipping the tests requiring earthdata login here; we don't
# distinguish yet between unit and integration tests.

on:
pull_request:
push:
branches:
- "main"
- "development"


jobs:
test:
name: "Unit test (Python ${{ matrix.python-version }})"
runs-on: "ubuntu-latest"
strategy:
fail-fast: false
matrix:
python-version: ["3.9", "3.12"] #NOTE: min and max Python versions supported by icepyx

steps:
- uses: "actions/checkout@v4"
with:
fetch-depth: 0

- uses: "./.github/actions/install-icepyx"
with:
python-version: "${{ matrix.python-version }}"

- name: "Run tests"
run: |
pytest icepyx/ --verbose --cov app \
--ignore=icepyx/tests/test_behind_NSIDC_API_login.py \
--ignore=icepyx/tests/test_auth.py
- name: "Upload coverage report"
uses: "codecov/codecov-action@v4.5.0"
with:
token: "${{ secrets.CODECOV_TOKEN }}"
44 changes: 0 additions & 44 deletions .travis.yml

This file was deleted.

18 changes: 12 additions & 6 deletions README.rst
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,9 @@ icepyx

|JOSS| |Zenodo-all|

Latest release (main branch): |Docs Status main| |Travis main Build Status| |Code Coverage main|
Latest release (main branch): |Docs Status main| |Unit Tests Status (main)| |Integration Tests Status (main)| |Code Coverage main|

Current development version (development branch): |Docs Status dev| |Travis dev Build Status| |Code Coverage dev| |Pre-commit dev|
Current development version (development branch): |Docs Status dev| |Unit Tests Status (dev)| |Integration Tests Status (main)| |Code Coverage dev| |Pre-commit dev|

.. |GitHub license| image:: https://img.shields.io/badge/License-BSD%203--Clause-blue.svg
:target: https://opensource.org/licenses/BSD-3-Clause
Expand Down Expand Up @@ -38,11 +38,17 @@ Current development version (development branch): |Docs Status dev| |Travis dev
.. |Docs Status dev| image:: https://readthedocs.org/projects/icepyx/badge/?version=development
:target: https://icepyx.readthedocs.io/en/development

.. |Travis main Build Status| image:: https://app.travis-ci.com/icesat2py/icepyx.svg?branch=main
:target: https://app.travis-ci.com/icesat2py/icepyx
.. |Unit Tests Status (main)| image:: https://github.com/icesat2py/icepyx/actions/workflows/unit_test.yml/badge.svg?branch=main
:target: https://github.com/icesat2py/icepyx/actions/workflows/unit_test.yml

.. |Travis dev Build Status| image:: https://app.travis-ci.com/icesat2py/icepyx.svg?branch=development
:target: https://app.travis-ci.com/icesat2py/icepyx
.. |Integration Tests Status (main)| image:: https://github.com/icesat2py/icepyx/actions/workflows/integration_test.yml/badge.svg?branch=main
:target: https://github.com/icesat2py/icepyx/actions/workflows/integration_test.yml

.. |Unit Tests Status (dev)| image:: https://github.com/icesat2py/icepyx/actions/workflows/unit_test.yml/badge.svg?branch=development
:target: https://github.com/icesat2py/icepyx/actions/workflows/unit_test.yml

.. |Integration Tests Status (dev)| image:: https://github.com/icesat2py/icepyx/actions/workflows/integration_test.yml/badge.svg?branch=development
:target: https://github.com/icesat2py/icepyx/actions/workflows/integration_test.yml

.. |Code Coverage main| image:: https://codecov.io/gh/icesat2py/icepyx/branch/main/graph/badge.svg
:target: https://codecov.io/gh/icesat2py/icepyx
Expand Down

0 comments on commit bd09d73

Please sign in to comment.