version: 2.1 defaults: &defaults working_directory: ~/repo docker: # Built from: # https://github.com/pyodide/pyodide/blob/2ab4b0ab6aefe99fd994bb4f9ab086e5c0aebb7b/Dockerfile - image: pyodide/pyodide-env:20230126-chrome109-firefox109-py311 jobs: install-emsdk: <<: *defaults steps: - checkout - run: name: install emsdk command: | git clone https://github.com/emscripten-core/emsdk.git --depth=1 cd emsdk ./emsdk install 3.1.30 ./emsdk activate 3.1.30 - persist_to_workspace: root: . paths: - emsdk build: parameters: wasm-bigint: description: Should we build with wasm-bigint? type: string default: "" environment: WASM_BIGINT: << parameters.wasm-bigint >> <<: *defaults steps: - checkout - attach_workspace: at: . - run: name: build command: | source ./emsdk/emsdk_env.sh ./testsuite/emscripten/build.sh - run: name: build tests command: | source ./emsdk/emsdk_env.sh cp -r testsuite/libffi.call testsuite/libffi.call.test cp -r testsuite/libffi.closures testsuite/libffi.closures.test ./testsuite/emscripten/build-tests.sh testsuite/libffi.call.test ./testsuite/emscripten/build-tests.sh testsuite/libffi.closures.test - persist_to_workspace: root: . paths: - target - testsuite test: parameters: test-params: description: The tests to run. type: string <<: *defaults steps: - checkout - attach_workspace: at: . - run: name: run tests command: | git reset --hard cd testsuite/emscripten/ mkdir test-results pytest \ --junitxml=test-results/junit.xml \ test_libffi.py \ << parameters.test-params >> - store_test_results: path: testsuite/emscripten/test-results test-dejagnu: parameters: params: description: Parameters to node-tests type: string default: "" <<: *defaults steps: - checkout - attach_workspace: at: . - run: name: run tests command: | source ./emsdk/emsdk_env.sh testsuite/emscripten/node-tests.sh << parameters.params >> workflows: version: 2 build-and-test: jobs: - install-emsdk - build: name: build requires: - install-emsdk - build: name: build-bigint wasm-bigint: "true" requires: - install-emsdk - test: name: test-firefox test-params: -k firefox requires: - build - test: name: test-chrome test-params: -k chrome requires: - build - test: name: test-firefox-bigint test-params: -k firefox requires: - build-bigint - test: name: test-chrome-bigint test-params: -k chrome requires: - build-bigint - test-dejagnu: name: test-dejagnu requires: - install-emsdk - test-dejagnu: name: test-dejagnu-bigint params: --wasm-bigint requires: - install-emsdk