Fix 2005/giljade/test.sh

The script did not check if all versions could be compiled, just that
180 versions were found. Now it reports an error if not all versions
(180) are found (exit code 1) or if any of the versions failed to
compile (exit code 2). Otherwise it returns 0, success.

The regexp for finding errors is '[^-]error' because the CFLAGS contain
the option -Wno-error which would be a false positive.

Now if any version fails to compile it will let the user know. Also in
that case out.count is kept so that one can look at the problem (it also
tells one how to show the results with grep(1) and even notes that if
they want to report it or try and fix it and open a GitHub pull request
that they're welcome to do so).

The giljade.c file's last line now ends on the column that it used to
before the fix of the test suite mode working. This does not affect the
output of the program and the fix did not either but it feels a bit
better this way anyway.
This commit is contained in:
Cody Boone Ferguson committed 2023-11-21 05:49:19 -08:00
1 parent 43897789a1
commit 97af1f03bc
2 files changed
+38 -7

No files matched your search

+2 -2
View File
@@ -18,7 +18,7 @@
(B[h]=N-B,N= N+6);}main(Z,Y )char**Y;{char*U=Z ;
int**w=Y; ;;F(_=A=D+6666,A[fread(A,1,3333,fopen
(__FILE__, "r"))]=0;*++ _;h||(*_=V))
*_-59|_[1]-* _||(h&&(*_=+ 35),h---2||(_[9]=V));;F(_
*_-59|_[1]-* _||(h&&(*_= +35),h---2||(_[9]=V));;F(_
=A;*_;_++)10 -*_&&*_-V&&( *_-92)&&(k[q]=isalnum(l[q
]=*_),q++);M =47;*(E=N-6) =64;E[1]=289;E[2]=270336;
F(E[3]=32782 ;E<N;E=E+6){ H()o(1048560,<<,>>,4,>>4,
@@ -46,4 +46,4 @@ e==1){F(r=A= l+d;35-*A;++ A)*A-M&&*A-T ||U-1&&(*A=V
13499);}t=d+ 9;_[-1]=l[++ d];}a-1|+j-2 ||(R-Q<3?(*(
Q<R?R-1:R)=* Q=*R=59):(*R =M,R[-1]=T), a=2);}}j?(*_
++=j-2?V:10, R):(R=_-1);} }R[-1]=T;*R= M;*_++=10;F(
R=D;putchar( *R)&&_>++R;) ;}}};}
R =D ; putchar ( * R) && _ > ++R ; ) ; } } } ; }
+36 -5
View File
@@ -12,23 +12,54 @@ fi
make CC="$CC" all >/dev/null || exit 1
# clear screen after compilation so that only the test is shown
clear
# binary is giljade
GILJADE="giljade"
# assume we will succeed
EXIT_CODE=0
# delete temporary files first to make sure that they're clean
rm -f out out.count
# redirect stdout to 'out' so that we can run the test suite of giljade
./"$GILJADE" > out
./"$GILJADE" out | tee out.count | grep '^Line'
# here we want to show only the lines matching the regexp '^Line' but write
# everything to out.count for checking (after running it all) for errors and how
# many versions were found.
./"$GILJADE" out 2>&1 | tee out.count | grep '^Line'
# there should be 180 lines matching the regexp '^Line'.
COUNT="$(grep -c '^Line' out.count)"
if [[ "$COUNT" != 180 ]]; then
echo "FAIL: expected 180 versions, got $COUNT" 1>&2
# if we failed to get exactly 180 versions there is a problem
echo "FAIL: Expected 180 versions, got $COUNT" 1>&2
EXIT_CODE=1
elif [[ "$(grep -c '[^-]error' out.count)" -ne 0 ]]; then
# we have to check for '[^-]error' because the CFLAGS contain '-Wno-error'
# which would be a false positive.
echo "FAIL: Error compiling one or more versions!" 1>&2
echo "Try the following command to find out what problems occurred:" 1>&2
echo 1>&2
echo " grep -C5 -E '[^-]error' out.count" 1>&2
echo 1>&2
echo "and feel free to report or fix it and make a GitHub pull request." 1>&2
EXIT_CODE=2
else
echo "Found all 180 versions!" 1>&2
# all good: every version could be compiled
echo "Found and compiled all 180 versions!" 1>&2
# set EXIT_CODE to 0 even though it should be already
EXIT_CODE=0
fi
rm -f out out.count
# delete temporary files but only if no failure
if [[ "$EXIT_CODE" = 0 ]]; then
rm -f out out.count
fi
# exit :-)
exit "$EXIT_CODE"