Skip to content

Commit

Permalink
Update configuration
Browse files Browse the repository at this point in the history
  • Loading branch information
mattwthompson committed Feb 13, 2024
1 parent 7741f0b commit 2ec1d29
Show file tree
Hide file tree
Showing 6 changed files with 13 additions and 100 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/CI.yml
Original file line number Diff line number Diff line change
Expand Up @@ -142,7 +142,7 @@ jobs:
PYTEST_ARGS+=" --ignore=openff/toolkit/_tests/test_examples.py"
PYTEST_ARGS+=" --ignore=openff/toolkit/_tests/test_links.py"
if [[ "$GITHUB_EVENT_NAME" == "schedule" ]]; then
PYTEST_ARGS+=" --runslow"
PYTEST_ARGS+=" -m 'slow or not slow'"
fi
python -m pytest $PYTEST_ARGS $COV
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/beta_rc.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,7 @@ jobs:
run: |
PYTEST_ARGS+=" --ignore=openff/toolkit/_tests/test_examples.py"
PYTEST_ARGS+=" --ignore=openff/toolkit/_tests/test_links.py"
PYTEST_ARGS+=" --runslow"
PYTEST_ARGS+=" -m 'slow or not slow'"
pytest $PYTEST_ARGS $COV
- name: Run code snippets in docs
Expand Down
9 changes: 6 additions & 3 deletions .github/workflows/conda.yml
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ jobs:
env:
OPENEYE: ${{ matrix.openeye }}
OE_LICENSE: ${{ github.workspace }}/oe_license.txt
PYTEST_ARGS: -r fE --tb=short -n logical
PYTEST_ARGS: -r fE --tb=short -n logical --durations=20

steps:
- name: Vanilla install from conda
Expand Down Expand Up @@ -87,12 +87,15 @@ jobs:
- name: Test the package
run: |
# Act like we're testing with this patch deployed ...
python -m pip install -e . utilities/test_plugins/
if [[ "$OPENEYE" == true ]]; then
python -c "import openff.toolkit; print(openff.toolkit.__file__)"
python -c "import openeye; print(openeye.oechem.OEChemIsLicensed())"
fi
PYTEST_ARGS+=" -x --trace-config"
PYTEST_ARGS+=" --ignore-glob='*_links.py'"
PYTEST_ARGS+=" --ignore-glob='*_examples.py'"
PYTEST_ARGS+=" --ignore-glob='*_nagl.py'"
Expand All @@ -101,4 +104,4 @@ jobs:
python -m pytest $PYTEST_ARGS \
--pyargs "openff.toolkit" \
$CONDA_PREFIX/lib/python3.11/site-packages/openff/toolkit/_tests/conftest.py
-m "slow or not slow"
94 changes: 0 additions & 94 deletions openff/toolkit/_tests/conftest.py
Original file line number Diff line number Diff line change
@@ -1,15 +1,9 @@
"""
Configuration file for pytest.
This adds the following command line options.
- runslow: Run tests marked as slow (default is False).
"""

import logging

import pytest

logger = logging.getLogger(__name__)

# Ensure QCPortal is imported before any OpenEye modules, see
Expand All @@ -20,16 +14,6 @@
pass


def pytest_configure(config):
"""
Initialization hook to register custom markers without a pytest.ini
More info: https://docs.pytest.org/en/latest/reference.html#initialization-hooks
"""
config.addinivalue_line(
"markers", "slow: marks tests as slow (deselect with `-m 'not slow'`)"
)


def untar_full_alkethoh_and_freesolv_set():
"""When running slow tests, we unpack the full AlkEthOH and FreeSolv test
sets in advance to speed things up.
Expand All @@ -48,81 +32,3 @@ def untar_full_alkethoh_and_freesolv_set():
tarfile_path = os.path.join(molecule_dir_path, tarfile_name)
with tarfile.open(tarfile_path, "r:gz") as tar:
tar.extractall(path=molecule_dir_path)


def pytest_addoption(parser):
"""Add the pytest command line option --runslow and --failwip.
If --runslow is not given, tests marked with pytest.mark.slow are
skipped.
If --failwip is not given, tests marked with pytest.mark.wip are
xfailed.
Parameters
----------
parser : argparsing.parser
The parser used by pytest to process arguments
Returns
-------
None
"""

# Loaded pytest plugins define their own arguments, and in certain cases
# our options use the same name. Although this can define two different
# behaviors for the same argument, the two options below are fairly
# unambiguous in their interpretation, so we skip any errors and allow
# the testing to proceed

try:
parser.addoption(
"--runslow", action="store_true", default=False, help="run slow tests"
)
except ValueError:
logger.warning(
"Option --runslow already added elsewhere (from a plugin possibly?). Skipping..."
)

try:
parser.addoption(
"--failwip",
action="store_true",
default=False,
help="fail work in progress tests",
)
except ValueError:
logger.warning(
"Option --failwip already added elsewhere (from a plugin possibly?). Skipping..."
)


def pytest_collection_modifyitems(config, items):
if config.getoption("runslow"):
# If --runslow is given, we don't have to mark items for skipping,
# but we need to extract the whole AlkEthOH and FreeSolv sets (see
# test_forcefield::test_alkethoh/freesolv_parameters_assignment).
untar_full_alkethoh_and_freesolv_set()
else:
# Mark for skipping all items marked as slow.
skip_slow = pytest.mark.skip(
reason="specify --runslow pytest option to run this test."
)
for item in items:
if "slow" in item.keywords:
item.add_marker(skip_slow)

# Mark work-in-progress tests for xfail.
if not config.getoption("failwip"):
xfail_wip_reason = (
"This is a work in progress test. Specify "
"--failwip pytest option to make this test fail."
)
for item in items:
if "wip" in item.keywords:
# Augment original reason.
reason = xfail_wip_reason + item.get_closest_marker("wip").kwargs.get(
"reason", ""
)
item.add_marker(pytest.mark.xfail(reason=reason))
2 changes: 1 addition & 1 deletion openff/toolkit/_tests/test_forcefield.py
Original file line number Diff line number Diff line change
Expand Up @@ -1347,7 +1347,7 @@ def test_parameterize_large_system(
force_field,
):
"""Test parameterizing a large system of several distinct molecules.
This test is very slow, so it is only run if the --runslow option is provided to pytest.
This test is very slow, so it is only run if the slow marker option is provided to pytest.
"""
box_file_path = get_data_file_path(
os.path.join("systems", "packmol_boxes", box)
Expand Down
4 changes: 4 additions & 0 deletions pytest.ini
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
[pytest]
markers =
slow: marks tests as slow (deselect with '-m "not slow"')
addopts = -m "not slow"

0 comments on commit 2ec1d29

Please sign in to comment.