Skip to content

Commit

Permalink
chore(ci): install weval during CI
Browse files Browse the repository at this point in the history
Signed-off-by: Victor Adossi <vadossi@cosmonic.com>
  • Loading branch information
vados-cosmonic committed Nov 25, 2024
1 parent dbc24fc commit 1196c3d
Show file tree
Hide file tree
Showing 3 changed files with 179 additions and 137 deletions.
304 changes: 171 additions & 133 deletions .github/workflows/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,11 @@ jobs:
macos-latest
]
node: [18.x, 20.x, latest]
weval-version:
- 'v0.3.2'
include:
- os: windows-latest
weval-bin-path: .weval-bin/weval.exe
exclude:
- os: macos-latest
node: 20.x
Expand All @@ -61,153 +66,186 @@ jobs:
- uses: actions/setup-node@v3
with:
node-version: ${{ matrix.node }}

# Use cached weval bin if present
- name: Cache weval bin
id: cache-weval-bin
uses: actions/cache@v4
with:
path: .weval-bin
key: weval-bin-${{ matrix.weval-version }}-${{ matrix.os }}

# (no cached weval bin) download weval release
- if: ${{ steps.cache-weval-bin.outputs.cache-hit != 'true' && matrix.os == 'ubuntu-latest' }}
run: |
curl -LO https://github.com/bytecodealliance/weval/releases/download/${{ matrix.weval-version }}/weval-${{ matrix.weval-version }}-x86_64-linux.tar.xz
tar -xvJf weval-${{ matrix.weval-version }}-x86_64-linux.tar.xz
mv weval-${{ matrix.weval-version }}-x86_64-linux/weval .weval-bin
- if: ${{ steps.cache-weval-bin.outputs.cache-hit != 'true' && matrix.os == 'windows-latest' }}
run: |
curl -LO https://github.com/bytecodealliance/weval/releases/download/${{ matrix.weval-version }}/weval-${{ matrix.weval-version }}-x86_64-windows.zip
unzip weval-${{ matrix.weval-version }}-x86_64-windows.zip
mv weval-${{ matrix.weval-version }}-x86_64-windows .weval-bin
- if: ${{ steps.cache-weval-bin.outputs.cache-hit != 'true' && matrix.os == 'macos-latest' }}
run: |
curl -LO https://github.com/bytecodealliance/weval/releases/download/${{ matrix.weval-version }}/weval-${{ matrix.weval-version }}-aarch64-macos.tar.xz
tar -xvJf weval-${{ matrix.weval-version }}-aarch64-macos.tar.xz
mkdir .weval-bin
mv weval-${{ matrix.weval-version }}-aarch64-macos/weval .weval-bin/
# Perform NPM install
- name: Install NPM packages
run: npm ci

- name: Download Build
uses: actions/download-artifact@v4
with:
name: jco-build
path: obj

- name: Test LTS Node.js
run: npm run test:lts
if: matrix.node == '18.x' || matrix.node == '20.x'

- name: Test Latest Node.js
run: npm run test
if: matrix.node == 'latest'
env:
WEVAL_BIN_PATH: ${{ matrix.weval-bin-path || '.weval-bin/weval' }}
run: npm run test

build-wasi-tests:
name: WASI Test Generation
runs-on: ubuntu-latest
outputs:
cache-key: ${{ steps.cache-wasi-tests.outputs.cache-primary-key }}
steps:
- uses: actions/checkout@v4
with:
submodules: recursive
- name: Cache WASI Tests
id: cache-wasi-tests
uses: actions/cache@v4
with:
path: tests/gen
key: wasi-${{ hashFiles('xtask/src/generate/preview2_tests.rs', 'submodules/wasmtime/Cargo.lock') }}
- name: Install Rust
if: steps.cache-wasi-tests.outputs.cache-hit != 'true'
run: rustup update stable --no-self-update && rustup default stable
- name: Install wasm32-unknown-unknown target
if: steps.cache-wasi-tests.outputs.cache-hit != 'true'
run: rustup target add wasm32-unknown-unknown
- name: Install wasm32-wasip1 target
if: steps.cache-wasi-tests.outputs.cache-hit != 'true'
run: rustup target add wasm32-wasip1
- name: Install wasm-tools
if: steps.cache-wasi-tests.outputs.cache-hit != 'true'
run: cargo install wasm-tools
- name: Generate WASI Tests
if: steps.cache-wasi-tests.outputs.cache-hit != 'true'
run: cargo xtask generate preview2-tests
- name: Upload Generated WASI Tests
uses: actions/upload-artifact@v4
with:
name: wasi-tests
path: tests/gen
# build-wasi-tests:
# name: WASI Test Generation
# runs-on: ubuntu-latest
# outputs:
# cache-key: ${{ steps.cache-wasi-tests.outputs.cache-primary-key }}
# steps:
# - uses: actions/checkout@v4
# with:
# submodules: recursive
# - name: Cache WASI Tests
# id: cache-wasi-tests
# uses: actions/cache@v4
# with:
# path: tests/gen
# key: wasi-${{ hashFiles('xtask/src/generate/preview2_tests.rs', 'submodules/wasmtime/Cargo.lock') }}
# - name: Install Rust
# if: steps.cache-wasi-tests.outputs.cache-hit != 'true'
# run: rustup update stable --no-self-update && rustup default stable
# - name: Install wasm32-unknown-unknown target
# if: steps.cache-wasi-tests.outputs.cache-hit != 'true'
# run: rustup target add wasm32-unknown-unknown
# - name: Install wasm32-wasip1 target
# if: steps.cache-wasi-tests.outputs.cache-hit != 'true'
# run: rustup target add wasm32-wasip1
# - name: Install wasm-tools
# if: steps.cache-wasi-tests.outputs.cache-hit != 'true'
# run: cargo install wasm-tools
# - name: Generate WASI Tests
# if: steps.cache-wasi-tests.outputs.cache-hit != 'true'
# run: cargo xtask generate preview2-tests
# - name: Upload Generated WASI Tests
# uses: actions/upload-artifact@v4
# with:
# name: wasi-tests
# path: tests/gen

test-wasi-deno:
name: Jco Deno WASI Conformance Tests
runs-on: 'ubuntu-latest'
needs: [build, build-wasi-tests]
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v3
with:
node-version: 'latest'
- uses: denoland/setup-deno@v1
with:
deno-version: v1.x
- name: Install NPM packages
run: npm ci
- name: Download Build
uses: actions/download-artifact@v4
with:
name: jco-build
path: obj
- name: Download WASI Tests
uses: actions/download-artifact@v4
with:
name: wasi-tests
path: tests/gen
- name: WASI Preview 2 Conformance
run: cargo test deno_
# test-wasi-deno:
# name: Jco Deno WASI Conformance Tests
# runs-on: 'ubuntu-latest'
# needs: [build, build-wasi-tests]
# steps:
# - uses: actions/checkout@v4
# - uses: actions/setup-node@v3
# with:
# node-version: 'latest'
# - uses: denoland/setup-deno@v1
# with:
# deno-version: v1.x
# - name: Install NPM packages
# run: npm ci
# - name: Download Build
# uses: actions/download-artifact@v4
# with:
# name: jco-build
# path: obj
# - name: Download WASI Tests
# uses: actions/download-artifact@v4
# with:
# name: wasi-tests
# path: tests/gen
# - name: WASI Preview 2 Conformance
# run: cargo test deno_

test-wasi:
name: Jco Node.js WASI Conformance Tests
strategy:
matrix:
os: [
ubuntu-latest,
windows-latest,
macos-latest
]
node: [18.x, 20.x, latest]
exclude:
- os: macos-latest
node: 20.x
- os: macos-latest
node: 18.x
- os: windows-latest
node: 20.x
- os: windows-latest
node: 18.x
fail-fast: false
runs-on: ${{ matrix.os }}
needs: [build, build-wasi-tests]
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v3
with:
node-version: ${{ matrix.node }}
- name: Install NPM packages
run: npm ci
- name: Download Build
uses: actions/download-artifact@v4
with:
name: jco-build
path: obj
- name: Download WASI Tests
uses: actions/download-artifact@v4
with:
name: wasi-tests
path: tests/gen
- name: WASI Preview 2 Conformance
run: cargo test node_

test-workspaces:
name: Test Workspaces
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Install NPM packages
run: npm ci
- name: Test Workspaces
run: npm run test --workspaces
# test-wasi:
# name: Jco Node.js WASI Conformance Tests
# strategy:
# matrix:
# os: [
# ubuntu-latest,
# windows-latest,
# macos-latest
# ]
# node: [18.x, 20.x, latest]
# exclude:
# - os: macos-latest
# node: 20.x
# - os: macos-latest
# node: 18.x
# - os: windows-latest
# node: 20.x
# - os: windows-latest
# node: 18.x
# fail-fast: false
# runs-on: ${{ matrix.os }}
# needs: [build, build-wasi-tests]
# steps:
# - uses: actions/checkout@v4
# - uses: actions/setup-node@v3
# with:
# node-version: ${{ matrix.node }}
# - name: Install NPM packages
# run: npm ci
# - name: Download Build
# uses: actions/download-artifact@v4
# with:
# name: jco-build
# path: obj
# - name: Download WASI Tests
# uses: actions/download-artifact@v4
# with:
# name: wasi-tests
# path: tests/gen
# - name: WASI Preview 2 Conformance
# run: cargo test node_

eslint:
name: ESLint
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Install NPM packages
run: npm ci
- name: Lint
run: npm run lint
# test-workspaces:
# name: Test Workspaces
# runs-on: ubuntu-latest
# steps:
# - uses: actions/checkout@v4
# - name: Install NPM packages
# run: npm ci
# - name: Test Workspaces
# run: npm run test --workspaces

rustfmt:
name: Rustfmt
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Install Rust
run: rustup update stable && rustup default stable && rustup component add rustfmt
- name: Remove tests mod
run: rm -r tests/mod.rs
- name: Format source code
run: cargo fmt -- --check
# eslint:
# name: ESLint
# runs-on: ubuntu-latest
# steps:
# - uses: actions/checkout@v4
# - name: Install NPM packages
# run: npm ci
# - name: Lint
# run: npm run lint

# rustfmt:
# name: Rustfmt
# runs-on: ubuntu-latest
# steps:
# - uses: actions/checkout@v4
# - name: Install Rust
# run: rustup update stable && rustup default stable && rustup component add rustfmt
# - name: Remove tests mod
# run: rm -r tests/mod.rs
# - name: Format source code
# run: cargo fmt -- --check
1 change: 0 additions & 1 deletion .nvmrc

This file was deleted.

11 changes: 8 additions & 3 deletions test/cli.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { resolve } from "node:path";
import { execArgv } from "node:process";
import { execArgv, env } from "node:process";
import { deepStrictEqual, ok, strictEqual } from "node:assert";
import {
mkdir,
Expand Down Expand Up @@ -504,7 +504,7 @@ export async function cliTest(_fixtures) {
});

test("Componentize", async () => {
const { stdout, stderr } = await exec(
const args = [
jcoPath,
"componentize",
"test/fixtures/componentize/source.js",
Expand All @@ -515,7 +515,12 @@ export async function cliTest(_fixtures) {
"test/fixtures/componentize/source.wit",
"-o",
outFile
);
];
if (env.WEVAL_BIN_PATH) {
args.push("--weval-bin", env.WEVAL_BIN_PATH);
}

const { stdout, stderr } = await exec(...args);
strictEqual(stderr, "");
{
const { stderr } = await exec(
Expand Down

0 comments on commit 1196c3d

Please sign in to comment.