Skip to content

Release 0.3.42

Release 0.3.42 #877

Workflow file for this run

name: tests_protocol
on:
pull_request:
branches:
- 'main'
paths:
- 'protocol/**'
- '.github/workflows/tests_protocol.yml'
workflow_dispatch:
concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true
env:
CARGO_TERM_COLOR: always
GH_TOKEN: ${{ github.token }}
NODE_ENV: test
jobs:
check:
runs-on: ubuntu-latest
steps:
- name: Print contexts
env:
GITHUB_CONTEXT: ${{ toJson(github) }}
ENV_CONTEXT: ${{ toJson(env) }}
VARS_CONTEXT: ${{ toJson(vars) }}
JOB_CONTEXT: ${{ toJson(job) }}
STEPS_CONTEXT: ${{ toJson(steps) }}
RUNNER_CONTEXT: ${{ toJson(runner) }}
SECRETS_CONTEXT: ${{ toJson(secrets) }}
STRATEGY_CONTEXT: ${{ toJson(strategy) }}
MATRIX_CONTEXT: ${{ toJson(matrix) }}
NEEDS_CONTEXT: ${{ toJson(needs) }}
INPUTS_CONTEXT: ${{ toJson(inputs) }}
run: |
echo "******************************"
echo "github:" "$GITHUB_CONTEXT"
echo "******************************"
echo "env:" "$ENV_CONTEXT"
echo "******************************"
echo "vars:" "$VARS_CONTEXT"
echo "******************************"
echo "job:" "$JOB_CONTEXT"
echo "******************************"
echo "steps:" "$STEPS_CONTEXT"
echo "******************************"
echo "runner:" "$RUNNER_CONTEXT"
echo "******************************"
echo "secrets:" "$SECRETS_CONTEXT"
echo "******************************"
echo "strategy:" "$STRATEGY_CONTEXT"
echo "******************************"
echo "matrix:" "$MATRIX_CONTEXT"
echo "******************************"
echo "needs:" "$NEEDS_CONTEXT"
echo "******************************"
echo "inputs:" "$INPUTS_CONTEXT"
echo "******************************"
- uses: actions/checkout@v3
- run: mkdir -p protocol/cargo-cache
- run: mkdir -p protocol/target
- run: mkdir -p node_modules
- run: mkdir -p ~/.cache/Cypress
- name: Restore cache
uses: actions/cache/restore@v3
with:
path: |
protocol/cargo-cache
protocol/target
node_modules
~/.cache/Cypress
# note that restoring a cache in github is a pain. The trailing '-' matches any string after the '-', therefore 'abc-' would match a cache named 'abc-1234' or 'abc-5678', etc.
# the problem is 'abc-' will not match a cache named 'abc'! So if you're using wildcard cache name selectors like this, you need a field that changes as the suffix to become the wildcard
# here we're setting the key to an unused cache key so it falls back to the wildcard selector in `restore-keys`
key: some-unused-cache-key
restore-keys: |
project-cache-${{ runner.os }}-${{ runner.arch }}-
- uses: actions/setup-node@v3
with:
node-version-file: '.nvmrc'
- run: npm i -g npm@$(cat package.json | jq -r .engines.npm)
- run: npm ci
- name: Build contracts
id: build
run: |
cd protocol/dev
npm run cli -- build --docker --skip-env
- name: Check typechain is up-to-date
run: |
# check the output of typechain has a contract hash matching the current contract version
# this looks at the hash in the metadata for the contracts and matches typechain's metadata hash against protocol's metadata hash to detect differences
set -euo pipefail
typechain_contracts=$(find ./contracts -maxdepth 1 -mindepth 1 -type d)
protocol_contracts=$(find ./protocol/target/ink -maxdepth 1 -mindepth 1 -type d)
contracts=( "${typechain_contracts[@]}" "${protocol_contracts[@]}" )
for contract_path in ${contracts[@]}; do
contract_name=$(basename $contract_path)
typechain_metadata="./contracts/$contract_name/src/$contract_name.json"
protocol_metadata="./protocol/target/ink/$contract_name/$contract_name.json"
typechain_hash=$(cat $typechain_metadata | jq -r '.source.hash')
protocol_hash=$(cat $protocol_metadata | jq -r '.source.hash')
if [ "$typechain_hash" != "$protocol_hash" ]; then
echo "Hash mismatch for $contract_name"
echo "Typechain: $typechain_hash"
echo "Protocol: $protocol_hash"
exit 1
else
echo "Hash match for $contract_path"
fi
done
- name: Test contracts
run: |
cd protocol/dev
RUST_BACKTRACE=1 npm run cli -- test --docker