-
-
Notifications
You must be signed in to change notification settings - Fork 14
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Add a global manager for configuring runtimes (#141)
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
- Loading branch information
1 parent
67e933d
commit d7da97c
Showing
6 changed files
with
117 additions
and
21 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,61 @@ | ||
""" | ||
Stores the global runtime configuration related to the pytest_pyodide package. | ||
""" | ||
|
||
from typing import Literal | ||
|
||
RUNTIMES = Literal["chrome", "firefox", "node", "safari"] | ||
|
||
_global_load_pyodide_script = """ | ||
let pyodide = await loadPyodide({ fullStdLib: false, jsglobals : self }); | ||
""" | ||
|
||
|
||
class Config: | ||
def __init__(self): | ||
# Flags to be passed to the browser or runtime. | ||
self.flags: dict[RUNTIMES, list[str]] = { | ||
"chrome": ["--js-flags=--expose-gc"], | ||
"firefox": [], | ||
"node": [], | ||
"safari": [], | ||
} | ||
|
||
# The script to be executed to load the Pyodide. | ||
self.load_pyodide_script: dict[RUNTIMES, str] = { | ||
"chrome": _global_load_pyodide_script, | ||
"firefox": _global_load_pyodide_script, | ||
"node": _global_load_pyodide_script, | ||
"safari": _global_load_pyodide_script, | ||
} | ||
|
||
# The script to be executed to initialize the runtime. | ||
self.initialize_script: str = "pyodide.runPython('');" | ||
|
||
def set_flags(self, runtime: RUNTIMES, flags: list[str]): | ||
self.flags[runtime] = flags | ||
|
||
def get_flags(self, runtime: RUNTIMES) -> list[str]: | ||
return self.flags[runtime] | ||
|
||
def set_load_pyodide_script(self, runtime: RUNTIMES, load_pyodide_script: str): | ||
self.load_pyodide_script[runtime] = load_pyodide_script | ||
|
||
def get_load_pyodide_script(self, runtime: RUNTIMES) -> str: | ||
return self.load_pyodide_script[runtime] | ||
|
||
def set_initialize_script(self, initialize_script: str): | ||
self.initialize_script = initialize_script | ||
|
||
def get_initialize_script(self) -> str: | ||
return self.initialize_script | ||
|
||
|
||
SINGLETON = Config() | ||
|
||
|
||
def get_global_config() -> Config: | ||
""" | ||
Return the singleton config object. | ||
""" | ||
return SINGLETON |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,25 @@ | ||
from pytest_pyodide.config import Config, get_global_config | ||
|
||
|
||
def test_config(): | ||
c = Config() | ||
|
||
runtimes = ["chrome", "firefox", "node", "safari"] | ||
|
||
for runtime in runtimes: | ||
c.get_flags(runtime) | ||
c.get_load_pyodide_script(runtime) | ||
|
||
c.set_flags(runtime, ["--headless"]) | ||
assert c.get_flags(runtime) == ["--headless"] | ||
|
||
c.set_load_pyodide_script(runtime, "console.log('hello')") | ||
assert c.get_load_pyodide_script(runtime) == "console.log('hello')" | ||
|
||
c.get_initialize_script() | ||
c.set_initialize_script("console.log('hello')") | ||
assert c.get_initialize_script() == "console.log('hello')" | ||
|
||
|
||
def test_global_config(): | ||
assert get_global_config() is get_global_config() |