···11+name = "project"
22+version = "1.0.0"
33+description = "A Gleam project"
44+55+[dependencies]
66+gleam_stdlib = ">= 0.58.0 and < 2.0.0"
+9
test/assert/manifest.toml
···11+# This file was generated by Gleam
22+# You typically do not need to edit this file
33+44+packages = [
55+ { name = "gleam_stdlib", version = "0.58.0", build_tools = ["gleam"], requirements = [], otp_app = "gleam_stdlib", source = "hex", outer_checksum = "091F2D2C4A3A4E2047986C47E2C2C9D728A4E068ABB31FDA17B0D347E6248467" },
66+]
77+88+[requirements]
99+gleam_stdlib = { version = ">= 0.58.0 and < 2.0.0" }
+54
test/assert/run_tests.sh
···11+#/usr/bin/env sh
22+33+set -eu
44+55+should_succeed() {
66+ echo
77+ echo Running: "$@"
88+99+ EXIT_CODE=0
1010+ cargo run -- $@ > /dev/null 2>&1 || EXIT_CODE=$?
1111+ if [ $EXIT_CODE -ne 0 ]
1212+ then
1313+ echo ERROR: Command should have succeeded
1414+ exit 1
1515+ else
1616+ echo Test Passed '(command run successfully)'
1717+ fi
1818+}
1919+2020+should_fail() {
2121+ echo
2222+ echo Running: "$@"
2323+2424+ EXIT_CODE=0
2525+ cargo run -- $@ > /dev/null 2>&1 || EXIT_CODE=$?
2626+2727+ if [ $EXIT_CODE -eq 0 ]
2828+ then
2929+ echo ERROR: Command should have failed
3030+ exit 1
3131+ else
3232+ echo Test Passed '(command errored as expected)'
3333+ fi
3434+}
3535+3636+all_targets() {
3737+ $@ --target erlang
3838+ $@ --target javascript --runtime nodejs
3939+ $@ --target javascript --runtime deno
4040+ $@ --target javascript --runtime bun
4141+}
4242+4343+# Ensure the project builds correctly
4444+should_succeed build --target erlang
4545+should_succeed build --target javascript
4646+4747+all_targets should_succeed run --module passing
4848+4949+# Since a single failing `assert` will exit immediately, we must test each
5050+# failing case individually as separate modules.
5151+all_targets should_fail run --module failing1
5252+all_targets should_fail run --module failing2
5353+all_targets should_fail run --module failing3
5454+all_targets should_fail run --module failing4
+4
test/assert/src/failing1.gleam
···11+pub fn main() {
22+ let x = True
33+ assert !x
44+}