1
- # flake8: noqa
2
- # This file contains tests that ensure build environment is properly initialized in
3
- # both in-tree and out-of-tree builds.
4
-
5
1
import os
6
2
7
3
import pytest
8
4
9
- from conftest import ROOT_PATH
10
5
from pyodide_build import build_env , common
11
- from pyodide_build .xbuildenv import CrossBuildEnvManager
12
6
from pyodide_build .config import BUILD_KEY_TO_VAR
13
-
14
- from .fixture import reset_cache , reset_env_vars , dummy_xbuildenv , dummy_xbuildenv_url
7
+ from pyodide_build .xbuildenv import CrossBuildEnvManager
15
8
16
9
17
10
class TestInTree :
18
- def test_init_environment (self , reset_env_vars , reset_cache ):
19
- assert "PYODIDE_ROOT" not in os .environ
20
-
21
- build_env .init_environment ()
22
-
23
- assert "PYODIDE_ROOT" in os .environ
24
- assert os .environ ["PYODIDE_ROOT" ] == str (ROOT_PATH )
25
-
26
- def test_init_environment_pyodide_root_already_set (
27
- self , reset_env_vars , reset_cache
28
- ):
29
- assert "PYODIDE_ROOT" not in os .environ
30
- os .environ ["PYODIDE_ROOT" ] = "/set_by_user"
31
-
32
- build_env .init_environment ()
33
-
34
- assert os .environ ["PYODIDE_ROOT" ] == "/set_by_user"
35
-
36
- def test_get_pyodide_root (self , reset_env_vars , reset_cache ):
37
- assert "PYODIDE_ROOT" not in os .environ
38
-
39
- assert build_env .get_pyodide_root () == ROOT_PATH
40
-
41
- def test_get_pyodide_root_pyodide_root_already_set (
42
- self , reset_env_vars , reset_cache
43
- ):
44
- assert "PYODIDE_ROOT" not in os .environ
45
- os .environ ["PYODIDE_ROOT" ] = "/set_by_user"
46
-
47
- assert str (build_env .get_pyodide_root ()) == "/set_by_user"
48
-
49
11
def test_search_pyodide_root (self , tmp_path , reset_env_vars , reset_cache ):
50
12
pyproject_file = tmp_path / "pyproject.toml"
51
13
pyproject_file .write_text ("[tool._pyodide]" )
@@ -56,66 +18,6 @@ def test_search_pyodide_root(self, tmp_path, reset_env_vars, reset_cache):
56
18
pyproject_file .unlink ()
57
19
assert build_env .search_pyodide_root (tmp_path ) is None
58
20
59
- def test_in_xbuildenv (self , reset_env_vars , reset_cache ):
60
- assert not build_env .in_xbuildenv ()
61
-
62
- def test_get_build_environment_vars (self , reset_env_vars , reset_cache ):
63
- build_vars = build_env .get_build_environment_vars (ROOT_PATH )
64
-
65
- # extra variables that does not come from config files.
66
- extra_vars = set (["PYODIDE" , "PYODIDE_PACKAGE_ABI" , "PYTHONPATH" ])
67
- all_keys = set (BUILD_KEY_TO_VAR .values ()) | extra_vars
68
- for var in build_vars :
69
- assert var in all_keys , f"Unknown { var } "
70
-
71
- # Additionally we set these variables
72
- for var in extra_vars :
73
- assert var in build_vars , f"Missing { var } "
74
-
75
- def test_get_build_flag (self , reset_env_vars , reset_cache ):
76
- for key , val in build_env .get_build_environment_vars (
77
- pyodide_root = ROOT_PATH
78
- ).items ():
79
- assert build_env .get_build_flag (key ) == val
80
-
81
- with pytest .raises (ValueError ):
82
- build_env .get_build_flag ("UNKNOWN_VAR" )
83
-
84
- def test_get_build_environment_vars_host_env (
85
- self , monkeypatch , reset_env_vars , reset_cache
86
- ):
87
- # host environment variables should have precedence over
88
- # variables defined in Makefile.envs
89
-
90
- import os
91
-
92
- e = build_env .get_build_environment_vars (ROOT_PATH )
93
- assert e ["PYODIDE" ] == "1"
94
-
95
- monkeypatch .setenv ("HOME" , "/home/user" )
96
- monkeypatch .setenv ("PATH" , "/usr/bin:/bin" )
97
- # We now inject PKG_CONFIG_LIBDIR inside buildpkg.py
98
- # monkeypatch.setenv("PKG_CONFIG_LIBDIR", "/x/y/z:/c/d/e")
99
-
100
- build_env .get_build_environment_vars .cache_clear ()
101
-
102
- e_host = build_env .get_build_environment_vars (ROOT_PATH )
103
- assert e_host .get ("HOME" ) == os .environ .get ("HOME" )
104
- assert e_host .get ("PATH" ) == os .environ .get ("PATH" )
105
-
106
- assert e_host .get ("HOME" ) != e .get ("HOME" )
107
- assert e_host .get ("PATH" ) != e .get ("PATH" )
108
-
109
- build_env .get_build_environment_vars .cache_clear ()
110
-
111
- monkeypatch .delenv ("HOME" )
112
- monkeypatch .setenv ("RANDOM_ENV" , "1234" )
113
-
114
- build_env .get_build_environment_vars .cache_clear ()
115
- e = build_env .get_build_environment_vars (ROOT_PATH )
116
- assert "HOME" not in e
117
- assert "RANDOM_ENV" not in e
118
-
119
21
120
22
class TestOutOfTree (TestInTree ):
121
23
# Note: other tests are inherited from TestInTree
@@ -129,13 +31,31 @@ def test_init_environment(self, dummy_xbuildenv, reset_env_vars, reset_cache):
129
31
assert "PYODIDE_ROOT" in os .environ
130
32
assert os .environ ["PYODIDE_ROOT" ] == str (manager .pyodide_root )
131
33
34
+ def test_init_environment_pyodide_root_already_set (
35
+ self , reset_env_vars , reset_cache
36
+ ):
37
+ assert "PYODIDE_ROOT" not in os .environ
38
+ os .environ ["PYODIDE_ROOT" ] = "/set_by_user"
39
+
40
+ build_env .init_environment ()
41
+
42
+ assert os .environ ["PYODIDE_ROOT" ] == "/set_by_user"
43
+
132
44
def test_get_pyodide_root (self , dummy_xbuildenv , reset_env_vars , reset_cache ):
133
45
assert "PYODIDE_ROOT" not in os .environ
134
46
135
47
pyodide_root = build_env .get_pyodide_root ()
136
48
manager = CrossBuildEnvManager (dummy_xbuildenv / common .xbuildenv_dirname ())
137
49
assert pyodide_root == manager .pyodide_root
138
50
51
+ def test_get_pyodide_root_pyodide_root_already_set (
52
+ self , reset_env_vars , reset_cache
53
+ ):
54
+ assert "PYODIDE_ROOT" not in os .environ
55
+ os .environ ["PYODIDE_ROOT" ] = "/set_by_user"
56
+
57
+ assert str (build_env .get_pyodide_root ()) == "/set_by_user"
58
+
139
59
def test_in_xbuildenv (self , dummy_xbuildenv , reset_env_vars , reset_cache ):
140
60
assert build_env .in_xbuildenv ()
141
61
0 commit comments