don't need disk caching for site data (#26333)
* reinstate * start server manually * routing tests too * skip more * sleep more and fail if not 200 * use e2etest for content/ too * automatically start server for jest * does this work? * feedbacked * rename things * getting it to work * add dev dependency * install the right version * don't need to start that * fix package lock * update readme about it * feedbacked * don't need disk caching for site-data
This commit is contained in:
5
.github/workflows/test.yml
vendored
5
.github/workflows/test.yml
vendored
@@ -135,11 +135,6 @@ jobs:
|
|||||||
- name: Run build script
|
- name: Run build script
|
||||||
run: npm run build
|
run: npm run build
|
||||||
|
|
||||||
- name: Warm possible disk caching
|
|
||||||
env:
|
|
||||||
NODE_ENV: test
|
|
||||||
run: ./script/warm-before-tests.mjs
|
|
||||||
|
|
||||||
- name: Run tests
|
- name: Run tests
|
||||||
env:
|
env:
|
||||||
DIFF_FILE: get_diff_files.txt
|
DIFF_FILE: get_diff_files.txt
|
||||||
|
|||||||
@@ -1,5 +1,3 @@
|
|||||||
import fs from 'fs'
|
|
||||||
import os from 'os'
|
|
||||||
import path from 'path'
|
import path from 'path'
|
||||||
import flat from 'flat'
|
import flat from 'flat'
|
||||||
import { get, set } from 'lodash-es'
|
import { get, set } from 'lodash-es'
|
||||||
@@ -7,30 +5,7 @@ import languages from './languages.js'
|
|||||||
import dataDirectory from './data-directory.js'
|
import dataDirectory from './data-directory.js'
|
||||||
import encodeBracketedParentheses from './encode-bracketed-parentheses.js'
|
import encodeBracketedParentheses from './encode-bracketed-parentheses.js'
|
||||||
|
|
||||||
const TEMP_DIRECTORY = process.env.RUNNER_TEMP || os.tmpdir()
|
const loadSiteDataFromDir = (dir) => {
|
||||||
|
|
||||||
function diskMemoize(prefix, fn) {
|
|
||||||
const useCache = process.env.NODE_ENV !== 'development'
|
|
||||||
return (dir) => {
|
|
||||||
const cacheFileName = `${prefix}.${dir.replace(/[^\w]+/g, '-').toLowerCase() || 'en'}.json`
|
|
||||||
if (useCache) {
|
|
||||||
try {
|
|
||||||
return JSON.parse(fs.readFileSync(cacheFileName, 'utf-8'))
|
|
||||||
} catch (err) {
|
|
||||||
if (!(err.code === 'ENOENT' || err instanceof SyntaxError)) throw err
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
const result = fn(dir)
|
|
||||||
if (useCache) {
|
|
||||||
fs.writeFileSync(cacheFileName, JSON.stringify(result), 'utf-8')
|
|
||||||
console.log(`Disk-cache miss on ${cacheFileName}`, new Date())
|
|
||||||
}
|
|
||||||
return result
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
const loadSiteDataFromDir = diskMemoize(path.join(TEMP_DIRECTORY, 'docs-site-data'), (dir) => {
|
|
||||||
return {
|
return {
|
||||||
site: {
|
site: {
|
||||||
data: dataDirectory(path.join(dir, 'data'), {
|
data: dataDirectory(path.join(dir, 'data'), {
|
||||||
@@ -39,7 +14,7 @@ const loadSiteDataFromDir = diskMemoize(path.join(TEMP_DIRECTORY, 'docs-site-dat
|
|||||||
}),
|
}),
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
})
|
}
|
||||||
|
|
||||||
export default function loadSiteData() {
|
export default function loadSiteData() {
|
||||||
// load English site data
|
// load English site data
|
||||||
|
|||||||
@@ -1,22 +0,0 @@
|
|||||||
#!/usr/bin/env node
|
|
||||||
|
|
||||||
// [start-readme]
|
|
||||||
//
|
|
||||||
// It runs the warmServer() function because that function can do things
|
|
||||||
// like writing to disk as a caching mechanism.
|
|
||||||
// When jest runs tests, it starts multiple concurrent processes,
|
|
||||||
// even if it runs it serially (`--runInBand`) so it's highly likely
|
|
||||||
// that two concurrent processes both attempt to writing to
|
|
||||||
// the same exact file. By running this script before anything
|
|
||||||
// begins, we can be certain that files that should have been created
|
|
||||||
// are created.
|
|
||||||
//
|
|
||||||
// [end-readme]
|
|
||||||
|
|
||||||
import warmServer from '../lib/warm-server.js'
|
|
||||||
|
|
||||||
main()
|
|
||||||
|
|
||||||
async function main() {
|
|
||||||
await warmServer()
|
|
||||||
}
|
|
||||||
Reference in New Issue
Block a user