Fork of daniellemaywood.uk/gleam — Wasm codegen work
3.2 kB
98 lines
1# SPDX-License-Identifier: Apache-2.0
2# SPDX-FileCopyrightText: 2023 The Gleam contributors
3
4#/usr/bin/env sh
5
6set -eu
7
8should_succeed() {
9 echo
10 echo Running: "$@"
11 cargo run -- $@ > /dev/null 2>&1
12 if [ $? -ne 0 ]
13 then
14 echo ERROR: Command should have succeeded
15 exit 1
16 else
17 echo Test Passed '(command run successfully)'
18 fi
19}
20should_fail() {
21 echo
22 echo Running: "$@"
23
24 EXIT_CODE=0
25 cargo run -- $@ > /dev/null 2>&1 || EXIT_CODE=$?
26
27 if [ $EXIT_CODE -eq 0 ]
28 then
29 echo ERROR: Command should have failed
30 exit 1
31 else
32 echo Test Passed '(command errored as expected)'
33 fi
34}
35
36# No module
37should_succeed run --target erlang
38should_succeed run --target javascript --runtime nodejs
39should_succeed run --target javascript --runtime deno
40
41# Module from same package
42should_succeed run --module module --target erlang
43should_succeed run --module module --target javascript --runtime nodejs
44should_succeed run --module module --target javascript --runtime deno
45
46# Nested module from same package
47should_succeed run --module module/sub_module --target erlang
48should_succeed run --module module/sub_module --target javascript --runtime nodejs
49should_succeed run --module module/sub_module --target javascript --runtime deno
50
51# Dependency package
52should_succeed run --module gleeunit --target erlang
53should_succeed run --module gleeunit --target javascript --runtime nodejs
54should_succeed run --module gleeunit --target javascript --runtime deno
55
56# Unknown module
57should_fail run --module doesnt_exist
58
59# Unknown module should only belong as a package or in src/ and test/
60should_fail run --module src/doesnt_exist
61
62# No main function
63should_fail run --module module/no_main_function
64
65# Main function with wrong arity
66should_fail run --module module/wrong_arity
67should_fail run --module wrong_test_arity
68should_fail run --module wrong_dev_arity
69
70# Test modules
71should_succeed test --target erlang
72should_succeed test --target javascript --runtime nodejs
73should_succeed test --target javascript --runtime deno
74
75should_succeed run --module module_in_test --target erlang
76should_succeed run --module module_in_test --target javascript --runtime nodejs
77should_succeed run --module module_in_test --target javascript --runtime deno
78
79# Nested module in test
80should_succeed run --module nested/module_in_test --target erlang
81should_succeed run --module nested/module_in_test --target javascript --runtime nodejs
82should_succeed run --module nested/module_in_test --target javascript --runtime deno
83
84
85# Dev modules
86should_succeed dev --target erlang
87should_succeed dev --target javascript --runtime nodejs
88should_succeed dev --target javascript --runtime deno
89
90should_succeed run --module module_in_dev --target erlang
91should_succeed run --module module_in_dev --target javascript --runtime nodejs
92should_succeed run --module module_in_dev --target javascript --runtime deno
93
94# Nested module in dev
95should_succeed run --module nested/module_in_dev --target erlang
96should_succeed run --module nested/module_in_dev --target javascript --runtime nodejs
97should_succeed run --module nested/module_in_dev --target javascript --runtime deno
98