@@ -10,10 +10,18 @@ import {
1010 ContentLengthError ,
1111 maxRepoSizeBytes ,
1212} from 'aws-core-vscode/amazonqFeatureDev'
13- import { assertTelemetry , createTestWorkspace } from 'aws-core-vscode/test'
13+ import { assertTelemetry , createTestWorkspace , getWorkspaceFolder , TestFolder } from 'aws-core-vscode/test'
1414import { fs , AmazonqCreateUpload } from 'aws-core-vscode/shared'
1515import { Span } from 'aws-core-vscode/telemetry'
1616import sinon from 'sinon'
17+ import { CodeWhispererSettings } from 'aws-core-vscode/codewhisperer'
18+
19+ const getWorkspaceWithDevFile = async ( ) => {
20+ const folder = await TestFolder . create ( )
21+ await folder . write ( 'devfile.yaml' , 'test' )
22+ await folder . write ( 'file.md' , 'test content' )
23+ return getWorkspaceFolder ( folder . path )
24+ }
1725
1826describe ( 'file utils' , ( ) => {
1927 describe ( 'prepareRepoData' , function ( ) {
@@ -56,6 +64,36 @@ describe('file utils', () => {
5664 assertTelemetry ( 'amazonq_bundleExtensionIgnored' , { filenameExt : 'mp4' , count : 1 } )
5765 } )
5866
67+ it ( 'should ignore devfile.yaml when setting is disabled' , async function ( ) {
68+ const workspace = await getWorkspaceWithDevFile ( )
69+ sinon . stub ( CodeWhispererSettings . instance , 'getDevCommandWorkspaceConfigurations' ) . returns ( { } )
70+
71+ const telemetry = new TelemetryHelper ( )
72+ const result = await prepareRepoData ( [ workspace . uri . fsPath ] , [ workspace ] , telemetry , {
73+ record : ( ) => { } ,
74+ } as unknown as Span < AmazonqCreateUpload > )
75+ assert . strictEqual ( Buffer . isBuffer ( result . zipFileBuffer ) , true )
76+ // checksum is not the same across different test executions because some unique random folder names are generated
77+ assert . strictEqual ( result . zipFileChecksum . length , 44 )
78+ assert . strictEqual ( telemetry . repositorySize , 12 )
79+ } )
80+
81+ it ( 'should include devfile.yaml when setting is enabled' , async function ( ) {
82+ const workspace = await getWorkspaceWithDevFile ( )
83+ sinon . stub ( CodeWhispererSettings . instance , 'getDevCommandWorkspaceConfigurations' ) . returns ( {
84+ [ workspace . uri . fsPath ] : true ,
85+ } )
86+
87+ const telemetry = new TelemetryHelper ( )
88+ const result = await prepareRepoData ( [ workspace . uri . fsPath ] , [ workspace ] , telemetry , {
89+ record : ( ) => { } ,
90+ } as unknown as Span < AmazonqCreateUpload > )
91+ assert . strictEqual ( Buffer . isBuffer ( result . zipFileBuffer ) , true )
92+ // checksum is not the same across different test executions because some unique random folder names are generated
93+ assert . strictEqual ( result . zipFileChecksum . length , 44 )
94+ assert . strictEqual ( telemetry . repositorySize , 16 )
95+ } )
96+
5997 // Test the logic that allows the customer to modify root source folder
6098 it ( 'prepareRepoData throws a ContentLengthError code when repo is too big' , async function ( ) {
6199 const workspace = await createTestWorkspace ( 1 , { } )
0 commit comments