Add overlay-database-utils tests
This commit is contained in:
parent
9825184a0a
commit
b98ae6ca52
3 changed files with 172 additions and 0 deletions
94
lib/overlay-database-utils.test.js
generated
Normal file
94
lib/overlay-database-utils.test.js
generated
Normal file
|
|
@ -0,0 +1,94 @@
|
||||||
|
"use strict";
|
||||||
|
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
||||||
|
if (k2 === undefined) k2 = k;
|
||||||
|
var desc = Object.getOwnPropertyDescriptor(m, k);
|
||||||
|
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
||||||
|
desc = { enumerable: true, get: function() { return m[k]; } };
|
||||||
|
}
|
||||||
|
Object.defineProperty(o, k2, desc);
|
||||||
|
}) : (function(o, m, k, k2) {
|
||||||
|
if (k2 === undefined) k2 = k;
|
||||||
|
o[k2] = m[k];
|
||||||
|
}));
|
||||||
|
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
||||||
|
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
||||||
|
}) : function(o, v) {
|
||||||
|
o["default"] = v;
|
||||||
|
});
|
||||||
|
var __importStar = (this && this.__importStar) || (function () {
|
||||||
|
var ownKeys = function(o) {
|
||||||
|
ownKeys = Object.getOwnPropertyNames || function (o) {
|
||||||
|
var ar = [];
|
||||||
|
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
||||||
|
return ar;
|
||||||
|
};
|
||||||
|
return ownKeys(o);
|
||||||
|
};
|
||||||
|
return function (mod) {
|
||||||
|
if (mod && mod.__esModule) return mod;
|
||||||
|
var result = {};
|
||||||
|
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
||||||
|
__setModuleDefault(result, mod);
|
||||||
|
return result;
|
||||||
|
};
|
||||||
|
})();
|
||||||
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
||||||
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
||||||
|
};
|
||||||
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||||||
|
const fs = __importStar(require("fs"));
|
||||||
|
const path = __importStar(require("path"));
|
||||||
|
const ava_1 = __importDefault(require("ava"));
|
||||||
|
const sinon = __importStar(require("sinon"));
|
||||||
|
const actionsUtil = __importStar(require("./actions-util"));
|
||||||
|
const gitUtils = __importStar(require("./git-utils"));
|
||||||
|
const logging_1 = require("./logging");
|
||||||
|
const overlay_database_utils_1 = require("./overlay-database-utils");
|
||||||
|
const testing_utils_1 = require("./testing-utils");
|
||||||
|
const util_1 = require("./util");
|
||||||
|
(0, testing_utils_1.setupTests)(ava_1.default);
|
||||||
|
(0, ava_1.default)("writeOverlayChangesFile generates correct changes file", async (t) => {
|
||||||
|
await (0, util_1.withTmpDir)(async (tmpDir) => {
|
||||||
|
const dbLocation = path.join(tmpDir, "db");
|
||||||
|
await fs.promises.mkdir(dbLocation, { recursive: true });
|
||||||
|
const sourceRoot = path.join(tmpDir, "src");
|
||||||
|
await fs.promises.mkdir(sourceRoot, { recursive: true });
|
||||||
|
const tempDir = path.join(tmpDir, "temp");
|
||||||
|
await fs.promises.mkdir(tempDir, { recursive: true });
|
||||||
|
const logger = (0, logging_1.getRunnerLogger)(true);
|
||||||
|
const config = (0, testing_utils_1.createTestConfig)({ dbLocation });
|
||||||
|
// Mock the getFileOidsUnderPath function to return base OIDs
|
||||||
|
const baseOids = {
|
||||||
|
"unchanged.js": "aaa111",
|
||||||
|
"modified.js": "bbb222",
|
||||||
|
"deleted.js": "ccc333",
|
||||||
|
};
|
||||||
|
const getFileOidsStubForBase = sinon
|
||||||
|
.stub(gitUtils, "getFileOidsUnderPath")
|
||||||
|
.resolves(baseOids);
|
||||||
|
// Write the base database OIDs file
|
||||||
|
await (0, overlay_database_utils_1.writeBaseDatabaseOidsFile)(config, sourceRoot);
|
||||||
|
getFileOidsStubForBase.restore();
|
||||||
|
// Mock the getFileOidsUnderPath function to return overlay OIDs
|
||||||
|
const currentOids = {
|
||||||
|
"unchanged.js": "aaa111",
|
||||||
|
"modified.js": "ddd444", // Changed OID
|
||||||
|
"added.js": "eee555", // New file
|
||||||
|
};
|
||||||
|
const getFileOidsStubForOverlay = sinon
|
||||||
|
.stub(gitUtils, "getFileOidsUnderPath")
|
||||||
|
.resolves(currentOids);
|
||||||
|
// Write the overlay changes file, which uses the mocked overlay OIDs
|
||||||
|
// and the base database OIDs file
|
||||||
|
const getTempDirStub = sinon
|
||||||
|
.stub(actionsUtil, "getTemporaryDirectory")
|
||||||
|
.returns(tempDir);
|
||||||
|
const changesFilePath = await (0, overlay_database_utils_1.writeOverlayChangesFile)(config, sourceRoot, logger);
|
||||||
|
getFileOidsStubForOverlay.restore();
|
||||||
|
getTempDirStub.restore();
|
||||||
|
const fileContent = await fs.promises.readFile(changesFilePath, "utf-8");
|
||||||
|
const parsedContent = JSON.parse(fileContent);
|
||||||
|
t.deepEqual(parsedContent.changes.sort(), ["added.js", "deleted.js", "modified.js"], "Should identify added, deleted, and modified files");
|
||||||
|
});
|
||||||
|
});
|
||||||
|
//# sourceMappingURL=overlay-database-utils.test.js.map
|
||||||
1
lib/overlay-database-utils.test.js.map
Normal file
1
lib/overlay-database-utils.test.js.map
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
{"version":3,"file":"overlay-database-utils.test.js","sourceRoot":"","sources":["../src/overlay-database-utils.test.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,uCAAyB;AACzB,2CAA6B;AAE7B,8CAAuB;AACvB,6CAA+B;AAE/B,4DAA8C;AAC9C,sDAAwC;AACxC,uCAA4C;AAC5C,qEAGkC;AAClC,mDAA+D;AAC/D,iCAAoC;AAEpC,IAAA,0BAAU,EAAC,aAAI,CAAC,CAAC;AAEjB,IAAA,aAAI,EAAC,wDAAwD,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;IACzE,MAAM,IAAA,iBAAU,EAAC,KAAK,EAAE,MAAM,EAAE,EAAE;QAChC,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QAC3C,MAAM,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACzD,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QAC5C,MAAM,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACzD,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC1C,MAAM,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAEtD,MAAM,MAAM,GAAG,IAAA,yBAAe,EAAC,IAAI,CAAC,CAAC;QACrC,MAAM,MAAM,GAAG,IAAA,gCAAgB,EAAC,EAAE,UAAU,EAAE,CAAC,CAAC;QAEhD,6DAA6D;QAC7D,MAAM,QAAQ,GAAG;YACf,cAAc,EAAE,QAAQ;YACxB,aAAa,EAAE,QAAQ;YACvB,YAAY,EAAE,QAAQ;SACvB,CAAC;QACF,MAAM,sBAAsB,GAAG,KAAK;aACjC,IAAI,CAAC,QAAQ,EAAE,sBAAsB,CAAC;aACtC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QAEtB,oCAAoC;QACpC,MAAM,IAAA,kDAAyB,EAAC,MAAM,EAAE,UAAU,CAAC,CAAC;QACpD,sBAAsB,CAAC,OAAO,EAAE,CAAC;QAEjC,gEAAgE;QAChE,MAAM,WAAW,GAAG;YAClB,cAAc,EAAE,QAAQ;YACxB,aAAa,EAAE,QAAQ,EAAE,cAAc;YACvC,UAAU,EAAE,QAAQ,EAAE,WAAW;SAClC,CAAC;QACF,MAAM,yBAAyB,GAAG,KAAK;aACpC,IAAI,CAAC,QAAQ,EAAE,sBAAsB,CAAC;aACtC,QAAQ,CAAC,WAAW,CAAC,CAAC;QAEzB,qEAAqE;QACrE,kCAAkC;QAClC,MAAM,cAAc,GAAG,KAAK;aACzB,IAAI,CAAC,WAAW,EAAE,uBAAuB,CAAC;aAC1C,OAAO,CAAC,OAAO,CAAC,CAAC;QACpB,MAAM,eAAe,GAAG,MAAM,IAAA,gDAAuB,EACnD,MAAM,EACN,UAAU,EACV,MAAM,CACP,CAAC;QACF,yBAAyB,CAAC,OAAO,EAAE,CAAC;QACpC,cAAc,CAAC,OAAO,EAAE,CAAC;QAEzB,MAAM,WAAW,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC;QACzE,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAA0B,CAAC;QAEvE,CAAC,CAAC,SAAS,CACT,aAAa,CAAC,OAAO,CAAC,IAAI,EAAE,EAC5B,CAAC,UAAU,EAAE,YAAY,EAAE,aAAa,CAAC,EACzC,oDAAoD,CACrD,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
||||||
77
src/overlay-database-utils.test.ts
Normal file
77
src/overlay-database-utils.test.ts
Normal file
|
|
@ -0,0 +1,77 @@
|
||||||
|
import * as fs from "fs";
|
||||||
|
import * as path from "path";
|
||||||
|
|
||||||
|
import test from "ava";
|
||||||
|
import * as sinon from "sinon";
|
||||||
|
|
||||||
|
import * as actionsUtil from "./actions-util";
|
||||||
|
import * as gitUtils from "./git-utils";
|
||||||
|
import { getRunnerLogger } from "./logging";
|
||||||
|
import {
|
||||||
|
writeBaseDatabaseOidsFile,
|
||||||
|
writeOverlayChangesFile,
|
||||||
|
} from "./overlay-database-utils";
|
||||||
|
import { createTestConfig, setupTests } from "./testing-utils";
|
||||||
|
import { withTmpDir } from "./util";
|
||||||
|
|
||||||
|
setupTests(test);
|
||||||
|
|
||||||
|
test("writeOverlayChangesFile generates correct changes file", async (t) => {
|
||||||
|
await withTmpDir(async (tmpDir) => {
|
||||||
|
const dbLocation = path.join(tmpDir, "db");
|
||||||
|
await fs.promises.mkdir(dbLocation, { recursive: true });
|
||||||
|
const sourceRoot = path.join(tmpDir, "src");
|
||||||
|
await fs.promises.mkdir(sourceRoot, { recursive: true });
|
||||||
|
const tempDir = path.join(tmpDir, "temp");
|
||||||
|
await fs.promises.mkdir(tempDir, { recursive: true });
|
||||||
|
|
||||||
|
const logger = getRunnerLogger(true);
|
||||||
|
const config = createTestConfig({ dbLocation });
|
||||||
|
|
||||||
|
// Mock the getFileOidsUnderPath function to return base OIDs
|
||||||
|
const baseOids = {
|
||||||
|
"unchanged.js": "aaa111",
|
||||||
|
"modified.js": "bbb222",
|
||||||
|
"deleted.js": "ccc333",
|
||||||
|
};
|
||||||
|
const getFileOidsStubForBase = sinon
|
||||||
|
.stub(gitUtils, "getFileOidsUnderPath")
|
||||||
|
.resolves(baseOids);
|
||||||
|
|
||||||
|
// Write the base database OIDs file
|
||||||
|
await writeBaseDatabaseOidsFile(config, sourceRoot);
|
||||||
|
getFileOidsStubForBase.restore();
|
||||||
|
|
||||||
|
// Mock the getFileOidsUnderPath function to return overlay OIDs
|
||||||
|
const currentOids = {
|
||||||
|
"unchanged.js": "aaa111",
|
||||||
|
"modified.js": "ddd444", // Changed OID
|
||||||
|
"added.js": "eee555", // New file
|
||||||
|
};
|
||||||
|
const getFileOidsStubForOverlay = sinon
|
||||||
|
.stub(gitUtils, "getFileOidsUnderPath")
|
||||||
|
.resolves(currentOids);
|
||||||
|
|
||||||
|
// Write the overlay changes file, which uses the mocked overlay OIDs
|
||||||
|
// and the base database OIDs file
|
||||||
|
const getTempDirStub = sinon
|
||||||
|
.stub(actionsUtil, "getTemporaryDirectory")
|
||||||
|
.returns(tempDir);
|
||||||
|
const changesFilePath = await writeOverlayChangesFile(
|
||||||
|
config,
|
||||||
|
sourceRoot,
|
||||||
|
logger,
|
||||||
|
);
|
||||||
|
getFileOidsStubForOverlay.restore();
|
||||||
|
getTempDirStub.restore();
|
||||||
|
|
||||||
|
const fileContent = await fs.promises.readFile(changesFilePath, "utf-8");
|
||||||
|
const parsedContent = JSON.parse(fileContent) as { changes: string[] };
|
||||||
|
|
||||||
|
t.deepEqual(
|
||||||
|
parsedContent.changes.sort(),
|
||||||
|
["added.js", "deleted.js", "modified.js"],
|
||||||
|
"Should identify added, deleted, and modified files",
|
||||||
|
);
|
||||||
|
});
|
||||||
|
});
|
||||||
Loading…
Add table
Add a link
Reference in a new issue