summaryrefslogtreecommitdiff
path: root/website
diff options
context:
space:
mode:
authorSam Mikes <smikes@cubane.com>2014-07-18 16:22:37 -0600
committerBrian Terlson <brian.terlson@microsoft.com>2014-07-30 15:39:04 -0700
commitc33bf0e0439e6f6bf084c1524d7df8d2b41c515d (patch)
treeb585d0af6545014fedec09e0b663cc77e1547e84 /website
parent0defa373854162392a3832e6edceeecd2ffd6705 (diff)
downloadqtdeclarative-testsuites-c33bf0e0439e6f6bf084c1524d7df8d2b41c515d.tar.gz
tools, harness: support new YAML frontmatter
parseTestRecord: add support for YAML frontmatter parseTestRecord: initial unit test for test record parser parseTestRecord: refactor for testing factor old parsing; add YAML parsing runner: support "includes" from YAML frontmatter support frontmatter "includes" in python runner use test.includes if present instead of scanning test code with regex harness: factor individual functions out into files tools: handle YAML errors tolerate missing keys in dictionary (flags, includes) report filename when empty frontmatter block new option --list-includes to test262.py harness: factor helper functions into separate files sth: remove extra close-paren (syntax error) test_common: TDD; failing parse of YAML common: use parseTestRecord (YAML-aware)
Diffstat (limited to 'website')
-rw-r--r--website/harness/$FAIL.js3
-rw-r--r--website/harness/$PRINT.js4
-rw-r--r--website/harness/Test262Error.js7
-rw-r--r--website/harness/accessorPropertyAttributesAreCorrect.js74
-rw-r--r--website/harness/arrayContains.js17
-rw-r--r--website/harness/compareArray.js19
-rw-r--r--website/harness/dataPropertyAttributesAreCorrect.js74
-rw-r--r--website/harness/fnExists.js7
-rw-r--r--website/harness/fnGlobalObject.js5
-rw-r--r--website/harness/runTestCase.js5
10 files changed, 215 insertions, 0 deletions
diff --git a/website/harness/$FAIL.js b/website/harness/$FAIL.js
new file mode 100644
index 000000000..64f13f14e
--- /dev/null
+++ b/website/harness/$FAIL.js
@@ -0,0 +1,3 @@
+function $FAIL(message) {
+ testFailed(message);
+}
diff --git a/website/harness/$PRINT.js b/website/harness/$PRINT.js
new file mode 100644
index 000000000..b9a301503
--- /dev/null
+++ b/website/harness/$PRINT.js
@@ -0,0 +1,4 @@
+//adaptors for Test262 framework
+function $PRINT(message) {
+
+}
diff --git a/website/harness/Test262Error.js b/website/harness/Test262Error.js
new file mode 100644
index 000000000..8966c7621
--- /dev/null
+++ b/website/harness/Test262Error.js
@@ -0,0 +1,7 @@
+//function Test262Error(message) {
+// if (message) this.message = message;
+//}
+//
+//Test262Error.prototype.toString = function () {
+// return "Test262 Error: " + this.message;
+//};
diff --git a/website/harness/accessorPropertyAttributesAreCorrect.js b/website/harness/accessorPropertyAttributesAreCorrect.js
new file mode 100644
index 000000000..834393645
--- /dev/null
+++ b/website/harness/accessorPropertyAttributesAreCorrect.js
@@ -0,0 +1,74 @@
+//-----------------------------------------------------------------------------
+//Verify all attributes specified accessor property of given object:
+//get, set, enumerable, configurable
+//If all attribute values are expected, return true, otherwise, return false
+function accessorPropertyAttributesAreCorrect(obj,
+ name,
+ get,
+ set,
+ setVerifyHelpProp,
+ enumerable,
+ configurable) {
+ var attributesCorrect = true;
+
+ if (get !== undefined) {
+ if (obj[name] !== get()) {
+ if (typeof obj[name] === "number" &&
+ isNaN(obj[name]) &&
+ typeof get() === "number" &&
+ isNaN(get())) {
+ // keep empty
+ } else {
+ attributesCorrect = false;
+ }
+ }
+ } else {
+ if (obj[name] !== undefined) {
+ attributesCorrect = false;
+ }
+ }
+
+ try {
+ var desc = Object.getOwnPropertyDescriptor(obj, name);
+ if (typeof desc.set === "undefined") {
+ if (typeof set !== "undefined") {
+ attributesCorrect = false;
+ }
+ } else {
+ obj[name] = "toBeSetValue";
+ if (obj[setVerifyHelpProp] !== "toBeSetValue") {
+ attributesCorrect = false;
+ }
+ }
+ } catch (se) {
+ throw se;
+ }
+
+
+ var enumerated = false;
+ for (var prop in obj) {
+ if (obj.hasOwnProperty(prop) && prop === name) {
+ enumerated = true;
+ }
+ }
+
+ if (enumerated !== enumerable) {
+ attributesCorrect = false;
+ }
+
+
+ var deleted = false;
+ try {
+ delete obj[name];
+ } catch (de) {
+ throw de;
+ }
+ if (!obj.hasOwnProperty(name)) {
+ deleted = true;
+ }
+ if (deleted !== configurable) {
+ attributesCorrect = false;
+ }
+
+ return attributesCorrect;
+}
diff --git a/website/harness/arrayContains.js b/website/harness/arrayContains.js
new file mode 100644
index 000000000..b295de5f3
--- /dev/null
+++ b/website/harness/arrayContains.js
@@ -0,0 +1,17 @@
+//-----------------------------------------------------------------------------
+function arrayContains(arr, expected) {
+ var found;
+ for (var i = 0; i < expected.length; i++) {
+ found = false;
+ for (var j = 0; j < arr.length; j++) {
+ if (expected[i] === arr[j]) {
+ found = true;
+ break;
+ }
+ }
+ if (!found) {
+ return false;
+ }
+ }
+ return true;
+}
diff --git a/website/harness/compareArray.js b/website/harness/compareArray.js
new file mode 100644
index 000000000..9b842ed5c
--- /dev/null
+++ b/website/harness/compareArray.js
@@ -0,0 +1,19 @@
+
+//-----------------------------------------------------------------------------
+function compareArray(aExpected, aActual) {
+ if (aActual.length != aExpected.length) {
+ return false;
+ }
+
+ aExpected.sort();
+ aActual.sort();
+
+ var s;
+ for (var i = 0; i < aExpected.length; i++) {
+ if (aActual[i] !== aExpected[i]) {
+ return false;
+ }
+ }
+ return true;
+}
+
diff --git a/website/harness/dataPropertyAttributesAreCorrect.js b/website/harness/dataPropertyAttributesAreCorrect.js
new file mode 100644
index 000000000..201409f90
--- /dev/null
+++ b/website/harness/dataPropertyAttributesAreCorrect.js
@@ -0,0 +1,74 @@
+//-----------------------------------------------------------------------------
+//Verify all attributes specified data property of given object:
+//value, writable, enumerable, configurable
+//If all attribute values are expected, return true, otherwise, return false
+function dataPropertyAttributesAreCorrect(obj,
+ name,
+ value,
+ writable,
+ enumerable,
+ configurable) {
+ var attributesCorrect = true;
+
+ if (obj[name] !== value) {
+ if (typeof obj[name] === "number" &&
+ isNaN(obj[name]) &&
+ typeof value === "number" &&
+ isNaN(value)) {
+ // keep empty
+ } else {
+ attributesCorrect = false;
+ }
+ }
+
+ try {
+ if (obj[name] === "oldValue") {
+ obj[name] = "newValue";
+ } else {
+ obj[name] = "OldValue";
+ }
+ } catch (we) {
+ }
+
+ var overwrited = false;
+ if (obj[name] !== value) {
+ if (typeof obj[name] === "number" &&
+ isNaN(obj[name]) &&
+ typeof value === "number" &&
+ isNaN(value)) {
+ // keep empty
+ } else {
+ overwrited = true;
+ }
+ }
+ if (overwrited !== writable) {
+ attributesCorrect = false;
+ }
+
+ var enumerated = false;
+ for (var prop in obj) {
+ if (obj.hasOwnProperty(prop) && prop === name) {
+ enumerated = true;
+ }
+ }
+
+ if (enumerated !== enumerable) {
+ attributesCorrect = false;
+ }
+
+
+ var deleted = false;
+
+ try {
+ delete obj[name];
+ } catch (de) {
+ }
+ if (!obj.hasOwnProperty(name)) {
+ deleted = true;
+ }
+ if (deleted !== configurable) {
+ attributesCorrect = false;
+ }
+
+ return attributesCorrect;
+}
diff --git a/website/harness/fnExists.js b/website/harness/fnExists.js
new file mode 100644
index 000000000..1f283b45d
--- /dev/null
+++ b/website/harness/fnExists.js
@@ -0,0 +1,7 @@
+//-----------------------------------------------------------------------------
+function fnExists(/*arguments*/) {
+ for (var i = 0; i < arguments.length; i++) {
+ if (typeof (arguments[i]) !== "function") return false;
+ }
+ return true;
+}
diff --git a/website/harness/fnGlobalObject.js b/website/harness/fnGlobalObject.js
new file mode 100644
index 000000000..0a68c2da7
--- /dev/null
+++ b/website/harness/fnGlobalObject.js
@@ -0,0 +1,5 @@
+//-----------------------------------------------------------------------------
+var __globalObject = Function("return this;")();
+function fnGlobalObject() {
+ return __globalObject;
+}
diff --git a/website/harness/runTestCase.js b/website/harness/runTestCase.js
new file mode 100644
index 000000000..8b24a1ca0
--- /dev/null
+++ b/website/harness/runTestCase.js
@@ -0,0 +1,5 @@
+function runTestCase(testcase) {
+ if (testcase() !== true) {
+ $ERROR("Test case returned non-true value!");
+ }
+}