24 lines
1.2 KiB
Bash
Executable file
24 lines
1.2 KiB
Bash
Executable file
#!/bin/sh
|
|
# Two processes get different RandomState keys (real std: OS randomness per process): runs
|
|
# diff/random_state.rs twice under `makepad test`, each from a fresh home, and requires its D lines
|
|
# all true and the two processes' `K` lines (a RandomState's hash of 42) to differ.
|
|
# Run from the workspace root after `cargo build --release -p makepad-run`. TARGET (default target/release).
|
|
T=${TARGET:-target/release}
|
|
here=$(cd "$(dirname "$0")" && pwd)
|
|
root=$(cd "$here/../../.." && pwd)
|
|
export MAKEPAD_RUN_STD=${MAKEPAD_RUN_STD:-$root/libs/relax/compiler/std}
|
|
dir=$(mktemp -d "${TMPDIR:-/tmp}/random_state.XXXXXX") || exit 2
|
|
for i in 1 2; do
|
|
mkdir -p "$dir/h$i"
|
|
MAKEPAD_RUN_HOME=$dir/h$i MAKEPAD_RUN_CACHE_DIR=$dir/h$i/cache MAKEPAD_HIDE_WINDOWS=1 SANDBOX_MUTE=1 \
|
|
"$T/makepad" test "$here/diff/random_state.rs" > "$dir/out$i" 2> "$dir/err$i"
|
|
done
|
|
k1=$(grep '^K ' "$dir/out1"); k2=$(grep '^K ' "$dir/out2")
|
|
bad=$(cat "$dir/out1" "$dir/out2" | grep '^D ' | grep -cv ': true$')
|
|
if [ -n "$k1" ] && [ -n "$k2" ] && [ "$k1" != "$k2" ] && [ "$bad" = 0 ] && [ "$(grep -c '^D ' "$dir/out1")" -gt 0 ]; then
|
|
echo "random_state: ok ($k1 / $k2)"
|
|
rm -rf "$dir"
|
|
else
|
|
echo "random_state: FAIL (K '$k1' / '$k2', $bad false D lines; logs in $dir)"
|
|
exit 1
|
|
fi
|