feat[lang]: allow downcasting of bytestrings #7392
Workflow file for this run
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: Run test suite | |
on: [push, pull_request] | |
concurrency: | |
# cancel older, in-progress jobs from the same PR, same workflow. | |
# use run_id if the job is triggered by a push to ensure | |
# push-triggered jobs to not get canceled. | |
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} | |
cancel-in-progress: true | |
jobs: | |
lint: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Set up Python 3.11 | |
uses: actions/setup-python@v5 | |
with: | |
python-version: "3.11" | |
cache: "pip" | |
- name: Install Dependencies | |
run: pip install .[lint] | |
- name: Run Black | |
run: black --check -C --force-exclude=vyper/version.py ./vyper ./tests ./setup.py | |
- name: Run flake8 | |
run: flake8 ./vyper ./tests ./setup.py | |
- name: Run isort | |
run: isort --check-only --diff ./vyper ./tests ./setup.py | |
- name: Run mypy | |
run: make mypy | |
docs: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Set up Python 3.11 | |
uses: actions/setup-python@v5 | |
with: | |
python-version: "3.11" | |
cache: "pip" | |
- name: Install Tox | |
run: pip install tox | |
- name: Run Tox | |
run: TOXENV=docs tox -r | |
# "Regular"/core tests. | |
tests: | |
runs-on: ubuntu-latest | |
strategy: | |
matrix: | |
python-version: [["3.11", "311"]] | |
# run in modes: --optimize [gas, none, codesize] | |
opt-mode: ["gas", "none", "codesize"] | |
debug: [true, false] | |
# run across other python versions.# we don't really need to run all | |
# modes across all python versions - one is enough | |
include: | |
- python-version: ["3.10", "310"] | |
opt-mode: gas | |
debug: false | |
name: py${{ matrix.python-version[1] }}-opt-${{ matrix.opt-mode }}${{ matrix.debug && '-debug' || '' }} | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
# need to fetch unshallow so that setuptools_scm can infer the version | |
fetch-depth: 0 | |
- name: Set up Python ${{ matrix.python-version[0] }} | |
uses: actions/setup-python@v5 | |
with: | |
python-version: ${{ matrix.python-version[0] }} | |
cache: "pip" | |
- name: Install Tox | |
run: pip install tox | |
- name: Run Tox | |
run: TOXENV=py${{ matrix.python-version[1] }} tox -r -- --optimize ${{ matrix.opt-mode }} ${{ matrix.debug && '--enable-compiler-debug-mode' || '' }} -r aR tests/ | |
- name: Upload Coverage | |
uses: codecov/codecov-action@v4 | |
with: | |
token: ${{ secrets.CODECOV_TOKEN }} | |
file: ./coverage.xml | |
core-tests-success: | |
if: always() | |
# summary result from test matrix. | |
# see https://github.community/t/status-check-for-a-matrix-jobs/127354/7 | |
runs-on: ubuntu-latest | |
needs: tests | |
steps: | |
- name: Check tests tests all succeeded | |
if: ${{ needs.tests.result != 'success' }} | |
run: exit 1 | |
# fuzzing + slow/exhaustive tests (things that are too slow to run in | |
# the regular test suite) | |
fuzzing: | |
runs-on: ubuntu-latest | |
strategy: | |
matrix: | |
group: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60] | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Set up Python 3.11 | |
uses: actions/setup-python@v5 | |
with: | |
python-version: "3.11" | |
cache: "pip" | |
- name: Install Tox | |
run: pip install tox | |
# fetch test durations | |
# NOTE: if the tests get poorly distributed, run this and commit the resulting `.test_durations` file to the `vyper-test-durations` repo. | |
# `TOXENV=fuzzing tox -r -- --store-durations -r aR tests/` | |
- name: Fetch test-durations | |
run: curl --location "https://raw.githubusercontent.com/vyperlang/vyper-test-durations/5982755ee8459f771f2e8622427c36494646e1dd/test_durations" -o .test_durations | |
- name: Run Tox | |
run: TOXENV=fuzzing tox -r -- --splits 60 --group ${{ matrix.group }} --splitting-algorithm least_duration -r aR tests/ | |
- name: Upload Coverage | |
uses: codecov/codecov-action@v4 | |
with: | |
token: ${{ secrets.CODECOV_TOKEN }} | |
file: ./coverage.xml | |
slow-tests-success: | |
if: always() | |
# summary result from test matrix. | |
# see https://github.community/t/status-check-for-a-matrix-jobs/127354/7 | |
runs-on: ubuntu-latest | |
needs: fuzzing | |
steps: | |
- name: Check slow tests all succeeded | |
if: ${{ needs.fuzzing.result != 'success' }} | |
run: exit 1 | |
memory: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
# need to fetch unshallow so that setuptools_scm can infer the version | |
fetch-depth: 0 | |
- name: Set up Python 3.11 | |
uses: actions/setup-python@v5 | |
with: | |
python-version: "3.11" | |
cache: "pip" | |
- name: Install Tox | |
run: pip install tox | |
- name: Run Tox | |
run: TOXENV=memory tox -r | |
- name: Upload Coverage | |
uses: codecov/codecov-action@v4 | |
with: | |
token: ${{ secrets.CODECOV_TOKEN }} | |
file: ./coverage.xml |