stryker
Version:
The extendable JavaScript mutation testing framework
80 lines • 3.14 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
var util_1 = require("@stryker-mutator/util");
var path = require("path");
var mkdirp = require("mkdirp");
var log4js_1 = require("log4js");
var fileUtils_1 = require("./fileUtils");
var TempFolder = /** @class */ (function () {
function TempFolder() {
this.log = log4js_1.getLogger(TempFolder.name);
}
TempFolder.prototype.initialize = function (tempDirName) {
if (tempDirName === void 0) { tempDirName = '.stryker-tmp'; }
this.baseTempFolder = path.join(process.cwd(), tempDirName);
this.tempFolder = path.join(this.baseTempFolder, this.random().toString());
mkdirp.sync(this.baseTempFolder);
mkdirp.sync(this.tempFolder);
};
/**
* Creates a new random folder with the specified prefix.
* @param prefix The prefix.
* @returns The path to the folder.
*/
TempFolder.prototype.createRandomFolder = function (prefix) {
if (!this.baseTempFolder) {
throw new Error('initialize() was not called!');
}
var dir = this.baseTempFolder + path.sep + prefix + this.random();
mkdirp.sync(dir);
return dir;
};
/**
* Copies a file.
* @param fromFilename The path to the existing file.
* @param toFilename The path to copy the file to.
* @param instrumenter An optional additional instrumenter to stream the file through
* @returns A promise to eventually copy the file.
*/
TempFolder.prototype.copyFile = function (fromFilename, toFilename, instrumenter) {
return new Promise(function (resolve, reject) {
var readStream = util_1.fsAsPromised.createReadStream(fromFilename, { encoding: 'utf8' });
var writeStream = util_1.fsAsPromised.createWriteStream(toFilename);
readStream.on('error', reject);
writeStream.on('error', reject);
if (instrumenter) {
readStream = readStream.pipe(instrumenter);
}
readStream.pipe(writeStream);
readStream.on('end', function () { return resolve(); });
});
};
/**
* Deletes the Stryker-temp folder
*/
TempFolder.prototype.clean = function () {
var _this = this;
if (!this.baseTempFolder) {
throw new Error('initialize() was not called!');
}
this.log.debug("Deleting stryker temp folder " + this.baseTempFolder);
return fileUtils_1.deleteDir(this.baseTempFolder)
.catch(function () { return _this.log.info("Failed to delete stryker temp folder " + _this.baseTempFolder); });
};
/**
* Creates a random integer number.
* @returns A random integer.
*/
TempFolder.prototype.random = function () {
return Math.ceil(Math.random() * 10000000);
};
TempFolder.instance = function () {
if (!this._instance) {
this._instance = new TempFolder();
}
return this._instance;
};
return TempFolder;
}());
exports.TempFolder = TempFolder;
//# sourceMappingURL=TempFolder.js.map
;