blob: 9fcbc2c0912a591664f07bd7e9150582b30b583e (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
|
#!/bin/bash
# update payload records in an automated fashion, trying to reduce diff sizes
# scan payloadfile and print record for cmd (if found)
find_payload() { # (payloadfile, cmd)
local found=false
readarray -t pl <"$1"
for l in "${pl[@]}"; do
if [[ "$l" == "# "* ]]; then
$found && return
[[ "$l" == "$2" ]] && found=true
fi
$found && echo "$l"
done
$found || echo "Warning: Command '$2' not found in '$1'" >&2
}
cd $(dirname $0)/../
# make sure no stray output files get in the way
rm -f */*.got */*.gotgot
# store payload records for later
# clear payload files to force regenerating (but leave them in place)
for pl in */*.payload*; do
[[ $pl == *.bak ]] && continue # ignore leftover .bak files
cp "$pl" "${pl}.bak"
echo >"$pl"
done
# run the testsuite to create .got files
# pass -f to keep going despite missing payloads
./nft-test.py -f
# restore old payload records
for plbak in */*.bak; do
mv "$plbak" "${plbak%.bak}"
done
# sort created got files to match order in old payload records
for g in ${@:-*/*.payload*.got}; do
pl=${g%.got}
[[ -f $g ]] || continue
[[ -f $pl ]] || continue
readarray -t ploads <"$g"
readarray -t cmds <<< $(grep '^# ' $pl)
for cmd in "${cmds[@]}"; do
found=false
for l in "${ploads[@]}"; do
if [[ "$l" == "# "* ]]; then
$found && break
[[ "$l" == "$cmd" ]] && found=true
fi
$found && [[ "$l" != "" ]] && echo "$l"
done
if ! $found; then
echo "Warning: Command '$cmd' not found in '$g'" >&2
else
echo ""
fi
done | head -n -1 >${g}got
mv "${g}got" "${g}"
done
# overwrite old payload records with new ones
for got in */*.payload*.got; do
mv "${got}" "${got%.got}"
done
|