Skip to content

Commit d3a29df

Browse files
Add script to regenerate regression tests (#2465)
* WIP: generate evm tests * Write part of script which regenerates evm-semantics * Rename evm regression test dir * Revert "Rename evm regression test dir" This reverts commit d6ccf83. * Rename evm regression test dir * Rename wasm regression test dir * Remove duplicated wasm directory * Actually rename wasm dir * Add part of script which regenerates wasm-semantics * Remove generate scripts from test dirs * Reintroduce changes to kollect script * Do not build K for wasm-semantics Co-authored-by: rv-jenkins <[email protected]>
1 parent 9c9ef91 commit d3a29df

File tree

73 files changed

+115
-99
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

73 files changed

+115
-99
lines changed

scripts/generate-regression-tests.sh

Lines changed: 111 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,111 @@
1+
#!/usr/bin/env bash
2+
3+
set -exuo pipefail
4+
5+
kollect() {
6+
local name="$1"
7+
shift
8+
echo '#!/bin/sh' > "$name.sh"
9+
"$@" --save-temps --dry-run | xargs $KORE/scripts/kollect.sh "$name" >> "$name.sh"
10+
chmod +x "$name.sh"
11+
}
12+
13+
build-evm() {
14+
cd $KORE
15+
git clone [email protected]:kframework/evm-semantics.git
16+
cd evm-semantics
17+
git submodule update --init --recursive
18+
make plugin-deps
19+
make build-haskell
20+
export PATH=$(pwd)/.build/usr/bin:$PATH
21+
}
22+
23+
build-wasm() {
24+
cd $KORE
25+
git clone [email protected]:kframework/wasm-semantics.git
26+
cd wasm-semantics
27+
git submodule update --init --recursive
28+
make build-haskell
29+
}
30+
31+
generate-evm() {
32+
cd $KORE/evm-semantics
33+
34+
kollect test-pop1 env MODE=VMTESTS SCHEDULE=DEFAULT \
35+
kevm run --backend haskell \
36+
tests/ethereum-tests/VMTests/vmIOandFlowOperations/pop1.json
37+
38+
kollect test-add0 env MODE=VMTESTS SCHEDULE=DEFAULT \
39+
kevm run --backend haskell \
40+
tests/ethereum-tests/VMTests/vmArithmeticTest/add0.json \
41+
42+
kollect test-sumTo10 env MODE=VMTESTS SCHEDULE=DEFAULT \
43+
kevm run --backend haskell \
44+
tests/interactive/sumTo10.evm \
45+
46+
for search in \
47+
branching-no-invalid straight-line-no-invalid \
48+
branching-invalid straight-line
49+
do
50+
kollect "test-$search" \
51+
kevm search --backend haskell \
52+
"tests/interactive/search/$search.evm" \
53+
"<statusCode> EVMC_INVALID_INSTRUCTION </statusCode>"
54+
done
55+
56+
kollect test-sum-to-n \
57+
kevm prove --backend haskell \
58+
tests/specs/examples/sum-to-n-spec.k \
59+
VERIFICATION --format-failures
60+
}
61+
62+
generate-wasm() {
63+
cd $KORE/wasm-semantics
64+
65+
for spec in \
66+
simple-arithmetic \
67+
locals \
68+
loops
69+
do
70+
kollect "test-$spec" \
71+
./kwasm prove --backend haskell \
72+
tests/proofs/"$spec"-spec.k \
73+
KWASM-LEMMAS
74+
done
75+
76+
kollect "test-memory" \
77+
./kwasm prove --backend haskell \
78+
tests/proofs/memory-spec.k \
79+
KWASM-LEMMAS \
80+
--concrete-rules WASM-DATA.wrap-Positive,WASM-DATA.setRange-Positive,WASM-DATA.getRange-Positive
81+
82+
kollect "test-wrc20" \
83+
./kwasm prove --backend haskell tests/proofs/wrc20-spec.k WRC20-LEMMAS --format-failures \
84+
--concrete-rules WASM-DATA.wrap-Positive,WASM-DATA.setRange-Positive,WASM-DATA.getRange-Positive,WASM-DATA.get-Existing,WASM-DATA.set-Extend
85+
}
86+
87+
replace-tests() {
88+
local testdir=$KORE/$1
89+
local tests=$KORE/$2/test-*
90+
91+
if [ -d $testdir ]
92+
then
93+
rm $testdir/test-*
94+
else
95+
mkdir $testdir
96+
echo "include \$(CURDIR)/../include.mk" > $testdir/Makefile
97+
echo "" >> $testdir/Makefile
98+
echo "test-%.sh.out: \$(TEST_DIR)/test-%-*" >> $testdir/Makefile
99+
fi
100+
mv $tests $testdir
101+
}
102+
103+
build-evm
104+
generate-evm
105+
replace-tests "test/regression-evm" "evm-semantics"
106+
rm -rf $KORE/evm-semantics
107+
108+
build-wasm
109+
generate-wasm
110+
replace-tests "test/regression-wasm" "wasm-semantics"
111+
rm -rf $KORE/wasm-semantics

scripts/kollect.sh

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -32,14 +32,12 @@ do
3232
--output)
3333
shift
3434
;;
35-
*/definition.kore)
36-
cp "$1" "$name-definition.kore"
37-
echo -n "$name-definition.kore "
38-
;;
39-
*.kore)
35+
*.kore|.k*) # the .k* pattern matches files from temporary run folders
36+
kollected=1
37+
;&
38+
*/definition.kore|*/vdefinition.kore)
4039
cp "$1" "$name-$(basename "$1")"
4140
echo -n "$name-$(basename "$1") "
42-
kollected=1
4341
;;
4442
*)
4543
echo -n "$1 "

test/regression-evm-semantics-39dd1e5/generate.sh

Lines changed: 0 additions & 50 deletions
This file was deleted.

test/regression-wasm-semantics-5372938/generate.sh

Lines changed: 0 additions & 43 deletions
This file was deleted.

0 commit comments

Comments
 (0)