Skip to content

Commit 078b706

Browse files
authored
Refactor parsing tests CI (#2574)
Now parsing tests are performed on all build types.
2 parents 803e066 + ca9d464 commit 078b706

File tree

6 files changed

+165
-166
lines changed

6 files changed

+165
-166
lines changed

.ci.yml

Lines changed: 15 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -104,42 +104,45 @@ build_package:
104104
when: always
105105
paths:
106106
- build/
107+
script:
108+
- ./tests/scripts/run_parsing.sh install_dependencies load_submodules --type $BUILD_TYPE read_uhdm
109+
- ./tests/scripts/run_parsing.sh --type $BUILD_TYPE gather_results
107110

108111
plugin_read_uhdm:
109112
<<: *parsing_test
110113
dependencies: [build_plugin]
111-
script:
112-
- ./tests/scripts/run_parsing.sh install_dependencies load_submodules --type plugin read_uhdm
114+
variables:
115+
BUILD_TYPE: plugin
113116

114117
plugin_read_systemverilog:
115118
<<: *parsing_test
116119
dependencies: [build_plugin]
117-
script:
118-
- ./tests/scripts/run_parsing.sh install_dependencies load_submodules --type plugin read_systemverilog
120+
variables:
121+
BUILD_TYPE: plugin
119122

120123
asan_read_uhdm:
121124
<<: *parsing_test
122125
dependencies: [build_asan]
123-
script:
124-
- ./tests/scripts/run_parsing.sh install_dependencies load_submodules --type asan read_uhdm
126+
variables:
127+
BUILD_TYPE: asan
125128

126129
asan_read_systemverilog:
127130
<<: *parsing_test
128131
dependencies: [build_asan]
129-
script:
130-
- ./tests/scripts/run_parsing.sh install_dependencies load_submodules --type asan read_systemverilog
132+
variables:
133+
BUILD_TYPE: asan
131134

132135
release_read_uhdm:
133136
<<: *parsing_test
134137
dependencies: [build_release]
135-
script:
136-
- ./tests/scripts/run_parsing.sh install_dependencies load_submodules --type release read_uhdm
138+
variables:
139+
BUILD_TYPE: release
137140

138141
release_read_systemverilog:
139142
<<: *parsing_test
140143
dependencies: [build_release]
141-
script:
142-
- ./tests/scripts/run_parsing.sh install_dependencies load_submodules --type release read_systemverilog
144+
variables:
145+
BUILD_TYPE: release
143146

144147
.job_template: &formal_test
145148
stage: "Run parsing and formal verification tests"

.github/scripts/generate_summary.sh

Lines changed: 79 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,16 @@
11
#!/bin/bash
2-
set -e -u -o pipefail
2+
set -e -o pipefail
33
shopt -s nullglob
44
shopt -s extglob
55

66
declare -r SELF_DIR="$(dirname $(readlink -f ${BASH_SOURCE[0]}))"
77
declare -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]} ))
6069
total_test_pass=$(( ${uhdm_stats[test_pass]} + ${sv_stats[test_pass]} ))
6170
total_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
72100
failed_test_lines=()
73101
passed_test_lines=()
74102
asan_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+
}

.github/scripts/run_group_test.sh

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ declare -r RESULTS_FILE="$(realpath -m "$2")"
1313
# Input passed via env:
1414
# - PARSER
1515
# - TARGET
16+
# - BUILD_TYPE
1617

1718
# Configure ASAN & LSAN
1819

@@ -63,7 +64,7 @@ for test_case in "${test_cases[@]}"; do
6364
# Used only for current test
6465
ASAN_OPTIONS+=":log_path=${test_out_dir}/asan"
6566

66-
if [ "$BUILD_TYPE" == "'plugin'" ]; then
67+
if [ "$BUILD_TYPE" == "plugin" ]; then
6768
BINARY="yosys -Q"
6869
else
6970
BINARY="synlig -Q"

0 commit comments

Comments
 (0)