diff --git a/tests/conftest.py b/tests/conftest.py index 3f770c9..1467103 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -8,6 +8,8 @@ def pytest_addoption(parser): parser.addoption("--extension", action="store_true", help="Connect to Zemax OpticStudio as extension") + parser.addoption("--legacy-connection-setup", action="store_true", help="Use legacy method to setup connection") + parser.addoption("--output-directory", type=Path) @@ -22,6 +24,11 @@ def connection_mode(request): return "extension" if request.config.getoption("--extension") else "standalone" +@pytest.fixture(scope="session") +def legacy_connection_setup(request): + return request.config.getoption("--legacy-connection-setup") + + @pytest.fixture(scope="session") def system_save_file(request): output_directory = request.config.getoption("--output-directory") @@ -34,14 +41,17 @@ def system_save_file(request): @pytest.fixture(scope="session") -def zos() -> zp.ZOS: - zos = zp.ZOS() +def zos(legacy_connection_setup) -> zp.ZOS: + if not legacy_connection_setup: + zos = zp.ZOS() + else: + zos = zp.ZOS() + zos.wakeup() return zos -@pytest.fixture -def oss(zos: zp.ZOS, connection_mode) -> zp.zpcore.OpticStudioSystem: +def _oss(zos: zp.ZOS, connection_mode) -> zp.zpcore.OpticStudioSystem: if connection_mode == "extension": oss = zos.connect_as_extension(return_primary_system=True) else: @@ -54,8 +64,7 @@ def oss(zos: zp.ZOS, connection_mode) -> zp.zpcore.OpticStudioSystem: zos.Application.CloseApplication() -@pytest.fixture -def oss_legacy(zos: zp.ZOS, connection_mode) -> zp.zpcore.OpticStudioSystem: +def _oss_legacy(zos: zp.ZOS, connection_mode) -> zp.zpcore.OpticStudioSystem: if connection_mode == "extension": connected = zos.connect_as_extension() else: @@ -70,6 +79,14 @@ def oss_legacy(zos: zp.ZOS, connection_mode) -> zp.zpcore.OpticStudioSystem: zos.Application.CloseApplication() +@pytest.fixture +def oss(zos: zp.ZOS, connection_mode, legacy_connection_setup) -> zp.zpcore.OpticStudioSystem: + if not legacy_connection_setup: + yield from _oss(zos=zos, connection_mode=connection_mode) + else: + yield from _oss_legacy(zos=zos, connection_mode=connection_mode) + + @pytest.fixture(scope="session") def optic_studio_version(zos, connection_mode) -> str: if connection_mode == "extension": diff --git a/tests/test_zpcore.py b/tests/test_zpcore.py index 9f89da6..707f5b1 100644 --- a/tests/test_zpcore.py +++ b/tests/test_zpcore.py @@ -2,12 +2,7 @@ @pytest.mark.must_pass -@pytest.mark.parametrize( - "oss_fixture", - ["oss_legacy", "oss"], -) -def test_can_connect(oss_fixture, request): - oss = request.getfixturevalue(oss_fixture) +def test_can_connect(oss): assert oss._System is not None diff --git a/tox.ini b/tox.ini index 9e4b08c..fab8cde 100644 --- a/tox.ini +++ b/tox.ini @@ -11,8 +11,11 @@ labels = env_list = format lint + py39-standalone-legacy-zpcoreonly py39-standalone + py310-standalone-legacy-zpcoreonly py310-standalone + py311-standalone-legacy-zpcoreonly py311-standalone [testenv] @@ -22,6 +25,11 @@ deps = [test] description = run unit tests on specific Python versions in extension mode commands = pytest tests --extension {posargs} +[testenv:py3{8,9,10,11}-standalone-legacy-zpcoreonly] +description = run unit tests on specific Python versions in standalone mode with a legacy connection +passenv = * +commands = pytest tests/test_zpcore.py --legacy-connection-setup {posargs} + [testenv:py3{8,9,10,11}-standalone] description = run unit tests on specific Python versions in standalone mode passenv = *