diff --git a/src/extension/prompt/node/test/testFiles.spec.ts b/src/extension/prompt/node/test/testFiles.spec.ts index b99d8e597..51e985d40 100644 --- a/src/extension/prompt/node/test/testFiles.spec.ts +++ b/src/extension/prompt/node/test/testFiles.spec.ts @@ -143,6 +143,18 @@ suite.skipIf(process.platform === 'win32')('TestFileFinder', function () { await assertTestFileFoundAsync(sourceFile, '/test/app/api/foo_test.rb'); }); + test('returns a test for C++', async function () { + const sourceFile = '/project/src/Foo.cpp'; + const testFile = '/project/tests/Foo_test.cpp'; + await assertTestFileFoundAsync(sourceFile, testFile); + }); + + test('returns a test for C++ with different extension', async function () { + const sourceFile = '/project/src/Foo.cc'; + const testFile = '/project/tests/FooTest.cc'; + await assertTestFileFoundAsync(sourceFile, testFile); + }); + test('determine java test file with absolute path', async () => { await assertTestFileFoundAsync( '/Users/copilot/git/commons-io/src/main/java/org/apache/commons/io/EndianUtils.java', @@ -196,6 +208,14 @@ suite.skipIf(process.platform === 'win32')('TestFileFinder', function () { { filename: 'FooTest.java', isTestFile: true }, { filename: 'Foo.cs', isTestFile: false }, { filename: 'FooTest.cs', isTestFile: true }, + { filename: 'foo.cpp', isTestFile: false }, + { filename: 'foo_test.cpp', isTestFile: true }, + { filename: 'fooTest.cpp', isTestFile: true }, + { filename: 'foo.test.cpp', isTestFile: true }, + { filename: 'foo.cc', isTestFile: false }, + { filename: 'foo_test.cc', isTestFile: true }, + { filename: 'foo.cxx', isTestFile: false }, + { filename: 'foo_test.cxx', isTestFile: true }, { filename: 'foo.xx', isTestFile: false }, { filename: 'foo~Test.xx', isTestFile: true }, { filename: 'foo.spec.xx', isTestFile: true }, diff --git a/src/extension/prompt/node/testFiles.ts b/src/extension/prompt/node/testFiles.ts index 19c5e5540..ed8b71ef5 100644 --- a/src/extension/prompt/node/testFiles.ts +++ b/src/extension/prompt/node/testFiles.ts @@ -25,6 +25,7 @@ const nullTestHint: Required = { }; const testHintsByLanguage: Record = { + cpp: { suffixes: ['_test', 'Test', '.test'], location: 'testFolder' }, csharp: { suffixes: ['Test'], location: 'testFolder' }, dart: { suffixes: ['_test'], location: 'testFolder' }, go: { suffixes: ['_test'], location: 'sameFolder' }, @@ -43,6 +44,9 @@ const testHintsByLanguage: Record = { }; export const suffix2Language: Record = { + cpp: 'cpp', + cc: 'cpp', + cxx: 'cpp', cs: 'csharp', dart: 'dart', go: 'go',