Migrate C# and Unity tests to the new API #86
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
name: Check Unity Testsuite Bindings | |
on: | |
push: | |
branches: | |
- staging | |
pull_request: | |
jobs: | |
check-testsuite-bindings: | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout repository | |
uses: actions/checkout@v3 | |
- name: Checkout submodule | |
run: | | |
git submodule init | |
git submodule update --recursive | |
cd unity-tests~ | |
git checkout jdetter/circle-game-testsuite | |
# Grab the branch name from the PR description. If it's not found, master will be used instead. | |
- name: Extract SpacetimeDB branch name or PR link from PR description | |
id: extract-branch | |
if: github.event_name == 'pull_request' | |
run: | | |
description=$(curl -s -H "Authorization: token ${{ secrets.GITHUB_TOKEN }}" \ | |
${{ github.event.pull_request.url }} | jq -r '.body') | |
# Check if description contains a branch name or a PR link | |
branch_or_pr=$(echo "$description" | grep -oP '(?<=SpacetimeDB branch name:\s).+') | |
echo "Branch or PR found: $branch_or_pr" | |
if [[ -z "$branch_or_pr" ]]; then | |
branch="master" | |
elif [[ "$branch_or_pr" =~ ^https://github.com/.*/pull/[0-9]+$ ]]; then | |
# If it's a PR link, extract the branch name from the PR | |
pr_number=$(echo "$branch_or_pr" | grep -oP '[0-9]+$') | |
branch=$(curl -s -H "Authorization: token ${{ secrets.GITHUB_TOKEN }}" \ | |
https://api.github.com/repos/clockworklabs/SpacetimeDB/pulls/$pr_number | jq -r '.head.ref') | |
else | |
# It's already a branch name | |
branch="$branch_or_pr" | |
fi | |
echo "branch=$branch" >> $GITHUB_OUTPUT | |
echo "Final branch name: $branch" | |
- name: Replace spacetimedb dependency in Cargo.toml | |
run: | | |
# Get the branch name from the environment variable | |
branch_name="${{ github.head_ref }}" | |
# Make sure we're using the correct bindings when building the module TODO | |
sed -i "s|spacetimedb.*=.*|spacetimedb = \{ path = \"../SpacetimeDB/crates/bindings\" \}|" unity-tests~/server/Cargo.toml | |
cat unity-tests~/server/Cargo.toml | |
- name: Install Rust toolchain | |
run: | | |
curl https://sh.rustup.rs -sSf | sh -s -- -y | |
source $HOME/.cargo/env | |
rustup install stable | |
rustup default stable | |
- name: Cache Cargo target directory | |
uses: actions/cache@v3 | |
with: | |
path: unity-tests~/server/target | |
key: server-target-SpacetimeDBUnityTestsuite-${{ runner.os }}-${{ runner.arch }}-${{ hashFiles('unity-tests~/server/Cargo.lock') }} | |
restore-keys: | | |
server-target-SpacetimeDBUnityTestsuite-${{ runner.os }}-${{ runner.arch }}- | |
server-target-SpacetimeDBUnityTestsuite- | |
- name: Cache Cargo registry | |
uses: actions/cache@v3 | |
with: | |
path: ~/.cargo/registry | |
key: cargo-registry-${{ runner.os }}-${{ hashFiles('unity-tests~/server/Cargo.lock') }} | |
restore-keys: | | |
cargo-registry-${{ runner.os }}- | |
cargo-registry- | |
- name: Cache Cargo index | |
uses: actions/cache@v3 | |
with: | |
path: ~/.cargo/git | |
key: cargo-index-${{ runner.os }}-${{ hashFiles('unity-tests~/server/Cargo.lock') }} | |
restore-keys: | | |
cargo-index-${{ runner.os }}- | |
cargo-index- | |
- name: Install SpacetimeDB CLI from specific branch | |
run: | | |
cd unity-tests~ | |
git clone https://github.com/clockworklabs/SpacetimeDB.git | |
cd SpacetimeDB | |
# Sanitize the branch name by trimming any newlines or spaces | |
branch_name=$(echo "${{ steps.extract-branch.outputs.branch }}" | tr -d '[:space:]') | |
# If the branch name is not found, default to master | |
if [ -z "$branch_name" ]; then | |
branch_name="master" | |
fi | |
git checkout "$branch_name" | |
git submodule init | |
git submodule update --recursive | |
echo "Checked out branch: $branch_name" | |
cargo build --release -p spacetimedb-cli | |
sudo mv target/release/spacetime /usr/bin/spacetime | |
- name: Generate client bindings | |
run: | | |
cd unity-tests~/server | |
bash ./generate.sh -y | |
- name: Check for changes | |
run: | | |
git diff --exit-code unity-tests~/client/Assets/Scripts/autogen | |
continue-on-error: true | |
- name: Fail if there are changes | |
if: ${{ steps.check-for-changes.outcome == 'failure' }} | |
run: | | |
echo "Error: Bindings are dirty. Please generate bindings again and commit them to this branch." | |
exit 1 |