2020-05-09 14:58:28 -04:00
|
|
|
|
#!/bin/bash
|
2020-05-28 10:25:36 -04:00
|
|
|
|
|
2022-03-25 13:33:26 -04:00
|
|
|
|
VALCOM="valgrind -q --leak-check=full --error-exitcode=1 --track-origins=yes"
|
2020-08-02 16:16:26 -04:00
|
|
|
|
|
2020-05-28 10:25:36 -04:00
|
|
|
|
TOTAL_PASSES=0
|
|
|
|
|
TOTAL_FAILS=0
|
2022-03-25 13:33:26 -04:00
|
|
|
|
TOTAL_VALGRIND_ERRORS=0
|
2020-05-09 14:58:28 -04:00
|
|
|
|
FAILS=0
|
2021-07-04 23:46:59 -04:00
|
|
|
|
FAIL_OUTPUT=""
|
2021-07-04 23:56:55 -04:00
|
|
|
|
VALGRIND=false
|
2021-07-12 20:34:54 -04:00
|
|
|
|
DISABLED=false
|
2020-05-14 23:50:53 -04:00
|
|
|
|
|
|
|
|
|
if [ "$1" == "-val" ]; then
|
2021-07-04 23:56:55 -04:00
|
|
|
|
VALGRIND=true
|
2022-03-18 16:10:23 -04:00
|
|
|
|
filter="$2"
|
|
|
|
|
else
|
|
|
|
|
filter="$1"
|
2020-05-14 23:50:53 -04:00
|
|
|
|
fi
|
2020-05-09 14:58:28 -04:00
|
|
|
|
|
2022-03-16 16:57:37 -04:00
|
|
|
|
FIRST_TITLE=true
|
2020-05-28 10:25:36 -04:00
|
|
|
|
title() {
|
2022-03-16 16:57:37 -04:00
|
|
|
|
if ! $FIRST_TITLE; then
|
|
|
|
|
echo "[0m"
|
|
|
|
|
if (($FAILS != 0)); then
|
|
|
|
|
echo -e "$FAIL_OUTPUT"
|
|
|
|
|
FAIL_OUTPUT=""
|
|
|
|
|
fi
|
|
|
|
|
FAILS=0
|
|
|
|
|
DISABLED=false
|
|
|
|
|
else
|
|
|
|
|
FIRST_TITLE=false
|
|
|
|
|
fi
|
2022-03-24 21:21:51 -04:00
|
|
|
|
echo -n "[0m[$1] "
|
|
|
|
|
if [[ "$2" == "disabled" ]]; then
|
2021-07-12 20:34:54 -04:00
|
|
|
|
echo -n "[33mDISABLED[0m"
|
|
|
|
|
DISABLED=true
|
|
|
|
|
fi
|
2020-05-28 10:25:36 -04:00
|
|
|
|
}
|
|
|
|
|
|
2020-05-09 14:58:28 -04:00
|
|
|
|
pass() {
|
2022-03-25 13:33:26 -04:00
|
|
|
|
local color=32
|
|
|
|
|
if [[ "$2" != "0" ]]; then
|
|
|
|
|
((TOTAL_VALGRIND_ERRORS++))
|
|
|
|
|
color=33
|
|
|
|
|
fi
|
|
|
|
|
echo -n "[1;${color}m✓[0m"
|
2021-07-04 23:56:55 -04:00
|
|
|
|
((TOTAL_PASSES++))
|
2020-05-09 14:58:28 -04:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
fail() {
|
2021-07-04 23:56:55 -04:00
|
|
|
|
echo -n "[1;31mX"
|
2021-07-12 20:34:54 -04:00
|
|
|
|
FAIL_OUTPUT="$FAIL_OUTPUT [1;31m$1 FAILED\n When running [0;34m\"$2\"[0m"
|
2021-07-04 23:56:55 -04:00
|
|
|
|
((FAILS++))
|
|
|
|
|
((TOTAL_FAILS++))
|
2020-05-09 14:58:28 -04:00
|
|
|
|
}
|
|
|
|
|
|
2022-03-18 16:10:23 -04:00
|
|
|
|
|
|
|
|
|
regex="regex"
|
2020-05-09 14:58:28 -04:00
|
|
|
|
check() {
|
2022-03-18 16:10:23 -04:00
|
|
|
|
if $DISABLED || ! [[ "$1" =~ $filter ]]; then
|
2021-07-12 20:34:54 -04:00
|
|
|
|
return 1
|
|
|
|
|
fi
|
2022-03-18 16:10:23 -04:00
|
|
|
|
|
2022-03-21 12:33:35 -04:00
|
|
|
|
local output
|
2022-03-25 13:33:26 -04:00
|
|
|
|
local exit_code=0
|
2021-07-04 23:56:55 -04:00
|
|
|
|
if $VALGRIND; then
|
2022-03-25 13:33:26 -04:00
|
|
|
|
echo -ne "\n $1"
|
|
|
|
|
output="$($VALCOM ./pl "(loadfile \"examples/lib.pbl\") $2")"
|
|
|
|
|
exit_code=$?
|
|
|
|
|
if [[ "$exit_code" == "0" ]]; then
|
|
|
|
|
echo -ne "\r "
|
|
|
|
|
fi
|
2021-07-04 23:56:55 -04:00
|
|
|
|
else
|
2022-03-25 13:33:26 -04:00
|
|
|
|
output="$(./pl "(loadfile \"examples/lib.pbl\") $2")"
|
2021-07-04 23:56:55 -04:00
|
|
|
|
fi
|
|
|
|
|
|
2022-03-25 13:33:26 -04:00
|
|
|
|
|
2022-03-21 12:33:35 -04:00
|
|
|
|
if [ "$3" == "$regex" ]; then
|
|
|
|
|
if [[ "$output" =~ ^$4$ ]]; then
|
2022-03-25 13:33:26 -04:00
|
|
|
|
pass "$1" $exit_code
|
2022-03-21 12:33:35 -04:00
|
|
|
|
return
|
|
|
|
|
fi
|
|
|
|
|
elif [ "$output" == "$3" ]; then
|
2022-03-25 13:33:26 -04:00
|
|
|
|
pass "$1" $exit_code
|
2022-03-21 12:33:35 -04:00
|
|
|
|
return
|
2021-07-04 23:56:55 -04:00
|
|
|
|
fi
|
2022-03-21 12:33:35 -04:00
|
|
|
|
|
|
|
|
|
fail "$1" "$2"
|
|
|
|
|
FAIL_OUTPUT="${FAIL_OUTPUT}\n [31m expected '$3' but received '$output'\n"
|
2020-05-09 14:58:28 -04:00
|
|
|
|
}
|
|
|
|
|
|
2022-03-24 23:32:51 -04:00
|
|
|
|
echo "[1;34m::SHELL TESTS::[0;m"
|
2020-05-28 10:25:36 -04:00
|
|
|
|
|
2021-07-04 23:46:59 -04:00
|
|
|
|
title "Plain returns"
|
2020-05-14 23:50:53 -04:00
|
|
|
|
check "PlainRet" "10" "10"
|
2022-03-18 16:10:23 -04:00
|
|
|
|
check "StrRetrn" '"hey"' "hey"
|
2020-08-02 16:16:26 -04:00
|
|
|
|
check "HexReturn" "0x0f0f0" "61680"
|
|
|
|
|
check "BinaryReturn" "0b011010011010011" "13523"
|
2020-05-28 10:25:36 -04:00
|
|
|
|
|
|
|
|
|
title "Arithmetic"
|
2020-05-09 14:58:28 -04:00
|
|
|
|
check "Addition" "(+ 1093 102852)" "103945"
|
2020-05-10 12:51:46 -04:00
|
|
|
|
check "Multiply" "(*1000 10000)" "10000000"
|
2020-05-09 14:58:28 -04:00
|
|
|
|
check "Division" "(/ 6418425 65)" "98745"
|
|
|
|
|
check "ChainAdd" "(+ 3917 17304 1293844 400 100000)" "1415465"
|
|
|
|
|
check "ChainMul" "(* 8263 23 123)" "23376027"
|
|
|
|
|
check "ChainDiv" "(/ 1493856 741 96 7)" "3"
|
2020-05-28 10:25:36 -04:00
|
|
|
|
|
|
|
|
|
title "Comparison"
|
2020-05-09 14:58:28 -04:00
|
|
|
|
check "GratrThn" "(> 23847123 19375933)" "T"
|
2022-03-28 13:19:34 -04:00
|
|
|
|
check "GratrThnMulti" "(> 9999 55 1 0)" "T"
|
2020-05-09 14:58:28 -04:00
|
|
|
|
check "LessThan" "(< 23847123 19375933)" "F"
|
|
|
|
|
check "Equality" "(= 987654321 987654321 )" "T"
|
2022-03-18 16:10:23 -04:00
|
|
|
|
check "StringEquality" '(= "Bean" "Bean" )' "T"
|
|
|
|
|
check "StringInequality" '(= "Beans" "Bean" )' "F"
|
|
|
|
|
check "NullInequality" '(= "Beans" "" )' "F"
|
|
|
|
|
|
|
|
|
|
title "ComplexStrings"
|
|
|
|
|
check "TripleQuoting" '"""Hello"""' 'Hello'
|
|
|
|
|
check "TripleQuotingWithQuotes" '"""My name is "yoink"."""' 'My name is "yoink".'
|
2020-05-28 10:25:36 -04:00
|
|
|
|
|
2020-10-28 18:08:03 -04:00
|
|
|
|
title "TypeCheck"
|
|
|
|
|
check "IsNum" "(isnum 23847123)" "T"
|
2022-03-18 16:10:23 -04:00
|
|
|
|
check "IsntNum" '(isnum "WORDS")' "F"
|
|
|
|
|
check "IsString" '(isstr "words")' "T"
|
|
|
|
|
check "IsStringEmpty" '(isstr "")' "T"
|
2021-07-05 00:18:14 -04:00
|
|
|
|
check "NumNotString" "(isstr 5)" "F"
|
2022-03-18 16:10:23 -04:00
|
|
|
|
check "ListNotString" '(isstr ("hello"))' "F"
|
2020-10-28 18:08:03 -04:00
|
|
|
|
|
2020-05-28 10:25:36 -04:00
|
|
|
|
title "Ifs/Bools"
|
2020-05-09 14:58:28 -04:00
|
|
|
|
check "IfReturn" "(if (T) 123456789 987654321)" "123456789"
|
|
|
|
|
check "IfRetTwo" "(if F 123456789 987654321)" "987654321"
|
2020-05-10 12:51:46 -04:00
|
|
|
|
check "EmptyCnd" "(if () T F)" "F"
|
2020-05-22 01:16:45 -04:00
|
|
|
|
check "EtyLstLt" "(if (()) T F)" "T"
|
2020-05-28 10:25:36 -04:00
|
|
|
|
|
|
|
|
|
title "Lists"
|
2020-05-09 14:58:28 -04:00
|
|
|
|
check "RegLists" "(1 2 3 4 5)" "( 1 2 3 4 5 )"
|
2022-03-18 16:10:23 -04:00
|
|
|
|
check "MultiTypeList" '(10 20 "rascals")' "( 10 20 rascals )"
|
2020-05-10 12:51:46 -04:00
|
|
|
|
check "EmptyLst" "()" "( )"
|
|
|
|
|
check "EmptLst2" "( )" "( )"
|
2020-05-28 10:25:36 -04:00
|
|
|
|
check "ListIndex" "(at (+ 1 1) (1 2 1000 4 5))" "1000"
|
|
|
|
|
check "EvalElems" "((* 10 10) 7)" "( 100 7 )"
|
|
|
|
|
check "AppendToList" "(ap (1 20 300 4000 50000) 600000)" "( 1 20 300 4000 50000 600000 )"
|
2020-08-02 16:16:26 -04:00
|
|
|
|
check "AppndToEnvList" "(def l (50000 4000 300 20)) (def l (ap l 1)) l" "( 50000 4000 300 20 1 )"
|
2020-10-29 11:23:35 -04:00
|
|
|
|
check "PrependToList" "(pre (1 20 300 4000 50000) 600000)" "( 600000 1 20 300 4000 50000 )"
|
|
|
|
|
check "PrepndToEnvList" "(def l (50000 4000 300 20)) (def l (pre l 1)) l" "( 1 50000 4000 300 20 )"
|
2020-05-28 10:25:36 -04:00
|
|
|
|
check "Rest(Tail)OfList" "(def l (50000 4000 300 20)) (rest l)" "( 4000 300 20 )"
|
2021-12-15 14:27:01 -05:00
|
|
|
|
check "ListLength" "(def l (1 20 3 \"abc\" \"banana\" (+ 10 5))) (len l)" "6"
|
2022-03-16 16:57:37 -04:00
|
|
|
|
check "Identifying list" "(islist (1 2 3))" "T"
|
|
|
|
|
check "Identifying empty list" "(islist ())" "T"
|
|
|
|
|
check "Identifying not a list" "(islist 1)" "F"
|
2020-05-28 10:25:36 -04:00
|
|
|
|
|
2022-03-18 16:10:23 -04:00
|
|
|
|
deep_nesting="10"
|
2022-03-19 21:53:18 -04:00
|
|
|
|
for _ in {0..25}; do deep_nesting="( $deep_nesting )"; done
|
2022-03-18 16:10:23 -04:00
|
|
|
|
check "DeepNesting" "$deep_nesting" "$deep_nesting" # Above 25 it starts to stack-smash
|
|
|
|
|
|
2020-05-28 10:25:36 -04:00
|
|
|
|
title "Spacing"
|
2020-05-10 12:51:46 -04:00
|
|
|
|
check "DenseSpc" "(+1093 102852)" "103945"
|
|
|
|
|
check "WideSpac" "( + 1093 102852 )" "103945"
|
|
|
|
|
check "VWidwSpc" " ( + 1093 102852 ) " "103945"
|
2020-05-28 10:25:36 -04:00
|
|
|
|
|
|
|
|
|
title "DemoFunctions"
|
|
|
|
|
check "Squaring" "(sq 9876)" "97535376"
|
|
|
|
|
check "Cubing" "(cube 81)" "531441"
|
|
|
|
|
check "Exponent" "(exp 9 9)" "387420489"
|
|
|
|
|
check "MaxRight" "(max 5 20)" "20"
|
|
|
|
|
check "MaxLeft" "(max 135890 98372)" "135890"
|
|
|
|
|
check "MinRight" "(min 8429 192449)" "8429"
|
|
|
|
|
check "MinLeft" "(min 17294722 17294721)" "17294721"
|
|
|
|
|
|
|
|
|
|
title "Lambdas"
|
2020-05-22 01:16:45 -04:00
|
|
|
|
check "MultStmt" "(def yee (fn (a) (* 10 a))) ; (yee 5)" "50"
|
2022-03-24 21:21:51 -04:00
|
|
|
|
check "MultStmtNoSemi" "(def yee (fn (a) (* 10 a)))(yee 5)" "50"
|
2020-05-22 01:16:45 -04:00
|
|
|
|
check "DefinMap" "(def yee (fn (a) (* 10 a))) ; (map yee (5 10 2 (+ 12 0)))" "( 50 100 20 120 )"
|
2021-07-05 00:26:29 -04:00
|
|
|
|
check "AnonymousLambda" "\
|
|
|
|
|
(map (fn (a) (* a a)) (5 6 7))" "( 25 36 49 )"
|
2021-07-05 00:18:14 -04:00
|
|
|
|
check "FbnciSeq" "\
|
|
|
|
|
(def fib (fn (a) \
|
|
|
|
|
(if (< a 2) \
|
|
|
|
|
a \
|
|
|
|
|
(+ (fib (- a 1)) (fib (- a 2))) \
|
|
|
|
|
)));\
|
2022-03-16 16:36:04 -04:00
|
|
|
|
(fib 11)" "89"
|
2021-07-05 00:18:14 -04:00
|
|
|
|
check "Factorial" "\
|
|
|
|
|
(def fac (fn (a) \
|
|
|
|
|
(if (= a 1) \
|
|
|
|
|
1 \
|
|
|
|
|
(* a (fac (- a 1)) ) \
|
|
|
|
|
)));\
|
|
|
|
|
(fac 11)" "39916800"
|
2020-05-28 10:25:36 -04:00
|
|
|
|
check "LambdaClone" "(def y (fn (a) (* 10 a))) (def b y) (def y 12345) ((b 5) y)" "( 50 12345 )"
|
2020-11-02 12:40:42 -05:00
|
|
|
|
check "Duplicate" "(def dupe (fn (a) (() (a a a))));(dupe (*10 10))" "( 100 100 100 )"
|
2020-05-28 10:25:36 -04:00
|
|
|
|
|
|
|
|
|
title "Cat"
|
2022-03-18 16:10:23 -04:00
|
|
|
|
check "ExplicitCat" '(cat "Big" " Kitty")' "Big Kitty"
|
|
|
|
|
check "CatNums" '(cat "There are " (+ 2 3) " kitties")' "There are 5 kitties"
|
2020-05-28 10:25:36 -04:00
|
|
|
|
|
|
|
|
|
title "Filtering"
|
2022-03-24 21:21:51 -04:00
|
|
|
|
check "Filtering" "(fil (fn (a) (< 321 a)) (30 300 90 1200 135 801))" "( 1200 801 )"
|
|
|
|
|
check "FilterEval" "(fil (fn (a) (= 1000 a)) ((+ 450 550) (* 20 50) (/ 30 3) (- 10000 100)))" "( 1000 1000 )"
|
|
|
|
|
check "MapFilter" "(fil (fn (a) (< 50 a)) (map sq (1 2 3 4 5 6 7 8 9 10 11 12)))" "( 64 81 100 121 144 )"
|
2022-03-16 16:57:37 -04:00
|
|
|
|
|
|
|
|
|
title "Structs"
|
|
|
|
|
check "StructDef" "(struct Post (title body))" "T"
|
|
|
|
|
check "Building a struct"\
|
|
|
|
|
'(struct Post (title body)) (Post "A title" "The Body")'\
|
|
|
|
|
'{ title: "A title", body: "The Body" }'
|
|
|
|
|
check "Accessing struct fields"\
|
|
|
|
|
"(struct Post (title body)) (def p (Post \"TITLE\" \"BODY\")) (p's title p's body)"\
|
|
|
|
|
"( TITLE BODY )"
|
2020-05-28 10:25:36 -04:00
|
|
|
|
|
2022-03-16 16:36:04 -04:00
|
|
|
|
title "HigherOrder"
|
2022-03-24 21:21:51 -04:00
|
|
|
|
check "Simple reducing" '(reduce (1 2 3) + 0)' '6'
|
|
|
|
|
check "NonListReducing" '(reduce 1 + 0)' '1'
|
2022-03-16 16:36:04 -04:00
|
|
|
|
check "FuncReturningAFunc" "(def plusser (fn (outer) (fn (inner) (+ outer inner))))\
|
|
|
|
|
(def plusFive (plusser 5))\
|
|
|
|
|
(plusFive 10)" "15"
|
|
|
|
|
|
2020-05-28 10:25:36 -04:00
|
|
|
|
title "ShouldError"
|
2022-03-28 13:19:34 -04:00
|
|
|
|
check "LenOfNotList" "(len 5)" regex "BAD_PARAMS_ON.*"
|
2020-06-12 18:50:36 -04:00
|
|
|
|
check "NoMapList" "(map sq)" "( )"
|
2022-03-21 12:33:35 -04:00
|
|
|
|
check "BadNumber" "(5df)" regex "BAD_NUMBER.*"
|
|
|
|
|
check "BadHex" "(0x0zf)" regex "BAD_NUMBER.*"
|
|
|
|
|
check "BadBinary" "(0b01120)" regex "BAD_NUMBER.*"
|
2022-03-25 13:33:26 -04:00
|
|
|
|
check "UnsupportedNumber" "(00000)" regex "UNSUPPORTED_NUMBER.*"
|
2022-03-28 13:19:34 -04:00
|
|
|
|
check "BadParens1" "(hey()" regex "MISMATCHED_PARENS.*"
|
|
|
|
|
check "BadParens2" "(hey)(" regex "MISMATCHED_PARENS.*"
|
|
|
|
|
check "BadParens3" "((hey(" regex "MISMATCHED_PARENS.*"
|
|
|
|
|
check "BadParens4" ")))hey" regex "MISMATCHED_PARENS.*"
|
|
|
|
|
check "BadParens5" "hey))(" regex "MISMATCHED_PARENS.*"
|
|
|
|
|
check "BadParens6" '(ey")"' regex "MISMATCHED_PARENS.*"
|
2020-05-28 10:25:36 -04:00
|
|
|
|
|
2022-03-24 21:21:51 -04:00
|
|
|
|
title "ListArithmetic" disabled
|
|
|
|
|
check "UnevenLists" "(+ (1 2) (1 2 3))" "LISTS_NOT_SAME_SIZE"
|
|
|
|
|
check "ListAddi" "(+ 5 (1 2 3 (+ 10 10)))" "( 6 7 8 25 )"
|
|
|
|
|
check "ListModu" "(% 5 (1 2 3 (* 11 11)))" "( 1 2 3 1 )"
|
|
|
|
|
check "ListsMul" "(* (10 20 30) (1 20 300))" "( 10 400 9000 )"
|
|
|
|
|
|
2020-11-02 15:46:17 -05:00
|
|
|
|
title "Eval"
|
2022-03-18 16:10:23 -04:00
|
|
|
|
check "BasicNumberEval" '(eval "5")' "5"
|
|
|
|
|
check "BasicOpEval" '(eval "(+ 5 10)")' "15"
|
2022-03-24 21:21:51 -04:00
|
|
|
|
check "MapFilter" '(eval "(fil (fn (a) (< 50 a)) (map sq (1 2 3 4 5 6 7 8 9 10 11 12)))")' "( 64 81 100 121 144 )"
|
2020-11-02 15:46:17 -05:00
|
|
|
|
|
2022-03-24 21:21:51 -04:00
|
|
|
|
title "Forbble" disabled
|
2022-03-18 16:10:23 -04:00
|
|
|
|
check "BasicForbbleOp" '(loadfile "examples/forbble.pbl") (feval (10 10 * .)) ""' "100"
|
|
|
|
|
check "FibForbble" '(loadfile "examples/forbble.pbl") (feval (1 1 _f _f _f _f _f _f _f _f _f _f _f _f _f _f _f _f _f _f _f _f _f .)) ""' "28657"
|
|
|
|
|
check "ForbbleDefine" '(loadfile "examples/forbble.pbl") (feval ( : "cubed" dup dup * * $ )) (feval (4 cubed .)) ""' "64"
|
2021-07-05 05:09:32 -04:00
|
|
|
|
|
2021-07-22 15:51:42 -04:00
|
|
|
|
title "Environment"
|
2022-03-18 16:10:23 -04:00
|
|
|
|
check "EnvStressTestEarly" '(def a 1)(def b 20)(def c "yee")(def d "yeehunnid")(def e 3) (a)' "( 1 )"
|
2021-07-22 15:51:42 -04:00
|
|
|
|
check "EnvStressTestLate" "(def a 1)(def b 2)(def c 3)(def d 4)(def e 5)(def g 6)(def n 40) n" "40"
|
2022-03-18 16:10:23 -04:00
|
|
|
|
hard_test_string="(def n 1000)"
|
2022-03-20 03:50:43 -04:00
|
|
|
|
for c in {0..50}; do hard_test_string="(def a$c 1)$hard_test_string"; done
|
2022-03-18 16:10:23 -04:00
|
|
|
|
check "HardEnvStressTest" "$hard_test_string n" "1000"
|
2020-05-28 10:25:36 -04:00
|
|
|
|
|
2020-05-22 01:16:45 -04:00
|
|
|
|
echo ""
|
2022-03-24 23:32:51 -04:00
|
|
|
|
echo ""
|
2020-08-02 16:16:26 -04:00
|
|
|
|
|
|
|
|
|
if [ "$TOTAL_PASSES" -ne "0" ]; then
|
|
|
|
|
echo -n "[1;32m"
|
2020-05-10 12:51:46 -04:00
|
|
|
|
fi
|
2022-03-25 13:33:26 -04:00
|
|
|
|
echo -n "$TOTAL_PASSES Tests Passed[0m"
|
|
|
|
|
if [ "$TOTAL_VALGRIND_ERRORS" -ne "0" ]; then
|
|
|
|
|
echo -n " [33m($TOTAL_VALGRIND_ERRORS with valgrind errors)[0m"
|
|
|
|
|
fi
|
|
|
|
|
echo
|
2020-05-10 12:51:46 -04:00
|
|
|
|
|
2022-03-24 23:32:51 -04:00
|
|
|
|
if [ "$TOTAL_FAILS" -ne "0" ]; then
|
|
|
|
|
echo -n "[1;31m"
|
|
|
|
|
fi
|
|
|
|
|
echo "$TOTAL_FAILS Tests Failed[0m"
|
|
|
|
|
|
2020-05-15 16:27:45 -04:00
|
|
|
|
echo ""
|
2022-03-25 16:11:20 -04:00
|
|
|
|
|
|
|
|
|
if $VALGRIND; then
|
|
|
|
|
$VALCOM ./pl --run-tests=detailed
|
|
|
|
|
else
|
|
|
|
|
./pl --run-tests
|
|
|
|
|
fi
|