name: Code Test on: push: branches: - main - dev/* - fix/* - test/* jobs: unittest: name: Code test runs-on: ${{ matrix.os }} if: "!contains(github.event.head_commit.message, 'ci skip')" strategy: fail-fast: false matrix: os: - 'ubuntu-20.04' - 'windows-2019' # need to be fixed, see: https://github.com/opendilab/treevalue/issues/41 - 'macos-12' python-version: - '3.7' - '3.8' - '3.9' - '3.10' - '3.11' steps: - name: Get system version for Linux if: ${{ runner.os == 'Linux' }} shell: bash run: | echo "OS_NAME=Linux" >> $GITHUB_ENV echo "IS_WIN=" >> $GITHUB_ENV echo "IS_MAC=" >> $GITHUB_ENV - name: Get system version for Windows if: ${{ runner.os == 'Windows' }} shell: bash run: | echo "OS_NAME=Windows" >> $GITHUB_ENV echo "IS_WIN=1" >> $GITHUB_ENV echo "IS_MAC=" >> $GITHUB_ENV - name: Get system version for MacOS if: ${{ runner.os == 'macOS' }} shell: bash run: | echo "OS_NAME=MacOS" >> $GITHUB_ENV echo "IS_WIN=" >> $GITHUB_ENV echo "IS_MAC=1" >> $GITHUB_ENV - name: Set environment for Cpython if: ${{ !contains(matrix.python-version, 'pypy') }} shell: bash run: | echo "IS_PYPY=" >> $GITHUB_ENV - name: Set environment for PyPy if: ${{ contains(matrix.python-version, 'pypy') }} shell: bash run: | echo "IS_PYPY=1" >> $GITHUB_ENV - name: Checkout code uses: actions/checkout@v3 with: fetch-depth: 20 - name: Set up system dependences on linux if: ${{ runner.os == 'Linux' }} shell: bash run: | sudo apt-get update sudo apt-get install -y tree cloc wget curl make graphviz dot -V - name: Set up system dependences on Windows if: ${{ env.OS_NAME == 'Windows' }} shell: bash run: | choco install tree cloc wget curl make zip graphviz dot -V - name: Set up system dependences on MacOS if: ${{ env.OS_NAME == 'MacOS' }} shell: bash run: | brew install tree cloc wget curl make zip graphviz dot -V - name: Set up python ${{ matrix.python-version }} uses: actions/setup-python@v4 with: python-version: ${{ matrix.python-version }} - name: Install PyPI dependencies shell: bash run: | python -m pip install --upgrade pip pip install --upgrade flake8 setuptools wheel twine pip install -r requirements.txt pip install -r requirements-build.txt pip install -r requirements-test.txt pip install -r requirements-test-extra.txt - name: Test the basic environment shell: bash run: | python -V pip --version pip list tree . cloc treevalue cloc test - name: Run unittest env: CI: 'true' LINETRACE: 1 shell: bash run: | make clean build unittest - name: Upload coverage to Codecov uses: codecov/codecov-action@v3 with: token: ${{ secrets.CODECOV_TOKEN }} file: ./coverage.xml flags: unittests name: codecov-umbrella fail_ci_if_error: false