10
10
# - Diff against origin/main to establish a baseline
11
11
# - Diff against HEAD
12
12
# - Diff the two diffs to see if new issues were introduced
13
-
14
- set -u # no "-eo pipefail" because we do our own error handling
13
+ set -euo pipefail
15
14
16
15
minimum=" v$( curl -s https://semgrep.dev/api/check-version | jq -r ' .versions.minimum' ) "
17
16
tags=$( git log --simplify-by-decoration --pretty=format:%D " ${minimum} ^!" origin/main | grep -o ' tag: [^,)]\+' | sed ' s/^tag: //' | sort -n)
18
17
19
- checked=()
18
+ checked=(" dummy " )
20
19
errors=0
21
20
for tag in $tags ; do
22
21
commit=$( git rev-list -n 1 " $tag " )
@@ -26,19 +25,31 @@ for tag in $tags; do
26
25
fi
27
26
checked+=(" $commit " )
28
27
28
+ set +e # do our own error handling for a bit
29
29
echo " Checking backward compatibility of semgrep_output_v1.atd against past version $tag "
30
- git difftool -x ' atddiff --backward' -y " $tag " " origin/main" semgrep_output_v1.atd > before.txt
31
- git difftool -x ' atddiff --backward' -y " $tag " " HEAD" semgrep_output_v1.atd > after.txt
30
+ git difftool --trust-exit-code -x ' atddiff --no-locations --backward' -y " $tag " " origin/main" semgrep_output_v1.atd > before.txt
31
+ ret=$?
32
+ if [ " $ret " -ge 1 ] && [ " $ret " -le 2 ]; then
33
+ echo " ERROR: atddiff had an error: $? "
34
+ cat before.txt
35
+ exit 1
36
+ fi
37
+ git difftool --trust-exit-code -x ' atddiff --no-locations --backward' -y " $tag " " HEAD" semgrep_output_v1.atd > after.txt
38
+ ret=$?
39
+ if [ " $ret " -ge 1 ] && [ " $ret " -le 2 ]; then
40
+ echo " ERROR: atddiff had an error: $? "
41
+ cat after.txt
42
+ exit 1
43
+ fi
32
44
33
- # neccesary because filenames have temp paths and line numbers can change without causing issues
34
- expr=' s|File "/.*/\(.*.atd\)", line .*$|File "\1", line <removed for diff>|g'
35
- diff -u <( sed " $expr " before.txt) <( sed " $expr " after.txt)
45
+ diff -u <( cat before.txt) <( cat after.txt)
36
46
if [ " $? " -ne 0 ]; then
37
47
echo " ERROR: semgrep_output_v1.atd is not backward compatible with $tag "
38
48
errors=$(( errors + 1 ))
39
49
fi
50
+ set -e
40
51
done
41
52
42
53
if [ " $errors " -ne 0 ]; then
43
54
exit 1
44
- fi
55
+ fi
0 commit comments