diff --git a/.coveragerc b/.coveragerc index efabe6815..7b023d673 100644 --- a/.coveragerc +++ b/.coveragerc @@ -1,8 +1,4 @@ [run] -parallel = 1 -concurrency = - multiprocessing - thread source = orangecontrib.spectroscopy omit = diff --git a/.github/workflows/linux_workflow.yml b/.github/workflows/linux_workflow.yml deleted file mode 100644 index b4a371f9a..000000000 --- a/.github/workflows/linux_workflow.yml +++ /dev/null @@ -1,42 +0,0 @@ -name: Linux workflow - -on: - # Trigger the workflow on push or pull request, but only for the master branch - push: - branches: - - master - pull_request: - branches: - - master - -jobs: - build: - runs-on: ${{ matrix.os }} - timeout-minutes: 30 - strategy: - fail-fast: False - matrix: - python: [3.6, 3.7, 3.8] - os: [ubuntu-18.04] - - steps: - - uses: actions/checkout@v2 - - name: Setup Python - uses: actions/setup-python@v1 - with: - python-version: ${{ matrix.python }} - - - name: Install linux system dependencies - run: sudo apt-get install -y libxkbcommon-x11-0 - - - name: Install Tox - run: pip install tox - - - name: Run Tox - run: xvfb-run -a -s "-screen 0 1280x1024x24" tox -e coverage - - - name: Upload code coverage - if: matrix.python == '3.7' - run: | - pip install codecov - codecov diff --git a/.github/workflows/macos_workflow.yml b/.github/workflows/macos_workflow.yml deleted file mode 100644 index 4b8fcf294..000000000 --- a/.github/workflows/macos_workflow.yml +++ /dev/null @@ -1,33 +0,0 @@ -name: macOS workflow - -on: - # Trigger the workflow on push or pull request, but only for the master branch - push: - branches: - - master - pull_request: - branches: - - master - -jobs: - build: - runs-on: ${{ matrix.os }} - timeout-minutes: 30 - strategy: - fail-fast: False - matrix: - python: [3.6, 3.7, 3.8] - os: [macos-10.15] - - steps: - - uses: actions/checkout@v2 - - name: Setup Python - uses: actions/setup-python@v1 - with: - python-version: ${{ matrix.python }} - - - name: Install Tox - run: pip install tox - - - name: Run Tox - run: tox -e py \ No newline at end of file diff --git a/.github/workflows/miscellaneous_workflow.yml b/.github/workflows/miscellaneous_workflow.yml deleted file mode 100644 index 73afb6dbc..000000000 --- a/.github/workflows/miscellaneous_workflow.yml +++ /dev/null @@ -1,35 +0,0 @@ -name: Miscellaneous workflow - -on: - # Trigger the workflow on push or pull request, but only for the master branch - push: - branches: - - master - pull_request: - branches: - - master - -jobs: - test_future_compatibility: - runs-on: ${{ matrix.os }} - timeout-minutes: 30 - strategy: - fail-fast: False - matrix: - python: [3.7] - os: [ubuntu-18.04] - steps: - - uses: actions/checkout@v2 - - name: Setup Python - uses: actions/setup-python@v1 - with: - python-version: ${{ matrix.python }} - - - name: Install linux system dependencies - run: sudo apt-get install -y libxkbcommon-x11-0 - - - name: Install Tox - run: pip install tox - - - name: Run Tox - run: xvfb-run -a -s "-screen 0 1280x1024x24" tox -e future diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml new file mode 100644 index 000000000..eef0bd282 --- /dev/null +++ b/.github/workflows/test.yml @@ -0,0 +1,75 @@ +name: Test + +on: + push: + branches: + - master + pull_request: + branches: + - master + +jobs: + build: + runs-on: ${{ matrix.os }} + continue-on-error: ${{ matrix.experimental }} + timeout-minutes: 15 + strategy: + fail-fast: false + matrix: + os: [ubuntu-latest, macOS-latest, windows-latest] + python-version: [3.7, 3.8] + tox_env: [py-orange-released] + experimental: [false] + include: + - os: windows-latest + python-version: 3.7 + tox_env: py-orange-oldest + experimental: false + - os: macOS-latest + python-version: 3.7 + tox_env: py-orange-oldest + experimental: false + - os: ubuntu-latest + python-version: 3.7 + tox_env: py-orange-oldest + experimental: false + + - os: windows-latest + python-version: 3.8 + tox_env: py-orange-latest + experimental: false + - os: macOS-latest + python-version: 3.8 + tox_env: py-orange-latest + experimental: false + - os: ubuntu-latest + python-version: 3.8 + tox_env: py-orange-latest + experimental: false + + steps: + - uses: actions/checkout@v2 + - name: Set up Python ${{ matrix.python-version }} + uses: actions/setup-python@v2 + with: + python-version: ${{ matrix.python-version }} + + - name: Install dependencies + run: | + python -m pip install --upgrade pip + python -m pip install --upgrade tox tox-pip-version + + - name: Test with Tox + run: | + tox -e ${{ matrix.tox_env }} + env: + QT_QPA_PLATFORM: offscreen + + - name: Upload code coverage + if: | + matrix.python-version == '3.8' && + matrix.os == 'ubuntu-latest' && + matrix.tox_env == 'py-orange-released' + run: | + pip install codecov + codecov diff --git a/.github/workflows/windows_workflow.yml b/.github/workflows/windows_workflow.yml deleted file mode 100644 index be107159b..000000000 --- a/.github/workflows/windows_workflow.yml +++ /dev/null @@ -1,32 +0,0 @@ -name: Windows workflow - -on: - push: - branches: - - master - pull_request: - branches: - - master - -jobs: - build: - runs-on: ${{ matrix.os }} - timeout-minutes: 30 - strategy: - fail-fast: False - matrix: - python: [3.6, 3.7] - os: [windows-2016] - - steps: - - uses: actions/checkout@v2 - - name: Setup Python - uses: actions/setup-python@v1 - with: - python-version: ${{ matrix.python }} - - - name: Install Tox - run: pip install tox - - - name: Run Tox - run: tox -e py diff --git a/setup.py b/setup.py index d4c75189d..f43f4c56b 100644 --- a/setup.py +++ b/setup.py @@ -137,6 +137,9 @@ def include_documentation(local_dir, install_dir): 'pillow', 'lmfit', ], + extras_require={ + 'test': ['coverage'] + }, entry_points=ENTRY_POINTS, keywords=KEYWORDS, namespace_packages=['orangecontrib'], diff --git a/tox.ini b/tox.ini index 376ce7c6e..0fbe2a5b7 100644 --- a/tox.ini +++ b/tox.ini @@ -1,14 +1,13 @@ [tox] envlist = - py{36,37,38}-orange{325,Release} - future - coverage + py{37,38}-orange-{oldest, latest, released} pylint-ci skip_missing_interpreters = true isolated_build = true -minversion = 3.6.0 [testenv] +# must use latest pip (version 20.3.1 enables Big Sur support - https://github.com/pypa/pip/issues/9138) +pip_version = pip extras = test passenv = * # we MUST changedir to avoid installed being shadowed by working dir @@ -22,42 +21,30 @@ setenv = # Need this otherwise unittest installs a warning filter that overrides # our desire to have OrangeDeprecationWarnings raised PYTHONWARNINGS=module + # set coverage output and project config + COVERAGE_FILE = {toxinidir}/.coverage + COVERAGE_RCFILE = {toxinidir}/.coveragerc deps = pyqt5==5.12.* pyqtwebengine==5.12.* - orange325: orange3==3.25.0 - orange325: orange-canvas-core==0.1.9 - orange325: orange-widget-base==4.5.0 - orange325: scikit-learn~=0.22.0 - orangeRelease: orange3 + oldest: orange3==3.25.0 + # use newer canvas-core and widget-base to avoid segfaults on windows + oldest: orange-canvas-core==0.1.9 ; sys_platform != 'win32' + oldest: orange-canvas-core==0.1.15 ; sys_platform == 'win32' + oldest: orange-widget-base==4.5.0 ; sys_platform != 'win32' + oldest: orange-widget-base==4.9.0 ; sys_platform == 'win32' + oldest: scikit-learn~=0.22.0 + latest: git+git://github.com/biolab/orange3.git#egg=orange3 + latest: git+git://github.com/biolab/orange-canvas-core.git#egg=orange-canvas-core + latest: git+git://github.com/biolab/orange-widget-base.git#egg=orange-widget-base opusFC - commands_pre = # Verify installed packages have compatible dependencies pip check # freeze environment pip freeze -commands = - python -m unittest orangecontrib.spectroscopy.tests - -[testenv:future] -deps = - {[testenv]deps} - git+git://github.com/biolab/orange3.git#egg=orange3 - git+git://github.com/biolab/orange-canvas-core.git#egg=orange-canvas-core - git+git://github.com/biolab/orange-widget-base.git#egg=orange-widget-base - -[testenv:coverage] -setenv = - {[testenv]setenv} - COVERAGE_FILE = {toxinidir}/.coverage - COVERAGE_RCFILE = {toxinidir}/.coveragerc -deps = - {[testenv]deps} - coverage commands = coverage run -m unittest orangecontrib.spectroscopy.tests - coverage combine coverage report [testenv:pylint-ci]