summaryrefslogtreecommitdiff
path: root/src/lib/git/index.test.ts
diff options
context:
space:
mode:
authorJoão Augusto Costa Branco Marado Torres <torres.dev@disroot.org>2025-06-24 12:08:41 -0300
committerJoão Augusto Costa Branco Marado Torres <torres.dev@disroot.org>2025-06-24 12:50:43 -0300
commitf9a77c5c27aede4e5978eb55d9b7af781b680a1d (patch)
treed545e325ba1ae756fc2eac66fac1001b6753c40d /src/lib/git/index.test.ts
feat!: initial commit
Signed-off-by: João Augusto Costa Branco Marado Torres <torres.dev@disroot.org>
Diffstat (limited to 'src/lib/git/index.test.ts')
-rw-r--r--src/lib/git/index.test.ts40
1 files changed, 40 insertions, 0 deletions
diff --git a/src/lib/git/index.test.ts b/src/lib/git/index.test.ts
new file mode 100644
index 0000000..4eedaca
--- /dev/null
+++ b/src/lib/git/index.test.ts
@@ -0,0 +1,40 @@
+import { describe, it } from "@std/testing/bdd";
+import { assertEquals } from "@std/assert";
+import {
+ assertSpyCall,
+ assertSpyCalls,
+ returnsNext,
+ stub,
+} from "@std/testing/mock";
+
+// IMPORTANT: Delay the import of `gitDir` to after the stub
+let gitDir: typeof import("./index.ts").gitDir;
+
+describe("gitDir", () => {
+ it("resolves with trimmed decoded stdout", async () => {
+ const encoded = new TextEncoder().encode(
+ " /home/user/project \n",
+ ) as Uint8Array<ArrayBuffer>;
+ const fakeOutput = Promise.resolve({
+ success: true,
+ code: 0,
+ stdout: encoded,
+ stderr: new Uint8Array(),
+ signal: null,
+ });
+
+ using outputStub = stub(
+ Deno.Command.prototype,
+ "output",
+ returnsNext([fakeOutput]),
+ );
+
+ // Now import gitDir AFTER stubbing
+ ({ gitDir } = await import("./index.ts"));
+
+ const result = await gitDir();
+ assertEquals(result.pathname, "/home/user/project");
+ assertSpyCall(outputStub, 0, { args: [], returned: fakeOutput });
+ assertSpyCalls(outputStub, 1);
+ });
+});