haikuwebkit/Websites/perf.webkit.org/server-tests/resources/temporary-file.js

50 lines
1.4 KiB
JavaScript

const assert = require('assert');
const childProcess = require('child_process');
const fs = require('fs');
const path = require('path');
const Config = require('../../tools/js/config.js');
class TemporaryFile {
static makeTemporaryFileOfSizeInMB(name, sizeInMB, characterToFill = 'a')
{
let megabyteString = characterToFill;
for (let i = 0; i < 20; i++)
megabyteString = megabyteString + megabyteString;
assert.strictEqual(megabyteString.length, 1024 * 1024);
let content = '';
for (let i = 0; i < sizeInMB; i++)
content += megabyteString;
return this.makeTemporaryFile(name, content);
}
static makeTemporaryFile(name, content)
{
const newPath = path.resolve(TemporaryFile._tempDir, name);
return new Promise((resolve) => {
return fs.writeFile(newPath, content, () => {
resolve(fs.createReadStream(newPath));
});
});
}
static inject()
{
beforeEach(() => {
this._tempDir = fs.mkdtempSync(path.resolve(Config.path('dataDirectory'), 'temp/'));
});
afterEach(() => {
childProcess.execFileSync('rm', ['-rf', this._tempDir]);
this._tempDir = null;
});
}
}
TemporaryFile._tempDir = null;
if (typeof module != 'undefined')
module.exports.TemporaryFile = TemporaryFile;