450 lines
16 KiB
YAML
450 lines
16 KiB
YAML
name: dev-short-tests
|
|
# Faster tests: mostly build tests, along with some other
|
|
# misc tests
|
|
|
|
concurrency:
|
|
group: fast-${{ github.ref }}
|
|
cancel-in-progress: true
|
|
|
|
on:
|
|
pull_request:
|
|
branches: [ dev, release, actionsTest ]
|
|
|
|
jobs:
|
|
linux-kernel:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
- name: linux kernel, library + build + test
|
|
run: make -C contrib/linux-kernel test CFLAGS="-Werror -Wunused-const-variable -Wunused-but-set-variable"
|
|
|
|
benchmarking:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
- name: make benchmarking
|
|
run: make benchmarking
|
|
|
|
check-32bit: # designed to catch https://github.com/facebook/zstd/issues/2428
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
- name: make check on 32-bit
|
|
run: |
|
|
sudo apt update
|
|
APT_PACKAGES="gcc-multilib" make apt-install
|
|
CFLAGS="-m32 -O1 -fstack-protector" make check V=1
|
|
|
|
check-x32:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
- name: make check on x32 ABI # https://en.wikipedia.org/wiki/X32_ABI
|
|
env:
|
|
CHECK_CONSTRAINED_MEM: true
|
|
run: |
|
|
sudo apt update
|
|
APT_PACKAGES="gcc-multilib" make apt-install
|
|
CFLAGS="-mx32 -O1 -fstack-protector" make check V=1
|
|
|
|
gcc-7-libzstd:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
- name: gcc-7 + libzstdmt compilation
|
|
run: |
|
|
sudo apt-get -qqq update
|
|
make gcc7install
|
|
CC=gcc-7 CFLAGS=-Werror make -j all
|
|
make clean
|
|
LDFLAGS=-Wl,--no-undefined make -C lib libzstd-mt
|
|
|
|
# candidate test (to check) : underlink test
|
|
# LDFLAGS=-Wl,--no-undefined : will make the linker fail if dll is underlinked
|
|
|
|
cmake-build-and-test-check:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
- name: cmake build and test check
|
|
run: |
|
|
FUZZERTEST=-T1mn ZSTREAM_TESTTIME=-T1mn make cmakebuild
|
|
cp -r ./ "../zstd source"
|
|
cd "../zstd source"
|
|
FUZZERTEST=-T1mn ZSTREAM_TESTTIME=-T1mn make cmakebuild
|
|
|
|
cpp-gnu90-c99-compatibility:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
- name: C++, gnu90 and c99 compatibility
|
|
run: |
|
|
make cxxtest
|
|
make clean
|
|
make gnu90build
|
|
make clean
|
|
make c99build
|
|
make clean
|
|
make travis-install # just ensures `make install` works
|
|
|
|
mingw-cross-compilation:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
- name: mingw cross-compilation
|
|
run: |
|
|
# sudo update-alternatives --set x86_64-w64-mingw32-g++ /usr/bin/x86_64-w64-mingw32-g++-posix; (doesn't work)
|
|
sudo apt-get -qqq update
|
|
sudo apt-get install gcc-mingw-w64
|
|
CC=x86_64-w64-mingw32-gcc CXX=x86_64-w64-mingw32-g++ CFLAGS="-Werror -O1" make zstd
|
|
|
|
armbuild:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
- name: ARM Build Test
|
|
run: |
|
|
sudo apt-get -qqq update
|
|
make arminstall
|
|
make armbuild
|
|
|
|
bourne-shell:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
- name: Bourne shell compatibility (shellcheck)
|
|
run: |
|
|
wget https://github.com/koalaman/shellcheck/releases/download/v0.7.1/shellcheck-v0.7.1.linux.x86_64.tar.xz
|
|
tar -xf shellcheck-v0.7.1.linux.x86_64.tar.xz
|
|
shellcheck-v0.7.1/shellcheck --shell=sh --severity=warning --exclude=SC2010 tests/playTests.sh
|
|
|
|
zlib-wrapper:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
- name: zlib wrapper test
|
|
run: |
|
|
sudo apt-get -qqq update
|
|
make valgrindinstall
|
|
make -C zlibWrapper test
|
|
make -C zlibWrapper valgrindTest
|
|
|
|
lz4-threadpool-libs:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
- name: LZ4, thread pool, and libs build testslib wrapper test
|
|
run: |
|
|
make lz4install
|
|
make -C tests test-lz4
|
|
make check < /dev/null | tee # mess with lz4 console detection
|
|
make clean
|
|
make -C tests test-pool
|
|
make clean
|
|
bash tests/libzstd_builds.sh
|
|
|
|
gcc-make-tests-32bit:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
- name: Make all, 32bit mode
|
|
run: |
|
|
sudo apt-get -qqq update
|
|
make libc6install
|
|
CFLAGS="-Werror -m32" make -j all32
|
|
|
|
gcc-8-make:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
- name: gcc-8 build
|
|
run: |
|
|
sudo apt-get -qqq update
|
|
make gcc8install
|
|
CC=gcc-8 CFLAGS="-Werror" make -j all
|
|
|
|
implicit-fall-through:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
- name: -Wimplicit-fallthrough build
|
|
run: |
|
|
make clean
|
|
CC=gcc MOREFLAGS="-Werror -Wimplicit-fallthrough=2 -O0" make -C lib -j libzstd.a ZSTD_LEGACY_SUPPORT=0
|
|
make clean
|
|
CC=clang MOREFLAGS="-Werror -Wimplicit-fallthrough -O0" make -C lib -j libzstd.a ZSTD_LEGACY_SUPPORT=0
|
|
|
|
cmake-visual-2019:
|
|
runs-on: windows-2019
|
|
strategy:
|
|
matrix:
|
|
include:
|
|
- generator: "Visual Studio 16 2019"
|
|
flags: "-A x64"
|
|
- generator: "Visual Studio 16 2019"
|
|
flags: "-A Win32"
|
|
- generator: "MinGW Makefiles"
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
- name: Add MSBuild to PATH
|
|
uses: microsoft/setup-msbuild@v1.0.2
|
|
- name: Build
|
|
working-directory: ${{env.GITHUB_WORKSPACE}}
|
|
run: |
|
|
cd build\cmake
|
|
mkdir build
|
|
cd build
|
|
cmake.exe -G "${{matrix.generator}}" ${{matrix.flags}} ..
|
|
cmake.exe --build .
|
|
|
|
visual-2019:
|
|
runs-on: windows-2019
|
|
strategy:
|
|
matrix:
|
|
platform: [x64, Win32]
|
|
configuration: [Debug, Release]
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
- name: Add MSBuild to PATH
|
|
uses: microsoft/setup-msbuild@v1.0.2
|
|
- name: Build
|
|
working-directory: ${{env.GITHUB_WORKSPACE}}
|
|
# See https://docs.microsoft.com/visualstudio/msbuild/msbuild-command-line-reference
|
|
run: >
|
|
msbuild "build\VS2010\zstd.sln" /m /verbosity:minimal /property:PlatformToolset=v142
|
|
/t:Clean,Build /p:Platform=${{matrix.platform}} /p:Configuration=${{matrix.configuration}}
|
|
|
|
# TODO: fix as part of https://github.com/facebook/zstd/issues/3064
|
|
# visual-2015:
|
|
# # only GH actions windows-2016 contains VS 2015
|
|
# runs-on: windows-2016
|
|
# strategy:
|
|
# matrix:
|
|
# platform: [x64, Win32]
|
|
# configuration: [Debug, Release]
|
|
# steps:
|
|
# - uses: actions/checkout@v2
|
|
# - name: Add MSBuild to PATH
|
|
# uses: microsoft/setup-msbuild@v1.0.2
|
|
# - name: Build
|
|
# working-directory: ${{env.GITHUB_WORKSPACE}}
|
|
# run: >
|
|
# msbuild "build\VS2010\zstd.sln" /m /verbosity:minimal /property:PlatformToolset=v140
|
|
# /t:Clean,Build /p:Platform=${{matrix.platform}} /p:Configuration=${{matrix.configuration}}
|
|
|
|
minimal-decompressor-macros:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
- name: minimal decompressor macros
|
|
run: |
|
|
make clean && make -j all ZSTD_LIB_MINIFY=1 MOREFLAGS="-Werror"
|
|
make clean && make check ZSTD_LIB_MINIFY=1 MOREFLAGS="-Werror"
|
|
make clean && make -j all MOREFLAGS="-Werror -DHUF_FORCE_DECOMPRESS_X1 -DZSTD_FORCE_DECOMPRESS_SEQUENCES_SHORT"
|
|
make clean && make check MOREFLAGS="-Werror -DHUF_FORCE_DECOMPRESS_X1 -DZSTD_FORCE_DECOMPRESS_SEQUENCES_SHORT"
|
|
make clean && make -j all MOREFLAGS="-Werror -DHUF_FORCE_DECOMPRESS_X2 -DZSTD_FORCE_DECOMPRESS_SEQUENCES_LONG"
|
|
make clean && make check MOREFLAGS="-Werror -DHUF_FORCE_DECOMPRESS_X2 -DZSTD_FORCE_DECOMPRESS_SEQUENCES_LONG"
|
|
make clean && make -j all MOREFLAGS="-Werror -DZSTD_NO_INLINE -DZSTD_STRIP_ERROR_STRINGS"
|
|
make clean && make check MOREFLAGS="-Werror -DZSTD_NO_INLINE -DZSTD_STRIP_ERROR_STRINGS"
|
|
|
|
dynamic-bmi2:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
- name: dynamic bmi2 tests
|
|
run: |
|
|
make clean && make -j check MOREFLAGS="-O0 -Werror -mbmi2"
|
|
make clean && make -j check MOREFLAGS="-O0 -Werror -DDYNAMIC_BMI2=1"
|
|
make clean && make -j check MOREFLAGS="-O0 -Werror -DDYNAMIC_BMI2=1 -mbmi2"
|
|
make clean && make -j check MOREFLAGS="-O0 -Werror -DDYNAMIC_BMI2=0"
|
|
make clean && make -j check MOREFLAGS="-O0 -Werror -DDYNAMIC_BMI2=0 -mbmi2"
|
|
|
|
test-variants:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
- name: make all variants & validate
|
|
run: |
|
|
make -j -C programs allVariants MOREFLAGS=-O0
|
|
./tests/test-variants.sh
|
|
|
|
|
|
qemu-consistency:
|
|
name: QEMU ${{ matrix.name }}
|
|
runs-on: ubuntu-latest
|
|
strategy:
|
|
fail-fast: false # 'false' means Don't stop matrix workflows even if some matrix failed.
|
|
matrix:
|
|
include: [
|
|
{ name: ARM, xcc_pkg: gcc-arm-linux-gnueabi, xcc: arm-linux-gnueabi-gcc, xemu_pkg: qemu-system-arm, xemu: qemu-arm-static },
|
|
{ name: ARM64, xcc_pkg: gcc-aarch64-linux-gnu, xcc: aarch64-linux-gnu-gcc, xemu_pkg: qemu-system-arm, xemu: qemu-aarch64-static },
|
|
{ name: PPC, xcc_pkg: gcc-powerpc-linux-gnu, xcc: powerpc-linux-gnu-gcc, xemu_pkg: qemu-system-ppc, xemu: qemu-ppc-static },
|
|
{ name: PPC64LE, xcc_pkg: gcc-powerpc64le-linux-gnu, xcc: powerpc64le-linux-gnu-gcc, xemu_pkg: qemu-system-ppc, xemu: qemu-ppc64le-static },
|
|
{ name: S390X, xcc_pkg: gcc-s390x-linux-gnu, xcc: s390x-linux-gnu-gcc, xemu_pkg: qemu-system-s390x, xemu: qemu-s390x-static },
|
|
{ name: MIPS, xcc_pkg: gcc-mips-linux-gnu, xcc: mips-linux-gnu-gcc, xemu_pkg: qemu-system-mips, xemu: qemu-mips-static },
|
|
{ name: M68K, xcc_pkg: gcc-m68k-linux-gnu, xcc: m68k-linux-gnu-gcc, xemu_pkg: qemu-system-m68k, xemu: qemu-m68k-static },
|
|
]
|
|
env: # Set environment variables
|
|
XCC: ${{ matrix.xcc }}
|
|
XEMU: ${{ matrix.xemu }}
|
|
steps:
|
|
- uses: actions/checkout@v2 # https://github.com/actions/checkout
|
|
- name: apt update & install
|
|
run: |
|
|
sudo apt-get update
|
|
sudo apt-get install gcc-multilib g++-multilib qemu-utils qemu-user-static
|
|
sudo apt-get install ${{ matrix.xcc_pkg }} ${{ matrix.xemu_pkg }}
|
|
- name: Environment info
|
|
run: |
|
|
echo && which $XCC
|
|
echo && $XCC --version
|
|
echo && $XCC -v # Show built-in specs
|
|
echo && which $XEMU
|
|
echo && $XEMU --version
|
|
- name: ARM
|
|
if: ${{ matrix.name == 'ARM' }}
|
|
run: |
|
|
LDFLAGS="-static" CC=$XCC QEMU_SYS=$XEMU make clean check
|
|
- name: ARM64
|
|
if: ${{ matrix.name == 'ARM64' }}
|
|
run: |
|
|
LDFLAGS="-static" CC=$XCC QEMU_SYS=$XEMU make clean check
|
|
- name: PPC
|
|
if: ${{ matrix.name == 'PPC' }}
|
|
run: |
|
|
LDFLAGS="-static" CC=$XCC QEMU_SYS=$XEMU make clean check
|
|
- name: PPC64LE
|
|
if: ${{ matrix.name == 'PPC64LE' }}
|
|
run: |
|
|
LDFLAGS="-static" CC=$XCC QEMU_SYS=$XEMU make clean check
|
|
- name: S390X
|
|
if: ${{ matrix.name == 'S390X' }}
|
|
run: |
|
|
LDFLAGS="-static" CC=$XCC QEMU_SYS=$XEMU make clean check
|
|
- name: MIPS
|
|
if: ${{ matrix.name == 'MIPS' }}
|
|
run: |
|
|
LDFLAGS="-static" CC=$XCC QEMU_SYS=$XEMU make clean check
|
|
- name: M68K
|
|
if: ${{ matrix.name == 'M68K' }}
|
|
run: |
|
|
LDFLAGS="-static" CC=$XCC QEMU_SYS=$XEMU make clean check
|
|
|
|
mingw-short-test:
|
|
runs-on: windows-2019
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
include: [
|
|
{ compiler: gcc, platform: x64, script: "CFLAGS=-Werror make -j allzstd DEBUGLEVEL=2"},
|
|
{ compiler: gcc, platform: x86, script: "CFLAGS=-Werror make -j allzstd"},
|
|
{ compiler: clang, platform: x64, script: "CFLAGS='--target=x86_64-w64-mingw32 -Werror -Wconversion -Wno-sign-conversion' make -j allzstd V=1"},
|
|
]
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
- name: Mingw short test
|
|
run: |
|
|
ECHO "Building ${{matrix.compiler}} ${{matrix.platform}}"
|
|
$env:PATH_ORIGINAL = $env:PATH
|
|
$env:PATH_MINGW32 = "C:\msys64\mingw32\bin"
|
|
$env:PATH_MINGW64 = "C:\msys64\mingw64\bin"
|
|
COPY C:\msys64\usr\bin\make.exe C:\msys64\mingw32\bin\make.exe
|
|
COPY C:\msys64\usr\bin\make.exe C:\msys64\mingw64\bin\make.exe
|
|
IF ("${{matrix.platform}}" -eq "x64")
|
|
{
|
|
$env:PATH = $env:PATH_MINGW64 + ";" + $env:PATH_ORIGINAL
|
|
}
|
|
ELSEIF ("${{matrix.platform}}" -eq "x86")
|
|
{
|
|
$env:PATH = $env:PATH_MINGW32 + ";" + $env:PATH_ORIGINAL
|
|
}
|
|
make -v
|
|
sh -c "${{matrix.compiler}} -v"
|
|
$env:CC = "${{matrix.compiler}}"
|
|
sh -c "${{matrix.script}}"
|
|
ECHO "Testing ${{matrix.compiler}} ${{matrix.platform}}"
|
|
make clean
|
|
make check
|
|
|
|
|
|
visual-runtime-tests:
|
|
runs-on: windows-2019
|
|
strategy:
|
|
matrix:
|
|
platform: [x64, Win32]
|
|
configuration: [Release]
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
- name: Add MSBuild to PATH
|
|
uses: microsoft/setup-msbuild@v1.0.2
|
|
- name: Build and run tests
|
|
working-directory: ${{env.GITHUB_WORKSPACE}}
|
|
env:
|
|
ZSTD_BIN: ./zstd.exe
|
|
DATAGEN_BIN: ./datagen.exe
|
|
# See https://docs.microsoft.com/visualstudio/msbuild/msbuild-command-line-reference
|
|
run: |
|
|
msbuild "build\VS2010\zstd.sln" /m /verbosity:minimal /property:PlatformToolset=v142 /t:Clean,Build /p:Platform=${{matrix.platform}} /p:Configuration=${{matrix.configuration}}
|
|
COPY build\VS2010\bin\${{matrix.platform}}_${{matrix.configuration}}\*.exe tests\
|
|
CD tests
|
|
sh -e playTests.sh
|
|
DIR
|
|
.\fuzzer.exe -T2m
|
|
|
|
intel-cet-compatibility:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
- name: Build Zstd
|
|
run: |
|
|
make -j zstd V=1
|
|
readelf -n zstd
|
|
- name: Get Intel SDE
|
|
run: |
|
|
curl -LO https://downloadmirror.intel.com/684899/sde-external-9.0.0-2021-11-07-lin.tar.xz
|
|
tar xJvf sde-external-9.0.0-2021-11-07-lin.tar.xz
|
|
- name: Configure Permissions
|
|
run: |
|
|
echo 0 | sudo tee /proc/sys/kernel/yama/ptrace_scope
|
|
- name: Run Under SDE
|
|
run: |
|
|
sde-external-9.0.0-2021-11-07-lin/sde -cet -cet-raise 0 -cet-endbr-exe -cet-stderr -cet-abort -- ./zstd -b3
|
|
|
|
|
|
|
|
# This test currently fails on Github Actions specifically.
|
|
# Possible reason : TTY emulation.
|
|
# Note that the same test works fine locally and on travisCI.
|
|
# This will have to be fixed before transferring the test to GA.
|
|
# versions-compatibility:
|
|
# runs-on: ubuntu-latest
|
|
# steps:
|
|
# - uses: actions/checkout@v2
|
|
# - name: Versions Compatibility Test
|
|
# run: |
|
|
# make -C tests versionsTest
|
|
|
|
|
|
# For reference : icc tests
|
|
# icc tests are currently failing on Github Actions, likely to issues during installation stage
|
|
# To be fixed later
|
|
#
|
|
# icc:
|
|
# name: icc-check
|
|
# runs-on: ubuntu-latest
|
|
# steps:
|
|
# - name: install icc
|
|
# run: |
|
|
# export DEBIAN_FRONTEND=noninteractive
|
|
# sudo apt-get -qqq update
|
|
# sudo apt-get install -y wget build-essential pkg-config cmake ca-certificates gnupg
|
|
# sudo wget https://apt.repos.intel.com/intel-gpg-keys/GPG-PUB-KEY-INTEL-SW-PRODUCTS-2023.PUB
|
|
# sudo apt-key add GPG-PUB-KEY-INTEL-SW-PRODUCTS-2023.PUB
|
|
# sudo add-apt-repository "deb https://apt.repos.intel.com/oneapi all main"
|
|
# sudo apt-get update
|
|
# sudo apt-get install -y intel-basekit intel-hpckit
|
|
# - uses: actions/checkout@v2
|
|
# - name: make check
|
|
# run: |
|
|
# make CC=/opt/intel/oneapi/compiler/latest/linux/bin/intel64/icc check
|