about summary refs log tree commit diff
diff options
context:
space:
mode:
authorGuillaume Gomez <guillaume1.gomez@gmail.com>2019-02-24 00:08:43 +0100
committerGuillaume Gomez <guillaume1.gomez@gmail.com>2019-02-25 17:46:06 +0100
commitaa3ca321e92c541dce363634c9cea7cf23689a5e (patch)
tree3892956ba062a30f060d0e9b74cdbd09eca8121e
parent834347ddafee7c33f3fd556c4976275b1111dc8f (diff)
downloadrust-aa3ca321e92c541dce363634c9cea7cf23689a5e.tar.gz
rust-aa3ca321e92c541dce363634c9cea7cf23689a5e.zip
Rename rustdoc js test suites
-rw-r--r--src/bootstrap/builder.rs2
-rw-r--r--src/bootstrap/test.rs18
-rw-r--r--src/test/rustdoc-js-not-std/basic.js7
-rw-r--r--src/test/rustdoc-js-std/alias-1.js (renamed from src/test/rustdoc-js/alias-1.js)0
-rw-r--r--src/test/rustdoc-js-std/alias-2.js (renamed from src/test/rustdoc-js/alias-2.js)0
-rw-r--r--src/test/rustdoc-js-std/alias-3.js (renamed from src/test/rustdoc-js/alias-3.js)0
-rw-r--r--src/test/rustdoc-js-std/alias.js (renamed from src/test/rustdoc-js/alias.js)0
-rw-r--r--src/test/rustdoc-js-std/basic.js15
-rw-r--r--src/test/rustdoc-js-std/deduplication.js (renamed from src/test/rustdoc-js/deduplication.js)0
-rw-r--r--src/test/rustdoc-js-std/enum-option.js (renamed from src/test/rustdoc-js/enum-option.js)0
-rw-r--r--src/test/rustdoc-js-std/filter-crate.js (renamed from src/test/rustdoc-js/filter-crate.js)0
-rw-r--r--src/test/rustdoc-js-std/fn-forget.js (renamed from src/test/rustdoc-js/fn-forget.js)0
-rw-r--r--src/test/rustdoc-js-std/from_u.js (renamed from src/test/rustdoc-js/from_u.js)0
-rw-r--r--src/test/rustdoc-js-std/keyword.js (renamed from src/test/rustdoc-js/keyword.js)0
-rw-r--r--src/test/rustdoc-js-std/macro-check.js (renamed from src/test/rustdoc-js/macro-check.js)0
-rw-r--r--src/test/rustdoc-js-std/macro-print.js (renamed from src/test/rustdoc-js/macro-print.js)0
-rw-r--r--src/test/rustdoc-js-std/multi-query.js (renamed from src/test/rustdoc-js/multi-query.js)0
-rw-r--r--src/test/rustdoc-js-std/never.js (renamed from src/test/rustdoc-js/never.js)0
-rw-r--r--src/test/rustdoc-js-std/quoted.js (renamed from src/test/rustdoc-js/quoted.js)0
-rw-r--r--src/test/rustdoc-js-std/should-fail.js (renamed from src/test/rustdoc-js/should-fail.js)0
-rw-r--r--src/test/rustdoc-js-std/string-from_ut.js (renamed from src/test/rustdoc-js/string-from_ut.js)0
-rw-r--r--src/test/rustdoc-js-std/struct-vec.js (renamed from src/test/rustdoc-js/struct-vec.js)0
-rw-r--r--src/test/rustdoc-js-std/vec-new.js (renamed from src/test/rustdoc-js/vec-new.js)0
-rw-r--r--src/test/rustdoc-js/basic.js12
-rw-r--r--src/test/rustdoc-js/basic.rs (renamed from src/test/rustdoc-js-not-std/basic.rs)0
-rw-r--r--src/tools/rustdoc-js-std/tester.js (renamed from src/tools/rustdoc-js-not-std/tester.js)74
-rw-r--r--src/tools/rustdoc-js/tester.js65
27 files changed, 93 insertions, 100 deletions
diff --git a/src/bootstrap/builder.rs b/src/bootstrap/builder.rs
index 71b9cd6f9fb..a471af25766 100644
--- a/src/bootstrap/builder.rs
+++ b/src/bootstrap/builder.rs
@@ -405,7 +405,7 @@ impl<'a> Builder<'a> {
                 test::Miri,
                 test::Clippy,
                 test::CompiletestTest,
-                test::RustdocJS,
+                test::RustdocJSStd,
                 test::RustdocJSNotStd,
                 test::RustdocTheme,
                 // Run bootstrap close to the end as it's unlikely to fail
diff --git a/src/bootstrap/test.rs b/src/bootstrap/test.rs
index 7dcc10e8a09..c724d75c2dc 100644
--- a/src/bootstrap/test.rs
+++ b/src/bootstrap/test.rs
@@ -574,22 +574,22 @@ impl Step for RustdocTheme {
 }
 
 #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub struct RustdocJS {
+pub struct RustdocJSStd {
     pub host: Interned<String>,
     pub target: Interned<String>,
 }
 
-impl Step for RustdocJS {
+impl Step for RustdocJSStd {
     type Output = ();
     const DEFAULT: bool = true;
     const ONLY_HOSTS: bool = true;
 
     fn should_run(run: ShouldRun<'_>) -> ShouldRun<'_> {
-        run.path("src/test/rustdoc-js")
+        run.path("src/test/rustdoc-js-std")
     }
 
     fn make_run(run: RunConfig<'_>) {
-        run.builder.ensure(RustdocJS {
+        run.builder.ensure(RustdocJSStd {
             host: run.host,
             target: run.target,
         });
@@ -598,7 +598,7 @@ impl Step for RustdocJS {
     fn run(self, builder: &Builder<'_>) {
         if let Some(ref nodejs) = builder.config.nodejs {
             let mut command = Command::new(nodejs);
-            command.args(&["src/tools/rustdoc-js/tester.js", &*self.host]);
+            command.args(&["src/tools/rustdoc-js-std/tester.js", &*self.host]);
             builder.ensure(crate::doc::Std {
                 target: self.target,
                 stage: builder.top_stage,
@@ -606,7 +606,7 @@ impl Step for RustdocJS {
             builder.run(&mut command);
         } else {
             builder.info(
-                "No nodejs found, skipping \"src/test/rustdoc-js\" tests"
+                "No nodejs found, skipping \"src/test/rustdoc-js-std\" tests"
             );
         }
     }
@@ -625,7 +625,7 @@ impl Step for RustdocJSNotStd {
     const ONLY_HOSTS: bool = true;
 
     fn should_run(run: ShouldRun) -> ShouldRun {
-        run.path("src/test/rustdoc-js-not-std")
+        run.path("src/test/rustdoc-js")
     }
 
     fn make_run(run: RunConfig) {
@@ -640,7 +640,7 @@ impl Step for RustdocJSNotStd {
     fn run(self, builder: &Builder) {
         if let Some(ref nodejs) = builder.config.nodejs {
             let mut command = Command::new(nodejs);
-            command.args(&["src/tools/rustdoc-js-not-std/tester.js",
+            command.args(&["src/tools/rustdoc-js/tester.js",
                            &*self.host,
                            builder.top_stage.to_string().as_str()]);
             builder.ensure(crate::doc::Std {
@@ -650,7 +650,7 @@ impl Step for RustdocJSNotStd {
             builder.run(&mut command);
         } else {
             builder.info(
-                "No nodejs found, skipping \"src/test/rustdoc-js-not-std\" tests"
+                "No nodejs found, skipping \"src/test/rustdoc-js\" tests"
             );
         }
     }
diff --git a/src/test/rustdoc-js-not-std/basic.js b/src/test/rustdoc-js-not-std/basic.js
deleted file mode 100644
index d99b23468b6..00000000000
--- a/src/test/rustdoc-js-not-std/basic.js
+++ /dev/null
@@ -1,7 +0,0 @@
-const QUERY = 'Fo';
-
-const EXPECTED = {
-    'others': [
-        { 'path': 'basic', 'name': 'Foo' },
-    ],
-};
diff --git a/src/test/rustdoc-js/alias-1.js b/src/test/rustdoc-js-std/alias-1.js
index 7c6327fcdd7..7c6327fcdd7 100644
--- a/src/test/rustdoc-js/alias-1.js
+++ b/src/test/rustdoc-js-std/alias-1.js
diff --git a/src/test/rustdoc-js/alias-2.js b/src/test/rustdoc-js-std/alias-2.js
index f3c6713692b..f3c6713692b 100644
--- a/src/test/rustdoc-js/alias-2.js
+++ b/src/test/rustdoc-js-std/alias-2.js
diff --git a/src/test/rustdoc-js/alias-3.js b/src/test/rustdoc-js-std/alias-3.js
index 392b1e81837..392b1e81837 100644
--- a/src/test/rustdoc-js/alias-3.js
+++ b/src/test/rustdoc-js-std/alias-3.js
diff --git a/src/test/rustdoc-js/alias.js b/src/test/rustdoc-js-std/alias.js
index 2b709c99119..2b709c99119 100644
--- a/src/test/rustdoc-js/alias.js
+++ b/src/test/rustdoc-js-std/alias.js
diff --git a/src/test/rustdoc-js-std/basic.js b/src/test/rustdoc-js-std/basic.js
new file mode 100644
index 00000000000..824cac71083
--- /dev/null
+++ b/src/test/rustdoc-js-std/basic.js
@@ -0,0 +1,15 @@
+const QUERY = 'String';
+
+const EXPECTED = {
+    'others': [
+        { 'path': 'std::string', 'name': 'String' },
+        { 'path': 'std::ffi', 'name': 'CString' },
+        { 'path': 'std::ffi', 'name': 'OsString' },
+    ],
+    'in_args': [
+        { 'path': 'std::str', 'name': 'eq' },
+    ],
+    'returned': [
+        { 'path': 'std::string::String', 'name': 'add' },
+    ],
+};
diff --git a/src/test/rustdoc-js/deduplication.js b/src/test/rustdoc-js-std/deduplication.js
index f02f6cf55ed..f02f6cf55ed 100644
--- a/src/test/rustdoc-js/deduplication.js
+++ b/src/test/rustdoc-js-std/deduplication.js
diff --git a/src/test/rustdoc-js/enum-option.js b/src/test/rustdoc-js-std/enum-option.js
index 902e0906910..902e0906910 100644
--- a/src/test/rustdoc-js/enum-option.js
+++ b/src/test/rustdoc-js-std/enum-option.js
diff --git a/src/test/rustdoc-js/filter-crate.js b/src/test/rustdoc-js-std/filter-crate.js
index 2e0330c4497..2e0330c4497 100644
--- a/src/test/rustdoc-js/filter-crate.js
+++ b/src/test/rustdoc-js-std/filter-crate.js
diff --git a/src/test/rustdoc-js/fn-forget.js b/src/test/rustdoc-js-std/fn-forget.js
index 66a5fcaa781..66a5fcaa781 100644
--- a/src/test/rustdoc-js/fn-forget.js
+++ b/src/test/rustdoc-js-std/fn-forget.js
diff --git a/src/test/rustdoc-js/from_u.js b/src/test/rustdoc-js-std/from_u.js
index e3f3cd436aa..e3f3cd436aa 100644
--- a/src/test/rustdoc-js/from_u.js
+++ b/src/test/rustdoc-js-std/from_u.js
diff --git a/src/test/rustdoc-js/keyword.js b/src/test/rustdoc-js-std/keyword.js
index 868ddd7b6dc..868ddd7b6dc 100644
--- a/src/test/rustdoc-js/keyword.js
+++ b/src/test/rustdoc-js-std/keyword.js
diff --git a/src/test/rustdoc-js/macro-check.js b/src/test/rustdoc-js-std/macro-check.js
index 242e0cbf5f4..242e0cbf5f4 100644
--- a/src/test/rustdoc-js/macro-check.js
+++ b/src/test/rustdoc-js-std/macro-check.js
diff --git a/src/test/rustdoc-js/macro-print.js b/src/test/rustdoc-js-std/macro-print.js
index 858046e72e9..858046e72e9 100644
--- a/src/test/rustdoc-js/macro-print.js
+++ b/src/test/rustdoc-js-std/macro-print.js
diff --git a/src/test/rustdoc-js/multi-query.js b/src/test/rustdoc-js-std/multi-query.js
index 01e54065189..01e54065189 100644
--- a/src/test/rustdoc-js/multi-query.js
+++ b/src/test/rustdoc-js-std/multi-query.js
diff --git a/src/test/rustdoc-js/never.js b/src/test/rustdoc-js-std/never.js
index 392b1e81837..392b1e81837 100644
--- a/src/test/rustdoc-js/never.js
+++ b/src/test/rustdoc-js-std/never.js
diff --git a/src/test/rustdoc-js/quoted.js b/src/test/rustdoc-js-std/quoted.js
index 924129f86c8..924129f86c8 100644
--- a/src/test/rustdoc-js/quoted.js
+++ b/src/test/rustdoc-js-std/quoted.js
diff --git a/src/test/rustdoc-js/should-fail.js b/src/test/rustdoc-js-std/should-fail.js
index b85a47dc08a..b85a47dc08a 100644
--- a/src/test/rustdoc-js/should-fail.js
+++ b/src/test/rustdoc-js-std/should-fail.js
diff --git a/src/test/rustdoc-js/string-from_ut.js b/src/test/rustdoc-js-std/string-from_ut.js
index f9edf4408db..f9edf4408db 100644
--- a/src/test/rustdoc-js/string-from_ut.js
+++ b/src/test/rustdoc-js-std/string-from_ut.js
diff --git a/src/test/rustdoc-js/struct-vec.js b/src/test/rustdoc-js-std/struct-vec.js
index 2c808143bae..2c808143bae 100644
--- a/src/test/rustdoc-js/struct-vec.js
+++ b/src/test/rustdoc-js-std/struct-vec.js
diff --git a/src/test/rustdoc-js/vec-new.js b/src/test/rustdoc-js-std/vec-new.js
index e4daa5065d2..e4daa5065d2 100644
--- a/src/test/rustdoc-js/vec-new.js
+++ b/src/test/rustdoc-js-std/vec-new.js
diff --git a/src/test/rustdoc-js/basic.js b/src/test/rustdoc-js/basic.js
index 824cac71083..d99b23468b6 100644
--- a/src/test/rustdoc-js/basic.js
+++ b/src/test/rustdoc-js/basic.js
@@ -1,15 +1,7 @@
-const QUERY = 'String';
+const QUERY = 'Fo';
 
 const EXPECTED = {
     'others': [
-        { 'path': 'std::string', 'name': 'String' },
-        { 'path': 'std::ffi', 'name': 'CString' },
-        { 'path': 'std::ffi', 'name': 'OsString' },
-    ],
-    'in_args': [
-        { 'path': 'std::str', 'name': 'eq' },
-    ],
-    'returned': [
-        { 'path': 'std::string::String', 'name': 'add' },
+        { 'path': 'basic', 'name': 'Foo' },
     ],
 };
diff --git a/src/test/rustdoc-js-not-std/basic.rs b/src/test/rustdoc-js/basic.rs
index 4a835673a59..4a835673a59 100644
--- a/src/test/rustdoc-js-not-std/basic.rs
+++ b/src/test/rustdoc-js/basic.rs
diff --git a/src/tools/rustdoc-js-not-std/tester.js b/src/tools/rustdoc-js-std/tester.js
index 61490b2f48d..f49dd86c8c3 100644
--- a/src/tools/rustdoc-js-not-std/tester.js
+++ b/src/tools/rustdoc-js-std/tester.js
@@ -1,7 +1,6 @@
 const fs = require('fs');
-const { spawnSync } = require('child_process');
 
-const TEST_FOLDER = 'src/test/rustdoc-js-not-std/';
+const TEST_FOLDER = 'src/test/rustdoc-js-std/';
 
 function getNextStep(content, pos, stop) {
     while (pos < content.length && content[pos] !== stop &&
@@ -220,27 +219,17 @@ function lookForEntry(entry, data) {
     return null;
 }
 
-function remove_docs(out_dir) {
-    spawnSync('rm', ['-rf', out_dir]);
-}
-
-function build_docs(out_dir, rustdoc_path, file_to_document) {
-    remove_docs(out_dir);
-    var c = spawnSync(rustdoc_path, [file_to_document, '-o', out_dir]);
-    var s = '';
-    if (c.error || c.stderr.length > 0) {
-        if (c.stderr.length > 0) {
-            s += '==> STDERR: ' + c.stderr + '\n';
-        }
-        s += '==> ERROR: ' + c.error;
+function main(argv) {
+    if (argv.length !== 3) {
+        console.error("Expected toolchain to check as argument (for example \
+                       'x86_64-apple-darwin')");
+        return 1;
     }
-    return s;
-}
+    var toolchain = argv[2];
 
-function load_files(out_folder, crate) {
-    var mainJs = readFile(out_folder + "/main.js");
-    var ALIASES = readFile(out_folder + "/aliases.js");
-    var searchIndex = readFile(out_folder + "/search-index.js").split("\n");
+    var mainJs = readFile("build/" + toolchain + "/doc/main.js");
+    var ALIASES = readFile("build/" + toolchain + "/doc/aliases.js");
+    var searchIndex = readFile("build/" + toolchain + "/doc/search-index.js").split("\n");
     if (searchIndex[searchIndex.length - 1].length === 0) {
         searchIndex.pop();
     }
@@ -259,7 +248,7 @@ function load_files(out_folder, crate) {
     var functionsToLoad = ["buildHrefAndPath", "pathSplitter", "levenshtein", "validateResult",
                            "getQuery", "buildIndex", "execQuery", "execSearch"];
 
-    finalJS += 'window = { "currentCrate": "' + crate + '" };\n';
+    finalJS += 'window = { "currentCrate": "std" };\n';
     finalJS += 'var rootPath = "../";\n';
     finalJS += ALIASES;
     finalJS += loadThings(arraysToLoad, 'array', extractArrayVariable, mainJs);
@@ -267,47 +256,11 @@ function load_files(out_folder, crate) {
     finalJS += loadThings(functionsToLoad, 'function', extractFunction, mainJs);
 
     var loaded = loadContent(finalJS);
-    return [loaded, loaded.buildIndex(searchIndex.searchIndex)];
-}
-
-function main(argv) {
-    if (argv.length !== 4) {
-        console.error("USAGE: node tester.js [TOOLCHAIN] [STAGE]");
-        return 1;
-    }
-    const toolchain = argv[2];
-    const stage = argv[3];
-    const rustdoc_path = './build/' + toolchain + '/stage' + stage + '/bin/rustdoc';
+    var index = loaded.buildIndex(searchIndex.searchIndex);
 
     var errors = 0;
 
     fs.readdirSync(TEST_FOLDER).forEach(function(file) {
-        if (!file.endsWith('.js')) {
-            return;
-        }
-        var test_name = file.substring(0, file.length - 3);
-        process.stdout.write('Checking "' + test_name + '" ... ');
-        var rust_file = TEST_FOLDER + test_name + '.rs';
-
-        if (!fs.existsSync(rust_file)) {
-            console.error("FAILED");
-            console.error("==> Missing '" + test_name + ".rs' file...");
-            errors += 1;
-            return;
-        }
-
-        var out_folder = "build/" + toolchain + "/stage" + stage + "/tests/rustdoc-js-not-std/" +
-                         test_name;
-
-        var ret = build_docs(out_folder, rustdoc_path, rust_file);
-        if (ret.length > 0) {
-            console.error("FAILED");
-            console.error(ret);
-            errors += 1;
-            return;
-        }
-
-        var [loaded, index] = load_files(out_folder, test_name);
         var loadedFile = loadContent(readFile(TEST_FOLDER + file) +
                                'exports.QUERY = QUERY;exports.EXPECTED = EXPECTED;');
         const expected = loadedFile.EXPECTED;
@@ -317,6 +270,7 @@ function main(argv) {
         const exact_check = loadedFile.exact_check;
         const should_fail = loadedFile.should_fail;
         var results = loaded.execSearch(loaded.getQuery(query), index);
+        process.stdout.write('Checking "' + file + '" ... ');
         var error_text = [];
         for (var key in expected) {
             if (!expected.hasOwnProperty(key)) {
@@ -354,8 +308,6 @@ function main(argv) {
             console.error("FAILED");
             console.error(error_text.join("\n"));
         } else {
-            // In this case, we remove the docs, no need to keep them around.
-            remove_docs(out_folder);
             console.log("OK");
         }
     });
diff --git a/src/tools/rustdoc-js/tester.js b/src/tools/rustdoc-js/tester.js
index 38fdcb4f468..f7c15eaf1b0 100644
--- a/src/tools/rustdoc-js/tester.js
+++ b/src/tools/rustdoc-js/tester.js
@@ -1,4 +1,5 @@
 const fs = require('fs');
+const { spawnSync } = require('child_process');
 
 const TEST_FOLDER = 'src/test/rustdoc-js/';
 
@@ -219,17 +220,22 @@ function lookForEntry(entry, data) {
     return null;
 }
 
-function main(argv) {
-    if (argv.length !== 3) {
-        console.error("Expected toolchain to check as argument (for example \
-                       'x86_64-apple-darwin')");
-        return 1;
+function build_docs(out_dir, rustdoc_path, file_to_document) {
+    var c = spawnSync(rustdoc_path, [file_to_document, '-o', out_dir]);
+    var s = '';
+    if (c.error || c.stderr.length > 0) {
+        if (c.stderr.length > 0) {
+            s += '==> STDERR: ' + c.stderr + '\n';
+        }
+        s += '==> ERROR: ' + c.error;
     }
-    var toolchain = argv[2];
+    return s;
+}
 
-    var mainJs = readFile("build/" + toolchain + "/doc/main.js");
-    var ALIASES = readFile("build/" + toolchain + "/doc/aliases.js");
-    var searchIndex = readFile("build/" + toolchain + "/doc/search-index.js").split("\n");
+function load_files(out_folder, crate) {
+    var mainJs = readFile(out_folder + "/main.js");
+    var ALIASES = readFile(out_folder + "/aliases.js");
+    var searchIndex = readFile(out_folder + "/search-index.js").split("\n");
     if (searchIndex[searchIndex.length - 1].length === 0) {
         searchIndex.pop();
     }
@@ -248,7 +254,7 @@ function main(argv) {
     var functionsToLoad = ["buildHrefAndPath", "pathSplitter", "levenshtein", "validateResult",
                            "getQuery", "buildIndex", "execQuery", "execSearch"];
 
-    finalJS += 'window = { "currentCrate": "std" };\n';
+    finalJS += 'window = { "currentCrate": "' + crate + '" };\n';
     finalJS += 'var rootPath = "../";\n';
     finalJS += ALIASES;
     finalJS += loadThings(arraysToLoad, 'array', extractArrayVariable, mainJs);
@@ -256,11 +262,47 @@ function main(argv) {
     finalJS += loadThings(functionsToLoad, 'function', extractFunction, mainJs);
 
     var loaded = loadContent(finalJS);
-    var index = loaded.buildIndex(searchIndex.searchIndex);
+    return [loaded, loaded.buildIndex(searchIndex.searchIndex)];
+}
+
+function main(argv) {
+    if (argv.length !== 4) {
+        console.error("USAGE: node tester.js [TOOLCHAIN] [STAGE]");
+        return 1;
+    }
+    const toolchain = argv[2];
+    const stage = argv[3];
+    const rustdoc_path = './build/' + toolchain + '/stage' + stage + '/bin/rustdoc';
 
     var errors = 0;
 
     fs.readdirSync(TEST_FOLDER).forEach(function(file) {
+        if (!file.endsWith('.js')) {
+            return;
+        }
+        var test_name = file.substring(0, file.length - 3);
+        process.stdout.write('Checking "' + test_name + '" ... ');
+        var rust_file = TEST_FOLDER + test_name + '.rs';
+
+        if (!fs.existsSync(rust_file)) {
+            console.error("FAILED");
+            console.error("==> Missing '" + test_name + ".rs' file...");
+            errors += 1;
+            return;
+        }
+
+        var out_folder = "build/" + toolchain + "/stage" + stage + "/tests/rustdoc-js/" +
+                         test_name;
+
+        var ret = build_docs(out_folder, rustdoc_path, rust_file);
+        if (ret.length > 0) {
+            console.error("FAILED");
+            console.error(ret);
+            errors += 1;
+            return;
+        }
+
+        var [loaded, index] = load_files(out_folder, test_name);
         var loadedFile = loadContent(readFile(TEST_FOLDER + file) +
                                'exports.QUERY = QUERY;exports.EXPECTED = EXPECTED;');
         const expected = loadedFile.EXPECTED;
@@ -270,7 +312,6 @@ function main(argv) {
         const exact_check = loadedFile.exact_check;
         const should_fail = loadedFile.should_fail;
         var results = loaded.execSearch(loaded.getQuery(query), index);
-        process.stdout.write('Checking "' + file + '" ... ');
         var error_text = [];
         for (var key in expected) {
             if (!expected.hasOwnProperty(key)) {