@for i in coverage/#*.gcda; do mv $$i coverage/$${i##*#}; done
@gcov -o coverage oceani.mdc > /dev/null 2> /dev/null
@mv *.gcov coverage ; [ -f .gcov ] && mv .gcov coverage || true
- @[ -n "$$SKIP_COVERAGE_CHECK" ] || awk '/NOTEST/ { next } /^ *[1-9]/ {ran+=1} /^ *###/ {skip+=1} \
- END {printf "coverage: %6.2f%%\n", ran * 100 / (ran + skip); \
- if (ran < (ran + skip) *0.968) exit(1) }' \
- coverage/oceani.mdc.gcov
@rm -f .tmp*
@[ -n "$$SKIP_VALGRIND" ] || for T in $(oceani_tests); do \
echo "valgrind found memory in use at exit"; cat .tmp.valg ; exit 1 ; fi; \
echo " passed"; \
done
+ @[ -n "$$SKIP_COVERAGE_CHECK" ] || awk '/NOTEST/ { next } /^ *[1-9]/ {ran+=1} /^ *###/ {skip+=1} \
+ END {printf "coverage: %6.2f%%\n", ran * 100 / (ran + skip); \
+ if (ran < (ran + skip) *0.968) exit(1) }' \
+ coverage/oceani.mdc.gcov
coverage_oceani: oceani.c
$(CC) $(CFLAGS) --coverage -fprofile-dir=coverage -o coverage_oceani oceani.c $(LDLIBS)
Test functions. They don't return anything, so we need to get them to print
###### test list
- oceani_tests += functions
+ oceani_tests += functions func_ret_type
###### test: functions
3 2 . 1 .. done
4 3 . 2 .. 1 ... done
+###### test: func_ret_type
+
+ func double(n:number):number
+ use n+n
+
+ func answer
+ prefix:string
+ suffix:string
+ return string
+ do
+ use prefix ++ suffix
+
+ func noarg_returns
+ return Boolean
+ do
+ use 22/7 == 3.14159
+
+ func main()
+ for j:=10; then j = j - 3; while j > -5:
+ print answer("dou","ble"), j, "is", double(j)
+
+###### output: func_ret_type
+ double 10 is 20
+ double 7 is 14
+ double 4 is 8
+ double 1 is 2
+ double -2 is -4
+
## Test code with syntax errors
Syntax errors aren't handled well yet - the result is almost always a
if test1 == test2:
pass
+ func test4(a:number):string
+ use a * a
+
+ func test5(a:number):string
+ print a
+
###### output: func_err_args
+ .tmp.code:28:14: error: expected string, found none
+ .tmp.code:25:8: error: expected string, found number
.tmp.code:15:14: error: insufficient arguments to function.
.tmp.code:16:14: error: expected number found string
.tmp.code:16:22: error: expected string found number