diff options
| author | Guillaume Gomez <guillaume1.gomez@gmail.com> | 2025-08-13 17:26:16 +0200 |
|---|---|---|
| committer | Guillaume Gomez <guillaume1.gomez@gmail.com> | 2025-08-19 15:08:34 +0200 |
| commit | 77d6ee0f351b5d058b96f6940e96221515a7acee (patch) | |
| tree | 2e31f5588ca7d544b25aeb0985048ee362952cb0 /src/tools/rustdoc-js/tester.js | |
| parent | 8365fcb2b840c95eeb0bc377af8bd498fad22245 (diff) | |
| download | rust-77d6ee0f351b5d058b96f6940e96221515a7acee.tar.gz rust-77d6ee0f351b5d058b96f6940e96221515a7acee.zip | |
Fix bug where `rustdoc-js` tester would not pick the right `search.js` file if there is more than one
Diffstat (limited to 'src/tools/rustdoc-js/tester.js')
| -rw-r--r-- | src/tools/rustdoc-js/tester.js | 22 |
1 files changed, 20 insertions, 2 deletions
diff --git a/src/tools/rustdoc-js/tester.js b/src/tools/rustdoc-js/tester.js index a1e632ce743..063dfa6b5ce 100644 --- a/src/tools/rustdoc-js/tester.js +++ b/src/tools/rustdoc-js/tester.js @@ -405,6 +405,24 @@ async function runChecks(testFile, doSearch, parseQuery) { return res; } +function mostRecentMatch(staticFiles, regex) { + const matchingEntries = fs.readdirSync(staticFiles) + .filter(f => f.match(regex)) + .map(f => { + const stats = fs.statSync(path.join(staticFiles, f)); + return { + path: f, + time: stats.mtimeMs, + }; + }); + if (matchingEntries.length === 0) { + throw "No static file matching regex"; + } + // We sort entries in descending order. + matchingEntries.sort((a, b) => b.time - a.time); + return matchingEntries[0].path; +} + /** * Load searchNNN.js and search-indexNNN.js. * @@ -417,9 +435,9 @@ async function runChecks(testFile, doSearch, parseQuery) { */ async function loadSearchJS(doc_folder, resource_suffix) { const staticFiles = path.join(doc_folder, "static.files"); - const stringdexJs = fs.readdirSync(staticFiles).find(f => f.match(/stringdex.*\.js$/)); + const stringdexJs = mostRecentMatch(staticFiles, /stringdex.*\.js$/); const stringdexModule = require(path.join(staticFiles, stringdexJs)); - const searchJs = fs.readdirSync(staticFiles).find(f => f.match(/search.*\.js$/)); + const searchJs = mostRecentMatch(staticFiles, /search.*\.js$/); const searchModule = require(path.join(staticFiles, searchJs)); globalThis.nonnull = (x, msg) => { if (x === null) { |
