2020-02-06 11:38:21 +01:00
|
|
|
name: GitHub Actions
|
2019-10-27 14:28:33 +01:00
|
|
|
on:
|
|
|
|
pull_request:
|
|
|
|
branches:
|
|
|
|
- master
|
2020-01-26 21:07:25 +01:00
|
|
|
push:
|
2022-08-17 18:24:50 +02:00
|
|
|
branches:
|
2020-01-26 21:07:25 +01:00
|
|
|
- master
|
2022-05-03 17:22:30 +02:00
|
|
|
schedule:
|
|
|
|
# Run monday and friday morning at 03:07 - odd time to spread load on GitHub Actions
|
|
|
|
- cron: '7 3 * * 1,5'
|
2019-10-27 14:28:33 +01:00
|
|
|
|
|
|
|
jobs:
|
|
|
|
pytest:
|
|
|
|
name: pytest
|
|
|
|
runs-on: ${{matrix.os}}
|
2022-08-17 18:24:50 +02:00
|
|
|
continue-on-error: ${{ matrix.experimental }}
|
2019-10-27 14:28:33 +01:00
|
|
|
strategy:
|
|
|
|
matrix:
|
2022-04-24 19:30:18 +02:00
|
|
|
python-version: ['3.7', '3.8', '3.9', '3.10']
|
2020-12-30 15:39:38 +01:00
|
|
|
os: [ubuntu-latest, windows-latest, macos-latest]
|
2022-08-17 18:24:50 +02:00
|
|
|
experimental: [false]
|
|
|
|
include:
|
2022-09-17 15:09:41 +02:00
|
|
|
- python-version: 3.11.0-rc.2
|
2022-08-17 18:24:50 +02:00
|
|
|
os: ubuntu-latest
|
|
|
|
experimental: true
|
2022-09-17 15:09:41 +02:00
|
|
|
- python-version: 3.11.0-rc.2
|
2022-08-17 18:24:50 +02:00
|
|
|
os: windows-latest
|
|
|
|
experimental: true
|
2022-09-17 15:09:41 +02:00
|
|
|
- python-version: 3.11.0-rc.2
|
2022-08-17 18:24:50 +02:00
|
|
|
os: macos-latest
|
|
|
|
experimental: true
|
2019-10-27 14:28:33 +01:00
|
|
|
fail-fast: False
|
|
|
|
steps:
|
2022-05-05 09:27:54 +02:00
|
|
|
- uses: actions/checkout@v3
|
2019-10-27 14:28:33 +01:00
|
|
|
- name: Set up Python ${{ matrix.python-version }}
|
2022-07-07 23:21:20 +02:00
|
|
|
uses: actions/setup-python@v4
|
2019-10-27 14:28:33 +01:00
|
|
|
with:
|
|
|
|
python-version: ${{ matrix.python-version }}
|
|
|
|
- name: Install dependencies
|
|
|
|
run: |
|
2019-11-09 19:33:51 +01:00
|
|
|
python -W ignore -m pip install --upgrade pip
|
|
|
|
python -W ignore -m pip install -U codecov pytest-cov
|
|
|
|
python -W ignore -m pip install -r requirements.txt
|
2022-08-26 06:50:03 +02:00
|
|
|
python -W ignore -m pip install -r requirements-opts.txt
|
2019-11-09 19:33:51 +01:00
|
|
|
python -W ignore -m pip install -r requirements-dev.txt
|
2019-10-27 14:28:33 +01:00
|
|
|
|
|
|
|
- name: Test with pytest
|
2022-08-26 06:50:03 +02:00
|
|
|
# We run 4 different suites here
|
2021-09-22 16:49:10 +02:00
|
|
|
# 1. Test just utils.datetime.py without pytz being installed
|
2021-02-13 22:07:37 +01:00
|
|
|
# 2. Test just test_no_passport.py without passport dependencies being installed
|
2022-08-26 06:50:03 +02:00
|
|
|
# 3. Test just test_rate_limiter.py without passport dependencies being installed
|
|
|
|
# 4. Test everything else
|
2021-02-19 19:07:48 +01:00
|
|
|
# The first & second one are achieved by mocking the corresponding import
|
|
|
|
# See test_helpers.py & test_no_passport.py for details
|
2019-10-27 14:28:33 +01:00
|
|
|
run: |
|
2021-02-19 19:07:48 +01:00
|
|
|
pytest -v --cov -k test_no_passport.py
|
2021-02-13 22:07:37 +01:00
|
|
|
no_passport_exit=$?
|
2022-08-26 06:50:03 +02:00
|
|
|
export TEST_PASSPORT='true'
|
2021-02-19 19:07:48 +01:00
|
|
|
pytest -v --cov --cov-append -k test_helpers.py
|
|
|
|
no_pytz_exit=$?
|
2022-08-26 06:50:03 +02:00
|
|
|
export TEST_PYTZ='true'
|
|
|
|
pip uninstall aiolimiter -y
|
|
|
|
pytest -v --cov --cov-append -k test_ratelimiter.py
|
|
|
|
no_rate_limiter_exit=$?
|
|
|
|
export TEST_RATE_LIMITER='true'
|
|
|
|
pip install -r requirements-opts.txt
|
2021-02-19 19:07:48 +01:00
|
|
|
pytest -v --cov --cov-append
|
|
|
|
full_exit=$?
|
|
|
|
special_exit=$(( no_pytz_exit > no_passport_exit ? no_pytz_exit : no_passport_exit ))
|
2022-08-26 06:50:03 +02:00
|
|
|
special_exit=$(( special_exit > no_rate_limiter_exit ? special_exit : no_rate_limiter_exit ))
|
2021-02-19 19:07:48 +01:00
|
|
|
global_exit=$(( special_exit > full_exit ? special_exit : full_exit ))
|
2019-10-27 14:28:33 +01:00
|
|
|
exit ${global_exit}
|
|
|
|
env:
|
|
|
|
JOB_INDEX: ${{ strategy.job-index }}
|
2020-05-01 20:29:18 +02:00
|
|
|
BOTS: W3sidG9rZW4iOiAiNjk2MTg4NzMyOkFBR1Z3RUtmSEhsTmpzY3hFRE5LQXdraEdzdFpfa28xbUMwIiwgInBheW1lbnRfcHJvdmlkZXJfdG9rZW4iOiAiMjg0Njg1MDYzOlRFU1Q6WldGaU1UUmxNbVF5TnpNeSIsICJib3RfbmFtZSI6ICJQVEIgdGVzdHMgb24gVHJhdmlzIHVzaW5nIENQeXRob24gMi43IiwgInN1cGVyX2dyb3VwX2lkIjogIi0xMDAxMzkwOTgzOTk3IiwgImJvdF91c2VybmFtZSI6ICJAcHRiX3RyYXZpc19jcHl0aG9uXzI3X2JvdCJ9LCB7InRva2VuIjogIjY3MTQ2ODg4NjpBQUdQR2ZjaVJJQlVORmU4MjR1SVZkcTdKZTNfWW5BVE5HdyIsICJwYXltZW50X3Byb3ZpZGVyX3Rva2VuIjogIjI4NDY4NTA2MzpURVNUOlpHWXdPVGxrTXpNeE4yWTIiLCAiYm90X25hbWUiOiAiUFRCIHRlc3RzIG9uIFRyYXZpcyB1c2luZyBDUHl0aG9uIDMuNCIsICJzdXBlcl9ncm91cF9pZCI6ICItMTAwMTQ0NjAyMjUyMiIsICJib3RfdXNlcm5hbWUiOiAiQHB0Yl90cmF2aXNfY3B5dGhvbl8zNF9ib3QifSwgeyJ0b2tlbiI6ICI2MjkzMjY1Mzg6QUFGUnJaSnJCN29CM211ekdzR0pYVXZHRTVDUXpNNUNVNG8iLCAicGF5bWVudF9wcm92aWRlcl90b2tlbiI6ICIyODQ2ODUwNjM6VEVTVDpNbU01WVdKaFl6a3hNMlUxIiwgImJvdF9uYW1lIjogIlBUQiB0ZXN0cyBvbiBUcmF2aXMgdXNpbmcgQ1B5dGhvbiAzLjUiLCAic3VwZXJfZ3JvdXBfaWQiOiAiLTEwMDE0OTY5MTc3NTAiLCAiYm90X3VzZXJuYW1lIjogIkBwdGJfdHJhdmlzX2NweXRob25fMzVfYm90In0sIHsidG9rZW4iOiAiNjQwMjA4OTQzOkFBRmhCalFwOXFtM1JUeFN6VXBZekJRakNsZS1Kano1aGNrIiwgInBheW1lbnRfcHJvdmlkZXJfdG9rZW4iOiAiMjg0Njg1MDYzOlRFU1Q6WXpoa1pUZzFOamMxWXpWbCIsICJib3RfbmFtZSI6ICJQVEIgdGVzdHMgb24gVHJhdmlzIHVzaW5nIENQeXRob24gMy42IiwgInN1cGVyX2dyb3VwX2lkIjogIi0xMDAxMzMzODcxNDYxIiwgImJvdF91c2VybmFtZSI6ICJAcHRiX3RyYXZpc19jcHl0aG9uXzM2X2JvdCJ9LCB7InRva2VuIjogIjY5NTEwNDA4ODpBQUhmenlsSU9qU0lJUy1lT25JMjB5MkUyMEhvZEhzZnotMCIsICJwYXltZW50X3Byb3ZpZGVyX3Rva2VuIjogIjI4NDY4NTA2MzpURVNUOk9HUTFNRGd3WmpJd1pqRmwiLCAiYm90X25hbWUiOiAiUFRCIHRlc3RzIG9uIFRyYXZpcyB1c2luZyBDUHl0aG9uIDMuNyIsICJzdXBlcl9ncm91cF9pZCI6ICItMTAwMTQ3ODI5MzcxNCIsICJib3RfdXNlcm5hbWUiOiAiQHB0Yl90cmF2aXNfY3B5dGhvbl8zN19ib3QifSwgeyJ0b2tlbiI6ICI2OTE0MjM1NTQ6QUFGOFdrakNaYm5IcVBfaTZHaFRZaXJGRWxackdhWU9oWDAiLCAicGF5bWVudF9wcm92aWRlcl90b2tlbiI6ICIyODQ2ODUwNjM6VEVTVDpZamM1TlRoaU1tUXlNV1ZoIiwgImJvdF9uYW1lIjogIlBUQiB0ZXN0cyBvbiBUcmF2aXMgdXNpbmcgUHlQeSAyLjciLCAic3VwZXJfZ3JvdXBfaWQiOiAiLTEwMDEzNjM5MzI1NzMiLCAiYm90X3VzZXJuYW1lIjogIkBwdGJfdHJhdmlzX3B5cHlfMjdfYm90In0sIHsidG9rZW4iOiAiNjg0MzM5OTg0OkFBRk1nRUVqcDAxcjVyQjAwN3lDZFZOc2c4QWxOc2FVLWNjIiwgInBheW1lbnRfcHJvdmlkZXJfdG9rZW4iOiAiMjg0Njg1MDYzOlRFU1Q6TVRBek1UWTNNR1V5TmpnMCIsICJib3RfbmFtZSI6ICJQVEIgdGVzdHMgb24gVHJhdmlzIHVzaW5nIFB5UHkgMy41IiwgInN1cGVyX2dyb3VwX2lkIjogIi0xMDAxNDA3ODM2NjA1IiwgImJvdF91c2VybmFtZSI6ICJAcHRiX3RyYXZpc19weXB5XzM1X2JvdCJ9LCB7InRva2VuIjogIjY5MDA5MTM0NzpBQUZMbVI1cEFCNVljcGVfbU9oN3pNNEpGQk9oMHozVDBUbyIsICJwYXltZW50X3Byb3ZpZGVyX3Rva2VuIjogIjI4NDY4NTA2MzpURVNUOlpEaGxOekU1TURrd1lXSmkiLCAiYm90X25hbWUiOiAiUFRCIHRlc3RzIG9uIEFwcFZleW9yIHVzaW5nIENQeXRob24gMy40IiwgInN1cGVyX2dyb3VwX2lkIjogIi0xMDAxMjc5NjAwMDI2IiwgImJvdF91c2VybmFtZSI6ICJAcHRiX2FwcHZleW9yX2NweXRob25fMzRfYm90In0sIHsidG9rZW4iOiAiNjk0MzA4MDUyOkFBRUIyX3NvbkNrNTVMWTlCRzlBTy1IOGp4aVBTNTVvb0JBIiwgInBheW1lbnRfcHJvdmlkZXJfdG9rZW4iOiAiMjg0Njg1MDYzOlRFU1Q6WW1aaVlXWm1NakpoWkdNeSIsICJib3RfbmFtZSI6ICJQVEIgdGVzdHMgb24gQXBwVmV5b3IgdXNpbmcgQ1B5dGhvbiAyLjciLCAic3VwZXJfZ3JvdXBfaWQiOiAiLTEwMDEyOTMwNzkxNjUiLCAiYm90X3VzZXJuYW1lIjogIkBwdGJfYXBwdmV5b3JfY3B5dGhvbl8yN19ib3QifSwgeyJ0b2tlbiI6ICIxMDU1Mzk3NDcxOkFBRzE4bkJfUzJXQXd1SjNnN29oS0JWZ1hYY2VNbklPeVNjIiwgInBheW1lbnRfcHJvdmlkZXJfdG9rZW4iOiAiMjg0Njg1MDYzOlRFU1Q6TmpBd056QXpZalZpTkdOayIsICJuYW1lIjogIlBUQiB0ZXN0cyBbMF0iLCAic3VwZXJfZ3JvdXBfaWQiOiAiLTEwMDExODU1MDk2MzYiLCAidXNlcm5hbWUiOiAicHRiXzBfYm90In0sIHsidG9rZW4iOiAiMTA0NzMyNjc3MTpBQUY4bk90ODFGcFg4bGJidno4VWV3UVF2UmZUYkZmQnZ1SSIsICJwYXltZW50X3Byb3ZpZGVyX3Rva2VuIjogIjI4NDY4NTA2MzpURVNUOllUVTFOVEk0WkdSallqbGkiLCAibmFtZSI6ICJQVEIgdGVzdHMgWzFdIiwgInN1cGVyX2dyb3VwX2lkIjogIi0xMDAxNDg0Nzk3NjEyIiwgInVzZXJuYW1lIjogInB0Yl8xX2JvdCJ9LCB7InRva2VuIjogIjk3MTk5Mjc0NTpBQUdPa09hVzBOSGpnSXY1LTlqUWJPajR2R3FkaFNGLVV1cyIsICJwYXltZW50X3Byb3ZpZGVyX3Rva2VuIjogIjI4NDY4NTA2MzpURVNUOk5XWmtNV1ZoWWpsallqVTUiLCAibmFtZSI6ICJQVEIgdGVzdHMgWzJdIiwgInN1cGVyX2dyb3VwX2lkIjogIi0xMDAxNDAyMjU1MDcwIiwgInVzZXJuYW1lIjogInB0Yl8yX2JvdCJ9XQ==
|
2022-08-26 06:50:03 +02:00
|
|
|
TEST_PYTZ : "false"
|
|
|
|
TEST_PASSPORT: "false"
|
|
|
|
TEST_RATE_LIMITER: "false"
|
2021-02-19 19:07:48 +01:00
|
|
|
TEST_BUILD: "true"
|
2019-10-27 14:28:33 +01:00
|
|
|
shell: bash --noprofile --norc {0}
|
|
|
|
|
|
|
|
- name: Submit coverage
|
2022-05-05 09:27:54 +02:00
|
|
|
uses: codecov/codecov-action@v3
|
2020-10-10 10:50:19 +02:00
|
|
|
with:
|
|
|
|
env_vars: OS,PYTHON
|
|
|
|
name: ${{ matrix.os }}-${{ matrix.python-version }}
|
|
|
|
fail_ci_if_error: true
|
2019-11-09 21:38:23 +01:00
|
|
|
test_official:
|
|
|
|
name: test-official
|
|
|
|
runs-on: ${{matrix.os}}
|
|
|
|
strategy:
|
|
|
|
matrix:
|
|
|
|
python-version: [3.7]
|
|
|
|
os: [ubuntu-latest]
|
|
|
|
fail-fast: False
|
|
|
|
steps:
|
2022-05-05 09:27:54 +02:00
|
|
|
- uses: actions/checkout@v3
|
2019-11-09 21:38:23 +01:00
|
|
|
- name: Set up Python ${{ matrix.python-version }}
|
2022-07-07 23:21:20 +02:00
|
|
|
uses: actions/setup-python@v4
|
2019-11-09 21:38:23 +01:00
|
|
|
with:
|
|
|
|
python-version: ${{ matrix.python-version }}
|
|
|
|
- name: Install dependencies
|
|
|
|
run: |
|
|
|
|
python -W ignore -m pip install --upgrade pip
|
|
|
|
python -W ignore -m pip install -r requirements.txt
|
2022-08-26 06:50:03 +02:00
|
|
|
python -W ignore -m pip install -r requirements-opts.txt
|
2019-11-09 21:38:23 +01:00
|
|
|
python -W ignore -m pip install -r requirements-dev.txt
|
|
|
|
- name: Compare to official api
|
|
|
|
run: |
|
|
|
|
pytest -v tests/test_official.py
|
|
|
|
exit $?
|
|
|
|
env:
|
|
|
|
TEST_OFFICIAL: "true"
|
|
|
|
shell: bash --noprofile --norc {0}
|