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)