Spaces:
Sleeping
Sleeping
File size: 2,118 Bytes
758e74a e1e5d77 758e74a 2128884 e1e5d77 a2fd8f3 e1e5d77 758e74a e1e5d77 758e74a 2128884 af2a12d 758e74a 8801268 758e74a 8801268 7d036ff 2128884 919b5fc 2128884 af2a12d 2128884 7d036ff af2a12d 2128884 af2a12d 2128884 8801268 a2fd8f3 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 |
"""Contains tests for creating and initializing custom Julia projects."""
import unittest
import os
from tempfile import TemporaryDirectory
from .. import julia_helpers
class TestJuliaProject(unittest.TestCase):
"""Various tests for working with Julia projects."""
def test_custom_shared_env(self):
"""Test that we can use PySR in a custom shared env."""
with TemporaryDirectory() as tmpdir:
# Create a temp depot to store julia packages (and our custom env)
Main = julia_helpers.init_julia()
# Set up env:
if "JULIA_DEPOT_PATH" not in os.environ:
old_env = None
os.environ["JULIA_DEPOT_PATH"] = tmpdir
else:
old_env = os.environ["JULIA_DEPOT_PATH"]
os.environ[
"JULIA_DEPOT_PATH"
] = f"{tmpdir}:{os.environ['JULIA_DEPOT_PATH']}"
Main.eval(
f'pushfirst!(DEPOT_PATH, "{julia_helpers._escape_filename(tmpdir)}")'
)
test_env_name = "@pysr_test_env"
julia_helpers.install(julia_project=test_env_name)
Main = julia_helpers.init_julia(julia_project=test_env_name)
# Try to use env:
Main.eval("using SymbolicRegression")
Main.eval("using Pkg")
# Assert we actually loaded it:
cur_project_dir = Main.eval("splitdir(dirname(Base.active_project()))[1]")
potential_shared_project_dirs = Main.eval("Pkg.envdir(DEPOT_PATH[1])")
self.assertEqual(cur_project_dir, potential_shared_project_dirs)
# Clean up:
Main.eval("pop!(DEPOT_PATH)")
if old_env is None:
del os.environ["JULIA_DEPOT_PATH"]
else:
os.environ["JULIA_DEPOT_PATH"] = old_env
def runtests():
"""Run all tests in test_env.py."""
loader = unittest.TestLoader()
suite = unittest.TestSuite()
suite.addTests(loader.loadTestsFromTestCase(TestJuliaProject))
runner = unittest.TextTestRunner()
return runner.run(suite)
|