summaryrefslogtreecommitdiff
path: root/packages/core/src/services/fileSystemService.test.ts
diff options
context:
space:
mode:
authorConrad Irwin <[email protected]>2025-08-18 16:29:45 -0600
committerGitHub <[email protected]>2025-08-18 22:29:45 +0000
commitfb3ceb0da4e2cd636013c2c36a9c0016c01aa47f (patch)
tree7aa43846dd88bd5acdb8898b0ccd2e685f2d5ece /packages/core/src/services/fileSystemService.test.ts
parent4394b6ab4fc86637b07fcd26b9a790c627d1e065 (diff)
Read and write files through Zed (#6169)
Co-authored-by: Agus Zubiaga <[email protected]>
Diffstat (limited to 'packages/core/src/services/fileSystemService.test.ts')
-rw-r--r--packages/core/src/services/fileSystemService.test.ts59
1 files changed, 59 insertions, 0 deletions
diff --git a/packages/core/src/services/fileSystemService.test.ts b/packages/core/src/services/fileSystemService.test.ts
new file mode 100644
index 00000000..c61ec066
--- /dev/null
+++ b/packages/core/src/services/fileSystemService.test.ts
@@ -0,0 +1,59 @@
+/**
+ * @license
+ * Copyright 2025 Google LLC
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+import { describe, it, expect, beforeEach, afterEach, vi } from 'vitest';
+import fs from 'fs/promises';
+import { StandardFileSystemService } from './fileSystemService.js';
+
+vi.mock('fs/promises');
+
+describe('StandardFileSystemService', () => {
+ let fileSystem: StandardFileSystemService;
+
+ beforeEach(() => {
+ vi.resetAllMocks();
+ fileSystem = new StandardFileSystemService();
+ });
+
+ afterEach(() => {
+ vi.restoreAllMocks();
+ });
+
+ describe('readTextFile', () => {
+ it('should read file content using fs', async () => {
+ const testContent = 'Hello, World!';
+ vi.mocked(fs.readFile).mockResolvedValue(testContent);
+
+ const result = await fileSystem.readTextFile('/test/file.txt');
+
+ expect(fs.readFile).toHaveBeenCalledWith('/test/file.txt', 'utf-8');
+ expect(result).toBe(testContent);
+ });
+
+ it('should propagate fs.readFile errors', async () => {
+ const error = new Error('ENOENT: File not found');
+ vi.mocked(fs.readFile).mockRejectedValue(error);
+
+ await expect(fileSystem.readTextFile('/test/file.txt')).rejects.toThrow(
+ 'ENOENT: File not found',
+ );
+ });
+ });
+
+ describe('writeTextFile', () => {
+ it('should write file content using fs', async () => {
+ vi.mocked(fs.writeFile).mockResolvedValue();
+
+ await fileSystem.writeTextFile('/test/file.txt', 'Hello, World!');
+
+ expect(fs.writeFile).toHaveBeenCalledWith(
+ '/test/file.txt',
+ 'Hello, World!',
+ 'utf-8',
+ );
+ });
+ });
+});