Skip to content

Commit 2243e60

Browse files
authored
Lint all codebase and fix tests (#2)
Applies pre-commit and fix tests
1 parent 7f10a50 commit 2243e60

14 files changed

+248
-285
lines changed

.github/workflows/main.yml

+71-71
Original file line numberDiff line numberDiff line change
@@ -1,86 +1,86 @@
11
name: main
22

33
on:
4-
push:
5-
pull_request:
4+
push:
5+
pull_request:
66

77
concurrency:
8-
group: ${{ github.workflow }}-${{ github.ref }}
9-
cancel-in-progress: true
8+
group: ${{ github.workflow }}-${{ github.ref }}
9+
cancel-in-progress: true
1010

1111
jobs:
12-
build:
13-
runs-on: ubuntu-latest
14-
steps:
15-
- uses: actions/checkout@v4
12+
build:
13+
runs-on: ubuntu-latest
14+
steps:
15+
- uses: actions/checkout@v4
1616

17-
- name: Setup Python
18-
uses: actions/setup-python@v4
19-
with:
20-
python-version: '3.12'
17+
- name: Setup Python
18+
uses: actions/setup-python@v4
19+
with:
20+
python-version: "3.12"
2121

22-
- name: Set up Node.js
23-
uses: actions/setup-node@v4
24-
with:
25-
node-version: '20'
26-
27-
- name: Build
28-
run: |
29-
python -m pip install build
30-
python -m build .
22+
- name: Set up Node.js
23+
uses: actions/setup-node@v4
24+
with:
25+
node-version: "20"
3126

32-
- name: Store the distribution packages
33-
uses: actions/upload-artifact@v3
34-
with:
35-
name: python-package-distributions
36-
path: dist/
37-
38-
test:
39-
runs-on: ubuntu-latest
40-
steps:
41-
- uses: actions/checkout@v4
27+
- name: Build
28+
run: |
29+
python -m pip install build
30+
python -m build .
4231
43-
- name: Setup Python
44-
uses: actions/setup-python@v4
45-
with:
46-
python-version: '3.12'
32+
- name: Store the distribution packages
33+
uses: actions/upload-artifact@v3
34+
with:
35+
name: python-package-distributions
36+
path: dist/
4737

48-
- name: Set up Node.js
49-
uses: actions/setup-node@v4
50-
with:
51-
node-version: '20'
52-
53-
- name: Test
54-
run: |
55-
python -m pip install --upgrade pip
56-
pip install ".[test]"
38+
test:
39+
runs-on: ubuntu-latest
40+
steps:
41+
- uses: actions/checkout@v4
5742

58-
pytest -v \
59-
--junitxml=test-results/junit.xml \
60-
--cov=pyodide-build \
61-
pyodide_build
43+
- name: Setup Python
44+
uses: actions/setup-python@v4
45+
with:
46+
python-version: "3.12"
6247

63-
- uses: codecov/codecov-action@v4
64-
with:
65-
fail_ci_if_error: false
48+
- name: Set up Node.js
49+
uses: actions/setup-node@v4
50+
with:
51+
node-version: "20"
6652

67-
publish:
68-
name: >-
69-
Publish Python 🐍 distribution 📦 to PyPI
70-
needs:
71-
- build
72-
runs-on: ubuntu-latest
73-
if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags')
74-
environment:
75-
name: pypi
76-
url: https://pypi.org/p/pyodide-build
77-
permissions:
78-
id-token: write # IMPORTANT: mandatory for trusted publishing
79-
steps:
80-
- name: Download all the dists
81-
uses: actions/download-artifact@v3
82-
with:
83-
name: python-package-distributions
84-
path: dist/
85-
- name: Publish distribution 📦 to PyPI
86-
uses: pypa/gh-action-pypi-publish@release/v1
53+
- name: Test
54+
run: |
55+
python -m pip install --upgrade pip
56+
pip install ".[test]"
57+
58+
pytest -v \
59+
--junitxml=test-results/junit.xml \
60+
--cov=pyodide-build \
61+
pyodide_build
62+
63+
- uses: codecov/codecov-action@v4
64+
with:
65+
fail_ci_if_error: false
66+
67+
publish:
68+
name: >-
69+
Publish to PyPI
70+
needs:
71+
- build
72+
runs-on: ubuntu-latest
73+
if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags')
74+
environment:
75+
name: pypi
76+
url: https://pypi.org/p/pyodide-build
77+
permissions:
78+
id-token: write # IMPORTANT: mandatory for trusted publishing
79+
steps:
80+
- name: Download all the dists
81+
uses: actions/download-artifact@v3
82+
with:
83+
name: python-package-distributions
84+
path: dist/
85+
- name: Publish distribution 📦 to PyPI
86+
uses: pypa/gh-action-pypi-publish@release/v1

.gitignore

+2-2
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,6 @@ emsdk/emsdk
2525
geckodriver.log
2626
node_modules
2727
dist/
28-
pyodide-build/**/build.log
28+
pyodide_build/**/build.log
2929
xbuildenv/
30-
.pyodide-xbuildenv*
30+
.pyodide-xbuildenv*

.pre-commit-config.yaml

+2-2
Original file line numberDiff line numberDiff line change
@@ -74,9 +74,9 @@ repos:
7474
additional_dependencies: *mypy-deps
7575

7676
- repo: https://github.com/pre-commit/mirrors-prettier
77-
rev: "v4.0.0-alpha.8"
77+
rev: "v3.1.0"
7878
hooks:
7979
- id: prettier
8080

8181
ci:
82-
autoupdate_schedule: "quarterly"
82+
autoupdate_schedule: "quarterly"

CHANGELOG.md

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
11
# Changelog
2+
23
All notable changes to this project will be documented in this file.
34

45
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
56
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
67

78
## Unreleased
89

9-
- pyodide-build is now developed under https://github.com/pyodide/pyodide-build.
10+
- pyodide-build is now developed under https://github.com/pyodide/pyodide-build.
File renamed without changes.

pyodide_build/tests/test_build_env.py

+19-99
Original file line numberDiff line numberDiff line change
@@ -1,51 +1,13 @@
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-
51
import os
62

73
import pytest
84

9-
from conftest import ROOT_PATH
105
from pyodide_build import build_env, common
11-
from pyodide_build.xbuildenv import CrossBuildEnvManager
126
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
158

169

1710
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-
4911
def test_search_pyodide_root(self, tmp_path, reset_env_vars, reset_cache):
5012
pyproject_file = tmp_path / "pyproject.toml"
5113
pyproject_file.write_text("[tool._pyodide]")
@@ -56,66 +18,6 @@ def test_search_pyodide_root(self, tmp_path, reset_env_vars, reset_cache):
5618
pyproject_file.unlink()
5719
assert build_env.search_pyodide_root(tmp_path) is None
5820

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-
11921

12022
class TestOutOfTree(TestInTree):
12123
# Note: other tests are inherited from TestInTree
@@ -129,13 +31,31 @@ def test_init_environment(self, dummy_xbuildenv, reset_env_vars, reset_cache):
12931
assert "PYODIDE_ROOT" in os.environ
13032
assert os.environ["PYODIDE_ROOT"] == str(manager.pyodide_root)
13133

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+
13244
def test_get_pyodide_root(self, dummy_xbuildenv, reset_env_vars, reset_cache):
13345
assert "PYODIDE_ROOT" not in os.environ
13446

13547
pyodide_root = build_env.get_pyodide_root()
13648
manager = CrossBuildEnvManager(dummy_xbuildenv / common.xbuildenv_dirname())
13749
assert pyodide_root == manager.pyodide_root
13850

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+
13959
def test_in_xbuildenv(self, dummy_xbuildenv, reset_env_vars, reset_cache):
14060
assert build_env.in_xbuildenv()
14161

pyodide_build/tests/test_cli.py

+6-18
Original file line numberDiff line numberDiff line change
@@ -1,33 +1,21 @@
1-
# flake8: noqa
2-
31
import shutil
2+
import zipfile
43
from pathlib import Path
4+
from typing import Any
55

66
import pytest
7-
import zipfile
87
import typer
98
from typer.testing import CliRunner
10-
from typing import Any
9+
1110
import pyodide_build
12-
from pyodide_build import common, build_env, cli
11+
from pyodide_build import build_env, cli, common
1312
from pyodide_build.cli import (
1413
build,
1514
build_recipes,
1615
config,
1716
create_zipfile,
18-
skeleton,
19-
xbuildenv,
2017
py_compile,
21-
)
22-
23-
from .fixture import (
24-
temp_python_lib,
25-
temp_python_lib2,
26-
dummy_xbuildenv,
27-
mock_emscripten,
28-
dummy_xbuildenv_url,
29-
reset_env_vars,
30-
reset_cache,
18+
skeleton,
3119
)
3220

3321
only_node = pytest.mark.xfail_browsers(
@@ -419,7 +407,7 @@ def my_get_config_vars(*args):
419407
outdir = tmp_path / "out"
420408
app = typer.Typer()
421409
app.command(**build.main.typer_kwargs)(build.main) # type:ignore[attr-defined]
422-
result = runner.invoke(app, [str(srcdir), "--outdir", str(outdir)])
410+
runner.invoke(app, [str(srcdir), "--outdir", str(outdir)])
423411
wheel_file = next(outdir.glob("*.whl"))
424412
print(zipfile.ZipFile(wheel_file).namelist())
425413
so_file = next(

0 commit comments

Comments
 (0)