Make testapi run as part of the standard JavaScriptCore tests.
authoroliver@apple.com <oliver@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 24 Mar 2009 00:18:02 +0000 (00:18 +0000)
committeroliver@apple.com <oliver@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 24 Mar 2009 00:18:02 +0000 (00:18 +0000)
Reviewed by Geoff Garen.

We only run testapi on the mac as currently windows webkit doesn't
place all the necessary files for testapi, and we also test the
JSC/CF APIs as well.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@41924 268f45cc-cd09-0410-ab3c-d52691b4dbfc

JavaScriptCore/API/tests/testapi.c
JavaScriptCore/ChangeLog
WebKitTools/ChangeLog
WebKitTools/Scripts/run-javascriptcore-tests

index 1038da1..9095238 100644 (file)
@@ -26,6 +26,7 @@
 #include "JavaScriptCore.h"
 #include "JSBasePrivate.h"
 #include <math.h>
+#define ASSERT_DISABLED 0
 #include <wtf/Assertions.h>
 #include <wtf/UnusedParam.h>
 
@@ -342,7 +343,8 @@ static bool EvilExceptionObject_hasInstance(JSContextRef context, JSObjectRef co
     JSStringRef hasInstanceName = JSStringCreateWithUTF8CString("hasInstance");
     JSValueRef hasInstance = JSObjectGetProperty(context, constructor, hasInstanceName, exception);
     JSStringRelease(hasInstanceName);
-    
+    if (!hasInstance)
+        return false;
     JSObjectRef function = JSValueToObject(context, hasInstance, exception);
     JSValueRef result = JSObjectCallAsFunction(context, function, constructor, 1, &possibleValue, exception);
     return result && JSValueToBoolean(context, result);
index 3c55e8f..8cf71dc 100644 (file)
@@ -1,3 +1,18 @@
+2009-03-23  Oliver Hunt  <oliver@apple.com>
+
+        Reviewed by Geoff Garen.
+
+        Make testapi assertions run in release builds, so that testapi actually
+        works in a release build.
+
+        Many of the testapi assertions have side effects that are necessary, and
+        given testapi is a testing program, perf impact of an assertion is not
+        important, so it makes sense to apply the assertions in release builds
+        anyway.
+
+        * API/tests/testapi.c:
+        (EvilExceptionObject_hasInstance):
+
 2009-03-23  David Kilzer  <ddkilzer@apple.com>
 
         Provide JavaScript exception information after slow script timeout
index deaa611..f623f48 100644 (file)
@@ -1,3 +1,15 @@
+2009-03-23  Oliver Hunt  <oliver@apple.com>
+
+        Reviewed by Geoff Garen.
+
+        Make testapi run as part of the standard JavaScriptCore tests.
+
+        We only run testapi on the mac as currently windows webkit doesn't
+        place all the necessary files for testapi, and we also test the
+        JSC/CF APIs as well.
+
+        * Scripts/run-javascriptcore-tests:
+
 2009-03-21  Oliver Hunt  <oliver@apple.com>
 
         Reviewed by Mark Rowe.
index fd3c568..c0cb9a4 100755 (executable)
@@ -84,12 +84,9 @@ if (!defined($root)){
     }
 }
 
-# Find JavaScriptCore directory
-chdirWebKit();
-chdir("JavaScriptCore");
 
 my $productDir = productDir();
-chdir "tests/mozilla" or die;
+
 $productDir .= "/JavaScriptCore" if isQt();
 $productDir .= "/Programs" if isGtk();
 $ENV{DYLD_FRAMEWORK_PATH} = $productDir;
@@ -103,6 +100,26 @@ sub jscPath($)
     return "$productDir/$jscName";
 }
 
+sub testapiPath($)
+{
+    my ($productDir) = @_;
+    my $jscName = "testapi";
+    $jscName .= "_debug"  if (isCygwin() && ($configuration eq "Debug"));
+    return "$productDir/$jscName";
+}
+
+#run api tests
+if (isAppleMacWebKit()) {
+    chdirWebKit();
+    chdir($productDir) or die;
+    my $testapiResult = system testapiPath($productDir);
+    exit exitStatus($testapiResult)  if $testapiResult;
+}
+
+# Find JavaScriptCore directory
+chdirWebKit();
+chdir("JavaScriptCore");
+chdir "tests/mozilla" or die;
 printf "Running: jsDriver.pl -e squirrelfish -s %s -f actual.html %s\n", jscPath($productDir), join(" ", @jsArgs);
 my $result = system "perl", "jsDriver.pl", "-e", "squirrelfish", "-s", jscPath($productDir), "-f", "actual.html", @jsArgs;
 exit exitStatus($result)  if $result;