[109665] branches/gsoc13-tests/src/macports1.0

marius at macports.org marius at macports.org
Mon Aug 19 09:21:34 PDT 2013


Revision: 109665
          https://trac.macports.org/changeset/109665
Author:   marius at macports.org
Date:     2013-08-19 09:21:34 -0700 (Mon, 19 Aug 2013)
Log Message:
-----------
macports1.0: added make target for unit tests

Modified Paths:
--------------
    branches/gsoc13-tests/src/macports1.0/Makefile

Added Paths:
-----------
    branches/gsoc13-tests/src/macports1.0/test.tcl

Modified: branches/gsoc13-tests/src/macports1.0/Makefile
===================================================================
--- branches/gsoc13-tests/src/macports1.0/Makefile	2013-08-19 16:21:25 UTC (rev 109664)
+++ branches/gsoc13-tests/src/macports1.0/Makefile	2013-08-19 16:21:34 UTC (rev 109665)
@@ -16,8 +16,7 @@
 pkgIndex.tcl: $(SRCS)
 
 test::
-	${TCLSH} tests/macports_dlist.tcl
-	${TCLSH} tests/macports_util.tcl
+	$(TCLSH) test.tcl -nocolor
 
 distclean:: clean
 	rm -f macports_autoconf.tcl macports_fastload.tcl ${SHLIB_NAME}

Added: branches/gsoc13-tests/src/macports1.0/test.tcl
===================================================================
--- branches/gsoc13-tests/src/macports1.0/test.tcl	                        (rev 0)
+++ branches/gsoc13-tests/src/macports1.0/test.tcl	2013-08-19 16:21:34 UTC (rev 109665)
@@ -0,0 +1,124 @@
+# Global vars
+set arguments ""
+set test_name ""
+set color_out ""
+set tcl ""
+set err ""
+
+# Get tclsh path.
+set autoconf ../../Mk/macports.autoconf.mk
+set fp [open $autoconf r]
+while {[gets $fp line] != -1} {
+    if {[string match "TCLSH*" $line] != 0} {
+        set tcl [lrange [split $line " "] 1 1]
+    }
+}
+
+proc print_help {arg} {
+    if { $arg == "tests" } {
+        puts "The list of available tests is:"
+	cd tests
+	set test_suite [glob *.test]
+        foreach test $test_suite {
+            puts [puts -nonewline "  "]$test
+        }
+    } else {
+        puts "Usage: tclsh test.tcl \[-debug level\] \[-t test\] \[-l\]\n"
+        puts "  -debug LVL : sets the level of printed debug info \[0-3\]"
+        puts "  -t TEST    : run a specific test"
+        puts "  -nocolor   : disable color output (for automatic testing)"
+        puts "  -l         : print the list of available tests"
+        puts "  -h, -help  : print this message\n"
+    }
+}
+
+# Process args
+foreach arg $argv {
+    if { $arg == "-h" || $arg == "-help" } {
+        print_help ""
+        exit 0
+    } elseif { $arg == "-debug" } {
+        set index [expr [lsearch $argv $arg] + 1]
+        set level [lindex $argv $index]
+        if { $level >= 0 && $level <= 3 } {
+            append arguments "-debug " $level
+        } else {
+            puts "Invalid debug level."
+            exit 1
+        }
+    } elseif { $arg == "-t" } {
+        set index [expr [lsearch $argv $arg] + 1]
+        set test_name [lindex $argv $index]
+        set no 0
+	cd tests
+	set test_suite [glob *.test]
+        foreach test $test_suite {
+            if { $test_name != $test } {
+                set no [expr $no + 1]
+            }
+        }
+        if { $no == [llength $test_suite] } {
+            print_help tests
+            exit 1
+        }
+    } elseif { $arg == "-l" } {
+        print_help tests
+        exit 0
+    } elseif { $arg == "-nocolor" } {
+        set color_out "no"
+    }
+}
+
+
+# Run tests
+if { $test_name != ""} {
+    set result [eval exec $tcl $test_name $arguments]
+    puts $result
+
+} else {
+    cd tests
+    set test_suite [glob *.test]
+
+    foreach test $test_suite {
+        set result [eval exec $tcl $test $arguments]
+        set total [lrange [split $result "\t"] 2 2]
+        set pass [lrange [split $result "\t"] 4 4]
+        set skip [lrange [split $result "\t"] 6 6]
+        set fail [lrange [split $result "\t\n"] 8 8]
+        set errmsg [lrange [split $result "\n"] 2 2]
+
+	# Format output
+	if {$total < 10} { set total "0${total}"}
+	if {$pass < 10} { set pass "0${pass}"}
+	if {$skip < 10} { set skip "0${skip}"}
+	if {$fail < 10} { set fail "0${fail}"}
+
+        # Check for errors.
+        if { $fail != 0 || $skip != 0 } {
+            set err "yes"
+        }
+
+        set out ""
+        if { ($fail != 0 || $skip != 0) && $color_out == "" } {
+            # Color failed tests.
+            append out "\x1b\[1;31mTotal:" $total " Passed:" $pass " Failed:" $fail " Skipped:" $skip "  \x1b\[0m" $test
+        } else {
+            append out "Total:" $total " Passed:" $pass " Failed:" $fail " Skipped:" $skip "  " $test
+        }
+
+        # Print results and constrints for auto-skipped tests.
+        puts $out
+        if { $skip != 0 } {
+            set out "    Constraint: "
+            append out [string trim $errmsg "\t {}"]
+            puts $out
+        }
+    }
+}
+
+# Return 1 if errors were found.
+if {$err != ""} {
+    exit 1
+}
+
+return 0
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/macports-changes/attachments/20130819/ee3cf4a6/attachment.html>


More information about the macports-changes mailing list