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
|
||||
run: npm run build
|
||||
|
||||
- name: Warm possible disk caching
|
||||
env:
|
||||
NODE_ENV: test
|
||||
run: ./script/warm-before-tests.mjs
|
||||
|
||||
- name: Run tests
|
||||
env:
|
||||
DIFF_FILE: get_diff_files.txt
|
||||
|
||||
@@ -1,5 +1,3 @@
|
||||
import fs from 'fs'
|
||||
import os from 'os'
|
||||
import path from 'path'
|
||||
import flat from 'flat'
|
||||
import { get, set } from 'lodash-es'
|
||||
@@ -7,30 +5,7 @@ import languages from './languages.js'
|
||||
import dataDirectory from './data-directory.js'
|
||||
import encodeBracketedParentheses from './encode-bracketed-parentheses.js'
|
||||
|
||||
const TEMP_DIRECTORY = process.env.RUNNER_TEMP || os.tmpdir()
|
||||
|
||||
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) => {
|
||||
const loadSiteDataFromDir = (dir) => {
|
||||
return {
|
||||
site: {
|
||||
data: dataDirectory(path.join(dir, 'data'), {
|
||||
@@ -39,7 +14,7 @@ const loadSiteDataFromDir = diskMemoize(path.join(TEMP_DIRECTORY, 'docs-site-dat
|
||||
}),
|
||||
},
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
export default function loadSiteData() {
|
||||
// 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