name: CI

on: [push, pull_request]

jobs:

  test-ubuntu-latest:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v3
    - name: make
      # Fail build if there are warnings
      # build with TLS just for compilation coverage
      run: make REDIS_CFLAGS='-Werror' BUILD_TLS=yes
    - name: test
      run: |
        sudo apt-get install tcl8.6 tclx
        ./runtest --verbose --tags -slow --dump-logs
    - name: module api test
      run: CFLAGS='-Werror' ./runtest-moduleapi --verbose --dump-logs
    - name: validate commands.def up to date
      run: |
        touch src/commands/ping.json
        make commands.def
        dirty=$(git diff)
        if [[ ! -z  $dirty ]]; then echo $dirty; exit 1; fi

  test-sanitizer-address:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - name: make
        # build with TLS module just for compilation coverage
        run: make SANITIZER=address REDIS_CFLAGS='-Werror -DDEBUG_ASSERTIONS' BUILD_TLS=module
      - name: testprep
        # Work around ASAN issue, see https://github.com/google/sanitizers/issues/1716
        run: |
          sudo apt-get install tcl8.6 tclx -y
          sudo sysctl vm.mmap_rnd_bits=28
      - name: test
        run: ./runtest --verbose --tags -slow --dump-logs
      - name: module api test
        run: CFLAGS='-Werror' ./runtest-moduleapi --verbose --dump-logs

  build-debian-old:
    runs-on: ubuntu-latest
    container: debian:buster
    steps:
    - uses: actions/checkout@v3
    - name: make
      run: |
        apt-get update && apt-get install -y build-essential
        make REDIS_CFLAGS='-Werror'

  build-macos-latest:
    runs-on: macos-latest
    steps:
    - uses: actions/checkout@v3
    - name: make
      run: make REDIS_CFLAGS='-Werror'

  build-32bit:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v3
    - name: make
      run: |
        sudo apt-get update && sudo apt-get install libc6-dev-i386
        make REDIS_CFLAGS='-Werror' 32bit

  build-libc-malloc:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v3
    - name: make
      run: make REDIS_CFLAGS='-Werror' MALLOC=libc

  build-centos7-jemalloc:
    runs-on: ubuntu-latest
    container: centos:7
    steps:
    - uses: actions/checkout@v3
    - name: make
      run: |
        yum -y install gcc make
        make REDIS_CFLAGS='-Werror'

