Spaces:
Running
Running
| """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) | |