aboutsummaryrefslogtreecommitdiff
path: root/tcl_tests/calcstat
blob: c2a19da7a5a410111031a480838fa6ce7d03aa6b (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
#!/usr/bin/tclsh
if {$tcl_platform(platform) == "unix"} {
	fconfigure stdout -translation lf
}
lappend auto_path [file dirname [info script]] 
proc rus {string} {
	return $string
}
proc compare_order {el1 el2} {
	global order
	return [expr {$order($el1)-$order($el2)}]
}
set statsfile stats
if {$argc} {set statsfile [lindex $argv 0]}
set f [open $statsfile]
fconfigure $f -encoding utf-8
set ordno 0
while {[gets $f line] >=0} {
	set script [lindex $line 0]
	set a($script) [lrange $line 1 end]
	if {![info exists order($script)]} {
		set order($script) [incr ordno]
	}	
}
close $f

proc output {line} {
	global out
	puts $line
	if {[info exists out]} {
		puts $out $line
	}
}	

if {$argc > 1} {
	set out [open [lindex $argv 1] w]
	fconfigure $out -encoding utf-8
}	

output [format "%-12s %-41s%5s %4s %4s %4s %4s"  File "Test name" Total ok fail skip ign]  
output [string repeat "-" 79]
array set gross {total 0 ok 0 fail 0 p_skip 0 c_skip 0}


foreach script [lsort -command compare_order [array names a] ] {
	foreach {name total ok fail p_skip c_skip} $a($script) break
	output [format "%-12s %-41s%5d %4d %4d %4d %4d" [string range [file tail [file rootname $script]] 0 11] [string range $name 0 40] $total $ok $fail $p_skip $c_skip]
	incr gross(total) $total
	incr gross(ok) $ok
	incr gross(fail) $fail
	incr gross(p_skip) $p_skip
	incr gross(c_skip) $c_skip
}

output [string repeat "-" 79]
output [format "%-54s%5d %4d %4d %4d %4d" Total $gross(total) $gross(ok) $gross(fail) $gross(p_skip) $gross(c_skip)]

if {$gross(fail)} {
	exit 1
}