Revision: 4120
          http://vexi.svn.sourceforge.net/vexi/?rev=4120&view=rev
Author:   clrg
Date:     2011-05-10 13:39:37 +0000 (Tue, 10 May 2011)

Log Message:
-----------
FEATURE: more useful backtrace output by vunit
FEATURE: convert underscores to spaces for display

Modified Paths:
--------------
    trunk/org.vexi-vexi.vunit/src_main/vexi/test/vunit.t

Modified: trunk/org.vexi-vexi.vunit/src_main/vexi/test/vunit.t
===================================================================
--- trunk/org.vexi-vexi.vunit/src_main/vexi/test/vunit.t        2011-05-10 
12:46:02 UTC (rev 4119)
+++ trunk/org.vexi-vexi.vunit/src_main/vexi/test/vunit.t        2011-05-10 
13:39:37 UTC (rev 4120)
@@ -61,6 +61,17 @@
         for (v in obj) {
             if (v.length>4 and v.substr(0,4)=="test") {
                 var name = v.substr(4,v.length-4);
+                // FEATURE replace underscores with spaces for nicer display
+                var split = name.split("_");
+                if (split.length>1) {
+                    name = "";
+                    for (var i=0; split.length>i; i++) {
+                        if (split[i].length) {
+                            if (name!="") name += " ";
+                            name += split[i];
+                        }
+                    }
+                }
                 var tcase = newTestCase(name, obj[v]);
                 r.addTest(tcase);
             }
@@ -297,13 +308,6 @@
             vexi.js.stringify(actual));
     }
     
-    //aliases
-    static.assertEq  = assertEquals;
-    static.assertGT  = assertGreaterThan;
-    static.assertGTE = assertGreaterThanEquals;
-    static.assertLT  = assertLessThan;
-    static.assertLTE = assertLessThanEquals;
-    
     static.assertExceptionThrown = function(f) {
         try {
             f();
@@ -312,6 +316,51 @@
         }
         throw "expected exception";
     };
+    
+    // FEATURE remove vunit bits from the backtrace
+    var backtraceModifierReadTrap = function() {
+        // fetch the actual assertion function
+        var fun = cascade;
+        // return a wrapping function that executes the
+        // assertion function and modifies any exception
+        return function() {
+            try {
+                fun.apply(null, arguments);
+            } catch (e) {
+                var localtrace = [];
+                // step through hte backtrace and remove any
+                // entries that are generated by vunit code
+                for (var i,trace in e.backtrace)
+                    if (trace.indexOf("vexi.test.vunit")!=0 and 
trace.indexOf("org.vexi.vunit")!=0)
+                        localtrace.push(trace);
+                // keep the full backtrace just in case
+                // TODO document this
+                e.fulltrace = e.backtrace;
+                // need to use a read trap as backtrace is created
+                // on-the-fly by the vexi code; writes are useless
+                e.backtrace ++= function() { return localtrace; }
+                throw e;
+            }
+        };
+    }
+    static.assertFalse ++= backtraceModifierReadTrap;
+    static.assertTrue ++= backtraceModifierReadTrap;
+    static.assertNotNull ++= backtraceModifierReadTrap;
+    static.assertEquals ++= backtraceModifierReadTrap;
+    static.assertApproxEquals ++= backtraceModifierReadTrap;
+    static.assertGreaterThan ++= backtraceModifierReadTrap;
+    static.assertGreaterThanEquals ++= backtraceModifierReadTrap;
+    static.assertLessrThan ++= backtraceModifierReadTrap;
+    static.assertLessrThanEquals ++= backtraceModifierReadTrap;
+    static.assertObjectEquals ++= backtraceModifierReadTrap;
+    static.assertExceptionThrown ++= backtraceModifierReadTrap;
+    
+    //aliases
+    static.assertEq  = assertEquals;
+    static.assertGT  = assertGreaterThan;
+    static.assertGTE = assertGreaterThanEquals;
+    static.assertLT  = assertLessThan;
+    static.assertLTE = assertLessThanEquals;
 
     /////////
     // ASYNC assertion stuff


This was sent by the SourceForge.net collaborative development platform, the 
world's largest Open Source development site.

------------------------------------------------------------------------------
Achieve unprecedented app performance and reliability
What every C/C++ and Fortran developer should know.
Learn how Intel has extended the reach of its next-generation tools
to help boost performance applications - inlcuding clusters.
http://p.sf.net/sfu/intel-dev2devmay
_______________________________________________
Vexi-svn mailing list
Vexi-svn@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/vexi-svn

Reply via email to