name: make test on: [push, pull_request] env: CTEST_PARALLEL_LEVEL: "1" CMAKE_BUILD_PARALLEL_LEVEL: "4" permissions: contents: read jobs: ubuntu: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - name: SetupRust uses: ATiltedTree/setup-rust@v1 with: rust-version: beta - name: Install deps run: | sudo apt install gettext libncurses5-dev libpcre2-dev python3-pip tmux sudo pip3 install pexpect # Generate a locale that uses a comma as decimal separator. sudo locale-gen fr_FR.UTF-8 - name: cmake env: # Some warnings upgraded to errors to match Open Build Service platforms CXXFLAGS: "-Werror=address -Werror=return-type" run: | mkdir build && cd build cmake .. - name: make run: | make - name: make test run: | make test ubuntu-32bit-fetched-pcre2: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - name: SetupRust uses: ATiltedTree/setup-rust@v1 with: rust-version: beta targets: "i686-unknown-linux-gnu" # setup-rust wants this space-separated - name: Install deps run: | sudo apt update sudo apt install gettext lib32ncurses5-dev python3-pip g++-multilib tmux sudo pip3 install pexpect - name: cmake env: CXXFLAGS: "-m32 -Werror=address -Werror=return-type" CFLAGS: "-m32" run: | mkdir build && cd build cmake -DFISH_USE_SYSTEM_PCRE2=OFF -DRust_CARGO_TARGET=i686-unknown-linux-gnu .. - name: make run: | make VERBOSE=1 - name: make test run: | make test ubuntu-asan: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - name: SetupRust uses: ATiltedTree/setup-rust@v1 with: rust-version: beta - name: Install deps run: | sudo apt install gettext libncurses5-dev libpcre2-dev python3-pip tmux sudo pip3 install pexpect - name: cmake env: CC: clang CXX: clang++ CXXFLAGS: "-fno-omit-frame-pointer -fsanitize=undefined -fsanitize=address -DFISH_CI_SAN" run: | mkdir build && cd build cmake .. - name: make run: | make - name: make test env: FISH_CI_SAN: 1 ASAN_OPTIONS: check_initialization_order=1:detect_stack_use_after_return=1:detect_leaks=1 UBSAN_OPTIONS: print_stacktrace=1:report_error_type=1 # use_tls=0 is a workaround for LSAN crashing with "Tracer caught signal 11" (SIGSEGV), # which seems to be an issue with TLS support in newer glibc versions under virtualized # environments. Follow https://github.com/google/sanitizers/issues/1342 and # https://github.com/google/sanitizers/issues/1409 to track this issue. LSAN_OPTIONS: verbosity=0:log_threads=0:use_tls=0 run: | make test ubuntu-threadsan: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - name: SetupRust uses: ATiltedTree/setup-rust@v1 with: rust-version: beta - name: Install deps run: | sudo apt install gettext libncurses5-dev libpcre2-dev python3-pip tmux sudo pip3 install pexpect - name: cmake env: FISH_CI_SAN: 1 CC: clang CXX: clang++ CXXFLAGS: "-fsanitize=thread" run: | mkdir build && cd build cmake .. - name: make run: | make - name: make test run: | make test macos: runs-on: macos-latest steps: - uses: actions/checkout@v3 - name: SetupRust uses: ATiltedTree/setup-rust@v1 with: rust-version: beta - name: Install deps run: | sudo pip3 install pexpect brew install tmux - name: cmake run: | mkdir build && cd build cmake -DWITH_GETTEXT=NO .. - name: make run: | make - name: make test run: | make test