This file defines test-related actions for the Baboon project.
Restore all .NET dependencies once to avoid parallel restores.
pushd ./test/cs-stub
dotnet restore BaboonDefinitions/BaboonDefinitions.csproj
dotnet restore BaboonTests/BaboonTests.csproj
popd
pushd ./test/conv-test-cs
dotnet restore ConvTest/ConvTest.csproj
popd
ret success:bool=trueGenerate code with regular (non-wrapped) ADT branch codecs.
dep action.restore-dotnet
BABOON_BIN="${action.build.binary}"
TEST_DIR="./target/test-regular"
# Create temporary test directories
mkdir -p "$TEST_DIR"
rm -rf "$TEST_DIR/cs-stub" "$TEST_DIR/sc-stub" "$TEST_DIR/py-stub" "$TEST_DIR/rs-stub" "$TEST_DIR/ts-stub" "$TEST_DIR/kt-stub" "$TEST_DIR/kt-stub-kmp" "$TEST_DIR/jv-stub" "$TEST_DIR/dt-stub" "$TEST_DIR/sw-stub"
# Copy stub projects, excluding generated and build artifacts
rsync -a --exclude='Generated*' --exclude='generated-*' --exclude='bin' --exclude='obj' --exclude='target' --exclude='project/target' \
./test/cs-stub/ "$TEST_DIR/cs-stub/"
rsync -a --exclude='Generated*' --exclude='generated-*' --exclude='bin' --exclude='obj' --exclude='target' --exclude='project/target' \
./test/sc-stub/ "$TEST_DIR/sc-stub/"
rsync -a --exclude='Generated*' --exclude='generated-*' --exclude='bin' --exclude='obj' --exclude='target' --exclude='project/target' \
./test/py-stub/ "$TEST_DIR/py-stub/"
rsync -a --exclude='Generated*' --exclude='generated-*' --exclude='bin' --exclude='obj' --exclude='target' --exclude='project/target' \
./test/rs-stub/ "$TEST_DIR/rs-stub/"
rsync -a --exclude='Generated*' --exclude='generated-*' --exclude='node_modules' --exclude='dist' \
./test/ts-stub/ "$TEST_DIR/ts-stub/"
rsync -a --exclude='Generated*' --exclude='generated-*' --exclude='build' --exclude='.gradle' \
./test/kt-stub/ "$TEST_DIR/kt-stub/"
rsync -a --exclude='Generated*' --exclude='generated-*' --exclude='build' --exclude='.gradle' \
./test/kt-stub-kmp/ "$TEST_DIR/kt-stub-kmp/"
rsync -a --exclude='Generated*' --exclude='generated-*' --exclude='target' \
./test/jv-stub/ "$TEST_DIR/jv-stub/"
rsync -a --exclude='generated-*' --exclude='.dart_tool' --exclude='pubspec.lock' \
./test/dt-stub/ "$TEST_DIR/dt-stub/"
rsync -a --exclude='.build' --exclude='.swiftpm' \
./test/sw-stub/ "$TEST_DIR/sw-stub/"
$BABOON_BIN \
--model-dir ./baboon-compiler/src/test/resources/baboon/ \
--meta-write-evolution-json baboon-meta.json \
--lock-file=./target/baboon.lock \
:cs \
--output "$TEST_DIR/cs-stub/BaboonDefinitions/Generated" \
--test-output "$TEST_DIR/cs-stub/BaboonTests/GeneratedTests" \
--fixture-output "$TEST_DIR/cs-stub/BaboonTests/GeneratedFixtures" \
--cs-wrapped-adt-branch-codecs=false \
--cs-write-evolution-dict=true \
--generate-ueba-codecs-by-default=true \
--generate-json-codecs-by-default=true \
:scala \
--output "$TEST_DIR/sc-stub/src/main/scala/generated-main" \
--test-output "$TEST_DIR/sc-stub/src/test/scala/generated-tests" \
--fixture-output "$TEST_DIR/sc-stub/src/main/scala/generated-fixtures" \
--sc-write-evolution-dict=true \
--sc-wrapped-adt-branch-codecs=false \
--generate-ueba-codecs-by-default=true \
--generate-json-codecs-by-default=true \
:python \
--output "$TEST_DIR/py-stub/BaboonDefinitions/Generated" \
--test-output "$TEST_DIR/py-stub/BaboonTests/GeneratedTests" \
--fixture-output "$TEST_DIR/py-stub/BaboonTests/GeneratedFixtures" \
--generate-ueba-codecs-by-default=true \
--generate-json-codecs-by-default=true \
--py-write-evolution-dict=true \
--py-wrapped-adt-branch-codecs=false \
:rust \
--output "$TEST_DIR/rs-stub/src" \
--test-output "$TEST_DIR/rs-stub/src" \
--fixture-output "$TEST_DIR/rs-stub/src" \
--rs-write-evolution-dict=true \
--rs-wrapped-adt-branch-codecs=false \
--generate-ueba-codecs-by-default=true \
--generate-json-codecs-by-default=true \
:typescript \
--output "$TEST_DIR/ts-stub/src/generated" \
--test-output "$TEST_DIR/ts-stub/src/baboontests/generatedtests" \
--fixture-output "$TEST_DIR/ts-stub/src/baboontests/generatedfixtures" \
--ts-write-evolution-dict=true \
--ts-wrapped-adt-branch-codecs=false \
--generate-ueba-codecs-by-default=true \
--generate-json-codecs-by-default=true \
:kotlin \
--output "$TEST_DIR/kt-stub/src/main/kotlin/generated-main" \
--test-output "$TEST_DIR/kt-stub/src/test/kotlin/generated-tests" \
--fixture-output "$TEST_DIR/kt-stub/src/main/kotlin/generated-fixtures" \
--kt-write-evolution-dict=true \
--kt-wrapped-adt-branch-codecs=false \
--generate-ueba-codecs-by-default=true \
--generate-json-codecs-by-default=true \
:java \
--output "$TEST_DIR/jv-stub/src/main/java/generated-main" \
--test-output "$TEST_DIR/jv-stub/src/test/java/generated-tests" \
--fixture-output "$TEST_DIR/jv-stub/src/main/java/generated-fixtures" \
--jv-write-evolution-dict=true \
--jv-wrapped-adt-branch-codecs=false \
--generate-ueba-codecs-by-default=true \
--generate-json-codecs-by-default=true \
:dart \
--output "$TEST_DIR/dt-stub/lib" \
--test-output "$TEST_DIR/dt-stub/test" \
--fixture-output "$TEST_DIR/dt-stub/lib" \
--dt-write-evolution-dict=true \
--dt-wrapped-adt-branch-codecs=false \
--generate-ueba-codecs-by-default=true \
--generate-json-codecs-by-default=true \
:swift \
--output "$TEST_DIR/sw-stub/Sources" \
--test-output "$TEST_DIR/sw-stub/Tests/BaboonTests" \
--fixture-output "$TEST_DIR/sw-stub/Sources" \
--sw-write-evolution-dict=true \
--sw-wrapped-adt-branch-codecs=false \
--generate-ueba-codecs-by-default=true \
--generate-json-codecs-by-default=true
# Move Dart runtime files into the baboon_runtime package
mv "$TEST_DIR/dt-stub/lib/baboon_runtime.dart" "$TEST_DIR/dt-stub/packages/baboon_runtime/lib/"
mv "$TEST_DIR/dt-stub/lib/baboon_fixture.dart" "$TEST_DIR/dt-stub/packages/baboon_runtime/lib/"
# Generate KMP Kotlin code (separate invocation with --kt-multiplatform=true)
$BABOON_BIN \
--model-dir ./baboon-compiler/src/test/resources/baboon/ \
--meta-write-evolution-json baboon-meta.json \
--lock-file=./target/baboon.lock \
:kotlin \
--output "$TEST_DIR/kt-stub-kmp/src/main/kotlin/generated-main" \
--test-output "$TEST_DIR/kt-stub-kmp/src/test/kotlin/generated-tests" \
--fixture-output "$TEST_DIR/kt-stub-kmp/src/main/kotlin/generated-fixtures" \
--kt-write-evolution-dict=true \
--kt-wrapped-adt-branch-codecs=false \
--generate-ueba-codecs-by-default=true \
--generate-json-codecs-by-default=true \
--kt-multiplatform=true
ret success:bool=true
ret test_dir:string="$TEST_DIR"Run C# tests with regular ADT codecs (Release configuration).
TEST_DIR="${action.test-gen-regular-adt.test_dir}"
pushd "$TEST_DIR/cs-stub"
dotnet build -c Release
dotnet test -c Release BaboonTests/BaboonTests.csproj
popd
ret success:bool=trueRun Scala tests with regular ADT codecs.
TEST_DIR="${action.test-gen-regular-adt.test_dir}"
pushd "$TEST_DIR/sc-stub"
sbt +clean +test
popd
ret success:bool=trueRun Python tests with regular adt codecs.
dep action.test-cs-regular
TEST_DIR="${action.test-gen-regular-adt.test_dir}"
pushd "$TEST_DIR/py-stub"
python3 -m venv .venv
if [ -f ".venv/Scripts/activate" ]; then source .venv/Scripts/activate; else source .venv/bin/activate; fi
python3 -m pip install -r requirements.txt
python3 -m unittest discover -s BaboonTests/GeneratedTests/testpkg/pkg0
popd
ret success:bool=trueRun Rust tests with regular ADT codecs.
TEST_DIR="${action.test-gen-regular-adt.test_dir}"
pushd "$TEST_DIR/rs-stub"
RUSTFLAGS="-D warnings" cargo test
popd
ret success:bool=trueRun TypeScript tests with regular ADT codecs.
dep action.test-cs-regular
TEST_DIR="${action.test-gen-regular-adt.test_dir}"
pushd "$TEST_DIR/ts-stub"
npm install
npm test
popd
ret success:bool=trueRun Kotlin tests with regular ADT codecs.
TEST_DIR="${action.test-gen-regular-adt.test_dir}"
pushd "$TEST_DIR/kt-stub"
gradle --no-daemon clean test
popd
ret success:bool=trueRun Kotlin Multiplatform tests with regular ADT codecs.
TEST_DIR="${action.test-gen-regular-adt.test_dir}"
pushd "$TEST_DIR/kt-stub-kmp"
gradle --no-daemon clean test
popd
ret success:bool=trueRun Java tests with regular ADT codecs.
TEST_DIR="${action.test-gen-regular-adt.test_dir}"
pushd "$TEST_DIR/jv-stub"
mvn clean test
popd
ret success:bool=trueRun Dart tests with regular ADT codecs.
TEST_DIR="${action.test-gen-regular-adt.test_dir}"
pushd "$TEST_DIR/dt-stub"
dart pub get
dart analyze --fatal-warnings
dart test
popd
ret success:bool=trueRun Swift tests with regular ADT codecs.
if ! command -v swift &> /dev/null; then
if [[ "$(uname)" == "Linux" ]]; then
echo "Swift is required on Linux but was not found in PATH" >&2
exit 1
fi
echo "Swift not found, skipping test"
ret success:bool=true
exit 0
fi
TEST_DIR="${action.test-gen-regular-adt.test_dir}"
if [[ "$(uname)" == "Linux" ]]; then
./scripts/swift-xcode.sh "$TEST_DIR/sw-stub" build
else
./scripts/swift-xcode.sh "$TEST_DIR/sw-stub" test
fi
ret success:bool=trueGenerate code with wrapped ADT branch codecs.
dep action.restore-dotnet
BABOON_BIN="${action.build.binary}"
TEST_DIR="./target/test-wrapped"
# Create temporary test directories
mkdir -p "$TEST_DIR"
rm -rf "$TEST_DIR/cs-stub" "$TEST_DIR/sc-stub" "$TEST_DIR/py-stub" "$TEST_DIR/rs-stub" "$TEST_DIR/ts-stub" "$TEST_DIR/kt-stub" "$TEST_DIR/kt-stub-kmp" "$TEST_DIR/jv-stub" "$TEST_DIR/dt-stub" "$TEST_DIR/sw-stub"
# Copy stub projects, excluding generated and build artifacts
rsync -a --exclude='Generated*' --exclude='generated-*' --exclude='bin' --exclude='obj' --exclude='target' --exclude='project/target' \
./test/cs-stub/ "$TEST_DIR/cs-stub/"
rsync -a --exclude='Generated*' --exclude='generated-*' --exclude='bin' --exclude='obj' --exclude='target' --exclude='project/target' \
./test/sc-stub/ "$TEST_DIR/sc-stub/"
rsync -a --exclude='Generated*' --exclude='generated-*' --exclude='bin' --exclude='obj' --exclude='target' --exclude='project/target' \
./test/py-stub/ "$TEST_DIR/py-stub/"
rsync -a --exclude='Generated*' --exclude='generated-*' --exclude='bin' --exclude='obj' --exclude='target' --exclude='project/target' \
./test/rs-stub/ "$TEST_DIR/rs-stub/"
rsync -a --exclude='Generated*' --exclude='generated-*' --exclude='node_modules' --exclude='dist' \
./test/ts-stub/ "$TEST_DIR/ts-stub/"
rsync -a --exclude='Generated*' --exclude='generated-*' --exclude='build' --exclude='.gradle' \
./test/kt-stub/ "$TEST_DIR/kt-stub/"
rsync -a --exclude='Generated*' --exclude='generated-*' --exclude='build' --exclude='.gradle' \
./test/kt-stub-kmp/ "$TEST_DIR/kt-stub-kmp/"
rsync -a --exclude='Generated*' --exclude='generated-*' --exclude='target' \
./test/jv-stub/ "$TEST_DIR/jv-stub/"
rsync -a --exclude='generated-*' --exclude='.dart_tool' --exclude='pubspec.lock' \
./test/dt-stub/ "$TEST_DIR/dt-stub/"
rsync -a --exclude='.build' --exclude='.swiftpm' \
./test/sw-stub/ "$TEST_DIR/sw-stub/"
$BABOON_BIN \
--model-dir ./baboon-compiler/src/test/resources/baboon/ \
--meta-write-evolution-json baboon-meta.json \
--lock-file=./target/baboon.lock \
:cs \
--output "$TEST_DIR/cs-stub/BaboonDefinitions/Generated" \
--test-output "$TEST_DIR/cs-stub/BaboonTests/GeneratedTests" \
--fixture-output "$TEST_DIR/cs-stub/BaboonTests/GeneratedFixtures" \
--cs-wrapped-adt-branch-codecs=true \
--cs-write-evolution-dict=true \
--generate-ueba-codecs-by-default=true \
--generate-json-codecs-by-default=true \
:scala \
--output "$TEST_DIR/sc-stub/src/main/scala/generated-main" \
--test-output "$TEST_DIR/sc-stub/src/test/scala/generated-tests" \
--fixture-output "$TEST_DIR/sc-stub/src/main/scala/generated-fixtures" \
--sc-write-evolution-dict=true \
--sc-wrapped-adt-branch-codecs=true \
--generate-ueba-codecs-by-default=true \
--generate-json-codecs-by-default=true \
:python \
--output "$TEST_DIR/py-stub/BaboonDefinitions/Generated" \
--test-output "$TEST_DIR/py-stub/BaboonTests/GeneratedTests" \
--fixture-output "$TEST_DIR/py-stub/BaboonTests/GeneratedFixtures" \
--generate-ueba-codecs-by-default=true \
--generate-json-codecs-by-default=true \
--py-write-evolution-dict=true \
--py-wrapped-adt-branch-codecs=true \
:rust \
--output "$TEST_DIR/rs-stub/src" \
--test-output "$TEST_DIR/rs-stub/src" \
--fixture-output "$TEST_DIR/rs-stub/src" \
--rs-write-evolution-dict=true \
--rs-wrapped-adt-branch-codecs=true \
--generate-ueba-codecs-by-default=true \
--generate-json-codecs-by-default=true \
:typescript \
--output "$TEST_DIR/ts-stub/src/generated" \
--test-output "$TEST_DIR/ts-stub/src/baboontests/generatedtests" \
--fixture-output "$TEST_DIR/ts-stub/src/baboontests/generatedfixtures" \
--ts-write-evolution-dict=true \
--ts-wrapped-adt-branch-codecs=true \
--generate-ueba-codecs-by-default=true \
--generate-json-codecs-by-default=true \
:kotlin \
--output "$TEST_DIR/kt-stub/src/main/kotlin/generated-main" \
--test-output "$TEST_DIR/kt-stub/src/test/kotlin/generated-tests" \
--fixture-output "$TEST_DIR/kt-stub/src/main/kotlin/generated-fixtures" \
--kt-write-evolution-dict=true \
--kt-wrapped-adt-branch-codecs=true \
--generate-ueba-codecs-by-default=true \
--generate-json-codecs-by-default=true \
:java \
--output "$TEST_DIR/jv-stub/src/main/java/generated-main" \
--test-output "$TEST_DIR/jv-stub/src/test/java/generated-tests" \
--fixture-output "$TEST_DIR/jv-stub/src/main/java/generated-fixtures" \
--jv-write-evolution-dict=true \
--jv-wrapped-adt-branch-codecs=true \
--generate-ueba-codecs-by-default=true \
--generate-json-codecs-by-default=true \
:dart \
--output "$TEST_DIR/dt-stub/lib" \
--test-output "$TEST_DIR/dt-stub/test" \
--fixture-output "$TEST_DIR/dt-stub/lib" \
--dt-write-evolution-dict=true \
--dt-wrapped-adt-branch-codecs=true \
--generate-ueba-codecs-by-default=true \
--generate-json-codecs-by-default=true \
:swift \
--output "$TEST_DIR/sw-stub/Sources" \
--test-output "$TEST_DIR/sw-stub/Tests/BaboonTests" \
--fixture-output "$TEST_DIR/sw-stub/Sources" \
--sw-write-evolution-dict=true \
--sw-wrapped-adt-branch-codecs=true \
--generate-ueba-codecs-by-default=true \
--generate-json-codecs-by-default=true
# Move Dart runtime files into the baboon_runtime package
mv "$TEST_DIR/dt-stub/lib/baboon_runtime.dart" "$TEST_DIR/dt-stub/packages/baboon_runtime/lib/"
mv "$TEST_DIR/dt-stub/lib/baboon_fixture.dart" "$TEST_DIR/dt-stub/packages/baboon_runtime/lib/"
# Generate KMP Kotlin code (separate invocation with --kt-multiplatform=true)
$BABOON_BIN \
--model-dir ./baboon-compiler/src/test/resources/baboon/ \
--meta-write-evolution-json baboon-meta.json \
--lock-file=./target/baboon.lock \
:kotlin \
--output "$TEST_DIR/kt-stub-kmp/src/main/kotlin/generated-main" \
--test-output "$TEST_DIR/kt-stub-kmp/src/test/kotlin/generated-tests" \
--fixture-output "$TEST_DIR/kt-stub-kmp/src/main/kotlin/generated-fixtures" \
--kt-write-evolution-dict=true \
--kt-wrapped-adt-branch-codecs=true \
--generate-ueba-codecs-by-default=true \
--generate-json-codecs-by-default=true \
--kt-multiplatform=true
ret success:bool=true
ret test_dir:string="$TEST_DIR"Run C# tests with wrapped ADT codecs (Debug configuration).
TEST_DIR="${action.test-gen-wrapped-adt.test_dir}"
pushd "$TEST_DIR/cs-stub"
dotnet build -c Debug
dotnet test -c Debug BaboonTests/BaboonTests.csproj
popd
ret success:bool=trueRun Scala tests with wrapped ADT codecs.
TEST_DIR="${action.test-gen-wrapped-adt.test_dir}"
pushd "$TEST_DIR/sc-stub"
sbt +clean +test
popd
ret success:bool=trueRun Python tests with wrapped ADT codecs
dep action.test-cs-wrapped
TEST_DIR="${action.test-gen-wrapped-adt.test_dir}"
pushd "$TEST_DIR/py-stub"
python3 -m venv .venv
if [ -f ".venv/Scripts/activate" ]; then source .venv/Scripts/activate; else source .venv/bin/activate; fi
python3 -m pip install -r requirements.txt
python3 -m unittest discover -s BaboonTests/GeneratedTests/testpkg/pkg0
popd
ret success:bool=trueRun Rust tests with wrapped ADT codecs.
TEST_DIR="${action.test-gen-wrapped-adt.test_dir}"
pushd "$TEST_DIR/rs-stub"
RUSTFLAGS="-D warnings" cargo test
popd
ret success:bool=trueRun TypeScript tests with wrapped ADT codecs.
dep action.test-cs-wrapped
TEST_DIR="${action.test-gen-wrapped-adt.test_dir}"
pushd "$TEST_DIR/ts-stub"
npm install
npm test
popd
ret success:bool=trueRun Kotlin tests with wrapped ADT codecs.
TEST_DIR="${action.test-gen-wrapped-adt.test_dir}"
pushd "$TEST_DIR/kt-stub"
gradle --no-daemon clean test
popd
ret success:bool=trueRun Kotlin Multiplatform tests with wrapped ADT codecs.
TEST_DIR="${action.test-gen-wrapped-adt.test_dir}"
pushd "$TEST_DIR/kt-stub-kmp"
gradle --no-daemon clean test
popd
ret success:bool=trueRun Java tests with wrapped ADT codecs.
TEST_DIR="${action.test-gen-wrapped-adt.test_dir}"
pushd "$TEST_DIR/jv-stub"
mvn clean test
popd
ret success:bool=trueRun Dart tests with wrapped ADT codecs.
TEST_DIR="${action.test-gen-wrapped-adt.test_dir}"
pushd "$TEST_DIR/dt-stub"
dart pub get
dart analyze --fatal-warnings
dart test
popd
ret success:bool=trueRun Swift tests with wrapped ADT codecs.
if ! command -v swift &> /dev/null; then
if [[ "$(uname)" == "Linux" ]]; then
echo "Swift is required on Linux but was not found in PATH" >&2
exit 1
fi
echo "Swift not found, skipping test"
ret success:bool=true
exit 0
fi
TEST_DIR="${action.test-gen-wrapped-adt.test_dir}"
if [[ "$(uname)" == "Linux" ]]; then
./scripts/swift-xcode.sh "$TEST_DIR/sw-stub" build
else
./scripts/swift-xcode.sh "$TEST_DIR/sw-stub" test
fi
ret success:bool=trueGenerate code for manual test projects.
dep action.restore-dotnet
BABOON_BIN="${action.build.binary}"
rm -rf ./test/conv-test-cs/ConvTest/Generated
$BABOON_BIN \
--model-dir ./test/conv-test \
:cs \
--output ./test/conv-test-cs/ConvTest/Generated \
:scala \
--output ./test/conv-test-sc/src/main/scala/generated-main \
:python \
--output ./test/conv-test-py/Generated \
:rust \
--output ./test/conv-test-rs/src/generated \
:typescript \
--output ./test/conv-test-ts/src/generated \
:kotlin \
--output ./test/conv-test-kt/src/main/kotlin/generated-main \
:java \
--output ./test/conv-test-jv/src/main/java/generated-main \
:dart \
--output ./test/conv-test-dt/lib/generated \
:swift \
--output ./test/conv-test-sw/Generated
# Generate KMP Kotlin conv-test code
$BABOON_BIN \
--model-dir ./test/conv-test \
:kotlin \
--output ./test/conv-test-kt-kmp/src/main/kotlin/generated-main \
--kt-multiplatform=true
# Move Dart runtime files into the baboon_runtime package
mv ./test/conv-test-dt/lib/generated/baboon_runtime.dart ./test/conv-test-dt/packages/baboon_runtime/lib/
ret success:bool=trueGenerate compatibility test files using Java.
dep action.test-gen-manual
pushd ./test/conv-test-jv
mvn compile exec:java
popd
ret success:bool=trueGenerate compatibility test files using Kotlin.
dep action.test-gen-manual
pushd ./test/conv-test-kt
gradle --no-daemon run
popd
ret success:bool=trueGenerate compatibility test files using Kotlin Multiplatform.
dep action.test-gen-manual
pushd ./test/conv-test-kt-kmp
gradle --no-daemon run
popd
ret success:bool=trueGenerate compatibility test files using Python.
dep action.test-gen-manual
pushd ./test/conv-test-py
python3 -m venv .venv
if [ -f ".venv/Scripts/activate" ]; then source .venv/Scripts/activate; else source .venv/bin/activate; fi
python3 -m pip install -r requirements.txt
python3 compat_main.py
popd
ret success:bool=trueGenerate compatibility test files using Scala.
dep action.test-gen-manual
pushd ./test/conv-test-sc
sbt "runMain example.CompatMain"
popd
ret success:bool=trueGenerate compatibility test files using C#.
dep action.test-gen-manual
pushd ./test/conv-test-cs
dotnet run --project ConvTest/ConvTest.csproj
popd
ret success:bool=trueGenerate compatibility test files using Rust.
dep action.test-gen-manual
pushd ./test/conv-test-rs
cargo run
popd
ret success:bool=trueGenerate compatibility test files using TypeScript.
dep action.test-gen-manual
pushd ./test/conv-test-ts
npm install
npm run compat
popd
ret success:bool=trueGenerate compatibility test files using Dart.
dep action.test-gen-manual
pushd ./test/conv-test-dt
dart pub get
dart run bin/compat_main.dart
popd
ret success:bool=trueGenerate compatibility test files using Swift.
dep action.test-gen-manual
if ! command -v swift &> /dev/null; then
if [[ "$(uname)" == "Linux" ]]; then
echo "Swift is required on Linux but was not found in PATH" >&2
exit 1
fi
echo "Swift not found, skipping compat gen"
ret success:bool=true
exit 0
fi
./scripts/swift-xcode.sh ./test/conv-test-sw run CompatMain
ret success:bool=trueRun manual C# compatibility tests.
dep action.test-gen-compat-scala
dep action.test-gen-compat-cs
dep action.test-gen-compat-python
dep action.test-gen-compat-rust
dep action.test-gen-compat-typescript
dep action.test-gen-compat-kotlin
dep action.test-gen-compat-java
dep action.test-gen-compat-dart
dep action.test-gen-compat-swift
pushd ./test/conv-test-cs
dotnet build
dotnet test
popd
ret success:bool=trueRun manual Scala compatibility tests.
dep action.test-gen-compat-scala
dep action.test-gen-compat-cs
dep action.test-gen-compat-rust
dep action.test-gen-compat-typescript
dep action.test-gen-compat-kotlin
dep action.test-gen-compat-java
dep action.test-gen-compat-dart
dep action.test-gen-compat-swift
pushd ./test/conv-test-sc
sbt +clean +test
popd
ret success:bool=trueRun basic SBT tests. Depends on test-cs-regular because RTCodecTest reads JSON/UEBA files produced by C# tests.
dep action.build
dep action.test-cs-regular
sbt +test
ret success:bool=trueRun Python conversion test
dep action.test-gen-compat-python
pushd ./test/conv-test-py
if [ -f ".venv/Scripts/activate" ]; then source .venv/Scripts/activate; else source .venv/bin/activate; fi
python3 -m unittest discover -s .
popd
ret success:bool=trueRun Rust cross-language compatibility tests.
dep action.test-gen-compat-scala
dep action.test-gen-compat-cs
dep action.test-gen-compat-python
dep action.test-gen-compat-rust
dep action.test-gen-compat-typescript
dep action.test-gen-compat-kotlin
dep action.test-gen-compat-java
dep action.test-gen-compat-dart
dep action.test-gen-compat-swift
pushd ./test/conv-test-rs
cargo test
popd
ret success:bool=trueRun TypeScript cross-language compatibility tests.
dep action.test-gen-compat-scala
dep action.test-gen-compat-cs
dep action.test-gen-compat-python
dep action.test-gen-compat-rust
dep action.test-gen-compat-typescript
dep action.test-gen-compat-kotlin
dep action.test-gen-compat-java
dep action.test-gen-compat-dart
dep action.test-gen-compat-swift
pushd ./test/conv-test-ts
npm install
npm test
popd
ret success:bool=trueRun Kotlin cross-language compatibility tests.
dep action.test-gen-compat-scala
dep action.test-gen-compat-cs
dep action.test-gen-compat-python
dep action.test-gen-compat-rust
dep action.test-gen-compat-typescript
dep action.test-gen-compat-kotlin
dep action.test-gen-compat-java
dep action.test-gen-compat-dart
dep action.test-gen-compat-swift
pushd ./test/conv-test-kt
gradle --no-daemon test
popd
ret success:bool=trueRun Kotlin Multiplatform cross-language compatibility tests.
dep action.test-gen-compat-scala
dep action.test-gen-compat-cs
dep action.test-gen-compat-python
dep action.test-gen-compat-rust
dep action.test-gen-compat-typescript
dep action.test-gen-compat-kotlin
dep action.test-gen-compat-kotlin-kmp
dep action.test-gen-compat-java
dep action.test-gen-compat-dart
dep action.test-gen-compat-swift
pushd ./test/conv-test-kt-kmp
gradle --no-daemon test
popd
ret success:bool=trueRun Java cross-language compatibility tests.
dep action.test-gen-compat-scala
dep action.test-gen-compat-cs
dep action.test-gen-compat-python
dep action.test-gen-compat-rust
dep action.test-gen-compat-typescript
dep action.test-gen-compat-kotlin
dep action.test-gen-compat-java
dep action.test-gen-compat-dart
dep action.test-gen-compat-swift
pushd ./test/conv-test-jv
mvn clean test
popd
ret success:bool=trueRun Dart cross-language compatibility tests.
dep action.test-gen-compat-scala
dep action.test-gen-compat-cs
dep action.test-gen-compat-python
dep action.test-gen-compat-rust
dep action.test-gen-compat-typescript
dep action.test-gen-compat-kotlin
dep action.test-gen-compat-java
dep action.test-gen-compat-dart
dep action.test-gen-compat-swift
pushd ./test/conv-test-dt
dart pub get
dart test
popd
ret success:bool=trueRun Swift cross-language compatibility tests.
dep action.test-gen-compat-scala
dep action.test-gen-compat-cs
dep action.test-gen-compat-python
dep action.test-gen-compat-rust
dep action.test-gen-compat-typescript
dep action.test-gen-compat-kotlin
dep action.test-gen-compat-java
dep action.test-gen-compat-dart
dep action.test-gen-compat-swift
if ! command -v swift &> /dev/null; then
if [[ "$(uname)" == "Linux" ]]; then
echo "Swift is required on Linux but was not found in PATH" >&2
exit 1
fi
echo "Swift not found, skipping test"
ret success:bool=true
exit 0
fi
if [[ "$(uname)" == "Linux" ]]; then
echo "Skipping Swift tests on Linux: XCTest module is unavailable in this Swift toolchain"
ret success:bool=true
exit 0
fi
./scripts/swift-xcode.sh ./test/conv-test-sw test
ret success:bool=trueGenerate code for C# wiring tests with built-in Either container.
dep action.restore-dotnet
BABOON_BIN="${action.build.binary}"
TEST_DIR="./target/test-cs-wiring-either"
mkdir -p "$TEST_DIR"
rm -rf "$TEST_DIR/cs-stub"
rsync -a --exclude='Generated*' --exclude='generated-*' --exclude='bin' --exclude='obj' --exclude='target' \
./test/cs-stub/ "$TEST_DIR/cs-stub/"
rsync -a ./test/cs-stub-either-overlay/ "$TEST_DIR/cs-stub/"
$BABOON_BIN \
--model-dir ./baboon-compiler/src/test/resources/baboon/ \
--meta-write-evolution-json baboon-meta.json \
--lock-file=./target/baboon-either.lock \
:cs \
--output "$TEST_DIR/cs-stub/BaboonDefinitions/Generated" \
--test-output "$TEST_DIR/cs-stub/BaboonTests/GeneratedTests" \
--fixture-output "$TEST_DIR/cs-stub/BaboonTests/GeneratedFixtures" \
--cs-wrapped-adt-branch-codecs=false \
--cs-write-evolution-dict=true \
--generate-ueba-codecs-by-default=true \
--generate-json-codecs-by-default=true \
--service-result-no-errors=false \
--service-result-type="Baboon.Runtime.Shared.Either" \
--service-result-pattern="<\$error, \$success>"
ret success:bool=true
ret test_dir:string="$TEST_DIR"Run C# Either wiring tests.
TEST_DIR="${action.test-gen-cs-wiring-either.test_dir}"
pushd "$TEST_DIR/cs-stub"
dotnet build -c Release
dotnet test -c Release BaboonTests/BaboonTests.csproj
popd
ret success:bool=trueGenerate code for C# wiring tests with custom Result container (reversed param order).
dep action.restore-dotnet
BABOON_BIN="${action.build.binary}"
TEST_DIR="./target/test-cs-wiring-result"
mkdir -p "$TEST_DIR"
rm -rf "$TEST_DIR/cs-stub"
rsync -a --exclude='Generated*' --exclude='generated-*' --exclude='bin' --exclude='obj' --exclude='target' \
./test/cs-stub/ "$TEST_DIR/cs-stub/"
rsync -a ./test/cs-stub-result-overlay/ "$TEST_DIR/cs-stub/"
$BABOON_BIN \
--model-dir ./baboon-compiler/src/test/resources/baboon/ \
--meta-write-evolution-json baboon-meta.json \
--lock-file=./target/baboon-result.lock \
:cs \
--output "$TEST_DIR/cs-stub/BaboonDefinitions/Generated" \
--test-output "$TEST_DIR/cs-stub/BaboonTests/GeneratedTests" \
--fixture-output "$TEST_DIR/cs-stub/BaboonTests/GeneratedFixtures" \
--cs-wrapped-adt-branch-codecs=false \
--cs-write-evolution-dict=true \
--generate-ueba-codecs-by-default=true \
--generate-json-codecs-by-default=true \
--service-result-no-errors=false \
--service-result-type="CustomContainers.Result" \
--service-result-pattern="<\$success, \$error>"
ret success:bool=true
ret test_dir:string="$TEST_DIR"Run C# Result wiring tests.
TEST_DIR="${action.test-gen-cs-wiring-result.test_dir}"
pushd "$TEST_DIR/cs-stub"
dotnet build -c Release
dotnet test -c Release BaboonTests/BaboonTests.csproj
popd
ret success:bool=trueGenerate code for C# wiring tests with single-param Outcome container.
dep action.restore-dotnet
BABOON_BIN="${action.build.binary}"
TEST_DIR="./target/test-cs-wiring-outcome"
mkdir -p "$TEST_DIR"
rm -rf "$TEST_DIR/cs-stub"
rsync -a --exclude='Generated*' --exclude='generated-*' --exclude='bin' --exclude='obj' --exclude='target' \
./test/cs-stub/ "$TEST_DIR/cs-stub/"
rsync -a ./test/cs-stub-outcome-overlay/ "$TEST_DIR/cs-stub/"
$BABOON_BIN \
--model-dir ./baboon-compiler/src/test/resources/baboon/ \
--meta-write-evolution-json baboon-meta.json \
--lock-file=./target/baboon-outcome.lock \
:cs \
--output "$TEST_DIR/cs-stub/BaboonDefinitions/Generated" \
--test-output "$TEST_DIR/cs-stub/BaboonTests/GeneratedTests" \
--fixture-output "$TEST_DIR/cs-stub/BaboonTests/GeneratedFixtures" \
--cs-wrapped-adt-branch-codecs=false \
--cs-write-evolution-dict=true \
--generate-ueba-codecs-by-default=true \
--generate-json-codecs-by-default=true \
--service-result-no-errors=false \
--service-result-type="CustomContainers.Outcome" \
--service-result-pattern="<\$success>"
ret success:bool=true
ret test_dir:string="$TEST_DIR"Run C# Outcome wiring tests.
TEST_DIR="${action.test-gen-cs-wiring-outcome.test_dir}"
pushd "$TEST_DIR/cs-stub"
dotnet build -c Release
dotnet test -c Release BaboonTests/BaboonTests.csproj
popd
ret success:bool=trueGenerate code for Scala wiring tests with built-in Either container.
BABOON_BIN="${action.build.binary}"
TEST_DIR="./target/test-sc-wiring-either"
mkdir -p "$TEST_DIR"
rm -rf "$TEST_DIR/sc-stub"
rsync -a --exclude='Generated*' --exclude='generated-*' --exclude='bin' --exclude='obj' --exclude='target' --exclude='project/target' \
./test/sc-stub/ "$TEST_DIR/sc-stub/"
rsync -a ./test/sc-stub-either-overlay/ "$TEST_DIR/sc-stub/"
$BABOON_BIN \
--model-dir ./baboon-compiler/src/test/resources/baboon/ \
--meta-write-evolution-json baboon-meta.json \
--lock-file=./target/baboon-sc-either.lock \
:scala \
--output "$TEST_DIR/sc-stub/src/main/scala/generated-main" \
--test-output "$TEST_DIR/sc-stub/src/test/scala/generated-tests" \
--fixture-output "$TEST_DIR/sc-stub/src/main/scala/generated-fixtures" \
--sc-write-evolution-dict=true \
--sc-wrapped-adt-branch-codecs=false \
--generate-ueba-codecs-by-default=true \
--generate-json-codecs-by-default=true \
--service-result-no-errors=false \
--service-result-type="Either" \
--service-result-pattern="[\$error, \$success]"
ret success:bool=true
ret test_dir:string="$TEST_DIR"Run Scala Either wiring tests.
TEST_DIR="${action.test-gen-sc-wiring-either.test_dir}"
pushd "$TEST_DIR/sc-stub"
sbt +clean +test
popd
ret success:bool=trueGenerate code for Scala wiring tests with custom Result container (reversed param order).
BABOON_BIN="${action.build.binary}"
TEST_DIR="./target/test-sc-wiring-result"
mkdir -p "$TEST_DIR"
rm -rf "$TEST_DIR/sc-stub"
rsync -a --exclude='Generated*' --exclude='generated-*' --exclude='bin' --exclude='obj' --exclude='target' --exclude='project/target' \
./test/sc-stub/ "$TEST_DIR/sc-stub/"
rsync -a ./test/sc-stub-result-overlay/ "$TEST_DIR/sc-stub/"
$BABOON_BIN \
--model-dir ./baboon-compiler/src/test/resources/baboon/ \
--meta-write-evolution-json baboon-meta.json \
--lock-file=./target/baboon-sc-result.lock \
:scala \
--output "$TEST_DIR/sc-stub/src/main/scala/generated-main" \
--test-output "$TEST_DIR/sc-stub/src/test/scala/generated-tests" \
--fixture-output "$TEST_DIR/sc-stub/src/main/scala/generated-fixtures" \
--sc-write-evolution-dict=true \
--sc-wrapped-adt-branch-codecs=false \
--generate-ueba-codecs-by-default=true \
--generate-json-codecs-by-default=true \
--service-result-no-errors=false \
--service-result-type="containers.Result" \
--service-result-pattern="[\$success, \$error]"
ret success:bool=true
ret test_dir:string="$TEST_DIR"Run Scala Result wiring tests.
TEST_DIR="${action.test-gen-sc-wiring-result.test_dir}"
pushd "$TEST_DIR/sc-stub"
sbt +clean +test
popd
ret success:bool=trueGenerate code for Scala wiring tests with single-param Outcome container.
BABOON_BIN="${action.build.binary}"
TEST_DIR="./target/test-sc-wiring-outcome"
mkdir -p "$TEST_DIR"
rm -rf "$TEST_DIR/sc-stub"
rsync -a --exclude='Generated*' --exclude='generated-*' --exclude='bin' --exclude='obj' --exclude='target' --exclude='project/target' \
./test/sc-stub/ "$TEST_DIR/sc-stub/"
rsync -a ./test/sc-stub-outcome-overlay/ "$TEST_DIR/sc-stub/"
$BABOON_BIN \
--model-dir ./baboon-compiler/src/test/resources/baboon/ \
--meta-write-evolution-json baboon-meta.json \
--lock-file=./target/baboon-sc-outcome.lock \
:scala \
--output "$TEST_DIR/sc-stub/src/main/scala/generated-main" \
--test-output "$TEST_DIR/sc-stub/src/test/scala/generated-tests" \
--fixture-output "$TEST_DIR/sc-stub/src/main/scala/generated-fixtures" \
--sc-write-evolution-dict=true \
--sc-wrapped-adt-branch-codecs=false \
--generate-ueba-codecs-by-default=true \
--generate-json-codecs-by-default=true \
--service-result-no-errors=false \
--service-result-type="containers.Outcome" \
--service-result-pattern="[\$success]"
ret success:bool=true
ret test_dir:string="$TEST_DIR"Run Scala Outcome wiring tests.
TEST_DIR="${action.test-gen-sc-wiring-outcome.test_dir}"
pushd "$TEST_DIR/sc-stub"
sbt +clean +test
popd
ret success:bool=trueGenerate code for Scala wiring tests with HKT (higher-kinded type parameter F[+, +]).
BABOON_BIN="${action.build.binary}"
TEST_DIR="./target/test-sc-wiring-hkt"
mkdir -p "$TEST_DIR"
rm -rf "$TEST_DIR/sc-stub"
rsync -a --exclude='Generated*' --exclude='generated-*' --exclude='bin' --exclude='obj' --exclude='target' --exclude='project/target' \
./test/sc-stub/ "$TEST_DIR/sc-stub/"
rsync -a ./test/sc-stub-hkt-overlay/ "$TEST_DIR/sc-stub/"
$BABOON_BIN \
--model-dir ./baboon-compiler/src/test/resources/baboon/ \
--meta-write-evolution-json baboon-meta.json \
--lock-file=./target/baboon-sc-hkt.lock \
:scala \
--output "$TEST_DIR/sc-stub/src/main/scala/generated-main" \
--test-output "$TEST_DIR/sc-stub/src/test/scala/generated-tests" \
--fixture-output "$TEST_DIR/sc-stub/src/main/scala/generated-fixtures" \
--sc-write-evolution-dict=true \
--sc-wrapped-adt-branch-codecs=false \
--generate-ueba-codecs-by-default=true \
--generate-json-codecs-by-default=true \
--service-result-no-errors=false \
--service-result-type="custom.MyBi" \
--service-result-pattern="[\$error, \$success]" \
--service-result-hkt=true \
--service-result-hkt-name="F" \
--service-result-hkt-signature="[+_, +_]"
ret success:bool=true
ret test_dir:string="$TEST_DIR"Run Scala HKT wiring tests.
TEST_DIR="${action.test-gen-sc-wiring-hkt.test_dir}"
pushd "$TEST_DIR/sc-stub"
sbt +clean +test
popd
ret success:bool=trueGenerate code for TypeScript wiring tests with built-in BaboonEither container.
BABOON_BIN="${action.build.binary}"
TEST_DIR="./target/test-ts-wiring-either"
mkdir -p "$TEST_DIR"
rm -rf "$TEST_DIR/ts-stub"
rsync -a --exclude='Generated*' --exclude='generated-*' --exclude='node_modules' --exclude='dist' \
./test/ts-stub/ "$TEST_DIR/ts-stub/"
$BABOON_BIN \
--model-dir ./baboon-compiler/src/test/resources/baboon/ \
--meta-write-evolution-json baboon-meta.json \
--lock-file=./target/baboon-ts-either.lock \
:typescript \
--output "$TEST_DIR/ts-stub/src/baboondefinitions/generated" \
--test-output "$TEST_DIR/ts-stub/src/baboontests/generatedtests" \
--fixture-output "$TEST_DIR/ts-stub/src/baboontests/generatedfixtures" \
--ts-write-evolution-dict=true \
--ts-wrapped-adt-branch-codecs=false \
--generate-ueba-codecs-by-default=true \
--generate-json-codecs-by-default=true \
--service-result-no-errors=false \
--service-result-type="BaboonEither" \
'--service-result-pattern=<$error, $success>'
rsync -a ./test/ts-stub-either-overlay/ "$TEST_DIR/ts-stub/"
ret success:bool=true
ret test_dir:string="$TEST_DIR"Run TypeScript BaboonEither wiring tests.
TEST_DIR="${action.test-gen-ts-wiring-either.test_dir}"
pushd "$TEST_DIR/ts-stub"
npm install
npx vitest run src/wiring.test.ts
popd
ret success:bool=trueGenerate code for TypeScript wiring tests with custom Result container (reversed param order).
BABOON_BIN="${action.build.binary}"
TEST_DIR="./target/test-ts-wiring-result"
mkdir -p "$TEST_DIR"
rm -rf "$TEST_DIR/ts-stub"
rsync -a --exclude='Generated*' --exclude='generated-*' --exclude='node_modules' --exclude='dist' \
./test/ts-stub/ "$TEST_DIR/ts-stub/"
$BABOON_BIN \
--model-dir ./baboon-compiler/src/test/resources/baboon/ \
--meta-write-evolution-json baboon-meta.json \
--lock-file=./target/baboon-ts-result.lock \
:typescript \
--output "$TEST_DIR/ts-stub/src/baboondefinitions/generated" \
--test-output "$TEST_DIR/ts-stub/src/baboontests/generatedtests" \
--fixture-output "$TEST_DIR/ts-stub/src/baboontests/generatedfixtures" \
--ts-write-evolution-dict=true \
--ts-wrapped-adt-branch-codecs=false \
--generate-ueba-codecs-by-default=true \
--generate-json-codecs-by-default=true \
--service-result-no-errors=false \
--service-result-type="Result" \
'--service-result-pattern=<$success, $error>'
rsync -a ./test/ts-stub-result-overlay/ "$TEST_DIR/ts-stub/"
ret success:bool=true
ret test_dir:string="$TEST_DIR"Run TypeScript Result wiring tests.
TEST_DIR="${action.test-gen-ts-wiring-result.test_dir}"
pushd "$TEST_DIR/ts-stub"
npm install
npx vitest run src/wiring.test.ts
popd
ret success:bool=trueGenerate code for TypeScript wiring tests with single-param Outcome container.
BABOON_BIN="${action.build.binary}"
TEST_DIR="./target/test-ts-wiring-outcome"
mkdir -p "$TEST_DIR"
rm -rf "$TEST_DIR/ts-stub"
rsync -a --exclude='Generated*' --exclude='generated-*' --exclude='node_modules' --exclude='dist' \
./test/ts-stub/ "$TEST_DIR/ts-stub/"
$BABOON_BIN \
--model-dir ./baboon-compiler/src/test/resources/baboon/ \
--meta-write-evolution-json baboon-meta.json \
--lock-file=./target/baboon-ts-outcome.lock \
:typescript \
--output "$TEST_DIR/ts-stub/src/baboondefinitions/generated" \
--test-output "$TEST_DIR/ts-stub/src/baboontests/generatedtests" \
--fixture-output "$TEST_DIR/ts-stub/src/baboontests/generatedfixtures" \
--ts-write-evolution-dict=true \
--ts-wrapped-adt-branch-codecs=false \
--generate-ueba-codecs-by-default=true \
--generate-json-codecs-by-default=true \
--service-result-no-errors=false \
--service-result-type="Outcome" \
'--service-result-pattern=<$success>'
rsync -a ./test/ts-stub-outcome-overlay/ "$TEST_DIR/ts-stub/"
ret success:bool=true
ret test_dir:string="$TEST_DIR"Run TypeScript Outcome wiring tests.
TEST_DIR="${action.test-gen-ts-wiring-outcome.test_dir}"
pushd "$TEST_DIR/ts-stub"
npm install
npx vitest run src/wiring.test.ts
popd
ret success:bool=trueGenerate code for Rust wiring tests with built-in Result container.
BABOON_BIN="${action.build.binary}"
TEST_DIR="./target/test-rs-wiring-either"
mkdir -p "$TEST_DIR"
rm -rf "$TEST_DIR/rs-stub"
rsync -a --exclude='Generated*' --exclude='generated-*' --exclude='bin' --exclude='obj' --exclude='target' --exclude='project/target' \
./test/rs-stub/ "$TEST_DIR/rs-stub/"
$BABOON_BIN \
--model-dir ./baboon-compiler/src/test/resources/baboon/ \
--meta-write-evolution-json baboon-meta.json \
--lock-file=./target/baboon-rs-either.lock \
:rust \
--output "$TEST_DIR/rs-stub/src" \
--test-output "$TEST_DIR/rs-stub/src" \
--fixture-output "$TEST_DIR/rs-stub/src" \
--rs-write-evolution-dict=true \
--rs-wrapped-adt-branch-codecs=false \
--generate-ueba-codecs-by-default=true \
--generate-json-codecs-by-default=true \
--service-result-no-errors=false \
--service-result-type="Result" \
--service-result-pattern="<\$success, \$error>"
rsync -a ./test/rs-stub-either-overlay/ "$TEST_DIR/rs-stub/"
ret success:bool=true
ret test_dir:string="$TEST_DIR"Run Rust Either wiring tests.
TEST_DIR="${action.test-gen-rs-wiring-either.test_dir}"
pushd "$TEST_DIR/rs-stub"
cargo test
popd
ret success:bool=trueGenerate code for Rust wiring tests with custom MyResult container (reversed param order).
BABOON_BIN="${action.build.binary}"
TEST_DIR="./target/test-rs-wiring-result"
mkdir -p "$TEST_DIR"
rm -rf "$TEST_DIR/rs-stub"
rsync -a --exclude='Generated*' --exclude='generated-*' --exclude='bin' --exclude='obj' --exclude='target' --exclude='project/target' \
./test/rs-stub/ "$TEST_DIR/rs-stub/"
$BABOON_BIN \
--model-dir ./baboon-compiler/src/test/resources/baboon/ \
--meta-write-evolution-json baboon-meta.json \
--lock-file=./target/baboon-rs-result.lock \
:rust \
--output "$TEST_DIR/rs-stub/src" \
--test-output "$TEST_DIR/rs-stub/src" \
--fixture-output "$TEST_DIR/rs-stub/src" \
--rs-write-evolution-dict=true \
--rs-wrapped-adt-branch-codecs=false \
--generate-ueba-codecs-by-default=true \
--generate-json-codecs-by-default=true \
--service-result-no-errors=false \
--service-result-type="crate::custom_containers::MyResult" \
--service-result-pattern="<\$success, \$error>"
rsync -a ./test/rs-stub-result-overlay/ "$TEST_DIR/rs-stub/"
echo 'pub mod custom_containers;' >> "$TEST_DIR/rs-stub/src/lib.rs"
ret success:bool=true
ret test_dir:string="$TEST_DIR"Run Rust MyResult wiring tests.
TEST_DIR="${action.test-gen-rs-wiring-result.test_dir}"
pushd "$TEST_DIR/rs-stub"
cargo test
popd
ret success:bool=trueGenerate code for Rust wiring tests with single-param Outcome container.
BABOON_BIN="${action.build.binary}"
TEST_DIR="./target/test-rs-wiring-outcome"
mkdir -p "$TEST_DIR"
rm -rf "$TEST_DIR/rs-stub"
rsync -a --exclude='Generated*' --exclude='generated-*' --exclude='bin' --exclude='obj' --exclude='target' --exclude='project/target' \
./test/rs-stub/ "$TEST_DIR/rs-stub/"
$BABOON_BIN \
--model-dir ./baboon-compiler/src/test/resources/baboon/ \
--meta-write-evolution-json baboon-meta.json \
--lock-file=./target/baboon-rs-outcome.lock \
:rust \
--output "$TEST_DIR/rs-stub/src" \
--test-output "$TEST_DIR/rs-stub/src" \
--fixture-output "$TEST_DIR/rs-stub/src" \
--rs-write-evolution-dict=true \
--rs-wrapped-adt-branch-codecs=false \
--generate-ueba-codecs-by-default=true \
--generate-json-codecs-by-default=true \
--service-result-no-errors=false \
--service-result-type="crate::custom_containers::Outcome" \
--service-result-pattern="<\$success>"
rsync -a ./test/rs-stub-outcome-overlay/ "$TEST_DIR/rs-stub/"
echo 'pub mod custom_containers;' >> "$TEST_DIR/rs-stub/src/lib.rs"
ret success:bool=true
ret test_dir:string="$TEST_DIR"Run Rust Outcome wiring tests.
TEST_DIR="${action.test-gen-rs-wiring-outcome.test_dir}"
pushd "$TEST_DIR/rs-stub"
cargo test
popd
ret success:bool=trueGenerate code for Python wiring tests with built-in BaboonEither container.
BABOON_BIN="${action.build.binary}"
TEST_DIR="./target/test-py-wiring-either"
mkdir -p "$TEST_DIR"
rm -rf "$TEST_DIR/py-stub"
rsync -a --exclude='Generated*' --exclude='generated-*' --exclude='bin' --exclude='obj' --exclude='target' --exclude='project/target' --exclude='.venv' \
./test/py-stub/ "$TEST_DIR/py-stub/"
rsync -a ./test/py-stub-either-overlay/ "$TEST_DIR/py-stub/"
$BABOON_BIN \
--model-dir ./baboon-compiler/src/test/resources/baboon/ \
--meta-write-evolution-json baboon-meta.json \
--lock-file=./target/baboon-py-either.lock \
:python \
--output "$TEST_DIR/py-stub/BaboonDefinitions/Generated" \
--test-output "$TEST_DIR/py-stub/BaboonTests/GeneratedTests" \
--fixture-output "$TEST_DIR/py-stub/BaboonTests/GeneratedFixtures" \
--generate-ueba-codecs-by-default=true \
--generate-json-codecs-by-default=true \
--py-write-evolution-dict=true \
--py-wrapped-adt-branch-codecs=false \
--service-result-no-errors=false \
--service-result-type="BaboonEither" \
'--service-result-pattern=[$error, $success]'
ret success:bool=true
ret test_dir:string="$TEST_DIR"Run Python BaboonEither wiring tests.
TEST_DIR="${action.test-gen-py-wiring-either.test_dir}"
pushd "$TEST_DIR/py-stub"
python3 -m venv .venv
if [ -f ".venv/Scripts/activate" ]; then source .venv/Scripts/activate; else source .venv/bin/activate; fi
python3 -m pip install -r requirements.txt
python3 -m unittest discover -s BaboonTests -p "WiringTests.py"
popd
ret success:bool=trueGenerate code for Python wiring tests with custom Result container (reversed param order).
BABOON_BIN="${action.build.binary}"
TEST_DIR="./target/test-py-wiring-result"
mkdir -p "$TEST_DIR"
rm -rf "$TEST_DIR/py-stub"
rsync -a --exclude='Generated*' --exclude='generated-*' --exclude='bin' --exclude='obj' --exclude='target' --exclude='project/target' --exclude='.venv' \
./test/py-stub/ "$TEST_DIR/py-stub/"
rsync -a ./test/py-stub-result-overlay/ "$TEST_DIR/py-stub/"
$BABOON_BIN \
--model-dir ./baboon-compiler/src/test/resources/baboon/ \
--meta-write-evolution-json baboon-meta.json \
--lock-file=./target/baboon-py-result.lock \
:python \
--output "$TEST_DIR/py-stub/BaboonDefinitions/Generated" \
--test-output "$TEST_DIR/py-stub/BaboonTests/GeneratedTests" \
--fixture-output "$TEST_DIR/py-stub/BaboonTests/GeneratedFixtures" \
--generate-ueba-codecs-by-default=true \
--generate-json-codecs-by-default=true \
--py-write-evolution-dict=true \
--py-wrapped-adt-branch-codecs=false \
--service-result-no-errors=false \
--service-result-type="Result" \
'--service-result-pattern=[$success, $error]'
ret success:bool=true
ret test_dir:string="$TEST_DIR"Run Python Result wiring tests.
TEST_DIR="${action.test-gen-py-wiring-result.test_dir}"
pushd "$TEST_DIR/py-stub"
python3 -m venv .venv
if [ -f ".venv/Scripts/activate" ]; then source .venv/Scripts/activate; else source .venv/bin/activate; fi
python3 -m pip install -r requirements.txt
python3 -m unittest discover -s BaboonTests -p "WiringTests.py"
popd
ret success:bool=trueGenerate code for Python wiring tests with single-param Outcome container.
BABOON_BIN="${action.build.binary}"
TEST_DIR="./target/test-py-wiring-outcome"
mkdir -p "$TEST_DIR"
rm -rf "$TEST_DIR/py-stub"
rsync -a --exclude='Generated*' --exclude='generated-*' --exclude='bin' --exclude='obj' --exclude='target' --exclude='project/target' --exclude='.venv' \
./test/py-stub/ "$TEST_DIR/py-stub/"
rsync -a ./test/py-stub-outcome-overlay/ "$TEST_DIR/py-stub/"
$BABOON_BIN \
--model-dir ./baboon-compiler/src/test/resources/baboon/ \
--meta-write-evolution-json baboon-meta.json \
--lock-file=./target/baboon-py-outcome.lock \
:python \
--output "$TEST_DIR/py-stub/BaboonDefinitions/Generated" \
--test-output "$TEST_DIR/py-stub/BaboonTests/GeneratedTests" \
--fixture-output "$TEST_DIR/py-stub/BaboonTests/GeneratedFixtures" \
--generate-ueba-codecs-by-default=true \
--generate-json-codecs-by-default=true \
--py-write-evolution-dict=true \
--py-wrapped-adt-branch-codecs=false \
--service-result-no-errors=false \
--service-result-type="Outcome" \
'--service-result-pattern=[$success]'
ret success:bool=true
ret test_dir:string="$TEST_DIR"Run Python Outcome wiring tests.
TEST_DIR="${action.test-gen-py-wiring-outcome.test_dir}"
pushd "$TEST_DIR/py-stub"
python3 -m venv .venv
if [ -f ".venv/Scripts/activate" ]; then source .venv/Scripts/activate; else source .venv/bin/activate; fi
python3 -m pip install -r requirements.txt
python3 -m unittest discover -s BaboonTests -p "WiringTests.py"
popd
ret success:bool=trueRun complete test suite (orchestrator action).
dep action.test-sbt-basic
dep action.test-cs-regular
dep action.test-scala-regular
dep action.test-python-regular
dep action.test-rust-regular
dep action.test-typescript-regular
dep action.test-kotlin-regular
dep action.test-kotlin-kmp-regular
dep action.test-java-regular
dep action.test-dart-regular
dep action.test-swift-regular
dep action.test-cs-wrapped
dep action.test-scala-wrapped
dep action.test-python-wrapped
dep action.test-rust-wrapped
dep action.test-typescript-wrapped
dep action.test-kotlin-wrapped
dep action.test-kotlin-kmp-wrapped
dep action.test-java-wrapped
dep action.test-dart-wrapped
dep action.test-swift-wrapped
dep action.test-manual-cs
dep action.test-manual-scala
dep action.test-manual-rust
dep action.test-manual-typescript
dep action.test-manual-kotlin
dep action.test-manual-kotlin-kmp
dep action.test-manual-java
dep action.test-manual-dart
dep action.test-manual-swift
dep action.test-cs-wiring-either
dep action.test-cs-wiring-result
dep action.test-cs-wiring-outcome
dep action.test-sc-wiring-either
dep action.test-sc-wiring-result
dep action.test-sc-wiring-outcome
dep action.test-sc-wiring-hkt
dep action.test-ts-wiring-either
dep action.test-ts-wiring-result
dep action.test-ts-wiring-outcome
dep action.test-rs-wiring-either
dep action.test-rs-wiring-result
dep action.test-rs-wiring-outcome
dep action.test-py-wiring-either
dep action.test-py-wiring-result
dep action.test-py-wiring-outcome
ret success:bool=trueRun cross-language serialization acceptance tests (full cartesian product).
dep action.build
BABOON_BIN="${action.build.binary}"
TARGET_DIR="./target/acceptance"
python3 test/acceptance/run_acceptance.py \
--baboon "$BABOON_BIN" \
--target "$TARGET_DIR" \
--parallelism "$(nproc)"
ret success:bool=trueTest editor extension grammars against real baboon files. Requires tree-sitter, node, and a C compiler on PATH.
bash test/editors/test-tree-sitter.sh .
ret success:bool=true