mirror of
https://github.com/gitpod-io/gitpod.git
synced 2025-12-08 17:36:30 +00:00
47 lines
1.7 KiB
Bash
Executable File
47 lines
1.7 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# Convenience script to create the Quality Assurance Report
|
|
#
|
|
# Usage:
|
|
#
|
|
# report.sh [input.json]
|
|
#
|
|
# Examples
|
|
#
|
|
# run.sh result.json
|
|
#
|
|
|
|
set -euo pipefail
|
|
|
|
input_file=${1}
|
|
|
|
d=$(date "+%Y%m%d-%H%M%S")
|
|
tempdir=$(mktemp -d /tmp/report-"$d".XXXXX)
|
|
|
|
exec {base}< <( \
|
|
jq -r 'select( .Action | test("(pass|fail|skip)") ) | select( .Elapsed | . != 0) | select( .Test | . != null) | [.Package,.Test,.Action]|@csv' "$input_file" | \
|
|
sed 's/github.com\/gitpod-io\/gitpod\/test\/tests\///' > "$tempdir"/base.csv
|
|
)
|
|
|
|
jq -r 'select( .Action | test("(pass|fail|skip)") ) | select( .Elapsed | . != 0) | select( .Test | . != null).Test' "$input_file" > "$tempdir"/list.txt
|
|
|
|
exec {feature}< <( \
|
|
while read -r test_name; do
|
|
jq -r -s --arg name "$test_name" 'map(select( . | .Test == $name) | select( . | .Output != null ) | select( .Output | startswith("===") | not) | select( .Output | contains("---") | not) | .Output | gsub("[\\n\\t]"; ""))[0]' "$input_file"
|
|
done < "$tempdir"/list.txt | sed 's/^[ \t]*//' | sed 's/,/ /g' | cut -d ':' -f 3 > "$tempdir"/features.txt
|
|
)
|
|
|
|
exec {desc}< <( \
|
|
while read -r test_name; do
|
|
jq -r -s --arg name "$test_name" 'map(select( . | .Test == $name) | select( . | .Output != null ) | select( .Output | startswith("===") | not) | select( .Output | contains("---") | not) | .Output | gsub("[\\n\\t]"; ""))[1]' "$input_file"
|
|
done < "$tempdir"/list.txt | sed 's/^[ \t]*//' | sed 's/,/ /g' | cut -d ':' -f 3 > "$tempdir"/desc.txt
|
|
)
|
|
|
|
cat <&${base}
|
|
cat <&${feature}
|
|
cat <&${desc}
|
|
|
|
paste "$tempdir"/features.txt "$tempdir"/base.csv "$tempdir"/desc.txt -d ',' | \
|
|
awk -F"," 'OFS="," {print $3,$1,$2,$4,$5}' | \
|
|
sed "/null/d" |\
|
|
sed '1iname,feature,component,status,desc'
|