diff --git a/.github/workflows/check.yml b/.github/workflows/check.yml new file mode 100644 index 00000000..7fb2a632 --- /dev/null +++ b/.github/workflows/check.yml @@ -0,0 +1,26 @@ +name: Check + +on: + workflow_call: + workflow_dispatch: + +permissions: + contents: read + +jobs: + check: + name: Check + runs-on: ubuntu-latest + + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Setup Deno + uses: denoland/setup-deno@v1 + + - name: Check format + run: deno fmt + + - name: Check lint + run: deno lint diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index c54e72de..37b26b3f 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -12,18 +12,10 @@ permissions: contents: read jobs: + check: + name: Check + uses: ./.github/workflows/check.yml + test: name: Test - uses: hasundue/actions/.github/workflows/test-deno.yml@main - secrets: - CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} - with: - task: test:unit - submodules: true - - integration: - name: Integration - uses: hasundue/actions/.github/workflows/integration-deno.yml@main - with: - task: test:integration - submodules: true + uses: ./.github/workflows/test.yml diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml new file mode 100644 index 00000000..07083598 --- /dev/null +++ b/.github/workflows/test.yml @@ -0,0 +1,71 @@ +name: Test + +on: + workflow_call: + workflow_dispatch: + +permissions: + contents: read + +defaults: + run: + shell: bash + +jobs: + test: + name: Test + + matrix: + package: + - cli + - core + - integration + - lib + os: + - ubuntu-latest + - macos-latest + - windows-latest + + steps: + - name: Checkout + uses: actions/checkout@v4 + with: + submodule: matrix.package == 'core' + + - name: Setup Deno + uses: denoland/setup-deno@v1 + + - name: Setup Deno cache + uses: actions/cache@v4 + with: + path: ~/.cache/deno + key: deno-${{ hashFiles('./deno.lock') }} + restore-keys: deno + + - name: Setup Rust cache + if: matrix.package == 'core' + uses: actions/cache@v4 + with: + path: | + ~/.cargo/registry + ~/.cargo/git + target + key: cargo-${{ hashFiles('./**/Cargo.lock') }} + restore-keys: cargo + + - name: Build Rust crates + if: matrix.package == 'core' + run: deno task build + + - name: Run tests + run: deno test -A --unstable-kv --coverage=./coverage_profile ${{ matrix.package }} + + - name: Create coverage report + run: deno coverage ./coverage_profile --lcov --output=./coverage.lcov + + - name: Upload to Codecov + uses: codecov/codecov-action@v4 + with: + directory: ./ + file: ./coverage.lcov + token: ${{ secrets.CODECOV_TOKEN }} diff --git a/deno.json b/deno.json index 602e1f5e..29b0d30c 100644 --- a/deno.json +++ b/deno.json @@ -1,5 +1,6 @@ { "tasks": { + "build": "cd core/deno_lockfile && deno task build", "cache": "deno cache ./lib/*.ts ./core/*.ts ./integration/*.ts ./cli/*.ts ./cli/src/*.ts", "check": "deno check ./lib/*.ts ./core/*.ts ./integration/*.ts ./cli/**/*.ts", "pre-commit": "deno fmt && deno lint && deno task -q check && deno task -q test:unit",