| 290 | } |
| 291 | |
| 292 | bool cbm_is_test_file(const char *rel_path, CBMLanguage lang) { |
| 293 | if (!rel_path) { |
| 294 | return false; |
| 295 | } |
| 296 | const char *base = path_basename(rel_path); |
| 297 | |
| 298 | switch (lang) { |
| 299 | case CBM_LANG_GO: |
| 300 | return has_suffix(base, "_test.go"); |
| 301 | case CBM_LANG_PYTHON: |
| 302 | return has_prefix(base, "test_") || has_suffix(base, "_test.py"); |
| 303 | case CBM_LANG_JAVASCRIPT: |
| 304 | case CBM_LANG_TYPESCRIPT: |
| 305 | case CBM_LANG_TSX: { |
| 306 | char noext[NOEXT_BUF]; |
| 307 | strip_ext(base, noext, sizeof(noext)); |
| 308 | return has_suffix(noext, ".test") || has_suffix(noext, ".spec") || |
| 309 | has_suffix(noext, "_test") || has_suffix(noext, "_spec") || |
| 310 | has_prefix(base, "test_"); |
| 311 | } |
| 312 | case CBM_LANG_JAVA: |
| 313 | case CBM_LANG_KOTLIN: |
| 314 | case CBM_LANG_SCALA: |
| 315 | return has_suffix(base, "Test.java") || has_suffix(base, "Tests.java") || |
| 316 | has_suffix(base, "Spec.java") || has_suffix(base, "Test.kt") || |
| 317 | has_suffix(base, "Spec.kt") || has_suffix(base, "Test.scala") || |
| 318 | has_suffix(base, "Spec.scala"); |
| 319 | case CBM_LANG_RUST: |
| 320 | // Rust tests are typically mod tests inside the file, but test files too |
| 321 | return has_suffix(base, "_test.rs") || has_prefix(base, "test_"); |
| 322 | case CBM_LANG_RUBY: |
| 323 | return has_suffix(base, "_test.rb") || has_suffix(base, "_spec.rb") || |
| 324 | has_prefix(base, "test_"); |
| 325 | case CBM_LANG_PHP: |
| 326 | return has_suffix(base, "Test.php"); |
| 327 | case CBM_LANG_CSHARP: |
| 328 | return has_suffix(base, "Tests.cs") || has_suffix(base, "Test.cs"); |
| 329 | case CBM_LANG_CPP: |
| 330 | case CBM_LANG_C: |
| 331 | return has_suffix(base, "_test.c") || has_suffix(base, "_test.cc") || |
| 332 | has_suffix(base, "_test.cpp") || has_prefix(base, "test_"); |
| 333 | case CBM_LANG_MATLAB: |
| 334 | return has_prefix(base, "test_") || has_prefix(base, "Test"); |
| 335 | default: |
| 336 | return false; |
| 337 | } |
| 338 | } |
| 339 | |
| 340 | // --- AST traversal helpers --- |
| 341 |
no test coverage detected