Edit

kc3-lang/libffi/.circleci

Branch :

  • Show log

    Commit

  • Author : Hood Chatham
    Date : 2023-02-09 06:01:37
    Hash : 7d23c2d2
    Message : Add emscripten gha workflow (#768) Resolves issue #767

  • config.yml
  • 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