Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
135 changes: 135 additions & 0 deletions .github/workflows/CI.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,135 @@
name: CI

on:
push:
branches: [ main ]
pull_request:
branches: [ main ]

env:
CARGO_TERM_COLOR: always

defaults:
run:
working-directory: contracts # 👈 all cargo commands run in contracts/

jobs:
format:
name: Format Check
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Install Rust toolchain
uses: dtolnay/rust-toolchain@stable
with:
components: rustfmt
- name: Check formatting
run: cargo fmt --all -- --check

clippy:
name: Clippy Lint
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Install Rust toolchain
uses: dtolnay/rust-toolchain@stable
with:
components: clippy
- name: Cache cargo registry
uses: actions/cache@v4
with:
path: |
~/.cargo/registry
~/.cargo/git
contracts/target
key: ${{ runner.os }}-cargo-${{ hashFiles('contracts/Cargo.lock') }}
restore-keys: |
${{ runner.os }}-cargo-
- name: Run clippy
run: cargo clippy --all-targets --all-features -- -D warnings

test:
name: Test Suite
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Install Rust toolchain
uses: dtolnay/rust-toolchain@stable
- name: Cache cargo registry
uses: actions/cache@v4
with:
path: |
~/.cargo/registry
~/.cargo/git
contracts/target
key: ${{ runner.os }}-cargo-test-${{ hashFiles('contracts/Cargo.lock') }}
restore-keys: |
${{ runner.os }}-cargo-test-
${{ runner.os }}-cargo-
- name: Run tests
run: cargo test --all --verbose

build:
name: Build Check
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Install Rust toolchain
uses: dtolnay/rust-toolchain@stable
- name: Cache cargo registry
uses: actions/cache@v4
with:
path: |
~/.cargo/registry
~/.cargo/git
contracts/target
key: ${{ runner.os }}-cargo-build-${{ hashFiles('contracts/Cargo.lock') }}
restore-keys: |
${{ runner.os }}-cargo-build-
${{ runner.os }}-cargo-
- name: Build all crates
run: cargo build --all --verbose

wasm-check:
name: WASM Compatibility Check
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Install Rust toolchain
uses: dtolnay/rust-toolchain@stable
with:
targets: wasm32-unknown-unknown
- name: Cache cargo registry
uses: actions/cache@v4
with:
path: |
~/.cargo/registry
~/.cargo/git
contracts/target
key: ${{ runner.os }}-cargo-wasm-${{ hashFiles('contracts/Cargo.lock') }}
restore-keys: |
${{ runner.os }}-cargo-wasm-
${{ runner.os }}-cargo-
- name: Build for WASM target
run: cargo build --all --target wasm32-unknown-unknown --verbose

ci-success:
name: CI Success
runs-on: ubuntu-latest
needs: [format, clippy, test, build, wasm-check]
if: always()
defaults:
run:
working-directory: .
steps:
- name: Check all jobs
run: |
if [[ "${{ needs.format.result }}" != "success" || \
"${{ needs.clippy.result }}" != "success" || \
"${{ needs.test.result }}" != "success" || \
"${{ needs.build.result }}" != "success" || \
"${{ needs.wasm-check.result }}" != "success" ]]; then
echo "One or more CI jobs failed"
exit 1
fi
echo "All CI jobs passed successfully"
53 changes: 0 additions & 53 deletions contracts/.github/workflows/CI.yaml

This file was deleted.

8 changes: 4 additions & 4 deletions contracts/assetsup_contract/src/lib.rs
Original file line number Diff line number Diff line change
@@ -1,18 +1,18 @@
#![no_std]
use soroban_sdk::{contract, contracttype, contractimpl, Address, Env};
use soroban_sdk::{Address, Env, contract, contractimpl, contracttype};

#[contracttype]
#[derive(Clone, Debug, Eq, PartialEq)]
pub enum DataKey {
Admin
Admin,
}

#[contract]
pub struct AssetUpContract;

#[contractimpl]
impl AssetUpContract {
pub fn initialize(env: Env, admin: Address){
pub fn initialize(env: Env, admin: Address) {
admin.require_auth();

if env.storage().persistent().has(&DataKey::Admin) {
Expand All @@ -26,4 +26,4 @@ impl AssetUpContract {
}
}

mod tests;
mod tests;
10 changes: 4 additions & 6 deletions contracts/assetsup_contract/src/tests/initialize.rs
Original file line number Diff line number Diff line change
@@ -1,10 +1,9 @@

#![cfg(test)]

extern crate std;

use soroban_sdk::{testutils::{Address as _,}, Address, Env};
use crate::{AssetUpContract, AssetUpContractClient};
use soroban_sdk::{Address, Env, testutils::Address as _};

/// Setup test environment with contract and addresses
pub fn setup_test_environment() -> (Env, AssetUpContractClient<'static>, Address) {
Expand All @@ -13,9 +12,9 @@ pub fn setup_test_environment() -> (Env, AssetUpContractClient<'static>, Address

let contract_id = env.register(AssetUpContract, ());
let client = AssetUpContractClient::new(&env, &contract_id);

let admin = Address::generate(&env);

(env, client, admin)
}

Expand All @@ -28,11 +27,10 @@ fn test_initialize() {
assert_eq!(admin, saved_admin);
}


#[test]
#[should_panic()]
fn test_initialize_panic() {
let (_env, client, admin) = setup_test_environment();
client.initialize(&admin);
client.initialize(&admin);
}
}
2 changes: 1 addition & 1 deletion contracts/assetsup_contract/src/tests/mod.rs
Original file line number Diff line number Diff line change
@@ -1 +1 @@
mod initialize;
mod initialize;