diff --git a/packages/amazonq/.changes/next-release/Bug Fix-993929aa-5dd5-440a-9150-8ae5ba5f56ac.json b/packages/amazonq/.changes/next-release/Bug Fix-993929aa-5dd5-440a-9150-8ae5ba5f56ac.json new file mode 100644 index 00000000000..54780e9339e --- /dev/null +++ b/packages/amazonq/.changes/next-release/Bug Fix-993929aa-5dd5-440a-9150-8ae5ba5f56ac.json @@ -0,0 +1,4 @@ +{ + "type": "Bug Fix", + "description": "Amazon Q can update mvn and gradle build files" +} diff --git a/packages/core/src/shared/filetypes.ts b/packages/core/src/shared/filetypes.ts index 61287cb11bc..212bb58ebe2 100644 --- a/packages/core/src/shared/filetypes.ts +++ b/packages/core/src/shared/filetypes.ts @@ -173,6 +173,7 @@ export const codefileExtensions = new Set([ '.cljs', '.cls', '.cmake', + '.cmd', '.cob', '.cobra', '.coffee', @@ -274,6 +275,7 @@ export const codefileExtensions = new Set([ '.pp', '.pro', '.prolog', + '.properties', '.ps1', '.psd1', '.psm1', @@ -351,7 +353,7 @@ export const codefileExtensions = new Set([ ]) // Code file names without an extension -export const codefileNames = new Set(['Dockerfile', 'Dockerfile.build']) +export const codefileNames = new Set(['Dockerfile', 'Dockerfile.build', 'gradlew', 'mvnw']) /** Returns true if `filename` is a code file. */ export function isCodeFile(filename: string): boolean { diff --git a/packages/core/src/test/shared/filetypes.test.ts b/packages/core/src/test/shared/filetypes.test.ts index a83fbbbee8f..26e12631419 100644 --- a/packages/core/src/test/shared/filetypes.test.ts +++ b/packages/core/src/test/shared/filetypes.test.ts @@ -13,6 +13,7 @@ import * as workspaceUtils from '../../shared/utilities/workspaceUtils' import { toArrayAsync } from '../../shared/utilities/collectionUtils' import { waitUntil } from '../../shared/utilities/timeoutUtils' import { mapMetadata } from '../../shared/telemetry/telemetryLogger' +import { isCodeFile } from '../../shared/filetypes' async function getMetrics(n: number, metricName: string, timeout = 1000) { return await waitUntil( @@ -148,3 +149,27 @@ describe('file_editAwsFile telemetry', function () { // assert.strictEqual(r?.length, 1, 'emitted file_editAwsFile too many times') }) }) + +describe('isCodeFile', () => { + it('returns true for code files', function () { + const codeFiles = [ + 'test.py', + 'test.js', + 'Dockerfile', + 'gradlew', + 'mvnw', + 'build.gradle', + 'gradle/wrapper/gradle-wrapper.properties', + ] + for (const codeFilePath of codeFiles) { + assert.strictEqual(isCodeFile(codeFilePath), true) + } + }) + + it('returns false for other files', function () { + const codeFiles = ['compiled.exe', 'random_file'] + for (const filePath of codeFiles) { + assert.strictEqual(isCodeFile(filePath), false) + } + }) +})