@@ -5,11 +5,12 @@ ANY_FAILED=false
55
66MODEL_LIST_KEY=" model-list"
77FEATURE_LIST_KEY=" feature-list"
8+ DEFAULT_FEATURES_FILE=" .buildkite/features/default_features.txt"
89
910# Note: This script assumes the metadata keys contain newline-separated lists.
1011# The `mapfile` command reads these lists into arrays, correctly handling spaces.
1112mapfile -t model_list < <( buildkite-agent meta-data get " ${MODEL_LIST_KEY} " --default " " )
12- mapfile -t feature_list < <( buildkite-agent meta-data get " ${FEATURE_LIST_KEY} " --default " " )
13+ mapfile -t metadata_feature_list < <( buildkite-agent meta-data get " ${FEATURE_LIST_KEY} " --default " " )
1314MODEL_STAGES=(" UnitTest" " IntegrationTest" " Benchmark" )
1415FEATURE_STAGES=(" CorrectnessTest" " PerformanceTest" )
1516
@@ -20,8 +21,24 @@ echo "Model,UnitTest,IntegrationTest,Benchmark" > "$model_support_matrix_csv"
2021feature_support_matrix_csv=" feature_support_matrix.csv"
2122echo " Feature,CorrectnessTest,PerformanceTest" > " $feature_support_matrix_csv "
2223
24+ # Read the list of default features from the specified file
25+ if [[ -f " ${DEFAULT_FEATURES_FILE} " ]]; then
26+ mapfile -t default_feature_list < <( sed ' s/\r$//; /^$/d' " ${DEFAULT_FEATURES_FILE} " )
27+ else
28+ default_feature_list=()
29+ echo " Warning: Default features file not found at ${DEFAULT_FEATURES_FILE} "
30+ fi
31+
32+ # Combine metadata features and default features into the final unique list
33+ mapfile -t feature_list < <(
34+ (
35+ printf " %s\n" " ${metadata_feature_list[@]:- } "
36+ printf " %s\n" " ${default_feature_list[@]:- } "
37+ ) | sort -u | sed ' /^$/d'
38+ )
39+
2340process_models () {
24- for model in " $@ " ; do
41+ for model in " ${model_list[@] :- } " ; do
2542 row=" \" $model \" "
2643 for stage in " ${MODEL_STAGES[@]} " ; do
2744 result=$( buildkite-agent meta-data get " ${model} :${stage} " --default " N/A" )
@@ -35,10 +52,23 @@ process_models() {
3552}
3653
3754process_features () {
38- for feature in " $@ " ; do
55+ for feature in " ${feature_list[@] :- } " ; do
3956 row=" \" $feature \" "
57+ # Check if the current feature is in the default_feature_list
58+ is_default_feature=false
59+ for default_feat in " ${default_feature_list[@]:- } " ; do
60+ if [[ " ${feature} " == " ${default_feat} " ]]; then
61+ is_default_feature=true
62+ break
63+ fi
64+ done
4065 for stage in " ${FEATURE_STAGES[@]} " ; do
41- result=$( buildkite-agent meta-data get " ${feature} :${stage} " --default " N/A" )
66+ # Set the default value based on whether it's a default feature
67+ local default_value=" N/A"
68+ if [ " $is_default_feature " = true ]; then
69+ default_value=" ✅"
70+ fi
71+ result=$( buildkite-agent meta-data get " ${feature} :${stage} " --default " ${default_value} " )
4272 row=" $row ,$result "
4373 if [ " ${result} " != " ✅" ] && [ " ${result} " != " N/A" ] ; then
4474 ANY_FAILED=true
@@ -49,11 +79,11 @@ process_features() {
4979}
5080
5181if [ ${# model_list[@]} -gt 0 ]; then
52- process_models " ${model_list[@]} "
82+ process_models
5383fi
5484
5585if [ ${# feature_list[@]} -gt 0 ]; then
56- process_features " ${feature_list[@]} "
86+ process_features
5787fi
5888
5989buildkite-agent meta-data set " CI_TESTS_FAILED" " ${ANY_FAILED} "
0 commit comments