Migrate tests for example contracts #1312
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
on: | |
# Trigger the workflow on push or pull request, | |
# but only for the main branch | |
push: | |
branches: | |
- main | |
pull_request: | |
branches: | |
- main | |
name: Clippy & fmt | |
env: | |
RUST_FMT: nightly-2023-04-01 | |
RUST_VERSION: "1.66" | |
jobs: | |
rustfmt: | |
name: Format | |
runs-on: ubuntu-latest | |
strategy: | |
matrix: | |
crates: | |
- concordium-std/Cargo.toml | |
- concordium-cis2/Cargo.toml | |
- examples/voting/Cargo.toml | |
- examples/eSealing/Cargo.toml | |
- examples/auction/Cargo.toml | |
- examples/cis2-multi/Cargo.toml | |
- examples/cis2-multi-royalties/Cargo.toml | |
- examples/cis2-nft/Cargo.toml | |
- examples/cis3-nft-sponsored-txs/Cargo.toml | |
- examples/cis2-wccd/Cargo.toml | |
- examples/credential-registry/Cargo.toml | |
- examples/fib/Cargo.toml | |
- examples/icecream/Cargo.toml | |
- examples/memo/Cargo.toml | |
- examples/nametoken/Cargo.toml | |
- examples/piggy-bank/part1/Cargo.toml | |
- examples/piggy-bank/part2/Cargo.toml | |
- examples/proxy/Cargo.toml | |
- examples/recorder/Cargo.toml | |
- examples/signature-verifier/Cargo.toml | |
- examples/transfer-policy-check/Cargo.toml | |
- examples/two-step-transfer/Cargo.toml | |
- examples/smart-contract-upgrade/contract-version1/Cargo.toml | |
- examples/smart-contract-upgrade/contract-version2/Cargo.toml | |
- examples/offchain-transfers/Cargo.toml | |
- examples/account-signature-checks/Cargo.toml | |
steps: | |
- name: Checkout sources | |
uses: actions/checkout@v2 | |
with: | |
submodules: recursive | |
- name: Install nightly toolchain with rustfmt available | |
uses: actions-rs/toolchain@v1 | |
with: | |
profile: minimal | |
toolchain: ${{ env.RUST_FMT }} | |
override: true | |
components: rustfmt | |
- name: Run cargo fmt | |
uses: actions-rs/cargo@v1 | |
with: | |
command: fmt | |
args: --manifest-path=${{ matrix.crates }} -- --check | |
rustdoc: | |
name: Lint docs | |
# Don't run on draft pull requests | |
if: ${{ !github.event.pull_request.draft }} | |
runs-on: ubuntu-latest | |
strategy: | |
matrix: | |
crates: | |
- concordium-std | |
- concordium-cis2 | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v2 | |
with: | |
submodules: recursive | |
- name: Install Rust | |
uses: actions-rs/toolchain@v1 | |
with: | |
profile: minimal | |
toolchain: ${{ env.RUST_VERSION }} | |
override: true | |
- name: Run cargo doc | |
working-directory: ${{ matrix.crates }} | |
run: | | |
RUSTDOCFLAGS="-D warnings" cargo doc --no-deps --all-features --color=always | |
# All templates are generated with the `cargo-generate` command and it is checked that the 'cargo test' command | |
# can be executed without errors on the generated smart contracts. | |
cargo-generate-templates: | |
name: Smart contract template generation | |
runs-on: ubuntu-latest | |
strategy: | |
matrix: | |
crates: | |
- templates/default | |
- templates/cis2-nft | |
env: | |
PROJECT_NAME: my-project | |
steps: | |
- name: Checkout sources | |
uses: actions/checkout@v3 | |
with: | |
submodules: recursive | |
- name: Run cargo-generate | |
# we use v0.17.5 here because the minimal supported version is 0.17.0 and the closest | |
# available version of `cargo-generate-action` is 0.17.5 | |
uses: cargo-generate/[email protected] | |
with: | |
name: ${{ env.PROJECT_NAME }} | |
template: ${{ matrix.crates }} | |
other: "-d description=myProject -d tokenMetadataBaseURL=https://some.example/token/" | |
- name: Install toolchain | |
uses: actions-rs/toolchain@v1 | |
with: | |
toolchain: ${{ env.RUST_VERSION }} | |
# we need to move the generated project to a temp folder, away from the template project | |
# otherwise `cargo` runs would fail | |
# see https://github.com/rust-lang/cargo/issues/9922 | |
# Run all tests, including doc tests. | |
- name: Run cargo test | |
run: | | |
# TEMPLATE_DIR=`pwd` | |
mv $PROJECT_NAME ${{ runner.temp }}/ | |
cd ${{ runner.temp }}/$PROJECT_NAME | |
cargo test | |
# The credential registry template is used to generate code for all combinations of parameters | |
# with the `cargo-generate` and it is checked that the 'cargo test' command can be executed | |
# without errors on the generated smart contracts. | |
cargo-generate-credential-registry-template: | |
name: Credential registry template tests | |
runs-on: ubuntu-latest | |
strategy: | |
matrix: | |
restorable: ["true", "false"] | |
revocable_by_others: ["true", "false"] | |
env: | |
PROJECT_NAME: my-project | |
steps: | |
- name: Checkout sources | |
uses: actions/checkout@v3 | |
with: | |
submodules: recursive | |
- name: Run cargo-generate | |
# we use v0.17.5 here because the minimal supported version is 0.17.0 and the closest | |
# available version of `cargo-generate-action` is 0.17.5 | |
uses: cargo-generate/[email protected] | |
with: | |
name: ${{ env.PROJECT_NAME }} | |
template: templates/credential-registry | |
other: "-d description=myProject -d template_type=custom -d restorable=${{ matrix.restorable }} -d revocable_by_others=${{ matrix.revocable_by_others }}" | |
- name: Install toolchain | |
uses: actions-rs/toolchain@v1 | |
with: | |
toolchain: ${{ env.RUST_VERSION }} | |
# we need to move the generated project to a temp folder, away from the template project | |
# otherwise `cargo` runs would fail | |
# see https://github.com/rust-lang/cargo/issues/9922 | |
# Run all tests, including doc tests. | |
- name: Run cargo test | |
run: | | |
mv $PROJECT_NAME ${{ runner.temp }}/ | |
cd ${{ runner.temp }}/$PROJECT_NAME | |
cargo test | |
# All templates are generated with the `cargo-generate` command | |
# and it is checked that the schemas can be built as part of the 'clippy' command. | |
clippy-template: | |
name: Clippy on smart contract templates | |
runs-on: ubuntu-latest | |
needs: rustfmt | |
strategy: | |
matrix: | |
target: | |
- wasm32-unknown-unknown | |
crates: | |
- templates/default | |
- templates/cis2-nft | |
- templates/credential-registry | |
env: | |
PROJECT_NAME: my-project | |
steps: | |
- name: Checkout sources | |
uses: actions/checkout@v3 | |
with: | |
submodules: recursive | |
- name: Run cargo-generate | |
# we use v0.17.5 here because the minimal supported version is 0.17.0 and the closest | |
# available version of `cargo-generate-action` is 0.17.5 | |
uses: cargo-generate/[email protected] | |
with: | |
name: ${{ env.PROJECT_NAME }} | |
template: ${{ matrix.crates }} | |
other: "-d description=myProject -d tokenMetadataBaseURL=https://some.example/token/ -d template_type=full" | |
- name: Install toolchain with clippy available | |
uses: actions-rs/toolchain@v1 | |
with: | |
profile: minimal | |
toolchain: ${{ env.RUST_VERSION }} | |
target: ${{ matrix.target }} | |
override: true | |
components: clippy | |
# we need to move the generated project to a temp folder, away from the template project | |
# otherwise `cargo` runs would fail | |
# see https://github.com/rust-lang/cargo/issues/9922 | |
- name: Run clippy with build-schema | |
run: | | |
mv $PROJECT_NAME ${{ runner.temp }}/ | |
cd ${{ runner.temp }}/$PROJECT_NAME | |
rustup target add wasm32-unknown-unknown | |
cargo clippy --manifest-path ./Cargo.toml --target=${{ matrix.target }} --features concordium-std/build-schema -- -D warnings | |
# The credential registry template is used to generate code for all combinations of parameters | |
# with the `cargo-generate` command and it is checked that the schemas can be built as part | |
# of the 'clippy' command. | |
clippy-credential-registry-template: | |
name: Clippy on credential registry template | |
runs-on: ubuntu-latest | |
needs: rustfmt | |
strategy: | |
matrix: | |
target: | |
- wasm32-unknown-unknown | |
restorable: ["true", "false"] | |
revocable_by_others: ["true", "false"] | |
env: | |
PROJECT_NAME: my-project | |
steps: | |
- name: Checkout sources | |
uses: actions/checkout@v3 | |
with: | |
submodules: recursive | |
- name: Run cargo-generate | |
# we use v0.17.5 here because the minimal supported version is 0.17.0 and the closest | |
# available version of `cargo-generate-action` is 0.17.5 | |
uses: cargo-generate/[email protected] | |
with: | |
name: ${{ env.PROJECT_NAME }} | |
template: templates/credential-registry | |
other: "-d description=myProject -d template_type=custom -d restorable=${{ matrix.restorable }} -d revocable_by_others=${{ matrix.revocable_by_others }}" | |
- name: Install toolchain with clippy available | |
uses: actions-rs/toolchain@v1 | |
with: | |
profile: minimal | |
toolchain: ${{ env.RUST_VERSION }} | |
target: ${{ matrix.target }} | |
override: true | |
components: clippy | |
# we need to move the generated project to a temp folder, away from the template project | |
# otherwise `cargo` runs would fail | |
# see https://github.com/rust-lang/cargo/issues/9922 | |
- name: Run clippy with build-schema | |
run: | | |
mv $PROJECT_NAME ${{ runner.temp }}/ | |
cd ${{ runner.temp }}/$PROJECT_NAME | |
rustup target add wasm32-unknown-unknown | |
cargo clippy --manifest-path ./Cargo.toml --target=${{ matrix.target }} --features concordium-std/build-schema -- -D warnings | |
# The cis2-nft template is generated with the `cargo-generate` command | |
# and it is checked that the code is equivalent to the cis2-nft smart contract in the example folder. | |
cargo-generate-cis2-nft-template-comparison: | |
name: Cis2-nft smart contract template comparison | |
runs-on: ubuntu-latest | |
strategy: | |
matrix: | |
crates: | |
- templates/cis2-nft | |
env: | |
PROJECT_NAME: cis2-nft | |
steps: | |
- name: Checkout sources | |
uses: actions/checkout@v3 | |
with: | |
submodules: recursive | |
- name: Run cargo-generate | |
# we use v0.17.5 here because the minimal supported version is 0.17.0 and the closest | |
# available version of `cargo-generate-action` is 0.17.5 | |
uses: cargo-generate/[email protected] | |
with: | |
name: ${{ env.PROJECT_NAME }} | |
template: ${{ matrix.crates }} | |
other: "-d description=cis2-nft-project -d tokenMetadataBaseURL=https://some.example/token/" | |
- name: Install toolchain | |
uses: actions-rs/toolchain@v1 | |
with: | |
toolchain: ${{ env.RUST_VERSION }} | |
# Run diff to check if there are any differences between the generated smart contracts | |
# and the example smart contracts. The templates have hardcoded versions of `concordium-std` | |
# and `concordium-cis2` which need to be replaced with the paths used in the smart contract example folder. | |
# This CI pipeline uses `root` as the author which needs to be replaced with the author | |
# `Concordium <[email protected]>` of the smart contract examples. | |
- name: Run diff | |
run: | | |
mv $PROJECT_NAME ${{ runner.temp }}/ | |
sed -i "s/root/Concordium <[email protected]>/g" ${{ runner.temp }}/$PROJECT_NAME/Cargo.toml | |
sed -i "s/{version = \"8.0\", default-features = false}/{path = \"..\/..\/concordium-std\", default-features = false}/g" ${{ runner.temp }}/$PROJECT_NAME/Cargo.toml | |
sed -i "s/{version = \"5.0\", default-features = false}/{path = \"..\/..\/concordium-cis2\", default-features = false}/g" ${{ runner.temp }}/$PROJECT_NAME/Cargo.toml | |
sed -i "s/concordium-smart-contract-testing = \"3.0\"/concordium-smart-contract-testing = {path = \"..\/..\/contract-testing\"}/g" ${{ runner.temp }}/$PROJECT_NAME/Cargo.toml | |
diff ${{ runner.temp }}/$PROJECT_NAME/Cargo.toml examples/cis2-nft/Cargo.toml | |
diff ${{ runner.temp }}/$PROJECT_NAME/src/lib.rs examples/cis2-nft/src/lib.rs | |
# The credential-registry template is generated with the `cargo-generate` command | |
# and it is checked that the code is equivalent to the credential-registry smart contract in the example folder. | |
cargo-generate-credential-registry-template-comparison: | |
name: Credential registry smart contract template comparison | |
runs-on: ubuntu-latest | |
strategy: | |
matrix: | |
crates: | |
- templates/credential-registry | |
env: | |
PROJECT_NAME: credential-registry | |
steps: | |
- name: Checkout sources | |
uses: actions/checkout@v3 | |
with: | |
submodules: recursive | |
- name: Run cargo-generate | |
# at least version 0.17.0 is required for the rhai pre-script to work correctly; | |
# the closest available version of `cargo-generate-action` is 0.17.5 | |
uses: cargo-generate/[email protected] | |
with: | |
name: ${{ env.PROJECT_NAME }} | |
template: ${{ matrix.crates }} | |
other: "-d description=Example-credential-registry -d template_type=full" | |
- name: Install toolchain | |
uses: actions-rs/toolchain@v1 | |
with: | |
toolchain: ${{ env.RUST_VERSION }} | |
# Run diff to check if there are any differences between the generated smart contract | |
# and the example smart contract. The template have hardcoded versions of `concordium-std` | |
# which needs to be replaced with the path used in the smart contract example folder. | |
# This CI pipeline uses `root` as the author which needs to be replaced with the author | |
# `Concordium <[email protected]>` of the smart contract examples. | |
- name: Run diff | |
run: | | |
mv $PROJECT_NAME ${{ runner.temp }}/ | |
sed -i "s/root/Concordium <[email protected]>/g" ${{ runner.temp }}/$PROJECT_NAME/Cargo.toml | |
sed -i "s/version = \"8.0\", default-features = false/path = \"..\/..\/concordium-std\", version = \"8.0\", default-features = false/g" ${{ runner.temp }}/$PROJECT_NAME/Cargo.toml | |
sed -i "s/version = \"5.0\", default-features = false/path = \"..\/..\/concordium-cis2\", version = \"5.0\", default-features = false/g" ${{ runner.temp }}/$PROJECT_NAME/Cargo.toml | |
diff ${{ runner.temp }}/$PROJECT_NAME/Cargo.toml examples/credential-registry/Cargo.toml | |
diff ${{ runner.temp }}/$PROJECT_NAME/src/lib.rs examples/credential-registry/src/lib.rs | |
diff ${{ runner.temp }}/$PROJECT_NAME/README.md examples/credential-registry/README.md | |
clippy-cis2: | |
name: Clippy | |
runs-on: ubuntu-latest | |
needs: rustfmt | |
strategy: | |
matrix: | |
target: | |
- wasm32-unknown-unknown | |
- x86_64-unknown-linux-gnu | |
lib-crates: | |
- concordium-cis2/Cargo.toml | |
features: | |
- | |
- u256_amount | |
steps: | |
- name: Checkout sources | |
uses: actions/checkout@v2 | |
with: | |
submodules: recursive | |
- name: Install toolchain with clippy available | |
uses: actions-rs/toolchain@v1 | |
with: | |
profile: minimal | |
toolchain: ${{ env.RUST_VERSION }} | |
target: ${{ matrix.target }} | |
override: true | |
components: clippy | |
- name: Run cargo clippy | |
uses: actions-rs/cargo@v1 | |
with: | |
command: clippy | |
args: --manifest-path ${{ matrix.lib-crates }} --target=${{ matrix.target }} --features=${{ matrix.features }} -- -D warnings | |
clippy: | |
name: Clippy | |
runs-on: ubuntu-latest | |
needs: rustfmt | |
strategy: | |
matrix: | |
target: | |
- wasm32-unknown-unknown | |
- x86_64-unknown-linux-gnu | |
lib-crates: | |
- concordium-std/Cargo.toml | |
features: | |
- | |
- build-schema | |
- concordium-quickcheck | |
steps: | |
- name: Checkout sources | |
uses: actions/checkout@v2 | |
with: | |
submodules: recursive | |
- name: Install toolchain with clippy available | |
uses: actions-rs/toolchain@v1 | |
with: | |
profile: minimal | |
toolchain: ${{ env.RUST_VERSION }} | |
target: ${{ matrix.target }} | |
override: true | |
components: clippy | |
- name: Run cargo clippy | |
uses: actions-rs/cargo@v1 | |
with: | |
command: clippy | |
args: --manifest-path ${{ matrix.lib-crates }} --target=${{ matrix.target }} --features=${{ matrix.features }} -- -D warnings | |
clippy-crypto-primitives: | |
name: Clippy concordium-std with crypto-primitives | |
runs-on: ubuntu-latest | |
needs: rustfmt | |
strategy: | |
matrix: | |
target: | |
- wasm32-unknown-unknown | |
- x86_64-unknown-linux-gnu | |
lib-crates: | |
- concordium-std/Cargo.toml | |
features: | |
- crypto-primitives | |
steps: | |
- name: Checkout sources | |
uses: actions/checkout@v2 | |
with: | |
submodules: recursive | |
- name: Install toolchain with clippy available | |
uses: actions-rs/toolchain@v1 | |
with: | |
profile: minimal | |
toolchain: ${{ env.RUST_VERSION }} | |
target: ${{ matrix.target }} | |
override: true | |
components: clippy | |
- name: Run cargo clippy | |
uses: actions-rs/cargo@v1 | |
with: | |
command: clippy | |
args: --manifest-path ${{ matrix.lib-crates }} --target=${{ matrix.target }} --features=${{ matrix.features }} -- -D warnings | |
clippy-wasm32-only: | |
name: Clippy Wasm32 | |
runs-on: ubuntu-latest | |
needs: rustfmt | |
strategy: | |
matrix: | |
target: | |
- wasm32-unknown-unknown | |
lib-crates: | |
- concordium-std/Cargo.toml | |
features: | |
- wasm-test | |
- wasm-test,build-schema | |
- wasm-test,concordium-quickcheck | |
steps: | |
- name: Checkout sources | |
uses: actions/checkout@v2 | |
with: | |
submodules: recursive | |
- name: Install toolchain with clippy available | |
uses: actions-rs/toolchain@v1 | |
with: | |
profile: minimal | |
toolchain: ${{ env.RUST_VERSION }} | |
target: ${{ matrix.target }} | |
override: true | |
components: clippy | |
- name: Run cargo clippy, but only for wasm32 target | |
uses: actions-rs/cargo@v1 | |
with: | |
command: clippy | |
args: --manifest-path ${{ matrix.lib-crates }} --target=${{ matrix.target }} --features=${{ matrix.features }} -- -D warnings | |
check-std-no-std: | |
name: Build on nightly, | |
runs-on: ubuntu-latest | |
needs: rustfmt | |
strategy: | |
matrix: | |
target: | |
- wasm32-unknown-unknown | |
crates: | |
- concordium-std/Cargo.toml | |
- concordium-cis2/Cargo.toml | |
steps: | |
- name: Checkout sources | |
uses: actions/checkout@v2 | |
with: | |
submodules: recursive | |
- name: Install nightly toolchain with check available | |
uses: actions-rs/toolchain@v1 | |
with: | |
profile: minimal | |
toolchain: nightly | |
target: ${{ matrix.target }} | |
override: true | |
- name: Run cargo check with no-std | |
uses: actions-rs/cargo@v1 | |
with: | |
command: build | |
args: --manifest-path ${{ matrix.crates }} --target=${{ matrix.target }} --no-default-features | |
check-no-std-examples: | |
name: Build on nightly, | |
runs-on: ubuntu-latest | |
needs: rustfmt | |
strategy: | |
matrix: | |
target: | |
- wasm32-unknown-unknown | |
crates: | |
- examples/two-step-transfer/Cargo.toml | |
- examples/cis2-wccd/Cargo.toml | |
- examples/cis2-nft/Cargo.toml | |
- examples/cis2-multi/Cargo.toml | |
- examples/cis2-multi-royalties/Cargo.toml | |
- examples/nametoken/Cargo.toml | |
- examples/account-signature-checks/Cargo.toml | |
features: | |
- | |
- concordium-std/build-schema | |
steps: | |
- name: Checkout sources | |
uses: actions/checkout@v2 | |
with: | |
submodules: recursive | |
- name: Install nightly toolchain with check available | |
uses: actions-rs/toolchain@v1 | |
with: | |
profile: minimal | |
toolchain: nightly | |
target: ${{ matrix.target }} | |
override: true | |
- name: Run cargo check with no-std | |
uses: actions-rs/cargo@v1 | |
with: | |
command: build | |
args: --manifest-path ${{ matrix.crates }} --target=${{ matrix.target }} --no-default-features --features=${{ matrix.features }} --features wee_alloc | |
check-crypto-examples: | |
name: Check crypto examples | |
runs-on: ubuntu-latest | |
needs: [rustfmt, clippy-schema] | |
strategy: | |
matrix: | |
target: | |
- x86_64-unknown-linux-gnu | |
- wasm32-unknown-unknown | |
features: | |
- crypto-primitives | |
crates: | |
- examples/credential-registry/Cargo.toml | |
steps: | |
- name: Checkout sources | |
uses: actions/checkout@v2 | |
with: | |
submodules: recursive | |
- name: Install toolchain | |
uses: actions-rs/toolchain@v1 | |
with: | |
profile: minimal | |
toolchain: ${{ env.RUST_VERSION }} | |
target: ${{ matrix.target }} | |
override: true | |
- name: Run cargo build with crypto-primitives feature | |
uses: actions-rs/cargo@v1 | |
with: | |
command: build | |
args: --manifest-path ${{ matrix.crates }} --target=${{ matrix.target }} --features=${{ matrix.features }} --lib | |
clippy-schema: | |
name: Clippy on examples | |
runs-on: ubuntu-latest | |
needs: rustfmt | |
strategy: | |
matrix: | |
target: | |
- wasm32-unknown-unknown | |
crates: | |
- examples/voting/Cargo.toml | |
- examples/eSealing/Cargo.toml | |
- examples/auction/Cargo.toml | |
- examples/cis2-multi/Cargo.toml | |
- examples/cis2-multi-royalties/Cargo.toml | |
- examples/cis2-nft/Cargo.toml | |
- examples/cis3-nft-sponsored-txs/Cargo.toml | |
- examples/cis2-wccd/Cargo.toml | |
- examples/credential-registry/Cargo.toml | |
- examples/fib/Cargo.toml | |
- examples/icecream/Cargo.toml | |
- examples/memo/Cargo.toml | |
- examples/nametoken/Cargo.toml | |
- examples/piggy-bank/part1/Cargo.toml | |
- examples/piggy-bank/part2/Cargo.toml | |
- examples/proxy/Cargo.toml | |
- examples/recorder/Cargo.toml | |
- examples/signature-verifier/Cargo.toml | |
- examples/transfer-policy-check/Cargo.toml | |
- examples/two-step-transfer/Cargo.toml | |
- examples/smart-contract-upgrade/contract-version1/Cargo.toml | |
- examples/smart-contract-upgrade/contract-version2/Cargo.toml | |
- examples/offchain-transfers/Cargo.toml | |
- examples/account-signature-checks/Cargo.toml | |
steps: | |
- name: Checkout sources | |
uses: actions/checkout@v2 | |
with: | |
submodules: recursive | |
- name: Install toolchain with clippy available | |
uses: actions-rs/toolchain@v1 | |
with: | |
profile: minimal | |
toolchain: ${{ env.RUST_VERSION }} | |
target: ${{ matrix.target }} | |
override: true | |
components: clippy | |
- name: Run cargo clippy with schema and tests | |
uses: actions-rs/cargo@v1 | |
with: | |
command: clippy | |
args: --manifest-path ${{ matrix.crates }} --target=${{ matrix.target }} --features concordium-std/build-schema --features concordium-std/wasm-test -- -D warnings | |
test: | |
name: Test the library | |
runs-on: ubuntu-latest | |
needs: [rustfmt, clippy] | |
strategy: | |
matrix: | |
target: | |
- x86_64-unknown-linux-gnu | |
lib-crates: | |
- concordium-std/Cargo.toml | |
- concordium-cis2/Cargo.toml | |
features: | |
- | |
steps: | |
- name: Checkout sources | |
uses: actions/checkout@v2 | |
with: | |
submodules: recursive | |
- name: Install toolchain | |
uses: actions-rs/toolchain@v1 | |
with: | |
profile: minimal | |
toolchain: ${{ env.RUST_VERSION }} | |
target: ${{ matrix.target }} | |
override: true | |
- name: Run cargo test | |
uses: actions-rs/cargo@v1 | |
with: | |
command: test | |
# Run all tests, including doc tests. | |
args: --manifest-path ${{ matrix.lib-crates }} --target=${{ matrix.target }} --features=${{ matrix.features }} | |
test-cis2-with-256: | |
name: Test the library | |
runs-on: ubuntu-latest | |
needs: [rustfmt, clippy] | |
strategy: | |
matrix: | |
target: | |
- x86_64-unknown-linux-gnu | |
lib-crates: | |
- concordium-cis2/Cargo.toml | |
features: | |
- u256_amount | |
steps: | |
- name: Checkout sources | |
uses: actions/checkout@v2 | |
with: | |
submodules: recursive | |
- name: Install toolchain | |
uses: actions-rs/toolchain@v1 | |
with: | |
profile: minimal | |
toolchain: ${{ env.RUST_VERSION }} | |
target: ${{ matrix.target }} | |
override: true | |
- name: Run cargo test | |
uses: actions-rs/cargo@v1 | |
with: | |
command: test | |
# Run all tests, including doc tests. | |
args: --manifest-path ${{ matrix.lib-crates }} --target=${{ matrix.target }} --features=${{ matrix.features }} | |
test-examples: | |
name: Test examples | |
runs-on: ubuntu-latest | |
needs: [rustfmt, clippy-schema] | |
strategy: | |
matrix: | |
target: | |
- x86_64-unknown-linux-gnu | |
crates: | |
- examples/voting | |
- examples/eSealing | |
- examples/auction | |
- examples/cis2-multi | |
- examples/cis2-multi-royalties | |
- examples/cis2-nft | |
- examples/cis3-nft-sponsored-txs | |
- examples/cis2-wccd | |
- examples/credential-registry | |
- examples/fib | |
- examples/icecream | |
- examples/memo | |
- examples/nametoken | |
- examples/piggy-bank/part1 | |
- examples/piggy-bank/part2 | |
- examples/proxy | |
- examples/recorder | |
- examples/signature-verifier | |
- examples/transfer-policy-check | |
- examples/two-step-transfer | |
- examples/smart-contract-upgrade/contract-version1 | |
- examples/smart-contract-upgrade/contract-version2 | |
- examples/offchain-transfers | |
- examples/account-signature-checks | |
steps: | |
- name: Checkout sources | |
uses: actions/checkout@v2 | |
with: | |
submodules: recursive | |
- name: Install toolchain | |
uses: actions-rs/toolchain@v1 | |
with: | |
profile: minimal | |
toolchain: ${{ env.RUST_VERSION }} | |
target: ${{ matrix.target }} | |
override: true | |
- name: Install wasm target and Cargo Concordium | |
run: rustup target install wasm32-unknown-unknown && cargo install --locked cargo-concordium | |
# The 'smart-contract-upgrade' example has a v1 and v2 contract and the tests in v1 needs the wasm module from v2 for upgrading. | |
- name: Build contract-upgrade version 2 module if needed | |
if: ${{ matrix.crates == 'examples/smart-contract-upgrade/contract-version1' }} | |
run: cargo concordium build --out "examples/smart-contract-upgrade/contract-version2/concordium-out/module.wasm.v1" -- --manifest-path "examples/smart-contract-upgrade/contract-version2/Cargo.toml" | |
- name: Run cargo concordium test | |
run: cargo concordium test --out "${{ matrix.crates }}/concordium-out/module.wasm.v1" -- --manifest-path "${{ matrix.crates }}/Cargo.toml" |