Skip to content

Commit b29fd35

Browse files
committed
Added fallback in cases where Poetry does not properly detect the Nox environment
1 parent 9f9080f commit b29fd35

File tree

1 file changed

+24
-5
lines changed

1 file changed

+24
-5
lines changed

noxfile.py

Lines changed: 24 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -205,11 +205,30 @@ def tests(session: Session) -> None:
205205
session.warn(install_warning)
206206

207207
# finally, install the dependencies, optional dependencies and the package itself
208-
try:
209-
session.run_always("poetry", "install", "--with", "test", *extras_args, external=True, silent=False)
210-
except Exception as error:
211-
session.warn(install_warning)
212-
raise error
208+
poetry_env = Path(session.run_always("poetry", "env", "info", "--executable", silent=not verbose, external=True).splitlines()[-1].strip()).resolve()
209+
session_env = Path(session.bin, "python/").resolve()
210+
assert poetry_env.exists(), f"{poetry_env=} does not exist"
211+
assert session_env.exists(), f"{session_env=} does not exist"
212+
# if the poetry virtualenv is not set to the session env, use requirements file export instead of Poetry install
213+
if poetry_env != session_env:
214+
session.warn(f"Poetry env ({str(poetry_env)}) is not session env ({str(session_env)}), falling back to install via requirements export")
215+
requirements_file = Path(f"tmp_test_requirements_{session.name}.txt")
216+
if requirements_file.exists():
217+
requirements_file.unlink()
218+
if verbose:
219+
print(session.run_always('conda', 'list'))
220+
session.run_always('poetry', 'export', '-f', 'requirements.txt', '-o', requirements_file.name, '--with=test', '--without-hashes', *extras_args, external=True, silent=not verbose)
221+
session.install('-r', requirements_file.name)
222+
session.install('.')
223+
requirements_file.unlink()
224+
if verbose:
225+
print(session.run_always('conda', 'list'))
226+
else:
227+
try:
228+
session.run_always("poetry", "install", "--with", "test", *extras_args, external=True, silent=False)
229+
except Exception as error:
230+
session.warn(install_warning)
231+
raise error
213232

214233
# if applicable, install the dependencies for additional tests
215234
if install_additional_tests and install_cuda:

0 commit comments

Comments
 (0)