gitlab-ci-local
Version:
Tired of pushing to test your .gitlab-ci.yml?
51 lines • 5.88 kB
JavaScript
class AbstractWriteStreams {
memoStdout = (() => {
const cache = new Map();
return (message) => {
if (cache.has(message))
return;
cache.set(message, null);
this.stdout(message);
};
})();
}
export class WriteStreamsProcess extends AbstractWriteStreams {
stderr(txt) {
process.stderr.write(txt);
}
stdout(txt) {
process.stdout.write(txt);
}
flush() {
// Process write streams flushes themselves.
}
}
export class WriteStreamsMock extends AbstractWriteStreams {
currentStderr = "";
currentStdout = "";
stderrLines = [];
stdoutLines = [];
stderr(txt) {
this.currentStderr += txt;
if (txt.endsWith("\n")) {
this.stderrLines.push(this.currentStderr.slice(0, -1));
this.currentStderr = "";
}
}
stdout(txt) {
this.currentStdout += txt;
if (txt.endsWith("\n")) {
this.stdoutLines.push(this.currentStdout.slice(0, -1));
this.currentStdout = "";
}
}
flush() {
if (this.currentStdout.length != 0) {
this.stdout("\n");
}
if (this.currentStderr.length != 0) {
this.stderr("\n");
}
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid3JpdGUtc3RyZWFtcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIndyaXRlLXN0cmVhbXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBT0EsTUFBZSxvQkFBb0I7SUFLL0IsVUFBVSxHQUFHLENBQUMsR0FBRyxFQUFFO1FBQ2YsTUFBTSxLQUFLLEdBQUcsSUFBSSxHQUFHLEVBQUUsQ0FBQztRQUN4QixPQUFPLENBQUMsT0FBZSxFQUFFLEVBQUU7WUFDdkIsSUFBSSxLQUFLLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQztnQkFBRSxPQUFPO1lBQy9CLEtBQUssQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDO1lBQ3pCLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDekIsQ0FBQyxDQUFDO0lBQ04sQ0FBQyxDQUFDLEVBQUUsQ0FBQztDQUNSO0FBRUQsTUFBTSxPQUFPLG1CQUFvQixTQUFRLG9CQUFvQjtJQUN6RCxNQUFNLENBQUUsR0FBVztRQUNmLE9BQU8sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzlCLENBQUM7SUFFRCxNQUFNLENBQUUsR0FBVztRQUNmLE9BQU8sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzlCLENBQUM7SUFFRCxLQUFLO1FBQ0QsNENBQTRDO0lBQ2hELENBQUM7Q0FDSjtBQUVELE1BQU0sT0FBTyxnQkFBaUIsU0FBUSxvQkFBb0I7SUFDOUMsYUFBYSxHQUFHLEVBQUUsQ0FBQztJQUNuQixhQUFhLEdBQUcsRUFBRSxDQUFDO0lBRWxCLFdBQVcsR0FBYSxFQUFFLENBQUM7SUFDM0IsV0FBVyxHQUFhLEVBQUUsQ0FBQztJQUVwQyxNQUFNLENBQUUsR0FBVztRQUNmLElBQUksQ0FBQyxhQUFhLElBQUksR0FBRyxDQUFDO1FBQzFCLElBQUksR0FBRyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQ3JCLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDdkQsSUFBSSxDQUFDLGFBQWEsR0FBRyxFQUFFLENBQUM7UUFDNUIsQ0FBQztJQUNMLENBQUM7SUFFRCxNQUFNLENBQUUsR0FBVztRQUNmLElBQUksQ0FBQyxhQUFhLElBQUksR0FBRyxDQUFDO1FBQzFCLElBQUksR0FBRyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQ3JCLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDdkQsSUFBSSxDQUFDLGFBQWEsR0FBRyxFQUFFLENBQUM7UUFDNUIsQ0FBQztJQUNMLENBQUM7SUFFRCxLQUFLO1FBQ0QsSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUNqQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3RCLENBQUM7UUFDRCxJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQ2pDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDdEIsQ0FBQztJQUNMLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBpbnRlcmZhY2UgV3JpdGVTdHJlYW1zIHtcbiAgICBzdGRvdXQ6ICh0eHQ6IHN0cmluZykgPT4gdm9pZDtcbiAgICBtZW1vU3Rkb3V0OiAodHh0OiBzdHJpbmcpID0+IHZvaWQ7XG4gICAgc3RkZXJyOiAodHh0OiBzdHJpbmcpID0+IHZvaWQ7XG4gICAgZmx1c2g6ICgpID0+IHZvaWQ7XG59XG5cbmFic3RyYWN0IGNsYXNzIEFic3RyYWN0V3JpdGVTdHJlYW1zIGltcGxlbWVudHMgV3JpdGVTdHJlYW1zIHtcbiAgICBhYnN0cmFjdCBzdGRvdXQgKHR4dDogc3RyaW5nKTogdm9pZDtcbiAgICBhYnN0cmFjdCBzdGRlcnIgKHR4dDogc3RyaW5nKTogdm9pZDtcbiAgICBhYnN0cmFjdCBmbHVzaCAoKTogdm9pZDtcblxuICAgIG1lbW9TdGRvdXQgPSAoKCkgPT4ge1xuICAgICAgICBjb25zdCBjYWNoZSA9IG5ldyBNYXAoKTtcbiAgICAgICAgcmV0dXJuIChtZXNzYWdlOiBzdHJpbmcpID0+IHtcbiAgICAgICAgICAgIGlmIChjYWNoZS5oYXMobWVzc2FnZSkpIHJldHVybjtcbiAgICAgICAgICAgIGNhY2hlLnNldChtZXNzYWdlLCBudWxsKTtcbiAgICAgICAgICAgIHRoaXMuc3Rkb3V0KG1lc3NhZ2UpO1xuICAgICAgICB9O1xuICAgIH0pKCk7XG59XG5cbmV4cG9ydCBjbGFzcyBXcml0ZVN0cmVhbXNQcm9jZXNzIGV4dGVuZHMgQWJzdHJhY3RXcml0ZVN0cmVhbXMge1xuICAgIHN0ZGVyciAodHh0OiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgcHJvY2Vzcy5zdGRlcnIud3JpdGUodHh0KTtcbiAgICB9XG5cbiAgICBzdGRvdXQgKHR4dDogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIHByb2Nlc3Muc3Rkb3V0LndyaXRlKHR4dCk7XG4gICAgfVxuXG4gICAgZmx1c2ggKCk6IHZvaWQge1xuICAgICAgICAvLyBQcm9jZXNzIHdyaXRlIHN0cmVhbXMgZmx1c2hlcyB0aGVtc2VsdmVzLlxuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIFdyaXRlU3RyZWFtc01vY2sgZXh0ZW5kcyBBYnN0cmFjdFdyaXRlU3RyZWFtcyB7XG4gICAgcHJpdmF0ZSBjdXJyZW50U3RkZXJyID0gXCJcIjtcbiAgICBwcml2YXRlIGN1cnJlbnRTdGRvdXQgPSBcIlwiO1xuXG4gICAgcmVhZG9ubHkgc3RkZXJyTGluZXM6IHN0cmluZ1tdID0gW107XG4gICAgcmVhZG9ubHkgc3Rkb3V0TGluZXM6IHN0cmluZ1tdID0gW107XG5cbiAgICBzdGRlcnIgKHR4dDogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY3VycmVudFN0ZGVyciArPSB0eHQ7XG4gICAgICAgIGlmICh0eHQuZW5kc1dpdGgoXCJcXG5cIikpIHtcbiAgICAgICAgICAgIHRoaXMuc3RkZXJyTGluZXMucHVzaCh0aGlzLmN1cnJlbnRTdGRlcnIuc2xpY2UoMCwgLTEpKTtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFN0ZGVyciA9IFwiXCI7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBzdGRvdXQgKHR4dDogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY3VycmVudFN0ZG91dCArPSB0eHQ7XG4gICAgICAgIGlmICh0eHQuZW5kc1dpdGgoXCJcXG5cIikpIHtcbiAgICAgICAgICAgIHRoaXMuc3Rkb3V0TGluZXMucHVzaCh0aGlzLmN1cnJlbnRTdGRvdXQuc2xpY2UoMCwgLTEpKTtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFN0ZG91dCA9IFwiXCI7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmbHVzaCAoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmN1cnJlbnRTdGRvdXQubGVuZ3RoICE9IDApIHtcbiAgICAgICAgICAgIHRoaXMuc3Rkb3V0KFwiXFxuXCIpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmN1cnJlbnRTdGRlcnIubGVuZ3RoICE9IDApIHtcbiAgICAgICAgICAgIHRoaXMuc3RkZXJyKFwiXFxuXCIpO1xuICAgICAgICB9XG4gICAgfVxufVxuIl19