@@ -434,6 +434,63 @@ cleanup_codacy() {
434434 fi
435435}
436436
437+ # Validate that languages-config.yaml exists and contains all tools from codacy.yaml
438+ validate_languages_config_contains_all_tools () {
439+ local codacy_yaml=" .codacy/codacy.yaml"
440+ local languages_config=" .codacy/tools-configs/languages-config.yaml"
441+
442+ # Check that languages-config.yaml exists
443+ if [ ! -f " $languages_config " ]; then
444+ echo " ❌ languages-config.yaml does not exist at $languages_config "
445+ exit 1
446+ fi
447+ echo " ✅ languages-config.yaml exists"
448+
449+ # Extract tool names from codacy.yaml
450+ if [ ! -f " $codacy_yaml " ]; then
451+ echo " ❌ codacy.yaml does not exist at $codacy_yaml "
452+ exit 1
453+ fi
454+
455+ # Get tools from codacy.yaml (extract tool names before @ version, only from tools section)
456+ codacy_tools=$( awk '
457+ /^tools:/ { in_tools=1; next }
458+ /^[a-zA-Z][^:]*:/ { in_tools=0 }
459+ in_tools && /^\s*-\s+[a-zA-Z0-9_-]+@/ {
460+ gsub(/^\s*-\s*/, "");
461+ gsub(/@.*$/, "");
462+ print
463+ }
464+ ' " $codacy_yaml " | sort || true)
465+
466+ if [ -z " $codacy_tools " ]; then
467+ echo " ✅ No tools found in codacy.yaml, skipping validation"
468+ return 0
469+ fi
470+
471+ echo " 📋 Tools found in codacy.yaml:"
472+ echo " $codacy_tools "
473+
474+ # Check that each tool from codacy.yaml exists in languages-config.yaml
475+ missing_tools=" "
476+ for tool in $codacy_tools ; do
477+ if ! grep -q " name: $tool " " $languages_config " ; then
478+ missing_tools=" $missing_tools $tool "
479+ fi
480+ done
481+
482+ if [ -n " $missing_tools " ]; then
483+ echo " ❌ The following tools from codacy.yaml are missing in languages-config.yaml:$missing_tools "
484+ echo " === Tools in codacy.yaml ==="
485+ echo " $codacy_tools "
486+ echo " === Tools in languages-config.yaml ==="
487+ grep " name:" " $languages_config " | sed ' s/.*name: \(.*\)/\1/' | sort
488+ exit 1
489+ fi
490+
491+ echo " ✅ All tools from codacy.yaml are present in languages-config.yaml"
492+ }
493+
437494compare_files () {
438495 local expected_dir=" $1 "
439496 local actual_dir=" $2 "
568625 exit 1
569626 fi
570627
628+ # Check the languages-config.yaml is present and contains all tools which are in the codacy.yaml
629+ validate_languages_config_contains_all_tools
630+
571631 # Run config discover on the test directory - adding all tools
572632 " $CLI_PATH " config discover .
573633
634+ # Final validation: check that languages-config.yaml contains all tools from codacy.yaml
635+ validate_languages_config_contains_all_tools
636+
574637 compare_files " expected" " .codacy" " Test $test_name "
575638
576639 echo " ✅ Test $test_name completed successfully"
0 commit comments