11#! /bin/bash
2- set -e -u - o pipefail
2+ set -e -o pipefail
33shopt -s nullglob
44shopt -s extglob
55
66declare -r SELF_DIR=" $( dirname $( readlink -f ${BASH_SOURCE[0]} ) ) "
77declare -r ROOT_DIR=" $( realpath $SELF_DIR /../..) "
88
9- declare -r UHDM_RESULTS_FILE=$ROOT_DIR /test-results-uhdm.log
10- declare -r SV_RESULTS_FILE=$ROOT_DIR /test-results-systemverilog.log
9+ declare -r UHDM_RESULTS_FILE=$ROOT_DIR /$2 /$1 -test-results-uhdm.log
10+ declare -r SV_RESULTS_FILE=$ROOT_DIR /$2 /$1 -test-results-systemverilog.log
11+
12+ NO_UHDM_LOGS=0
13+ NO_SV_LOGS=0
1114
1215# --------------------------------------------------------------------------------
1316
@@ -18,6 +21,12 @@ function parse_stats() {
1821 local -n _asan_results=" $4 "
1922 local file=" $5 "
2023
24+ if [ ! -f $file ]; then
25+ if [ " $2 " == " uhdm_stats" ]; then NO_UHDM_LOGS=1; fi
26+ if [ " $2 " == " sv_stats" ]; then NO_SV_LOGS=1; fi
27+ return
28+ fi
29+
2130 while read test_result asan_result test_name; do
2231 [[ -z " $test_name " ]] && continue ;
2332
@@ -60,15 +69,34 @@ total_test_fail=$(( ${uhdm_stats[test_fail]} + ${sv_stats[test_fail]} ))
6069total_test_pass=$(( ${uhdm_stats[test_pass]} + ${sv_stats[test_pass]} ))
6170total_asan_fail=$(( ${uhdm_stats[asan_fail]} + ${sv_stats[asan_fail]} ))
6271
63- {
64- printf ' | Tool/Parser | Failed | Passed | ASAN issues |\n'
65- printf ' |:---------------------|-------:|-------:|------------:|\n'
66- printf ' | `read-uhdm` | %d | %d | %d |\n' " ${uhdm_stats[test_fail]} " " ${uhdm_stats[test_pass]} " " ${uhdm_stats[asan_fail]} "
67- printf ' | `read-systemverilog` | %d | %d | %d |\n' " ${sv_stats[test_fail]} " " ${sv_stats[test_pass]} " " ${sv_stats[asan_fail]} "
68- printf ' | **Total** | **%d** | **%d** | **%d** |\n' " $total_test_fail " " $total_test_pass " " $total_asan_fail "
69- printf ' \n'
70- } >> $GITHUB_STEP_SUMMARY
71-
72+ if [ -n " $GITHUB_ACTIONS " ]; then
73+ printf " # Parsing tests for build: %s\n" $1
74+ else
75+ printf " #/ Tests summary \#\n"
76+ fi
77+
78+ if [ " $NO_UHDM_LOGS " == " 1" ]; then printf " No read_uhdm logs detected!\n" ; fi
79+ if [ " $NO_SV_LOGS " == " 1" ]; then printf " No read_systemverilog logs detected!\n" ; fi
80+
81+ if [ " $1 " == " asan" ]; then
82+ {
83+ printf ' | Tool/Parser | Failed | Passed | ASAN issues |\n'
84+ printf ' |:---------------------|-------:|-------:|------------:|\n'
85+ printf ' | `read-uhdm` | %6d | %6d | %11d |\n' " ${uhdm_stats[test_fail]} " " ${uhdm_stats[test_pass]} " " ${uhdm_stats[asan_fail]} "
86+ printf ' | `read-systemverilog` | %6d | %6d | %11d |\n' " ${sv_stats[test_fail]} " " ${sv_stats[test_pass]} " " ${sv_stats[asan_fail]} "
87+ printf ' | **Total** | %6d | %6d | %11d |\n' " $total_test_fail " " $total_test_pass " " $total_asan_fail "
88+ printf ' \n'
89+ }
90+ else
91+ {
92+ printf ' | Tool/Parser | Failed | Passed |\n'
93+ printf ' |:---------------------|-------:|-------:|\n'
94+ printf ' | `read-uhdm` | %6d | %6d |\n' " ${uhdm_stats[test_fail]} " " ${uhdm_stats[test_pass]} "
95+ printf ' | `read-systemverilog` | %6d | %6d |\n' " ${sv_stats[test_fail]} " " ${sv_stats[test_pass]} "
96+ printf ' | **Total** | %6d | %6d |\n' " $total_test_fail " " $total_test_pass "
97+ printf ' \n'
98+ }
99+ fi
72100failed_test_lines=()
73101passed_test_lines=()
74102asan_fail_lines=()
@@ -87,6 +115,9 @@ for test_name in "${!test_names[@]}"; do
87115 (( sv_ok )) && sv_result_tag=" $pass_tag " || sv_result_tag=" $fail_tag "
88116 (( sv_asan_ok )) && sv_asan_result_tag=" $pass_tag " || sv_asan_result_tag=" $fail_tag "
89117
118+ if [ " $NO_UHDM_LOGS " == " 1" ]; then uhdm_ok=1; uhdm_asan_ok=1; fi
119+ if [ " $NO_SV_LOGS " == " 1" ]; then sv_ok=1; sv_asan_ok=1; fi
120+
90121 # Puting digits for sorting purposes before "###". They will be removed after sorting.
91122 if (( ! uhdm_ok || ! sv_ok )) ; then
92123 failed_test_lines+=(" ${uhdm_ok}${sv_ok} ${test_name} ###| ${uhdm_result_tag} | ${sv_result_tag} | ${test_name} |" )
@@ -102,35 +133,47 @@ print_ln() { (( $# )) && printf '%s\n' "$@" || : ; }
102133
103134{
104135 if (( ${# failed_test_lines[@]} > 0 )) ; then
105- print_ln ' <details open>'
106- print_ln ' <summary><strong>List of failed tests</strong></summary><p>'
136+ if [ -n " $GITHUB_ACTIONS " ]; then
137+ print_ln ' <details open>'
138+ print_ln ' <summary><strong>List of failed tests</strong></summary><p>'
139+ fi
107140 print_ln ' '
108141 print_ln ' | `read_uhdm` | `read_systemverilog` | Test |'
109142 print_ln ' |:-----------:|:--------------------:|:-----|'
110143 print_ln " ${failed_test_lines[@]} " | sort | sed -e ' s/^.*###//'
111- print_ln ' '
112- print_ln ' </p></details>'
144+ if [ -n " $GITHUB_ACTIONS " ]; then
145+ print_ln ' '
146+ print_ln ' </p></details>'
147+ fi
113148 fi
114149
115- if (( ${# asan_fail_lines[@]} > 0 )) ; then
116- print_ln ' <details open>'
117- print_ln ' <summary><strong>List of tests with ASAN issues</strong></summary><p>'
118- print_ln ' '
119- print_ln ' | `read_uhdm` | `read_systemverilog` | Test |'
120- print_ln ' |:-----------:|:--------------------:|:-----|'
121- print_ln " ${asan_fail_lines[@]} " | sort | sed -e ' s/^.*###//'
122- print_ln ' '
123- print_ln ' </p></details>'
150+ if [ " $1 " == " asan" ]; then
151+ if (( ${# asan_fail_lines[@]} > 0 )) ; then
152+ if [ -n " $GITHUB_ACTIONS " ]; then
153+ print_ln ' <details open>'
154+ print_ln ' <summary><strong>List of tests with ASAN issues</strong></summary><p>'
155+ fi
156+ print_ln ' '
157+ print_ln ' | `read_uhdm` | `read_systemverilog` | Test |'
158+ print_ln ' |:-----------:|:--------------------:|:-----|'
159+ print_ln " ${asan_fail_lines[@]} " | sort | sed -e ' s/^.*###//'
160+ if [ -n " $GITHUB_ACTIONS " ]; then
161+ print_ln ' '
162+ print_ln ' </p></details>'
163+ fi
164+ fi
124165 fi
125-
126- if (( ${# passed_test_lines[@]} > 0 )) ; then
127- print_ln ' <details>'
128- print_ln ' <summary><strong>List of passed tests</strong></summary><p>'
129- print_ln ' '
130- print_ln ' | `read_uhdm` | `read_systemverilog` | Test |'
131- print_ln ' |:-----------:|:--------------------:|:-----|'
132- print_ln " ${passed_test_lines[@]} " | sort | sed -e ' s/^.*###//'
133- print_ln ' '
134- print_ln ' </p></details>'
166+ if [ -n " $GITHUB_ACTIONS " ]; then
167+ if (( ${# passed_test_lines[@]} > 0 )) ; then
168+ print_ln ' <details>'
169+ print_ln ' <summary><strong>List of passed tests</strong></summary><p>'
170+ print_ln ' '
171+ print_ln ' | `read_uhdm` | `read_systemverilog` | Test |'
172+ print_ln ' |:-----------:|:--------------------:|:-----|'
173+ print_ln " ${passed_test_lines[@]} " | sort | sed -e ' s/^.*###//'
174+ print_ln ' '
175+ print_ln ' </p></details>'
176+ fi
135177 fi
136- } >> $GITHUB_STEP_SUMMARY
178+ print_ln ' '
179+ }
0 commit comments