Fix broken CI for package only PRs, make dateutil not strictly required (#24484)

* Force the Python interpreter with an env variable

This commit forces the Python interpreter with an
environment variable, to ensure that the Python set
by the "setup-python" action is the one being used.

Due to the policy adopted by Spack to prefer python3
over python we may end up picking a Python 3.X
interpreter where Python 2.7 was meant to be used.

* Revert "Update conftest.py (#24473)"

This reverts commit 477c8ce820.

* Make python-dateutil a soft dependency for unit tests

Before #23212 people could clone spack and run
```
spack unit-tests
```
while now this is not possible, since python-dateutil is
a required but not vendored dependency. This change makes
it not a hard requirement, i.e. it will be used if found
in the current interpreter.

* Workaround mypy complaint
This commit is contained in:
Massimiliano Culpo 2021-06-23 13:56:07 +02:00 committed by GitHub
parent 97f0c3ccd9
commit 1bccd866ae
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 9 additions and 6 deletions

View file

@ -156,6 +156,8 @@ jobs:
make -C ${KCOV_ROOT}/build && sudo make -C ${KCOV_ROOT}/build install make -C ${KCOV_ROOT}/build && sudo make -C ${KCOV_ROOT}/build install
- name: Bootstrap clingo from sources - name: Bootstrap clingo from sources
if: ${{ matrix.concretizer == 'clingo' }} if: ${{ matrix.concretizer == 'clingo' }}
env:
SPACK_PYTHON: python
run: | run: |
. share/spack/setup-env.sh . share/spack/setup-env.sh
spack external find --not-buildable cmake bison spack external find --not-buildable cmake bison
@ -163,6 +165,7 @@ jobs:
- name: Run unit tests (full suite with coverage) - name: Run unit tests (full suite with coverage)
if: ${{ needs.changes.outputs.with_coverage == 'true' }} if: ${{ needs.changes.outputs.with_coverage == 'true' }}
env: env:
SPACK_PYTHON: python
COVERAGE: true COVERAGE: true
SPACK_TEST_SOLVER: ${{ matrix.concretizer }} SPACK_TEST_SOLVER: ${{ matrix.concretizer }}
run: | run: |
@ -172,6 +175,7 @@ jobs:
- name: Run unit tests (reduced suite without coverage) - name: Run unit tests (reduced suite without coverage)
if: ${{ needs.changes.outputs.with_coverage == 'false' }} if: ${{ needs.changes.outputs.with_coverage == 'false' }}
env: env:
SPACK_PYTHON: python
ONLY_PACKAGES: true ONLY_PACKAGES: true
SPACK_TEST_SOLVER: ${{ matrix.concretizer }} SPACK_TEST_SOLVER: ${{ matrix.concretizer }}
run: | run: |

View file

@ -12,20 +12,19 @@
import os.path import os.path
import re import re
import shutil import shutil
import sys
import tempfile import tempfile
import xml.etree.ElementTree import xml.etree.ElementTree
if sys.version_info >= (3,): try:
# CVS outputs dates in different formats on different systems. We are using # CVS outputs dates in different formats on different systems. We are using
# the dateutil package to parse these dates. This package does not exist # the dateutil package to parse these dates. This package does not exist
# for Python 2.x. That means that we cannot test checkouts "by date" for # for Python <2.7. That means that we cannot test checkouts "by date" for
# CVS respositories. (We can still use CVS repos with all features, only # CVS respositories. (We can still use CVS repos with all features, only
# our tests break.) # our tests break.)
from dateutil.parser import parse as parse_date from dateutil.parser import parse as parse_date
else: except ImportError:
def parse_date(string): def parse_date(string): # type: ignore
pytest.skip("dateutil package not available for Python 2.6") pytest.skip("dateutil package not available")
import py import py
import pytest import pytest