-
Notifications
You must be signed in to change notification settings - Fork 3
/
testes.sh
executable file
·69 lines (65 loc) · 1.89 KB
/
testes.sh
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
#!/usr/bin/env bash
## Tetador do Compilador Pascal->MEPA por Ronnie Dilli
## Version 0.4 - 2013/12/11
## Sob licensa GPL
if [ -x 'compilador' ]; then
EX_TESTADOS=0
APROVADOS=0
COMPILADOS=0
SAVEIFS=$IFS
IFS=$(echo -en "\n\b")
shopt -s nullglob
for f in PgmasTeste/Exemplo*
do
((EX_TESTADOS += 1))
echo "----"
./compilador $f/pgma.pas >/dev/null # 2>/dev/null
retorno=$?
if [ $retorno == 0 ]; then
((COMPILADOS += 1))
diff $f/MEPA MEPA
if [ $? == 0 ]; then
((APROVADOS += 1))
echo ">> [OK]: $f <<"
else
echo "^^ Diferencas entre '$f/MEPA' e 'MEPA' ^^"
fi
else
echo "Erro ($retorno) ao compilar o arquivo: '$f'"
fi
done
if [ $EX_TESTADOS != 0 ]; then
echo -e "\n--------------------\n[$COMPILADOS/$EX_TESTADOS] Programas compilados."
echo -e "[$(($EX_TESTADOS - $APROVADOS))] Nao geraram o MEPA esperado!"
fi
C_EX_TESTADOS=0
ERROS_SINTATICOS=0
ERROS_ESPERADOS=0
for f in PgmasTeste/ContraExemplo*
do
((C_EX_TESTADOS += 1))
echo "----"
./compilador $f/pgma.pas >/dev/null # 2>/dev/null
retorno=$?
if [ $retorno != 0 ]; then
((ERROS_SINTATICOS += 1))
read ERRO_ESPERADO < $f/ERRO_ESPERADO
if [ $ERRO_ESPERADO = $retorno ]; then
((ERROS_ESPERADOS += 1))
echo ">> [OK]: O 'erro esperado' ($retorno) foi retornado. <<"
else
echo "Erro retornado ($f/ERRO_ESPERADO) diferente do retorno ($retorno)!"
fi
else
echo "Arquivo com ERRO esperado, mas compilado mesmo assim: '$f'"
fi
done
IFS=$SAVEIFS
if [ $C_EX_TESTADOS != 0 ]; then
echo -e "\n--------------------\n[$ERROS_SINTATICOS/$C_EX_TESTADOS] Contra Exemplos tiveram erro(s) sintatico(s) detectado(s)."
echo -e "[$(($C_EX_TESTADOS - $ERROS_ESPERADOS))] Nao geraram o ERRO esperado!"
fi
else
echo "Erro: *** compilador nao encontrado!"
exit 1
fi