about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--src/test/rustdoc-js/pinbox-new.js2
-rw-r--r--src/tools/rustdoc-js/tester.js10
2 files changed, 10 insertions, 2 deletions
diff --git a/src/test/rustdoc-js/pinbox-new.js b/src/test/rustdoc-js/pinbox-new.js
index 9d2bf1b4551..061c7b30741 100644
--- a/src/test/rustdoc-js/pinbox-new.js
+++ b/src/test/rustdoc-js/pinbox-new.js
@@ -8,6 +8,8 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
+// exact-check
+
 const QUERY = 'pinbox::new';
 
 const EXPECTED = {
diff --git a/src/tools/rustdoc-js/tester.js b/src/tools/rustdoc-js/tester.js
index 1c79443dedf..25f7a2d1294 100644
--- a/src/tools/rustdoc-js/tester.js
+++ b/src/tools/rustdoc-js/tester.js
@@ -88,6 +88,7 @@ function loadContent(content) {
     var m = new Module();
     m._compile(content, "tmp.js");
     m.exports.ignore_order = content.indexOf("\n// ignore-order\n") !== -1;
+    m.exports.exact_check = content.indexOf("\n// exact-check\n") !== -1;
     return m.exports;
 }
 
@@ -179,6 +180,7 @@ function main(argv) {
         const expected = loadedFile.EXPECTED;
         const query = loadedFile.QUERY;
         const ignore_order = loadedFile.ignore_order;
+        const exact_check = loadedFile.exact_check;
         var results = loaded.execSearch(loaded.getQuery(query), index);
         process.stdout.write('Checking "' + file + '" ... ');
         var error_text = [];
@@ -191,13 +193,17 @@ function main(argv) {
                 break;
             }
             var entry = expected[key];
-            var prev_pos = 0;
+            var prev_pos = -1;
             for (var i = 0; i < entry.length; ++i) {
                 var entry_pos = lookForEntry(entry[i], results[key]);
                 if (entry_pos === null) {
                     error_text.push("==> Result not found in '" + key + "': '" +
                                     JSON.stringify(entry[i]) + "'");
-                } else if (entry_pos < prev_pos && ignore_order === false) {
+                } else if (exact_check === true && prev_pos + 1 !== entry_pos) {
+                    error_text.push("==> Exact check failed at position " + (prev_pos + 1) + ": " +
+                                    "expected '" + JSON.stringify(entry[i]) + "' but found '" +
+                                    JSON.stringify(results[key][i]) + "'");
+                } else if (ignore_order === false && entry_pos < prev_pos) {
                     error_text.push("==> '" + JSON.stringify(entry[i]) + "' was supposed to be " +
                                     " before '" + JSON.stringify(results[key][entry_pos]) + "'");
                 } else {