diff --git a/.copier-answers.yaml b/.copier-answers.yaml index a6992dd..33ed077 100644 --- a/.copier-answers.yaml +++ b/.copier-answers.yaml @@ -1,5 +1,5 @@ # Changes here will be overwritten by Copier -_commit: d814faa +_commit: 053fbed _src_path: https://github.com/python-project-templates/base.git add_docs: true add_extension: rust diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index 8164a31..6c9483a 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -135,3 +135,31 @@ jobs: with: name: dist-${{ matrix.os }} path: dist + + + pyodide: + runs-on: ubuntu-latest + + steps: + - name: Checkout + uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 + with: + persist-credentials: false + + - name: Setup Python + uses: actions-ext/python/setup@6e1b91a408ea89f49bc8aff8724f83826f7b5446 + with: + version: "3.14" + + - name: Setup Rust + uses: actions-ext/rust/setup@2db8e3e4c56beb7320c7d730bd2c2d6a6447bf6b + + - name: Build and test Pyodide wheel + run: make test-pyodide + + - name: Upload Pyodide distribution + uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 + with: + name: dist-pyodide + path: dist/pyodide + diff --git a/.gitignore b/.gitignore index d111a98..9b8e090 100644 --- a/.gitignore +++ b/.gitignore @@ -142,6 +142,8 @@ python_template_rust/labextension # Emscripten SDK (locally installed) emsdk +.pyodide_build/ + # Mac .DS_Store diff --git a/Makefile b/Makefile index 97b16e0..7326168 100644 --- a/Makefile +++ b/Makefile @@ -110,8 +110,13 @@ tests-rs: test-rs coverage-rs: ## run rust tests and collect test coverage make -C rust coverage -.PHONY: test coverage tests +.PHONY: test test-pyodide coverage tests test: test-py test-rs ## run all tests + +test-pyodide: ## build and test the Python package in Pyodide + rustup target add wasm32-unknown-emscripten + uvx --from cibuildwheel==4.2.0 cibuildwheel --only cp314-pyodide_wasm32 --output-dir dist/pyodide . + coverage: coverage-py coverage-rs ## run all tests and collect test coverage # alias diff --git a/pyproject.toml b/pyproject.toml index a539033..dab384e 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,7 +1,7 @@ [build-system] requires = [ "hatchling", - "hatch-rs>=0.1.4", + "hatch-rs>=0.3.0", ] build-backend = "hatchling.build" @@ -39,7 +39,7 @@ develop = [ "check-dist", "cibuildwheel", "codespell", - "hatch-rs", + "hatch-rs>=0.3.0", "hatchling", "mdformat", "mdformat-tables>=1", @@ -111,6 +111,11 @@ archs = "arm64" environment = {PATH="$UserProfile\\.cargo\bin;$PATH", CARGO_TERM_COLOR="always"} skip = "*win32 *arm_64" +[tool.cibuildwheel.pyodide] +test-command = "python -m pytest -vvv --pyargs python_template_rust.tests" +test-extras = [] +test-requires = ["pytest"] +xbuild-tools = ["cargo", "rustc", "rustup"] [tool.coverage.run] branch = true omit = [ diff --git a/python_template_rust/tests/__init__.py b/python_template_rust/tests/__init__.py new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/python_template_rust/tests/__init__.py @@ -0,0 +1 @@ + diff --git a/python_template_rust/tests/test_all.py b/python_template_rust/tests/test_all.py index 2c305dd..1b160bd 100644 --- a/python_template_rust/tests/test_all.py +++ b/python_template_rust/tests/test_all.py @@ -1,5 +1,5 @@ -from python_template_rust import * +from python_template_rust.python_template_rust import Example def test_all(): - assert True + assert str(Example("test")) == "test"