summaryrefslogtreecommitdiff
path: root/test/runtest.rc
blob: 14255245b0c5a9fd79cccd02b9c79436214814b3 (plain)
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
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
#!/bin/rc

passed=''
failed=''
npassed=0
nfailed=0

fn build {
	rm -f $1 $1^.6 $1^.use
	../mbld/mbld -b $1 -C../6/6.out -M../muse/6.out -I../libstd -r../rt/_myrrt.6 $1^.myr
}

fn pass {
	passed=$passed ^ ' ' ^ $1
	echo '!}>> ok'
}

fn fail {
	echo FAIL: $1
	failed=$failed ^ ' ' ^ $1
	echo '!}>> fail '
}

fn expectstatus {
	st='*'^$2
	if(~ $2 0)
		st=''''''
	./$1 $3
	if(eval '~ $status '$st)
		pass $1
	if not
		fail $1
}

fn expectprint {
	if(~ `{./$1 $3} $2)
		pass $1
	if not
		fail $1
}

fn expectcmp {
	t=/tmp/myrtest-^$1
	rm -f $t
	./$1 $3 > $t
	if (cmp $t data/$1-expected)
		pass $1
	if not
		fail $1
}

fn expectfcmp {
	t=/tmp/myrtest-^$1
	rm -f $t
	./$1 $3
	if (cmp $2 data/$1-expected)
		pass $1
	if not
		fail $1
}

fn B {
	test=$1; shift
	type=$1; shift
	res=$1; shift

	echo 'test' $test '<<{!'
	build $test
	switch($type) {
	case E
		expectstatus $test $res
	case P
		expectprint $test $res
	case C
		expectcmp $test $res
	case F
		expectfcmp $test $res
	}
}

fn F {
	echo 'test' ^ $1 '<<{!'
	@{ build $1 } > /dev/null
	if (~ $status ''/)
		fail $1
	if not
		pass $1
}

echo 'MTEST ' `{grep '^[BF]' tests | wc -l}

. tests

echo PASSED ^ ' ' ^ $passed
if(~ $failed '')
	echo SUCCESS
if not
	echo FAILURES ^ ' ' ^ $failed