mirror of
https://github.com/thorvg/thorvg.git
synced 2025-06-08 13:43:43 +00:00
Regression finder
This commit is contained in:
parent
1e370712e0
commit
e8b1c654d4
4 changed files with 123 additions and 0 deletions
67
.github/workflows/regression.yml
vendored
Normal file
67
.github/workflows/regression.yml
vendored
Normal file
|
@ -0,0 +1,67 @@
|
||||||
|
name: Regression Testing
|
||||||
|
|
||||||
|
on:
|
||||||
|
pull_request:
|
||||||
|
branches:
|
||||||
|
- master
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
test:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v3
|
||||||
|
- name: Install things
|
||||||
|
run: |
|
||||||
|
sudo apt install -y wget2 librsvg2-dev librsvg2-bin ninja-build git gcc-multilib g++-multilib
|
||||||
|
sudo pip3 install meson
|
||||||
|
|
||||||
|
- name: Compile Thorvg PR
|
||||||
|
run: |
|
||||||
|
meson . build -Dtools=svg2png -Db_sanitize=address,undefined
|
||||||
|
sudo ninja -C build install
|
||||||
|
|
||||||
|
- name: Compile Thorvg Develop
|
||||||
|
run: |
|
||||||
|
git clone https://github.com/thorvg/thorvg.git thorvg_develop
|
||||||
|
cd thorvg_develop
|
||||||
|
meson . build -Dtools=svg2png -Db_sanitize=address,undefined
|
||||||
|
sudo ninja -C build install
|
||||||
|
cd ..
|
||||||
|
|
||||||
|
- name: Download SVG Regression finder
|
||||||
|
run: |
|
||||||
|
wget https://github.com/qarmin/SVG-regression-finder/releases/download/0.2.0/svg_tester
|
||||||
|
chmod +x ./svg_tester
|
||||||
|
|
||||||
|
- name: Prepare files to test
|
||||||
|
run: |
|
||||||
|
wget https://github.com/qarmin/SVG-regression-finder/releases/download/0.2.0/SVG1000.zip
|
||||||
|
unzip SVG1000.zip
|
||||||
|
mv test/regression/settings.toml settings.toml
|
||||||
|
mkdir BrokenSVG
|
||||||
|
|
||||||
|
- name: Run tests
|
||||||
|
run: |
|
||||||
|
./svg_tester 2>&1 | tee regression_logs.txt
|
||||||
|
|
||||||
|
- name: Store Broken Images
|
||||||
|
uses: actions/upload-artifact@v3
|
||||||
|
with:
|
||||||
|
name: broken-images
|
||||||
|
path: BrokenSVG
|
||||||
|
if-no-files-found: ignore
|
||||||
|
|
||||||
|
- name: Store Problematic Images
|
||||||
|
uses: actions/upload-artifact@v3
|
||||||
|
with:
|
||||||
|
name: problematic-images
|
||||||
|
path: ProblematicSVG
|
||||||
|
if-no-files-found: ignore
|
||||||
|
|
||||||
|
- name: Add comment to PR
|
||||||
|
run: |
|
||||||
|
export PATH=$PATH:~/.local/bin/
|
||||||
|
chmod +x "${GITHUB_WORKSPACE}/.github/workflows/regression_check.sh"
|
||||||
|
"${GITHUB_WORKSPACE}/.github/workflows/regression_check.sh"
|
||||||
|
env:
|
||||||
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
28
.github/workflows/regression_check.sh
vendored
Normal file
28
.github/workflows/regression_check.sh
vendored
Normal file
|
@ -0,0 +1,28 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
if [[ -z "$GITHUB_TOKEN" ]]; then
|
||||||
|
echo "The GITHUB_TOKEN is required."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ "$GITHUB_EVENT_NAME" == "pull_request" ]]; then
|
||||||
|
pwd
|
||||||
|
|
||||||
|
PAYLOAD_REGRESSION=`cat regression_logs.txt | grep "Regression results:"`
|
||||||
|
COMMENTS_URL=$(cat $GITHUB_EVENT_PATH | jq -r .pull_request.comments_url)
|
||||||
|
|
||||||
|
echo $COMMENTS_URL
|
||||||
|
echo $PAYLOAD_REGRESSION
|
||||||
|
|
||||||
|
if [[ $PAYLOAD_REGRESSION == *"Regression results:"* ]]; then
|
||||||
|
echo "Found broken files"
|
||||||
|
OUTPUT+=$'\nFound difference in generated example png files, look into CI artifacts for list of files that was changed.'
|
||||||
|
OUTPUT+="$PAYLOAD_REGRESSION"
|
||||||
|
OUTPUT+=$'\n'
|
||||||
|
fi
|
||||||
|
|
||||||
|
PAYLOAD=$(echo '{}' | jq --arg body "$OUTPUT" '.body = $body')
|
||||||
|
|
||||||
|
curl -s -S -H "Authorization: token $GITHUB_TOKEN" --header "Content-Type: application/vnd.github.VERSION.text+json" --data "$PAYLOAD" "$COMMENTS_URL"
|
||||||
|
fi
|
||||||
|
|
1
.gitignore
vendored
1
.gitignore
vendored
|
@ -4,3 +4,4 @@ builddir
|
||||||
*.swp
|
*.swp
|
||||||
doc
|
doc
|
||||||
capi_test.tvg
|
capi_test.tvg
|
||||||
|
.idea
|
27
test/regression/settings.toml
Normal file
27
test/regression/settings.toml
Normal file
|
@ -0,0 +1,27 @@
|
||||||
|
[general]
|
||||||
|
folder_with_files_to_check = "SVG1000"
|
||||||
|
problematic_files_path = "ProblematicSVG" # Where to store problematic files, in which conversion failed(e.g. due program crash)
|
||||||
|
output_folder = "BrokenSVG" # Place where to save files(Input and output that show differences)
|
||||||
|
timeout = 0 # TODO not working yet, use bigger value than 0 to enable timeout functionality, time in seconds
|
||||||
|
px_size_of_generated_file = 400
|
||||||
|
ignore_conversion_step = false # Ignore step with conversion files from svg to png, just compare files
|
||||||
|
ignore_similarity_checking_step = false # Useful to finding problems with generating files
|
||||||
|
ignore_thorvg_not_supported_items = true # Thorvg not supports files with text, filters
|
||||||
|
similarity = 10 # Bigger similiarity will show only broken files that are completelly different, looks that 0-100 is quite reasonable range
|
||||||
|
limit_files = 0 # Limit checked files, useful if you are just wanting to check how app works, 0 will remove limit of checked files
|
||||||
|
remove_files_from_output_folder_at_start = true # Useful if you run app with different settings and you don't want to remove files one by one
|
||||||
|
debug_show_always_output = false # Allows to find broken files
|
||||||
|
test_version = false # Tests `app --version`, this allows to earlier find but with problematic files instead in runtime, when checking files
|
||||||
|
return_error_when_finding_invalid_files = false # When finding invalid files(broken or problematic) app will close with status 1
|
||||||
|
|
||||||
|
[first_tool]
|
||||||
|
name = "thorvg_pr"
|
||||||
|
path = "./build/src/bin/svg2png/svg2png"
|
||||||
|
png_name_ending = "_thorvg_pr.png"
|
||||||
|
arguments = "{FILE} -r {SIZE}x{SIZE}"
|
||||||
|
|
||||||
|
[other_tool]
|
||||||
|
name = "thorvg_develop"
|
||||||
|
path = "./thorvg_develop/build/src/bin/svg2png/svg2png"
|
||||||
|
png_name_ending = "_thorvg_pr.png"
|
||||||
|
arguments = "{FILE} -r {SIZE}x{SIZE}"
|
Loading…
Add table
Reference in a new issue