Skip to content

Commit 8d4bad4

Browse files
committed
test: update /dev prepareRepoData unit test to include devfile filtering
1 parent e23c61d commit 8d4bad4

File tree

2 files changed

+69
-0
lines changed

2 files changed

+69
-0
lines changed

packages/amazonq/test/unit/amazonqFeatureDev/util/files.test.ts

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ import { assertTelemetry, createTestWorkspace } from 'aws-core-vscode/test'
1414
import { fs, AmazonqCreateUpload } from 'aws-core-vscode/shared'
1515
import { Span } from 'aws-core-vscode/telemetry'
1616
import sinon from 'sinon'
17+
import { CodeWhispererSettings } from 'aws-core-vscode/codewhisperer'
1718

1819
describe('file utils', () => {
1920
describe('prepareRepoData', function () {
@@ -56,6 +57,64 @@ describe('file utils', () => {
5657
assertTelemetry('amazonq_bundleExtensionIgnored', { filenameExt: 'mp4', count: 1 })
5758
})
5859

60+
it('prepareRepoData should ignore devfile.yaml when setting is disabled', async function () {
61+
const fileAmount = 2
62+
const fileNamePrefix = 'file'
63+
const fileNameSuffix = '.md'
64+
const fileContent = 'test content'
65+
66+
const workspace = await createTestWorkspace(fileAmount, {
67+
fileNamePrefix,
68+
fileContent,
69+
fileNameSuffix,
70+
additionalFiles: [
71+
{
72+
fileContent: 'test',
73+
fileName: 'devfile.yaml',
74+
},
75+
],
76+
})
77+
78+
const telemetry = new TelemetryHelper()
79+
const result = await prepareRepoData([workspace.uri.fsPath], [workspace], telemetry, {
80+
record: () => {},
81+
} as unknown as Span<AmazonqCreateUpload>)
82+
assert.strictEqual(Buffer.isBuffer(result.zipFileBuffer), true)
83+
// checksum is not the same across different test executions because some unique random folder names are generated
84+
assert.strictEqual(result.zipFileChecksum.length, 44)
85+
assert.strictEqual(telemetry.repositorySize, 24)
86+
})
87+
88+
it('prepareRepoData should ignore devfile.yaml when setting is enabled', async function () {
89+
const fileAmount = 2
90+
const fileNamePrefix = 'file'
91+
const fileNameSuffix = '.md'
92+
const fileContent = 'test content'
93+
94+
const workspace = await createTestWorkspace(fileAmount, {
95+
fileNamePrefix,
96+
fileContent,
97+
fileNameSuffix,
98+
additionalFiles: [
99+
{
100+
fileContent: 'test',
101+
fileName: 'devfile.yaml',
102+
},
103+
],
104+
})
105+
106+
await CodeWhispererSettings.instance.updateDevCommandWorkspaceConfigurations(workspace.uri.fsPath, true)
107+
const telemetry = new TelemetryHelper()
108+
console.log(workspace.uri.fsPath)
109+
const result = await prepareRepoData([workspace.uri.fsPath], [workspace], telemetry, {
110+
record: () => {},
111+
} as unknown as Span<AmazonqCreateUpload>)
112+
assert.strictEqual(Buffer.isBuffer(result.zipFileBuffer), true)
113+
// checksum is not the same across different test executions because some unique random folder names are generated
114+
assert.strictEqual(result.zipFileChecksum.length, 44)
115+
assert.strictEqual(telemetry.repositorySize, 28)
116+
})
117+
59118
// Test the logic that allows the customer to modify root source folder
60119
it('prepareRepoData throws a ContentLengthError code when repo is too big', async function () {
61120
const workspace = await createTestWorkspace(1, {})

packages/core/src/test/testUtil.ts

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -185,6 +185,10 @@ export async function createTestWorkspace(
185185
* optional file name suffix
186186
*/
187187
fileNameSuffix?: string
188+
/**
189+
* optional additional files
190+
*/
191+
additionalFiles?: Array<{ fileName: string; fileContent: string }>
188192
}
189193
): Promise<vscode.WorkspaceFolder> {
190194
const workspace = await createTestWorkspaceFolder(opts.workspaceName, opts.subDir)
@@ -202,6 +206,12 @@ export async function createTestWorkspace(
202206
await fs.writeFile(tempFilePath, fileContent)
203207
} while (--n > 0)
204208

209+
if (opts.additionalFiles) {
210+
opts.additionalFiles.forEach(async (file) => {
211+
await fs.writeFile(path.join(workspace.uri.fsPath, file.fileName), file.fileContent)
212+
})
213+
}
214+
205215
return workspace
206216
}
207217

0 commit comments

Comments
 (0)