@aws-cdk/integ-runner
Version:
CDK Integration Testing Tool
94 lines • 10.9 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.IntegManifestReader = exports.ManifestLoadError = exports.NoManifestError = void 0;
const path = require("path");
const cloud_assembly_schema_1 = require("@aws-cdk/cloud-assembly-schema");
const fs = require("fs-extra");
/**
* An error indicating that the manifest file does not exists.
*
* This can signal to treat the integ test case as a legacy test.
*/
class NoManifestError extends Error {
constructor(manifestPath, cause) {
super(`Cannot read integ manifest '${manifestPath}': ${cause.message}`);
this.name = 'NoManifestError';
this.manifestPath = manifestPath;
this.cause = cause;
Object.setPrototypeOf(this, NoManifestError.prototype);
}
}
exports.NoManifestError = NoManifestError;
/**
* An error indicating that the manifest failed to load.
*
* The error implies the the manifest file exists, but is invalid.
*/
class ManifestLoadError extends Error {
constructor(manifestPath, cause) {
super(`Failed to load integ manifest '${manifestPath}': ${cause.message}`);
this.name = 'ManifestLoadingError';
this.manifestPath = manifestPath;
this.cause = cause;
Object.setPrototypeOf(this, ManifestLoadError.prototype);
}
}
exports.ManifestLoadError = ManifestLoadError;
/**
* Reads an integration tests manifest
*/
class IntegManifestReader {
/**
* Reads an integration test manifest from the specified file
*/
static fromFile(fileName) {
try {
fs.statSync(fileName);
}
catch (e) {
throw new NoManifestError(fileName, e);
}
try {
const obj = cloud_assembly_schema_1.Manifest.loadIntegManifest(fileName);
return new IntegManifestReader(path.dirname(fileName), obj);
}
catch (loadErr) {
throw new ManifestLoadError(fileName, loadErr);
}
}
/**
* Reads a Integration test manifest from a file or a directory
* If the given filePath is a directory then it will look for
* a file within the directory with the DEFAULT_FILENAME
*/
static fromPath(filePath) {
let st;
try {
st = fs.statSync(filePath);
}
catch (e) {
throw new NoManifestError(filePath, e);
}
if (st.isDirectory()) {
return IntegManifestReader.fromFile(path.join(filePath, IntegManifestReader.DEFAULT_FILENAME));
}
return IntegManifestReader.fromFile(filePath);
}
constructor(directory, manifest) {
this.manifest = manifest;
this.directory = directory;
}
/**
* List of integration tests in the manifest
*/
get tests() {
return {
testCases: this.manifest.testCases,
enableLookups: this.manifest.enableLookups ?? false,
synthContext: this.manifest.synthContext,
};
}
}
exports.IntegManifestReader = IntegManifestReader;
IntegManifestReader.DEFAULT_FILENAME = 'integ.json';
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZWctbWFuaWZlc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbnRlZy1tYW5pZmVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSw2QkFBNkI7QUFFN0IsMEVBQTBEO0FBQzFELCtCQUErQjtBQUUvQjs7OztHQUlHO0FBQ0gsTUFBYSxlQUFnQixTQUFRLEtBQUs7SUFJeEMsWUFBWSxZQUFvQixFQUFFLEtBQVk7UUFDNUMsS0FBSyxDQUFDLCtCQUErQixZQUFZLE1BQU0sS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7UUFDeEUsSUFBSSxDQUFDLElBQUksR0FBRyxpQkFBaUIsQ0FBQztRQUM5QixJQUFJLENBQUMsWUFBWSxHQUFHLFlBQVksQ0FBQztRQUNqQyxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUVuQixNQUFNLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxlQUFlLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDekQsQ0FBQztDQUNGO0FBWkQsMENBWUM7QUFFRDs7OztHQUlHO0FBQ0gsTUFBYSxpQkFBa0IsU0FBUSxLQUFLO0lBSTFDLFlBQVksWUFBb0IsRUFBRSxLQUFZO1FBQzVDLEtBQUssQ0FBQyxrQ0FBa0MsWUFBWSxNQUFNLEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO1FBQzNFLElBQUksQ0FBQyxJQUFJLEdBQUcsc0JBQXNCLENBQUM7UUFDbkMsSUFBSSxDQUFDLFlBQVksR0FBRyxZQUFZLENBQUM7UUFDakMsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFFbkIsTUFBTSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsaUJBQWlCLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDM0QsQ0FBQztDQUNGO0FBWkQsOENBWUM7QUE0QkQ7O0dBRUc7QUFDSCxNQUFhLG1CQUFtQjtJQUc5Qjs7T0FFRztJQUNJLE1BQU0sQ0FBQyxRQUFRLENBQUMsUUFBZ0I7UUFDckMsSUFBSSxDQUFDO1lBQ0gsRUFBRSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUN4QixDQUFDO1FBQUMsT0FBTyxDQUFNLEVBQUUsQ0FBQztZQUNoQixNQUFNLElBQUksZUFBZSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUN6QyxDQUFDO1FBRUQsSUFBSSxDQUFDO1lBQ0gsTUFBTSxHQUFHLEdBQUcsZ0NBQVEsQ0FBQyxpQkFBaUIsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUNqRCxPQUFPLElBQUksbUJBQW1CLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUM5RCxDQUFDO1FBQUMsT0FBTyxPQUFZLEVBQUUsQ0FBQztZQUN0QixNQUFNLElBQUksaUJBQWlCLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQ2pELENBQUM7SUFDSCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLE1BQU0sQ0FBQyxRQUFRLENBQUMsUUFBZ0I7UUFDckMsSUFBSSxFQUFFLENBQUM7UUFDUCxJQUFJLENBQUM7WUFDSCxFQUFFLEdBQUcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUM3QixDQUFDO1FBQUMsT0FBTyxDQUFNLEVBQUUsQ0FBQztZQUNoQixNQUFNLElBQUksZUFBZSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUN6QyxDQUFDO1FBQ0QsSUFBSSxFQUFFLENBQUMsV0FBVyxFQUFFLEVBQUUsQ0FBQztZQUNyQixPQUFPLG1CQUFtQixDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxtQkFBbUIsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUM7UUFDakcsQ0FBQztRQUNELE9BQU8sbUJBQW1CLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ2hELENBQUM7SUFNRCxZQUFZLFNBQWlCLEVBQW1CLFFBQXVCO1FBQXZCLGFBQVEsR0FBUixRQUFRLENBQWU7UUFDckUsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUM7SUFDN0IsQ0FBQztJQUVEOztPQUVHO0lBQ0gsSUFBVyxLQUFLO1FBQ2QsT0FBTztZQUNMLFNBQVMsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVM7WUFDbEMsYUFBYSxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsYUFBYSxJQUFJLEtBQUs7WUFDbkQsWUFBWSxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsWUFBWTtTQUN6QyxDQUFDO0lBQ0osQ0FBQzs7QUF4REgsa0RBeURDO0FBeER3QixvQ0FBZ0IsR0FBRyxZQUFZLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IHR5cGUgeyBJbnRlZ01hbmlmZXN0LCBUZXN0Q2FzZSB9IGZyb20gJ0Bhd3MtY2RrL2Nsb3VkLWFzc2VtYmx5LXNjaGVtYSc7XG5pbXBvcnQgeyBNYW5pZmVzdCB9IGZyb20gJ0Bhd3MtY2RrL2Nsb3VkLWFzc2VtYmx5LXNjaGVtYSc7XG5pbXBvcnQgKiBhcyBmcyBmcm9tICdmcy1leHRyYSc7XG5cbi8qKlxuICogQW4gZXJyb3IgaW5kaWNhdGluZyB0aGF0IHRoZSBtYW5pZmVzdCBmaWxlIGRvZXMgbm90IGV4aXN0cy5cbiAqXG4gKiBUaGlzIGNhbiBzaWduYWwgdG8gdHJlYXQgdGhlIGludGVnIHRlc3QgY2FzZSBhcyBhIGxlZ2FjeSB0ZXN0LlxuICovXG5leHBvcnQgY2xhc3MgTm9NYW5pZmVzdEVycm9yIGV4dGVuZHMgRXJyb3Ige1xuICBwdWJsaWMgcmVhZG9ubHkgbWFuaWZlc3RQYXRoOiBzdHJpbmc7XG4gIHB1YmxpYyByZWFkb25seSBjYXVzZTogRXJyb3I7XG5cbiAgY29uc3RydWN0b3IobWFuaWZlc3RQYXRoOiBzdHJpbmcsIGNhdXNlOiBFcnJvcikge1xuICAgIHN1cGVyKGBDYW5ub3QgcmVhZCBpbnRlZyBtYW5pZmVzdCAnJHttYW5pZmVzdFBhdGh9JzogJHtjYXVzZS5tZXNzYWdlfWApO1xuICAgIHRoaXMubmFtZSA9ICdOb01hbmlmZXN0RXJyb3InO1xuICAgIHRoaXMubWFuaWZlc3RQYXRoID0gbWFuaWZlc3RQYXRoO1xuICAgIHRoaXMuY2F1c2UgPSBjYXVzZTtcblxuICAgIE9iamVjdC5zZXRQcm90b3R5cGVPZih0aGlzLCBOb01hbmlmZXN0RXJyb3IucHJvdG90eXBlKTtcbiAgfVxufVxuXG4vKipcbiAqIEFuIGVycm9yIGluZGljYXRpbmcgdGhhdCB0aGUgbWFuaWZlc3QgZmFpbGVkIHRvIGxvYWQuXG4gKlxuICogVGhlIGVycm9yIGltcGxpZXMgdGhlIHRoZSBtYW5pZmVzdCBmaWxlIGV4aXN0cywgYnV0IGlzIGludmFsaWQuXG4gKi9cbmV4cG9ydCBjbGFzcyBNYW5pZmVzdExvYWRFcnJvciBleHRlbmRzIEVycm9yIHtcbiAgcHVibGljIHJlYWRvbmx5IG1hbmlmZXN0UGF0aDogc3RyaW5nO1xuICBwdWJsaWMgcmVhZG9ubHkgY2F1c2U6IEVycm9yO1xuXG4gIGNvbnN0cnVjdG9yKG1hbmlmZXN0UGF0aDogc3RyaW5nLCBjYXVzZTogRXJyb3IpIHtcbiAgICBzdXBlcihgRmFpbGVkIHRvIGxvYWQgaW50ZWcgbWFuaWZlc3QgJyR7bWFuaWZlc3RQYXRofSc6ICR7Y2F1c2UubWVzc2FnZX1gKTtcbiAgICB0aGlzLm5hbWUgPSAnTWFuaWZlc3RMb2FkaW5nRXJyb3InO1xuICAgIHRoaXMubWFuaWZlc3RQYXRoID0gbWFuaWZlc3RQYXRoO1xuICAgIHRoaXMuY2F1c2UgPSBjYXVzZTtcblxuICAgIE9iamVjdC5zZXRQcm90b3R5cGVPZih0aGlzLCBNYW5pZmVzdExvYWRFcnJvci5wcm90b3R5cGUpO1xuICB9XG59XG5cbi8qKlxuICogVGVzdCBjYXNlIGNvbmZpZ3VyYXRpb24gcmVhZCBmcm9tIHRoZSBpbnRlZyBtYW5pZmVzdFxuICovXG5leHBvcnQgaW50ZXJmYWNlIEludGVnVGVzdENvbmZpZyB7XG4gIC8qKlxuICAgKiBUZXN0IGNhc2VzIGNvbnRhaW5lZCBpbiB0aGlzIGludGVncmF0aW9uIHRlc3RcbiAgICovXG4gIHJlYWRvbmx5IHRlc3RDYXNlczogeyBbdGVzdENhc2VOYW1lOiBzdHJpbmddOiBUZXN0Q2FzZSB9O1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIGVuYWJsZSBsb29rdXBzIGZvciB0aGlzIHRlc3RcbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IGVuYWJsZUxvb2t1cHM6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEFkZGl0aW9uYWwgY29udGV4dCB0byB1c2Ugd2hlbiBwZXJmb3JtaW5nXG4gICAqIGEgc3ludGguIEFueSBjb250ZXh0IHByb3ZpZGVkIGhlcmUgd2lsbCBvdmVycmlkZVxuICAgKiBhbnkgZGVmYXVsdCBjb250ZXh0XG4gICAqXG4gICAqIEBkZWZhdWx0IC0gbm8gYWRkaXRpb25hbCBjb250ZXh0XG4gICAqL1xuICByZWFkb25seSBzeW50aENvbnRleHQ/OiB7IFtuYW1lOiBzdHJpbmddOiBzdHJpbmcgfTtcbn1cblxuLyoqXG4gKiBSZWFkcyBhbiBpbnRlZ3JhdGlvbiB0ZXN0cyBtYW5pZmVzdFxuICovXG5leHBvcnQgY2xhc3MgSW50ZWdNYW5pZmVzdFJlYWRlciB7XG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgREVGQVVMVF9GSUxFTkFNRSA9ICdpbnRlZy5qc29uJztcblxuICAvKipcbiAgICogUmVhZHMgYW4gaW50ZWdyYXRpb24gdGVzdCBtYW5pZmVzdCBmcm9tIHRoZSBzcGVjaWZpZWQgZmlsZVxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBmcm9tRmlsZShmaWxlTmFtZTogc3RyaW5nKTogSW50ZWdNYW5pZmVzdFJlYWRlciB7XG4gICAgdHJ5IHtcbiAgICAgIGZzLnN0YXRTeW5jKGZpbGVOYW1lKTtcbiAgICB9IGNhdGNoIChlOiBhbnkpIHtcbiAgICAgIHRocm93IG5ldyBOb01hbmlmZXN0RXJyb3IoZmlsZU5hbWUsIGUpO1xuICAgIH1cblxuICAgIHRyeSB7XG4gICAgICBjb25zdCBvYmogPSBNYW5pZmVzdC5sb2FkSW50ZWdNYW5pZmVzdChmaWxlTmFtZSk7XG4gICAgICByZXR1cm4gbmV3IEludGVnTWFuaWZlc3RSZWFkZXIocGF0aC5kaXJuYW1lKGZpbGVOYW1lKSwgb2JqKTtcbiAgICB9IGNhdGNoIChsb2FkRXJyOiBhbnkpIHtcbiAgICAgIHRocm93IG5ldyBNYW5pZmVzdExvYWRFcnJvcihmaWxlTmFtZSwgbG9hZEVycik7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJlYWRzIGEgSW50ZWdyYXRpb24gdGVzdCBtYW5pZmVzdCBmcm9tIGEgZmlsZSBvciBhIGRpcmVjdG9yeVxuICAgKiBJZiB0aGUgZ2l2ZW4gZmlsZVBhdGggaXMgYSBkaXJlY3RvcnkgdGhlbiBpdCB3aWxsIGxvb2sgZm9yXG4gICAqIGEgZmlsZSB3aXRoaW4gdGhlIGRpcmVjdG9yeSB3aXRoIHRoZSBERUZBVUxUX0ZJTEVOQU1FXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGZyb21QYXRoKGZpbGVQYXRoOiBzdHJpbmcpOiBJbnRlZ01hbmlmZXN0UmVhZGVyIHtcbiAgICBsZXQgc3Q7XG4gICAgdHJ5IHtcbiAgICAgIHN0ID0gZnMuc3RhdFN5bmMoZmlsZVBhdGgpO1xuICAgIH0gY2F0Y2ggKGU6IGFueSkge1xuICAgICAgdGhyb3cgbmV3IE5vTWFuaWZlc3RFcnJvcihmaWxlUGF0aCwgZSk7XG4gICAgfVxuICAgIGlmIChzdC5pc0RpcmVjdG9yeSgpKSB7XG4gICAgICByZXR1cm4gSW50ZWdNYW5pZmVzdFJlYWRlci5mcm9tRmlsZShwYXRoLmpvaW4oZmlsZVBhdGgsIEludGVnTWFuaWZlc3RSZWFkZXIuREVGQVVMVF9GSUxFTkFNRSkpO1xuICAgIH1cbiAgICByZXR1cm4gSW50ZWdNYW5pZmVzdFJlYWRlci5mcm9tRmlsZShmaWxlUGF0aCk7XG4gIH1cblxuICAvKipcbiAgICogVGhlIGRpcmVjdG9yeSB3aGVyZSB0aGUgbWFuaWZlc3Qgd2FzIGZvdW5kXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgZGlyZWN0b3J5OiBzdHJpbmc7XG4gIGNvbnN0cnVjdG9yKGRpcmVjdG9yeTogc3RyaW5nLCBwcml2YXRlIHJlYWRvbmx5IG1hbmlmZXN0OiBJbnRlZ01hbmlmZXN0KSB7XG4gICAgdGhpcy5kaXJlY3RvcnkgPSBkaXJlY3Rvcnk7XG4gIH1cblxuICAvKipcbiAgICogTGlzdCBvZiBpbnRlZ3JhdGlvbiB0ZXN0cyBpbiB0aGUgbWFuaWZlc3RcbiAgICovXG4gIHB1YmxpYyBnZXQgdGVzdHMoKTogSW50ZWdUZXN0Q29uZmlnIHtcbiAgICByZXR1cm4ge1xuICAgICAgdGVzdENhc2VzOiB0aGlzLm1hbmlmZXN0LnRlc3RDYXNlcyxcbiAgICAgIGVuYWJsZUxvb2t1cHM6IHRoaXMubWFuaWZlc3QuZW5hYmxlTG9va3VwcyA/PyBmYWxzZSxcbiAgICAgIHN5bnRoQ29udGV4dDogdGhpcy5tYW5pZmVzdC5zeW50aENvbnRleHQsXG4gICAgfTtcbiAgfVxufVxuIl19