Skip to content

Commit e3aba46

Browse files
authored
Add testing framework
AI written pytest based tests for Eggdrop. No changes to Eggdrop source code. uv is recommended but not required to run them.
1 parent ef1452a commit e3aba46

71 files changed

Lines changed: 4633 additions & 225 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/problem-matchers/gcc.json

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
{
2+
"problemMatcher": [
3+
{
4+
"owner": "gcc-problem-matcher",
5+
"pattern": [
6+
{
7+
"regexp": "^(.*?):(\\d+):(\\d*):?\\s+(?:fatal\\s+)?(warning|error):\\s+(.*)$",
8+
"file": 1,
9+
"line": 2,
10+
"column": 3,
11+
"severity": 4,
12+
"message": 5
13+
}
14+
]
15+
}
16+
]
17+
}
18+

.github/workflows/dependencies.yml

Lines changed: 141 additions & 136 deletions
Original file line numberDiff line numberDiff line change
@@ -2,171 +2,176 @@ name: Tcl/SSL Versions
22

33
on:
44
pull_request:
5-
branches: [ develop ]
5+
branches: [develop]
66
push:
7-
branches: [ develop ]
7+
branches: [develop]
88

99
jobs:
1010
tcl-versions:
1111
name: Tcl Versions
1212
strategy:
1313
matrix:
14-
tcl_version: [ '8.5.19', '8.6.14', '8.7a5', '9.0.1' ]
14+
tcl_version: ["8.5.19", "8.6.14", "8.7a5", "9.0.1"]
1515
continue-on-error: true
1616
runs-on: ubuntu-latest
1717
steps:
18-
- uses: actions/checkout@v4
19-
- name: install dependencies
20-
run: sudo apt-get update && sudo apt-get install openssl libssl-dev
21-
- uses: actions/cache@v4
22-
id: tcl-cache
23-
with:
24-
path: ~/tcl
25-
key: ${{ runner.os }}-tcl-${{ matrix.tcl_version }}
26-
- name: Build Tcl
27-
if: steps.tcl-cache.outputs.cache-hit != 'true'
28-
run: |
29-
wget http://prdownloads.sourceforge.net/tcl/tcl${{ matrix.tcl_version }}-src.tar.gz && \
30-
tar xzf tcl${{ matrix.tcl_version }}-src.tar.gz && \
31-
cd tcl${{ matrix.tcl_version }}/unix && \
32-
./configure --prefix=$HOME/tcl && \
33-
make -j4 && make install
34-
- uses: ammaraskar/gcc-problem-matcher@master
35-
- name: Build
36-
run: |
37-
./configure --with-tcl=$HOME/tcl/lib | tee configure.log
38-
LD_LIBRARY_PATH=$HOME/tcl/lib make config eggdrop
39-
fgrep -q "Tcl version: ${{ matrix.tcl_version }}" configure.log
18+
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
19+
- name: install dependencies
20+
run: sudo apt-get update && sudo apt-get install openssl libssl-dev
21+
- uses: actions/cache@27d5ce7f107fe9357f9df03efb73ab90386fccae # v5.0.5
22+
id: tcl-cache
23+
with:
24+
path: ~/tcl
25+
key: ${{ runner.os }}-tcl-${{ matrix.tcl_version }}
26+
- name: Build Tcl
27+
if: steps.tcl-cache.outputs.cache-hit != 'true'
28+
run: |
29+
wget http://prdownloads.sourceforge.net/tcl/tcl${{ matrix.tcl_version }}-src.tar.gz && \
30+
tar xzf tcl${{ matrix.tcl_version }}-src.tar.gz && \
31+
cd tcl${{ matrix.tcl_version }}/unix && \
32+
./configure --prefix=$HOME/tcl && \
33+
make -j4 && make install
34+
- name: GCC Problem Matcher
35+
run: echo "::add-matcher::.github/problem-matchers/gcc.json"
36+
- name: Build
37+
run: |
38+
./configure --with-tcl=$HOME/tcl/lib | tee configure.log
39+
LD_LIBRARY_PATH=$HOME/tcl/lib make config eggdrop
40+
fgrep -q "Tcl version: ${{ matrix.tcl_version }}" configure.log
4041
ssl-version-098:
4142
name: OpenSSL 0.9.8
4243
continue-on-error: true
4344
runs-on: ubuntu-latest
4445
steps:
45-
- uses: actions/checkout@v4
46-
with:
47-
path: 'eggdrop'
48-
- name: install dependencies
49-
run: sudo apt-get update && sudo apt-get install tcl tcl-dev
50-
- uses: actions/cache@v4
51-
id: ssl-cache
52-
with:
53-
path: ~/ssl
54-
key: ${{ runner.os }}-ssl-0.9.8zh
55-
- name: Build OpenSSL
56-
if: steps.ssl-cache.outputs.cache-hit != 'true'
57-
run: |
58-
wget https://www.openssl.org/source/old/0.9.x/openssl-0.9.8zh.tar.gz && \
59-
sha256sum --status --check <(echo f1d9f3ed1b85a82ecf80d0e2d389e1fda3fca9a4dba0bf07adbf231e1a5e2fd6 openssl-0.9.8zh.tar.gz) && \
60-
tar xzf openssl-0.9.8zh.tar.gz && \
61-
cd openssl-0.9.8zh && ./config --prefix=$HOME/ssl -fPIC && make -j4 && make install_sw
62-
- uses: ammaraskar/gcc-problem-matcher@master
63-
- name: Build
64-
run: |
65-
cd $GITHUB_WORKSPACE/eggdrop
66-
./configure --with-sslinc=$HOME/ssl/include --with-ssllib=$HOME/ssl/lib | tee configure.log
67-
LD_LIBRARY_PATH=$HOME/ssl/lib make config eggdrop
68-
fgrep -q "SSL/TLS Support: yes" configure.log
46+
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
47+
with:
48+
path: "eggdrop"
49+
- name: install dependencies
50+
run: sudo apt-get update && sudo apt-get install tcl tcl-dev
51+
- uses: actions/cache@27d5ce7f107fe9357f9df03efb73ab90386fccae # v5.0.5
52+
id: ssl-cache
53+
with:
54+
path: ~/ssl
55+
key: ${{ runner.os }}-ssl-0.9.8zh
56+
- name: Build OpenSSL
57+
if: steps.ssl-cache.outputs.cache-hit != 'true'
58+
run: |
59+
wget https://www.openssl.org/source/old/0.9.x/openssl-0.9.8zh.tar.gz && \
60+
sha256sum --status --check <(echo f1d9f3ed1b85a82ecf80d0e2d389e1fda3fca9a4dba0bf07adbf231e1a5e2fd6 openssl-0.9.8zh.tar.gz) && \
61+
tar xzf openssl-0.9.8zh.tar.gz && \
62+
cd openssl-0.9.8zh && ./config --prefix=$HOME/ssl -fPIC && make -j4 && make install_sw
63+
- name: GCC Problem Matcher
64+
run: echo "::add-matcher::eggdrop/.github/problem-matchers/gcc.json"
65+
- name: Build
66+
run: |
67+
cd $GITHUB_WORKSPACE/eggdrop
68+
./configure --with-sslinc=$HOME/ssl/include --with-ssllib=$HOME/ssl/lib | tee configure.log
69+
LD_LIBRARY_PATH=$HOME/ssl/lib make config eggdrop
70+
fgrep -q "SSL/TLS Support: yes" configure.log
6971
ssl-version-10:
7072
name: OpenSSL 1.0
7173
continue-on-error: true
7274
runs-on: ubuntu-latest
7375
steps:
74-
- uses: actions/checkout@v4
75-
with:
76-
path: 'eggdrop'
77-
- name: install dependencies
78-
run: sudo apt-get update && sudo apt-get install tcl tcl-dev
79-
- uses: actions/cache@v4
80-
id: ssl-cache
81-
with:
82-
path: ~/ssl
83-
key: ${{ runner.os }}-ssl-1.0.2u
84-
- name: Build OpenSSL
85-
if: steps.ssl-cache.outputs.cache-hit != 'true'
86-
run: |
87-
wget https://www.openssl.org/source/old/1.0.2/openssl-1.0.2u.tar.gz && \
88-
sha256sum --status --check <(echo ecd0c6ffb493dd06707d38b14bb4d8c2288bb7033735606569d8f90f89669d16 openssl-1.0.2u.tar.gz) && \
89-
tar xzf openssl-1.0.2u.tar.gz && \
90-
cd openssl-1.0.2u && ./config --prefix=$HOME/ssl -fPIC && make -j4 && make install_sw
91-
- uses: ammaraskar/gcc-problem-matcher@master
92-
- name: Build
93-
run: |
94-
cd $GITHUB_WORKSPACE/eggdrop
95-
./configure --with-sslinc=$HOME/ssl/include --with-ssllib=$HOME/ssl/lib | tee configure.log
96-
LD_LIBRARY_PATH=$HOME/ssl/lib make config eggdrop
97-
fgrep -q "SSL/TLS Support: yes" configure.log
76+
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
77+
with:
78+
path: "eggdrop"
79+
- name: install dependencies
80+
run: sudo apt-get update && sudo apt-get install tcl tcl-dev
81+
- uses: actions/cache@27d5ce7f107fe9357f9df03efb73ab90386fccae # v5.0.5
82+
id: ssl-cache
83+
with:
84+
path: ~/ssl
85+
key: ${{ runner.os }}-ssl-1.0.2u
86+
- name: Build OpenSSL
87+
if: steps.ssl-cache.outputs.cache-hit != 'true'
88+
run: |
89+
wget https://www.openssl.org/source/old/1.0.2/openssl-1.0.2u.tar.gz && \
90+
sha256sum --status --check <(echo ecd0c6ffb493dd06707d38b14bb4d8c2288bb7033735606569d8f90f89669d16 openssl-1.0.2u.tar.gz) && \
91+
tar xzf openssl-1.0.2u.tar.gz && \
92+
cd openssl-1.0.2u && ./config --prefix=$HOME/ssl -fPIC && make -j4 && make install_sw
93+
- name: GCC Problem Matcher
94+
run: echo "::add-matcher::eggdrop/.github/problem-matchers/gcc.json"
95+
- name: Build
96+
run: |
97+
cd $GITHUB_WORKSPACE/eggdrop
98+
./configure --with-sslinc=$HOME/ssl/include --with-ssllib=$HOME/ssl/lib | tee configure.log
99+
LD_LIBRARY_PATH=$HOME/ssl/lib make config eggdrop
100+
fgrep -q "SSL/TLS Support: yes" configure.log
98101
ssl-version-11:
99102
name: OpenSSL 1.1
100103
continue-on-error: true
101104
runs-on: ubuntu-latest
102105
steps:
103-
- uses: actions/cache@v4
104-
id: ssl-cache
105-
with:
106-
path: ~/ssl
107-
key: ${{ runner.os }}-ssl-1.1.1w
108-
- uses: actions/checkout@v4
109-
if: steps.ssl-cache.outputs.cache-hit != 'true'
110-
with:
111-
repository: openssl/openssl
112-
ref: 'OpenSSL_1_1_1w'
113-
path: 'openssl'
114-
- name: Build OpenSSL
115-
if: steps.ssl-cache.outputs.cache-hit != 'true'
116-
run: |
117-
cd $GITHUB_WORKSPACE/openssl && ./config --prefix=$HOME/ssl && make -j4 && make install_sw
118-
- name: install dependencies
119-
run: sudo apt-get update && sudo apt-get install tcl tcl-dev
120-
- uses: actions/checkout@v4
121-
with:
122-
path: 'eggdrop'
123-
- uses: ammaraskar/gcc-problem-matcher@master
124-
- name: Build
125-
run: |
126-
cd $GITHUB_WORKSPACE/eggdrop
127-
./configure --with-sslinc=$HOME/ssl/include --with-ssllib=$HOME/ssl/lib | tee configure.log
128-
LD_LIBRARY_PATH=$HOME/ssl/lib make config eggdrop
129-
fgrep -q "SSL/TLS Support: yes" configure.log
106+
- uses: actions/cache@27d5ce7f107fe9357f9df03efb73ab90386fccae # v5.0.5
107+
id: ssl-cache
108+
with:
109+
path: ~/ssl
110+
key: ${{ runner.os }}-ssl-1.1.1w
111+
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
112+
if: steps.ssl-cache.outputs.cache-hit != 'true'
113+
with:
114+
repository: openssl/openssl
115+
ref: "OpenSSL_1_1_1w"
116+
path: "openssl"
117+
- name: Build OpenSSL
118+
if: steps.ssl-cache.outputs.cache-hit != 'true'
119+
run: |
120+
cd $GITHUB_WORKSPACE/openssl && ./config --prefix=$HOME/ssl && make -j4 && make install_sw
121+
- name: install dependencies
122+
run: sudo apt-get update && sudo apt-get install tcl tcl-dev
123+
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
124+
with:
125+
path: "eggdrop"
126+
- name: GCC Problem Matcher
127+
run: echo "::add-matcher::eggdrop/.github/problem-matchers/gcc.json"
128+
- name: Build
129+
run: |
130+
cd $GITHUB_WORKSPACE/eggdrop
131+
./configure --with-sslinc=$HOME/ssl/include --with-ssllib=$HOME/ssl/lib | tee configure.log
132+
LD_LIBRARY_PATH=$HOME/ssl/lib make config eggdrop
133+
fgrep -q "SSL/TLS Support: yes" configure.log
130134
ssl-versions-3x:
131135
name: OpenSSL 3.x
132136
strategy:
133137
matrix:
134-
ssl_version: [ '3.0', '3.1', '3.2', '3.3', '3.4', '3.5' ]
138+
ssl_version: ["3.0", "3.1", "3.2", "3.3", "3.4", "3.5"]
135139
continue-on-error: true
136140
runs-on: ubuntu-latest
137141
steps:
138-
- uses: oprypin/find-latest-tag@v1
139-
with:
140-
repository: openssl/openssl
141-
releases-only: true
142-
prefix: 'openssl-'
143-
regex: "${{ matrix.ssl_version }}.[0-9]+"
144-
sort-tags: true
145-
id: openssl
146-
- uses: actions/cache@v4
147-
id: ssl-cache
148-
with:
149-
path: ~/ssl
150-
key: ${{ runner.os }}-ssl-${{ steps.openssl.outputs.tag }}
151-
- uses: actions/checkout@v4
152-
if: steps.ssl-cache.outputs.cache-hit != 'true'
153-
with:
154-
repository: openssl/openssl
155-
ref: ${{ steps.openssl.outputs.tag }}
156-
path: 'openssl'
157-
- name: Build OpenSSL
158-
if: steps.ssl-cache.outputs.cache-hit != 'true'
159-
run: |
160-
cd $GITHUB_WORKSPACE/openssl && ./config --prefix=$HOME/ssl && make -j4 && make install_sw
161-
- uses: actions/checkout@v4
162-
with:
163-
path: 'eggdrop'
164-
- name: install dependencies
165-
run: sudo apt-get update && sudo apt-get install tcl tcl-dev
166-
- uses: ammaraskar/gcc-problem-matcher@master
167-
- name: Build
168-
run: |
169-
cd $GITHUB_WORKSPACE/eggdrop
170-
./configure --with-sslinc=$HOME/ssl/include --with-ssllib=$HOME/ssl/lib64 | tee configure.log
171-
LD_LIBRARY_PATH=$HOME/ssl/lib64 make config eggdrop
172-
fgrep -q "SSL/TLS Support: yes" configure.log
142+
- uses: oprypin/find-latest-tag@dd2729fe78b0bb55523ae2b2a310c6773a652bd1 # v1.1.2
143+
with:
144+
repository: openssl/openssl
145+
releases-only: true
146+
prefix: "openssl-"
147+
regex: "${{ matrix.ssl_version }}.[0-9]+"
148+
sort-tags: true
149+
id: openssl
150+
- uses: actions/cache@27d5ce7f107fe9357f9df03efb73ab90386fccae # v5.0.5
151+
id: ssl-cache
152+
with:
153+
path: ~/ssl
154+
key: ${{ runner.os }}-ssl-${{ steps.openssl.outputs.tag }}
155+
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
156+
if: steps.ssl-cache.outputs.cache-hit != 'true'
157+
with:
158+
repository: openssl/openssl
159+
ref: ${{ steps.openssl.outputs.tag }}
160+
path: "openssl"
161+
- name: Build OpenSSL
162+
if: steps.ssl-cache.outputs.cache-hit != 'true'
163+
run: |
164+
cd $GITHUB_WORKSPACE/openssl && ./config --prefix=$HOME/ssl && make -j4 && make install_sw
165+
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
166+
with:
167+
path: "eggdrop"
168+
- name: install dependencies
169+
run: sudo apt-get update && sudo apt-get install tcl tcl-dev
170+
- name: GCC Problem Matcher
171+
run: echo "::add-matcher::eggdrop/.github/problem-matchers/gcc.json"
172+
- name: Build
173+
run: |
174+
cd $GITHUB_WORKSPACE/eggdrop
175+
./configure --with-sslinc=$HOME/ssl/include --with-ssllib=$HOME/ssl/lib64 | tee configure.log
176+
LD_LIBRARY_PATH=$HOME/ssl/lib64 make config eggdrop
177+
fgrep -q "SSL/TLS Support: yes" configure.log

.github/workflows/make.yml

Lines changed: 23 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -2,41 +2,43 @@ name: Eggdrop Compile
22

33
on:
44
pull_request:
5-
branches: [ develop ]
5+
branches: [develop]
66
push:
7-
branches: [ develop ]
7+
branches: [develop]
88

99
jobs:
1010
default-build:
1111
name: Compile Test
1212
strategy:
1313
matrix:
14-
cc: [ 'gcc', 'clang' ]
14+
cc: ["gcc", "clang"]
1515
runs-on: ubuntu-latest
1616
steps:
17-
- uses: actions/checkout@v4
18-
- name: install dependencies
19-
run: sudo apt-get update && sudo apt-get install clang tcl tcl-dev openssl libssl-dev
20-
- uses: ammaraskar/gcc-problem-matcher@master
21-
if: ${{ matrix.cc == 'gcc' }}
22-
- name: Build
23-
env:
24-
CC: ${{ matrix.cc }}
25-
run: ./configure && make config && make -j4 && make install
17+
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
18+
- name: install dependencies
19+
run: sudo apt-get update && sudo apt-get install clang tcl tcl-dev openssl libssl-dev
20+
- name: GCC Problem Matcher
21+
if: ${{ matrix.cc == 'gcc' }}
22+
run: echo "::add-matcher::.github/problem-matchers/gcc.json"
23+
- name: Build
24+
env:
25+
CC: ${{ matrix.cc }}
26+
run: ./configure && make config && make -j4 && make install
2627
feature-test:
2728
name: Features
2829
continue-on-error: true
2930
needs: default-build
3031
strategy:
3132
matrix:
32-
conf_tls: [ '', '--disable-tls' ]
33-
conf_ipv6: [ '', '--disable-ipv6' ]
34-
conf_tdns: [ '', '--disable-tdns' ]
33+
conf_tls: ["", "--disable-tls"]
34+
conf_ipv6: ["", "--disable-ipv6"]
35+
conf_tdns: ["", "--disable-tdns"]
3536
runs-on: ubuntu-latest
3637
steps:
37-
- uses: actions/checkout@v4
38-
- name: install dependencies
39-
run: sudo apt-get update && sudo apt-get install tcl tcl-dev openssl libssl-dev
40-
- uses: ammaraskar/gcc-problem-matcher@master
41-
- name: Build
42-
run: ./configure ${{ matrix.conf_tls }} ${{ matrix.conf_ipv6 }} ${{ matrix.conf_tdns }} && make config && make -j4
38+
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
39+
- name: install dependencies
40+
run: sudo apt-get update && sudo apt-get install tcl tcl-dev openssl libssl-dev
41+
- name: GCC Problem Matcher
42+
run: echo "::add-matcher::.github/problem-matchers/gcc.json"
43+
- name: Build
44+
run: ./configure ${{ matrix.conf_tls }} ${{ matrix.conf_ipv6 }} ${{ matrix.conf_tdns }} && make config && make -j4

0 commit comments

Comments
 (0)