Skip to content

Commit

Permalink
build: add bindings ts tests to ci
Browse files Browse the repository at this point in the history
Add tests from #11 which didn't make it into stellar#973 due to the quickstart image not starting properly in CI.

Adding this directly to stellar#973 was costing too much time. We can troubleshoot quickstart issues here.

Update for latest changes from `soroban config identity` to `soroban
keys`
  • Loading branch information
chadoh committed Jan 12, 2024
1 parent d7b3376 commit dbb8d5f
Show file tree
Hide file tree
Showing 26 changed files with 165 additions and 114 deletions.
43 changes: 43 additions & 0 deletions .github/workflows/bindings-ts.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@

name: bindings typescript

on:
push:
branches: [main, release/**]
pull_request:

jobs:
test:
name: test generated libraries
runs-on: ubuntu-22.04
services:
rpc:
image: stellar/quickstart:soroban-dev@sha256:0ad51035cf7caba2fd99c7c1fad0945df6932be7d5c893e1520ccdef7d6a6ffe
ports:
- 8000:8000
env:
ENABLE_LOGS: true
NETWORK: local
ENABLE_SOROBAN_RPC: true
options: >-
--health-cmd "curl --no-progress-meter --fail-with-body -X POST \"http://localhost:8000/soroban/rpc\" -H 'Content-Type: application/json' -d '{\"jsonrpc\":\"2.0\",\"id\":8675309,\"method\":\"getNetwork\"}' && curl --no-progress-meter \"http://localhost:8000/friendbot\" | grep '\"invalid_field\": \"addr\"'"
--health-interval 10s
--health-timeout 5s
--health-retries 50
steps:
- uses: actions/checkout@v3
- uses: actions/cache@v3
with:
path: |
~/.cargo/bin/
~/.cargo/registry/index/
~/.cargo/registry/cache/
~/.cargo/git/db/
target/
key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }}
- run: rustup update
- run: cargo build
- run: rustup target add wasm32-unknown-unknown
- run: make build-test-wasms
- run: npm ci && npm run test
working-directory: cmd/crates/soroban-spec-typescript/ts-tests

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
"dependencies": {
"@stellar/freighter-api": "1.7.1",
"buffer": "6.0.3",
"stellar-sdk": "11.1.0"
"@stellar/stellar-sdk": "11.2.0"
},
"scripts": {
"build": "node ./scripts/build.mjs"
Expand All @@ -15,6 +15,6 @@
},
"typings": "dist/types/index.d.ts",
"devDependencies": {
"typescript": "5.1.6"
"typescript": "5.3.3"
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,8 @@ import {
nativeToScVal,
xdr,
BASE_FEE,
} from "stellar-sdk";
import type { Memo, MemoType, Transaction } from "stellar-sdk";
} from "@stellar/stellar-sdk";
import type { Memo, MemoType, Transaction } from "@stellar/stellar-sdk";
import { Buffer } from "buffer";
import type {
ClassOptions,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { ContractSpec, Address } from 'stellar-sdk';
import { ContractSpec, Address } from '@stellar/stellar-sdk';
import { Buffer } from "buffer";
import { AssembledTransaction, Ok, Err } from './assembled-tx.js';
import type {
Expand Down
1 change: 0 additions & 1 deletion cmd/crates/soroban-spec-typescript/ts-tests/.nvmrc

This file was deleted.

25 changes: 15 additions & 10 deletions cmd/crates/soroban-spec-typescript/ts-tests/initialize.sh
Original file line number Diff line number Diff line change
Expand Up @@ -16,22 +16,28 @@ echo " Passphrase: \"$SOROBAN_NETWORK_PASSPHRASE\""
NETWORK_STATUS=$(curl -s -X POST "http://localhost:8000/soroban/rpc" -H "Content-Type: application/json" -d '{ "jsonrpc": "2.0", "id": 8675309, "method": "getHealth" }' | sed 's/.*"status":"\(.*\)".*/\1/') || { echo "Make sure you're running local RPC network on localhost:8000" && exit 1; }
echo " Status: $NETWORK_STATUS"

if [[ "$NETWORK_STATUS" != "healthy" ]]; then
echo "Network is not healthy (not running?), exiting"
exit 1
fi

# Print command before executing, from https://stackoverflow.com/a/23342259/249801
# Discussion: https://github.com/stellar/soroban-tools/pull/1034#pullrequestreview-1690667116
exe() { echo"${@/eval/}" ; "$@" ; }

function fund_all() {
exe eval "./soroban config identity fund"
exe eval "./soroban config identity generate alice"
exe eval "./soroban config identity fund alice"
exe eval "./soroban config identity generate bob"
exe eval "./soroban config identity fund bob"
exe eval "./soroban keys generate root"
exe eval "./soroban keys fund root"
exe eval "./soroban keys generate alice"
exe eval "./soroban keys fund alice"
exe eval "./soroban keys generate bob"
exe eval "./soroban keys fund bob"
}
function upload() {
exe eval "(./soroban contract $1 --wasm $2 --ignore-checks) > $3"
exe eval "(./soroban contract $1 --source root --wasm $2 --ignore-checks) > $3"
}
function deploy() {
exe eval "(./soroban contract deploy --wasm-hash $(cat $1) --ignore-checks) > $2"
exe eval "(./soroban contract deploy --source root --wasm-hash $(cat $1) --ignore-checks) > $2"
}
function deploy_all() {
upload deploy ../../../../target/wasm32-unknown-unknown/test-wasms/test_custom_types.wasm contract-id-custom-types.txt
Expand All @@ -42,7 +48,7 @@ function deploy_all() {
deploy contract-token-hash.txt contract-id-token-b.txt
}
function initialize() {
exe eval "./soroban contract invoke --id $(cat $1) -- initialize --admin $(./soroban config identity address) --decimal 0 --name 'Token $2' --symbol '$2'"
exe eval "./soroban contract invoke --source root --id $(cat $1) -- initialize --admin $(./soroban keys address root) --decimal 0 --name 'Token $2' --symbol '$2'"
}
function initialize_all() {
initialize contract-id-token-a.txt A
Expand All @@ -59,14 +65,13 @@ function bind_all() {
}

function mint() {
exe eval "./soroban contract invoke --id $(cat $1) -- mint --amount 2000000 --to $(./soroban config identity address $2)"
exe eval "./soroban contract invoke --source root --id $(cat $1) -- mint --amount 2000000 --to $(./soroban keys address $2)"
}
function mint_all() {
mint contract-id-token-a.txt alice
mint contract-id-token-b.txt bob
}

curl -X POST "http://localhost:8000/soroban/rpc" || { echo "Make sure you're running standalone RPC network on localhost:8000" && exit 1; }
fund_all
deploy_all
initialize_all
Expand Down
Loading

0 comments on commit dbb8d5f

Please sign in to comment.