mirror of
https://github.com/pyscript/pyscript.git
synced 2026-02-12 04:01:05 -05:00
* Add cache, fetch, retry logic to tests * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * run in parallel * add pytest-xdist * undo parallelism. Need to remove http server to enable. * woops a extra space * Pass flake8 * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * spell fulfill * use decorator for fetch if not in cache * Fix --headed and limit to PlaywrightRequestError * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * docs on cache * CICD caching of conda on unstable builds * fix config issues * empty commit to trigger gh-actions * restore build-unstable * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * Remove http server, add parallel * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * temp: Bypass zip runtime test and point to v0.21.3 on CDN * suport for files in zip under /pyodide * remove test-one * self.http_server and remove content_type * domcontentloaded w no timeout on base url + longer timeout on wait_for_pyscript * Fixed #678 * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * set default timeout to 60000 * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * seamless --headed support * add test-integration-parallel and default for GHActions * simplify the code. Use http://fakeserver instead of localhost:8080 so that it's clearer that the browser is NOT hitting a real server, and use urllib to parse the url. Moreover, the special case for pyodide is no longer needed, it's automatically handled by the normal 'fakeserver' logic * The page-routing logic is becoming too much complicated to stay as an inner function. Move it to its own class, and add some logic to workaround a limitation of playwright which just hangs if a Python exception is raised inside it * no need to use a hash, we can use the url as the key * re-implement the retry logic. The old @retry decorator was nice but a bit too over-engineered and most importantly failed silently in case of exceptions. This new approach is less powerful but since we want to retry only two times, simple is better than complex -- and in case of exception, the exception is actually raised * improve logging Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> Co-authored-by: Madhur Tandon <madhurtandon23@gmail.com> Co-authored-by: Antonio Cuni <anto.cuni@gmail.com>
121 lines
3.1 KiB
Makefile
121 lines
3.1 KiB
Makefile
tag := latest
|
|
git_hash ?= $(shell git log -1 --pretty=format:%h)
|
|
|
|
base_dir ?= $(shell git rev-parse --show-toplevel)
|
|
src_dir ?= $(base_dir)/pyscriptjs/src
|
|
examples ?= ../$(base_dir)/examples
|
|
app_dir ?= $(shell git rev-parse --show-prefix)
|
|
|
|
CONDA_EXE := conda
|
|
CONDA_ENV ?= $(base_dir)/pyscriptjs/env
|
|
env := $(CONDA_ENV)
|
|
conda_run := $(CONDA_EXE) run -p $(env)
|
|
PYTEST_EXE := $(CONDA_ENV)/bin/pytest
|
|
GOOD_NODE_VER := 14
|
|
GOOD_NPM_VER := 6
|
|
NODE_VER := $(shell node -v | cut -d. -f1 | sed 's/^v\(.*\)/\1/')
|
|
NPM_VER := $(shell npm -v | cut -d. -f1)
|
|
|
|
ifeq ($(shell uname -s), Darwin)
|
|
SED_I_ARG := -i ''
|
|
else
|
|
SED_I_ARG := -i
|
|
endif
|
|
|
|
GOOD_NODE := $(shell if [ $(NODE_VER) -ge $(GOOD_NODE_VER) ]; then echo true; else echo false; fi)
|
|
GOOD_NPM := $(shell if [ $(NPM_VER) -ge $(GOOD_NPM_VER) ]; then echo true; else echo false; fi)
|
|
|
|
.PHONY: check-node
|
|
check-node:
|
|
@echo Build requires Node $(GOOD_NODE_VER).x or higher: $(NODE_VER) detected && $(GOOD_NODE)
|
|
|
|
.PHONY: check-npm
|
|
check-npm:
|
|
@echo Build requires npm $(GOOD_NPM_VER).x or higher: $(NPM_VER) detected && $(GOOD_NPM)
|
|
|
|
setup:
|
|
make check-node
|
|
make check-npm
|
|
npm install
|
|
$(CONDA_EXE) env $(shell [ -d $(env) ] && echo update || echo create) -p $(env) --file environment.yml
|
|
$(conda_run) playwright install
|
|
$(CONDA_EXE) install -c anaconda pytest -y
|
|
|
|
clean:
|
|
find . -name \*.py[cod] -delete
|
|
rm -rf .pytest_cache .coverage coverage.xml
|
|
|
|
clean-all: clean
|
|
rm -rf $(env) *.egg-info
|
|
|
|
shell:
|
|
@export CONDA_ENV_PROMPT='<{name}>'
|
|
@echo 'conda activate $(env)'
|
|
|
|
dev:
|
|
npm run dev
|
|
|
|
build:
|
|
npm run build
|
|
|
|
examples:
|
|
mkdir -p ./examples
|
|
cp -r ../examples/* ./examples
|
|
chmod -R 755 examples
|
|
find ./examples/toga -type f -name '*.html' -exec sed $(SED_I_ARG) s+https://pyscript.net/latest/+../../build/+g {} \;
|
|
find ./examples/webgl -type f -name '*.html' -exec sed $(SED_I_ARG) s+https://pyscript.net/latest/+../../../build/+g {} \;
|
|
find ./examples -type f -name '*.html' -exec sed $(SED_I_ARG) s+https://pyscript.net/latest/+../build/+g {} \;
|
|
npm run build
|
|
rm -rf ./examples/build
|
|
mkdir -p ./examples/build
|
|
cp -R ./build/* ./examples/build
|
|
@echo "To serve examples run: $(conda_run) python -m http.server 8080 --directory examples"
|
|
|
|
# run prerequisites and serve pyscript examples at http://localhost:8000/examples/
|
|
run-examples: setup build examples
|
|
make examples
|
|
npm install
|
|
make dev
|
|
|
|
test:
|
|
make examples
|
|
make test-ts
|
|
make test-py
|
|
|
|
test-integration:
|
|
make examples
|
|
$(PYTEST_EXE) -vv $(ARGS) tests/integration/ --log-cli-level=warning
|
|
|
|
test-integration-parallel:
|
|
make examples
|
|
$(PYTEST_EXE) --numprocesses auto -vv $(ARGS) tests/integration/ --log-cli-level=warning
|
|
|
|
test-py:
|
|
@echo "Tests from $(src_dir)"
|
|
$(PYTEST_EXE) -vv $(ARGS) tests/py-unit/ --log-cli-level=warning
|
|
|
|
test-ts:
|
|
@echo "Tests are coming :( this is a placeholder and it's meant to fail!"
|
|
npm run test
|
|
|
|
fmt: fmt-py fmt-ts
|
|
@echo "Format completed"
|
|
|
|
fmt-check: fmt-ts-check fmt-py-check
|
|
@echo "Format check completed"
|
|
|
|
fmt-ts:
|
|
npm run format
|
|
|
|
fmt-ts-check:
|
|
npm run format:check
|
|
|
|
fmt-py:
|
|
$(conda_run) black --skip-string-normalization .
|
|
$(conda_run) isort --profile black .
|
|
|
|
fmt-py-check:
|
|
$(conda_run) black -l 88 --check .
|
|
|
|
.PHONY: $(MAKECMDGOALS)
|