xref: /curl/.github/workflows/torture.yml (revision 71cf0d1f)
1# Copyright (C) Daniel Stenberg, <daniel@haxx.se>, et al.
2#
3# SPDX-License-Identifier: curl
4
5name: Linux torture
6
7'on':
8  push:
9    branches:
10      - master
11      - '*/ci'
12    paths-ignore:
13      - '**/*.md'
14      - '**/CMakeLists.txt'
15      - '.circleci/**'
16      - 'appveyor.*'
17      - 'CMake/**'
18      - 'packages/**'
19      - 'plan9/**'
20      - 'projects/**'
21      - 'winbuild/**'
22  pull_request:
23    branches:
24      - master
25    paths-ignore:
26      - '**/*.md'
27      - '**/CMakeLists.txt'
28      - '.circleci/**'
29      - 'appveyor.*'
30      - 'CMake/**'
31      - 'packages/**'
32      - 'plan9/**'
33      - 'projects/**'
34      - 'winbuild/**'
35
36concurrency:
37  # Hardcoded workflow filename as workflow name above is just Linux again
38  group: torture-${{ github.event.pull_request.number || github.sha }}
39  cancel-in-progress: true
40
41permissions: {}
42
43jobs:
44  cmake:
45    name: '${{ matrix.build.name }}'
46    runs-on: 'ubuntu-24.04'
47    timeout-minutes: 30
48    strategy:
49      fail-fast: false
50      matrix:
51        build:
52          - name: 'OpenSSL torture !FTP'
53            install: libpsl-dev libbrotli-dev libzstd-dev zlib1g-dev libnghttp2-dev libssh2-1-dev libc-ares-dev
54            generate: -DCURL_USE_OPENSSL=ON -DENABLE_DEBUG=ON -DENABLE_ARES=ON -DENABLE_WEBSOCKETS=ON
55            tflags: -t --shallow=25 !FTP
56          - name: 'OpenSSL torture FTP'
57            install: libpsl-dev libbrotli-dev libzstd-dev zlib1g-dev libnghttp2-dev libssh2-1-dev libc-ares-dev
58            generate: -DCURL_USE_OPENSSL=ON -DENABLE_DEBUG=ON -DENABLE_ARES=ON
59            tflags: -t --shallow=20 FTP
60
61    steps:
62      - run: |
63          sudo apt-get install cmake ninja-build pkgconf stunnel4 ${{ matrix.build.install }}
64          python3 -m venv $HOME/venv
65          source $HOME/venv/bin/activate
66          python3 -m pip install impacket
67        name: 'install prereqs'
68
69      - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4
70
71      - run: |
72          cmake -G Ninja -DCMAKE_UNITY_BUILD=ON -DCURL_TEST_BUNDLES=ON -DCURL_WERROR=ON \
73            -DCURL_BROTLI=ON -DCURL_ZSTD=ON \
74            ${{ matrix.build.generate }}
75        name: 'cmake configure'
76
77      - run: cmake --build . --verbose
78        name: 'cmake build'
79
80      - run: ./src/curl -V
81        name: 'check curl -V output'
82
83      - run: cmake --build . --verbose --target testdeps
84        name: 'build tests'
85
86      - run: |
87          source $HOME/venv/bin/activate
88          cmake --build . --verbose --target test-torture
89        name: 'run tests'
90        env:
91          TFLAGS: '-j10 ${{ matrix.build.tflags }}'
92