CI #5871
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
--- | |
name: CI | |
on: | |
push: | |
branches: [main] | |
pull_request: | |
branches: [main] | |
schedule: | |
# * is a special character in YAML so you have to quote this string | |
# Run at 1:00 every day | |
- cron: 0 1 * * * | |
workflow_dispatch: {} | |
# We share Vuforia credentials and therefore Vuforia databases across | |
# workflows. | |
# We therefore want to run only one workflow at a time. | |
concurrency: vuforia_credentials | |
jobs: | |
build: | |
runs-on: ubuntu-latest | |
strategy: | |
fail-fast: false | |
matrix: | |
python-version: ['3.12'] | |
ci_pattern: | |
- tests/mock_vws/test_query.py::TestContentType | |
- tests/mock_vws/test_query.py::TestSuccess | |
- tests/mock_vws/test_query.py::TestIncorrectFields | |
- tests/mock_vws/test_query.py::TestMaxNumResults | |
- tests/mock_vws/test_query.py::TestIncludeTargetData | |
- tests/mock_vws/test_query.py::TestAcceptHeader | |
- tests/mock_vws/test_query.py::TestActiveFlag | |
- tests/mock_vws/test_query.py::TestBadImage | |
- tests/mock_vws/test_query.py::TestMaximumImageFileSize | |
- tests/mock_vws/test_query.py::TestMaximumImageDimensions | |
- tests/mock_vws/test_query.py::TestImageFormats | |
- tests/mock_vws/test_query.py::TestProcessing | |
- tests/mock_vws/test_query.py::TestUpdate | |
- tests/mock_vws/test_query.py::TestDeleted | |
- tests/mock_vws/test_query.py::TestTargetStatusFailed | |
- tests/mock_vws/test_query.py::TestDateFormats | |
- tests/mock_vws/test_query.py::TestInactiveProject | |
- tests/mock_vws/test_add_target.py::TestContentTypes | |
- tests/mock_vws/test_add_target.py::TestMissingData | |
- tests/mock_vws/test_add_target.py::TestWidth | |
- tests/mock_vws/test_add_target.py::TestTargetName | |
- tests/mock_vws/test_add_target.py::TestImage | |
- tests/mock_vws/test_add_target.py::TestActiveFlag | |
- tests/mock_vws/test_add_target.py::TestUnexpectedData | |
- tests/mock_vws/test_add_target.py::TestApplicationMetadata | |
- tests/mock_vws/test_add_target.py::TestInactiveProject | |
- tests/mock_vws/test_authorization_header.py::TestAuthorizationHeader | |
- tests/mock_vws/test_authorization_header.py::TestMalformed::test_one_part_no_space | |
- tests/mock_vws/test_authorization_header.py::TestMalformed::test_one_part_with_space | |
- tests/mock_vws/test_authorization_header.py::TestMalformed::test_missing_signature | |
- tests/mock_vws/test_authorization_header.py::TestBadKey | |
- tests/mock_vws/test_content_length.py::TestIncorrect::test_not_integer | |
- tests/mock_vws/test_content_length.py::TestIncorrect::test_too_large | |
- tests/mock_vws/test_content_length.py::TestIncorrect::test_too_small | |
- tests/mock_vws/test_database_summary.py::TestDatabaseSummary::test_success | |
- tests/mock_vws/test_database_summary.py::TestDatabaseSummary::test_active_images | |
- tests/mock_vws/test_database_summary.py::TestDatabaseSummary::test_failed_images | |
- tests/mock_vws/test_database_summary.py::TestDatabaseSummary::test_inactive_images | |
- tests/mock_vws/test_database_summary.py::TestDatabaseSummary::test_inactive_failed | |
- tests/mock_vws/test_database_summary.py::TestDatabaseSummary::test_deleted | |
- tests/mock_vws/test_database_summary.py::TestProcessingImages | |
- tests/mock_vws/test_database_summary.py::TestQuotas | |
- tests/mock_vws/test_database_summary.py::TestRecos | |
- tests/mock_vws/test_database_summary.py::TestRequestUsage | |
- tests/mock_vws/test_database_summary.py::TestInactiveProject | |
- tests/mock_vws/test_date_header.py::TestFormat | |
- tests/mock_vws/test_date_header.py::TestMissing | |
- tests/mock_vws/test_date_header.py::TestSkewedTime::test_date_out_of_range_after | |
- tests/mock_vws/test_date_header.py::TestSkewedTime::test_date_out_of_range_before | |
- tests/mock_vws/test_date_header.py::TestSkewedTime::test_date_in_range_after | |
- tests/mock_vws/test_date_header.py::TestSkewedTime::test_date_in_range_before | |
- tests/mock_vws/test_delete_target.py | |
- tests/mock_vws/test_get_duplicates.py | |
- tests/mock_vws/test_get_target.py | |
- tests/mock_vws/test_invalid_given_id.py | |
- tests/mock_vws/test_invalid_json.py::TestInvalidJSON::test_invalid_json | |
- tests/mock_vws/test_invalid_json.py::TestInvalidJSON::test_invalid_json_with_skewed_time | |
- tests/mock_vws/test_target_list.py | |
- tests/mock_vws/test_target_raters.py | |
- tests/mock_vws/test_target_summary.py | |
- tests/mock_vws/test_unexpected_json.py | |
- tests/mock_vws/test_update_target.py::TestActiveFlag | |
- tests/mock_vws/test_update_target.py::TestApplicationMetadata::test_base64_encoded | |
- tests/mock_vws/test_update_target.py::TestApplicationMetadata::test_invalid_type | |
- tests/mock_vws/test_update_target.py::TestApplicationMetadata::test_not_base64_encoded_processable | |
- tests/mock_vws/test_update_target.py::TestApplicationMetadata::test_not_base64_encoded_not_processable | |
- tests/mock_vws/test_update_target.py::TestApplicationMetadata::test_metadata_too_large | |
- tests/mock_vws/test_update_target.py::TestImage::test_image_valid | |
- tests/mock_vws/test_update_target.py::TestImage::test_bad_image_format_or_color_space | |
- tests/mock_vws/test_update_target.py::TestImage::test_corrupted | |
- tests/mock_vws/test_update_target.py::TestImage::test_image_too_large | |
- tests/mock_vws/test_update_target.py::TestImage::test_not_base64_encoded_processable | |
- tests/mock_vws/test_update_target.py::TestImage::test_not_base64_encoded_not_processable | |
- tests/mock_vws/test_update_target.py::TestImage::test_not_image | |
- tests/mock_vws/test_update_target.py::TestImage::test_invalid_type | |
- tests/mock_vws/test_update_target.py::TestImage::test_rating_can_change | |
- tests/mock_vws/test_update_target.py::TestTargetName::test_name_valid | |
- tests/mock_vws/test_update_target.py::TestTargetName::test_name_invalid | |
- tests/mock_vws/test_update_target.py::TestTargetName::test_existing_target_name | |
- tests/mock_vws/test_update_target.py::TestTargetName::test_same_name_given | |
- tests/mock_vws/test_update_target.py::TestUnexpectedData | |
- tests/mock_vws/test_update_target.py::TestUpdate | |
- tests/mock_vws/test_update_target.py::TestWidth | |
- tests/mock_vws/test_update_target.py::TestInactiveProject | |
- tests/mock_vws/test_requests_mock_usage.py | |
- tests/mock_vws/test_flask_app_usage.py | |
- tests/mock_vws/test_docker.py | |
- README.rst | |
- docs/source/basic-example.rst | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
# See https://github.com/codecov/codecov-action/issues/190. | |
fetch-depth: 2 | |
- name: Install uv | |
uses: astral-sh/setup-uv@v3 | |
- name: Set secrets file | |
run: | | |
# See the "CI Setup" document for details of how this was set up. | |
ci/decrypt_secret.sh | |
tar xvf "${HOME}"/secrets/secrets.tar | |
cp ./ci_secrets/vuforia_secrets_${{ strategy.job-index }}.env ./vuforia_secrets.env | |
env: | |
CI_PATTERN: ${{ matrix.ci_pattern }} | |
ENCRYPTED_FILE: secrets.tar.gpg | |
LARGE_SECRET_PASSPHRASE: ${{ secrets.PASSPHRASE_FOR_VUFORIA_SECRETS }} | |
# We have seen issues with running out of disk space on test_docker | |
- name: Free Disk Space (Ubuntu) | |
uses: jlumbroso/free-disk-space@main | |
if: matrix.ci_pattern == 'tests/mock_vws/test_docker.py' | |
with: | |
# All of these default to true (meaning they are removed). | |
docker-images: false | |
large-packages: false | |
swap-storage: false | |
tool-cache: false | |
android: true | |
dotnet: true | |
haskell: true | |
- name: Run tests | |
run: | | |
uv run --extra=dev pytest \ | |
-s \ | |
-vvv \ | |
--showlocals \ | |
--exitfirst \ | |
--cov=src/ \ | |
--cov=tests/ \ | |
--cov-report=xml \ | |
${{ matrix.ci_pattern }} | |
env: | |
UV_PYTHON: ${{ matrix.python-version }} | |
- name: Show coverage file | |
run: | | |
# Sometimes we have been sure that we have 100% coverage, but codecov | |
# says otherwise. | |
# | |
# We show the coverage file here to help with debugging. | |
# https://github.com/VWS-Python/vws-python-mock/issues/708 | |
cat ./coverage.xml | |
# We run this job on every PR, on every merge to main, and nightly. | |
# This causes us to hit an issue with Codecov. | |
# | |
# We see "Too many uploads to this commit.". | |
# See https://community.codecov.io/t/too-many-uploads-to-this-commit/2574. | |
# | |
# To work around this, we do not upload coverage data on scheduled runs. | |
# We print the event name here to help with debugging. | |
- name: Show event name | |
run: | | |
echo ${{ github.event_name }} | |
- name: Upload coverage to Codecov | |
uses: codecov/codecov-action@v4 | |
with: | |
fail_ci_if_error: true | |
token: ${{ secrets.CODECOV_TOKEN }} | |
if: ${{ github.event_name == 'pull_request' || github.event_name == 'push' }} |