Просмотр исходного кода

fix: count file-level tracked yaml and twig as indexed (#357)

luo jiyin 3 недель назад
Родитель
Сommit
839cf63dcb
2 измененных файлов с 47 добавлено и 2 удалено
  1. 32 0
      __tests__/extraction.test.ts
  2. 15 2
      src/extraction/index.ts

+ 32 - 0
__tests__/extraction.test.ts

@@ -3226,6 +3226,38 @@ export function multiply(a: number, b: number): number {
 
 
     cg.close();
     cg.close();
   });
   });
+
+  it('should count file-level tracked YAML files as indexed', async () => {
+    fs.writeFileSync(path.join(tempDir, 'app.yaml'), 'name: test\n');
+    fs.writeFileSync(path.join(tempDir, 'routes.yml'), 'route: value\n');
+
+    const cg = CodeGraph.initSync(tempDir);
+    const result = await cg.indexAll();
+
+    expect(result.success).toBe(true);
+    expect(result.filesIndexed).toBe(2);
+    expect(result.filesSkipped).toBe(0);
+    expect(cg.getFiles().map((f) => f.path).sort()).toEqual(['app.yaml', 'routes.yml']);
+
+    cg.close();
+  });
+
+  it('should count file-level tracked YAML/Twig files as indexed in indexFiles()', async () => {
+    fs.writeFileSync(path.join(tempDir, 'app.yaml'), 'name: test\n');
+    fs.writeFileSync(path.join(tempDir, 'view.twig'), '{{ title }}\n');
+
+    const cg = CodeGraph.initSync(tempDir);
+    const result = await cg.indexFiles(['app.yaml', 'view.twig']);
+
+    expect(result.success).toBe(true);
+    expect(result.filesIndexed).toBe(2);
+    expect(result.filesSkipped).toBe(0);
+
+    const tracked = cg.getFiles().map((f) => `${f.path}:${f.language}`).sort();
+    expect(tracked).toEqual(['app.yaml:yaml', 'view.twig:twig']);
+
+    cg.close();
+  });
 });
 });
 
 
 describe('Path Normalization', () => {
 describe('Path Normalization', () => {

+ 15 - 2
src/extraction/index.ts

@@ -942,7 +942,15 @@ export class ExtractionOrchestrator {
         } else if (result.errors.some((e) => e.severity === 'error')) {
         } else if (result.errors.some((e) => e.severity === 'error')) {
           filesErrored++;
           filesErrored++;
         } else {
         } else {
-          filesSkipped++;
+          // Files with no symbols but no errors (e.g. yaml, twig) are tracked
+          // at the file level — count them as indexed so the CLI doesn't
+          // misleadingly report "No files found to index".
+          const lang = detectLanguage(filePath, content);
+          if (lang === 'yaml' || lang === 'twig') {
+            filesIndexed++;
+          } else {
+            filesSkipped++;
+          }
         }
         }
       }
       }
     }
     }
@@ -1108,7 +1116,12 @@ export class ExtractionOrchestrator {
       } else if (result.errors.some((e) => e.severity === 'error')) {
       } else if (result.errors.some((e) => e.severity === 'error')) {
         filesErrored++;
         filesErrored++;
       } else {
       } else {
-        filesSkipped++;
+        const tracked = this.queries.getFileByPath(filePath);
+        if (tracked && (tracked.language === 'yaml' || tracked.language === 'twig')) {
+          filesIndexed++;
+        } else {
+          filesSkipped++;
+        }
       }
       }
     }
     }