test('Should ignore non-existing digests files', async t => { const [cacheDir, srcDir] = await Promise.all([createTmpDir(), createTmpDir()]) try { const srcFile = `${srcDir}/test` const digest = `${srcDir}/digest` await pWriteFile(srcFile, 'test') t.true(await cacheUtils.save(srcDir, { cacheDir, digests: [digest] })) await pWriteFile(srcFile, 'newTest') t.true(await cacheUtils.save(srcDir, { cacheDir, digests: [digest] })) } finally { await removeFiles([cacheDir, srcDir]) } })
// Create a dummy `package.json` so we can run `npm install` and get a lock file const createPackageJson = async function(autoPluginsDir) { const packageJsonPath = `${autoPluginsDir}/package.json` if (await pathExists(packageJsonPath)) { return } const packageJsonContent = JSON.stringify(AUTO_PLUGINS_PACKAGE_JSON, null, 2) await pWriteFile(packageJsonPath, packageJsonContent) }
test.only('Handles big outputs', async t => { const bigNetlify = `${FIXTURES_DIR}/big/netlify.toml` await del(bigNetlify, { force: true }) try { const bigContent = getBigNetlifyContent() await pWriteFile(bigNetlify, bigContent) const { returnValue } = await runFixture(t, 'big', { snapshot: false, useBinary: true }) t.notThrows(() => { JSON.parse(returnValue) }) } finally { await del(bigNetlify, { force: true }) } })
const createTmpFile = async function(opts) { const tmpDir = await createTmpDir(opts) const filename = basename(await tmpName()) const tmpFile = join(tmpDir, filename) await pWriteFile(tmpFile, '') return [tmpFile, tmpDir] }
// Persist the cache manifest to filesystem const writeManifest = async function({ manifestPath, manifestString }) { await makeDir(dirname(manifestPath)) await pWriteFile(manifestPath, manifestString) }
test('Should keep file contents when caching files', async t => { const [cacheDir, [srcFile, srcDir]] = await Promise.all([createTmpDir(), createTmpFile()]) try { await pWriteFile(srcFile, 'test') t.true(await cacheUtils.save(srcFile, { cacheDir })) await removeFiles(srcFile) t.true(await cacheUtils.restore(srcFile, { cacheDir })) t.true(await pathExists(srcFile)) t.is(await pReadFile(srcFile, 'utf8'), 'test') } finally { await removeFiles([cacheDir, srcDir]) } })
test('Should cache and restore one directory', async t => { const [cacheDir, srcDir] = await Promise.all([createTmpDir(), createTmpDir()]) try { const srcFile = `${srcDir}/test` await pWriteFile(srcFile, '') t.true(await cacheUtils.save(srcDir, { cacheDir })) await removeFiles(srcDir) t.true(await cacheUtils.restore(srcDir, { cacheDir })) t.true(await pathExists(srcFile)) } finally { await removeFiles([cacheDir, srcDir]) } })
test('Should overwrite files on restore', async t => { const [cacheDir, [srcFile, srcDir]] = await Promise.all([createTmpDir(), createTmpFile()]) try { await pWriteFile(srcFile, 'test') t.true(await cacheUtils.save(srcFile, { cacheDir })) await pWriteFile(srcFile, 'newTest') t.true(await cacheUtils.restore(srcFile, { cacheDir })) t.true(await pathExists(srcFile)) t.is(await pReadFile(srcFile, 'utf8'), 'test') } finally { await removeFiles([cacheDir, srcDir]) } })
test('Should ignore non-existing digests files', async t => { const [cacheDir, srcDir] = await Promise.all([createTmpDir(), createTmpDir()]) try { const srcFile = `${srcDir}/test` const digest = `${srcDir}/digest` await pWriteFile(srcFile, 'test') t.true(await cacheUtils.save(srcDir, { cacheDir, digests: [digest] })) await pWriteFile(srcFile, 'newTest') t.true(await cacheUtils.save(srcDir, { cacheDir, digests: [digest] })) } finally { await removeFiles([cacheDir, srcDir]) } })
const createTmpFile = async function(opts) { const tmpDir = await createTmpDir(opts) const filename = basename(await tmpName()) const tmpFile = join(tmpDir, filename) await pWriteFile(tmpFile, '') return [tmpFile, tmpDir] }
// Persist the cache manifest to filesystem const writeManifest = async function({ manifestPath, manifestString }) { await makeDir(dirname(manifestPath)) await pWriteFile(manifestPath, manifestString) }
test('Should keep file contents when caching files', async t => { const [cacheDir, [srcFile, srcDir]] = await Promise.all([createTmpDir(), createTmpFile()]) try { await pWriteFile(srcFile, 'test') t.true(await cacheUtils.save(srcFile, { cacheDir })) await removeFiles(srcFile) t.true(await cacheUtils.restore(srcFile, { cacheDir })) t.true(await pathExists(srcFile)) t.is(await pReadFile(srcFile, 'utf8'), 'test') } finally { await removeFiles([cacheDir, srcDir]) } })
test('Should cache and restore one directory', async t => { const [cacheDir, srcDir] = await Promise.all([createTmpDir(), createTmpDir()]) try { const srcFile = `${srcDir}/test` await pWriteFile(srcFile, '') t.true(await cacheUtils.save(srcDir, { cacheDir })) await removeFiles(srcDir) t.true(await cacheUtils.restore(srcDir, { cacheDir })) t.true(await pathExists(srcFile)) } finally { await removeFiles([cacheDir, srcDir]) } })
test('Should overwrite files on restore', async t => { const [cacheDir, [srcFile, srcDir]] = await Promise.all([createTmpDir(), createTmpFile()]) try { await pWriteFile(srcFile, 'test') t.true(await cacheUtils.save(srcFile, { cacheDir })) await pWriteFile(srcFile, 'newTest') t.true(await cacheUtils.restore(srcFile, { cacheDir })) t.true(await pathExists(srcFile)) t.is(await pReadFile(srcFile, 'utf8'), 'test') } finally { await removeFiles([cacheDir, srcDir]) } })
test.only('Handles big outputs', async t => { const bigNetlify = `${FIXTURES_DIR}/big/netlify.toml` await del(bigNetlify, { force: true }) try { const bigContent = getBigNetlifyContent() await pWriteFile(bigNetlify, bigContent) const { returnValue } = await runFixture(t, 'big', { snapshot: false, useBinary: true }) t.notThrows(() => { JSON.parse(returnValue) }) } finally { await del(bigNetlify, { force: true }) } })