mirror of
https://github.com/uutils/coreutils
synced 2024-11-16 09:48:03 +00:00
commit
3da6be1829
2 changed files with 40 additions and 17 deletions
20
.github/workflows/GnuTests.yml
vendored
20
.github/workflows/GnuTests.yml
vendored
|
@ -160,34 +160,38 @@ jobs:
|
|||
- name: Compare test failures VS reference
|
||||
shell: bash
|
||||
run: |
|
||||
have_new_failures=""
|
||||
REF_LOG_FILE='${{ steps.vars.outputs.path_reference }}/test-logs/test-suite.log'
|
||||
REF_SUMMARY_FILE='${{ steps.vars.outputs.path_reference }}/test-summary/gnu-result.json'
|
||||
if test -f "${REF_LOG_FILE}"; then
|
||||
echo "Reference SHA1/ID (of '${REF_SUMMARY_FILE}'): $(sha1sum -- "${REF_SUMMARY_FILE}")"
|
||||
echo "Reference SHA1/ID: $(sha1sum -- "${REF_SUMMARY_FILE}")"
|
||||
REF_FAILING=$(sed -n "s/^FAIL: \([[:print:]]\+\).*/\1/p" "${REF_LOG_FILE}" | sort)
|
||||
NEW_FAILING=$(sed -n "s/^FAIL: \([[:print:]]\+\).*/\1/p" '${{ steps.vars.outputs.path_GNU_tests }}/test-suite.log' | sort)
|
||||
for LINE in $REF_FAILING
|
||||
for LINE in ${REF_FAILING}
|
||||
do
|
||||
if ! grep -Fxq $LINE<<<"$NEW_FAILING"; then
|
||||
echo "::warning ::Congrats! The gnu test $LINE is now passing!"
|
||||
if ! grep -Fxq ${LINE}<<<"${NEW_FAILING}"; then
|
||||
echo "::warning ::Congrats! The gnu test ${LINE} is now passing!"
|
||||
fi
|
||||
done
|
||||
for LINE in $NEW_FAILING
|
||||
for LINE in ${NEW_FAILING}
|
||||
do
|
||||
if ! grep -Fxq $LINE<<<"$REF_FAILING"
|
||||
if ! grep -Fxq ${LINE}<<<"${REF_FAILING}"
|
||||
then
|
||||
echo "::error ::GNU test failed: $LINE. $LINE is passing on '${{ steps.vars.outputs.repo_default_branch }}'. Maybe you have to rebase?"
|
||||
echo "::error ::GNU test failed: ${LINE}. ${LINE} is passing on '${{ steps.vars.outputs.repo_default_branch }}'. Maybe you have to rebase?"
|
||||
have_new_failures="true"
|
||||
fi
|
||||
done
|
||||
else
|
||||
echo "::warning ::Skipping test failure comparison; no prior reference test logs are available."
|
||||
fi
|
||||
if test -n "${have_new_failures}" ; then exit -1 ; fi
|
||||
- name: Compare test summary VS reference
|
||||
if: success() || failure() # run regardless of prior step success/failure
|
||||
shell: bash
|
||||
run: |
|
||||
REF_SUMMARY_FILE='${{ steps.vars.outputs.path_reference }}/test-summary/gnu-result.json'
|
||||
if test -f "${REF_SUMMARY_FILE}"; then
|
||||
echo "Reference SHA1/ID (of '${REF_SUMMARY_FILE}'): $(sha1sum -- "${REF_SUMMARY_FILE}")"
|
||||
echo "Reference SHA1/ID: $(sha1sum -- "${REF_SUMMARY_FILE}")"
|
||||
mv "${REF_SUMMARY_FILE}" main-gnu-result.json
|
||||
python uutils/util/compare_gnu_result.py
|
||||
else
|
||||
|
|
|
@ -70,19 +70,38 @@ sed -i 's|^"\$@|/usr/bin/timeout 600 "\$@|' build-aux/test-driver
|
|||
sed -i "s/^[[:blank:]]*PATH=.*/ PATH='${UU_BUILD_DIR//\//\\/}\$(PATH_SEPARATOR)'\"\$\$PATH\" \\\/" Makefile
|
||||
sed -i 's| tr | /usr/bin/tr |' tests/init.sh
|
||||
make -j "$(nproc)"
|
||||
# Generate the factor tests, so they can be fixed
|
||||
# Used to be 36. Reduced to 20 to decrease the log size
|
||||
for i in {00..20}; do
|
||||
make "tests/factor/t${i}.sh"
|
||||
done
|
||||
|
||||
# strip the long stuff
|
||||
for i in {21..36}; do
|
||||
first=00
|
||||
if test ${UU_MAKE_PROFILE} != "debug"; then
|
||||
# Generate the factor tests, so they can be fixed
|
||||
# * reduced to 20 to decrease log size (down from 36 expected by GNU)
|
||||
# * only for 'release', skipped for 'debug' as redundant and too time consuming (causing timeout errors)
|
||||
seq=$(
|
||||
i=${first}
|
||||
while test "$i" -le 20; do
|
||||
printf '%02d ' $i
|
||||
i=$(($i + 1))
|
||||
done
|
||||
)
|
||||
for i in ${seq}; do
|
||||
make "tests/factor/t${i}.sh"
|
||||
done
|
||||
sed -i -e 's|^seq |/usr/bin/seq |' -e 's|sha1sum |/usr/bin/sha1sum |' tests/factor/t*sh
|
||||
first=21
|
||||
fi
|
||||
# strip all (debug) or just the longer (release) factor tests from Makefile
|
||||
seq=$(
|
||||
i=${first}
|
||||
while test "$i" -le 36; do
|
||||
printf '%02d ' $i
|
||||
i=$(($i + 1))
|
||||
done
|
||||
)
|
||||
for i in ${seq}; do
|
||||
echo "strip t${i}.sh from Makefile"
|
||||
sed -i -e "s/\$(tf)\/t${i}.sh//g" Makefile
|
||||
done
|
||||
|
||||
grep -rl 'path_prepend_' tests/* | xargs sed -i 's| path_prepend_ ./src||'
|
||||
sed -i -e 's|^seq |/usr/bin/seq |' -e 's|sha1sum |/usr/bin/sha1sum |' tests/factor/t*sh
|
||||
|
||||
# Remove tests checking for --version & --help
|
||||
# Not really interesting for us and logs are too big
|
||||
|
|
Loading…
Reference in a new issue