3 Commits

35 changed files with 205 additions and 285 deletions

View File

@ -453,9 +453,7 @@ jobs:
run: |- run: |-
python -m pip install --upgrade pip python -m pip install --upgrade pip
pip install pytest pytest-xdist pytest-timeout -r requirements.txt pip install pytest pytest-xdist pytest-timeout -r requirements.txt
- env: - name: Test with pytest
IRCTEST_DEBUG_LOGS: ${{ runner.debug }}
name: Test with pytest
run: PYTEST_ARGS='--junit-xml pytest.xml --timeout 300' PATH=$HOME/.local/bin:$PATH make run: PYTEST_ARGS='--junit-xml pytest.xml --timeout 300' PATH=$HOME/.local/bin:$PATH make
bahamut bahamut
timeout-minutes: 30 timeout-minutes: 30
@ -494,9 +492,7 @@ jobs:
run: |- run: |-
python -m pip install --upgrade pip python -m pip install --upgrade pip
pip install pytest pytest-xdist pytest-timeout -r requirements.txt pip install pytest pytest-xdist pytest-timeout -r requirements.txt
- env: - name: Test with pytest
IRCTEST_DEBUG_LOGS: ${{ runner.debug }}
name: Test with pytest
run: PYTEST_ARGS='--junit-xml pytest.xml --timeout 300' PATH=$HOME/.local/bin:$PATH make run: PYTEST_ARGS='--junit-xml pytest.xml --timeout 300' PATH=$HOME/.local/bin:$PATH make
bahamut-anope bahamut-anope
timeout-minutes: 30 timeout-minutes: 30
@ -529,9 +525,7 @@ jobs:
run: |- run: |-
python -m pip install --upgrade pip python -m pip install --upgrade pip
pip install pytest pytest-xdist pytest-timeout -r requirements.txt pip install pytest pytest-xdist pytest-timeout -r requirements.txt
- env: - name: Test with pytest
IRCTEST_DEBUG_LOGS: ${{ runner.debug }}
name: Test with pytest
run: PYTEST_ARGS='--junit-xml pytest.xml --timeout 300' PATH=$HOME/.local/bin:$PATH make run: PYTEST_ARGS='--junit-xml pytest.xml --timeout 300' PATH=$HOME/.local/bin:$PATH make
bahamut-atheme bahamut-atheme
timeout-minutes: 30 timeout-minutes: 30
@ -558,7 +552,7 @@ jobs:
repository: ergochat/ergo repository: ergochat/ergo
- uses: actions/setup-go@v3 - uses: actions/setup-go@v3
with: with:
go-version: ^1.23.0 go-version: ^1.22.0
- run: go version - run: go version
- name: Build Ergo - name: Build Ergo
run: | run: |
@ -571,9 +565,7 @@ jobs:
run: |- run: |-
python -m pip install --upgrade pip python -m pip install --upgrade pip
pip install pytest pytest-xdist pytest-timeout -r requirements.txt pip install pytest pytest-xdist pytest-timeout -r requirements.txt
- env: - name: Test with pytest
IRCTEST_DEBUG_LOGS: ${{ runner.debug }}
name: Test with pytest
run: PYTEST_ARGS='--junit-xml pytest.xml --timeout 300' PATH=$HOME/.local/bin:$PATH PATH=~/go/sbin:~/go/bin:~/go:$PATH run: PYTEST_ARGS='--junit-xml pytest.xml --timeout 300' PATH=$HOME/.local/bin:$PATH PATH=~/go/sbin:~/go/bin:~/go:$PATH
make ergo make ergo
timeout-minutes: 30 timeout-minutes: 30
@ -612,9 +604,7 @@ jobs:
run: |- run: |-
python -m pip install --upgrade pip python -m pip install --upgrade pip
pip install pytest pytest-xdist pytest-timeout -r requirements.txt pip install pytest pytest-xdist pytest-timeout -r requirements.txt
- env: - name: Test with pytest
IRCTEST_DEBUG_LOGS: ${{ runner.debug }}
name: Test with pytest
run: PYTEST_ARGS='--junit-xml pytest.xml --timeout 300' PATH=$HOME/.local/bin:$PATH make run: PYTEST_ARGS='--junit-xml pytest.xml --timeout 300' PATH=$HOME/.local/bin:$PATH make
hybrid hybrid
timeout-minutes: 30 timeout-minutes: 30
@ -647,9 +637,7 @@ jobs:
run: |- run: |-
python -m pip install --upgrade pip python -m pip install --upgrade pip
pip install pytest pytest-xdist pytest-timeout -r requirements.txt pip install pytest pytest-xdist pytest-timeout -r requirements.txt
- env: - name: Test with pytest
IRCTEST_DEBUG_LOGS: ${{ runner.debug }}
name: Test with pytest
run: PYTEST_ARGS='--junit-xml pytest.xml --timeout 300' PATH=$HOME/.local/bin:$PATH PATH=~/.local/inspircd/sbin:~/.local/inspircd/bin:~/.local/inspircd:$PATH run: PYTEST_ARGS='--junit-xml pytest.xml --timeout 300' PATH=$HOME/.local/bin:$PATH PATH=~/.local/inspircd/sbin:~/.local/inspircd/bin:~/.local/inspircd:$PATH
make inspircd make inspircd
timeout-minutes: 30 timeout-minutes: 30
@ -688,9 +676,7 @@ jobs:
run: |- run: |-
python -m pip install --upgrade pip python -m pip install --upgrade pip
pip install pytest pytest-xdist pytest-timeout -r requirements.txt pip install pytest pytest-xdist pytest-timeout -r requirements.txt
- env: - name: Test with pytest
IRCTEST_DEBUG_LOGS: ${{ runner.debug }}
name: Test with pytest
run: PYTEST_ARGS='--junit-xml pytest.xml --timeout 300' PATH=$HOME/.local/bin:$PATH PATH=~/.local/inspircd/sbin:~/.local/inspircd/bin:~/.local/inspircd:$PATH make run: PYTEST_ARGS='--junit-xml pytest.xml --timeout 300' PATH=$HOME/.local/bin:$PATH PATH=~/.local/inspircd/sbin:~/.local/inspircd/bin:~/.local/inspircd:$PATH make
inspircd-anope inspircd-anope
timeout-minutes: 30 timeout-minutes: 30
@ -729,9 +715,7 @@ jobs:
run: |- run: |-
python -m pip install --upgrade pip python -m pip install --upgrade pip
pip install pytest pytest-xdist pytest-timeout -r requirements.txt pip install pytest pytest-xdist pytest-timeout -r requirements.txt
- env: - name: Test with pytest
IRCTEST_DEBUG_LOGS: ${{ runner.debug }}
name: Test with pytest
run: PYTEST_ARGS='--junit-xml pytest.xml --timeout 300' PATH=$HOME/.local/bin:$PATH make run: PYTEST_ARGS='--junit-xml pytest.xml --timeout 300' PATH=$HOME/.local/bin:$PATH make
ircu2 ircu2
timeout-minutes: 30 timeout-minutes: 30
@ -759,9 +743,7 @@ jobs:
run: |- run: |-
python -m pip install --upgrade pip python -m pip install --upgrade pip
pip install pytest pytest-xdist pytest-timeout -r requirements.txt pip install pytest pytest-xdist pytest-timeout -r requirements.txt
- env: - name: Test with pytest
IRCTEST_DEBUG_LOGS: ${{ runner.debug }}
name: Test with pytest
run: PYTEST_ARGS='--junit-xml pytest.xml --timeout 300' PATH=$HOME/.local/bin:$PATH make run: PYTEST_ARGS='--junit-xml pytest.xml --timeout 300' PATH=$HOME/.local/bin:$PATH make
limnoria limnoria
timeout-minutes: 30 timeout-minutes: 30
@ -799,9 +781,7 @@ jobs:
run: |- run: |-
python -m pip install --upgrade pip python -m pip install --upgrade pip
pip install pytest pytest-xdist pytest-timeout -r requirements.txt pip install pytest pytest-xdist pytest-timeout -r requirements.txt
- env: - name: Test with pytest
IRCTEST_DEBUG_LOGS: ${{ runner.debug }}
name: Test with pytest
run: PYTEST_ARGS='--junit-xml pytest.xml --timeout 300' PATH=$HOME/.local/bin:$PATH make run: PYTEST_ARGS='--junit-xml pytest.xml --timeout 300' PATH=$HOME/.local/bin:$PATH make
nefarious nefarious
timeout-minutes: 30 timeout-minutes: 30
@ -834,9 +814,7 @@ jobs:
run: |- run: |-
python -m pip install --upgrade pip python -m pip install --upgrade pip
pip install pytest pytest-xdist pytest-timeout -r requirements.txt pip install pytest pytest-xdist pytest-timeout -r requirements.txt
- env: - name: Test with pytest
IRCTEST_DEBUG_LOGS: ${{ runner.debug }}
name: Test with pytest
run: PYTEST_ARGS='--junit-xml pytest.xml --timeout 300' PATH=$HOME/.local/bin:$PATH PATH=~/.local//sbin:~/.local//bin:~/.local/:$PATH run: PYTEST_ARGS='--junit-xml pytest.xml --timeout 300' PATH=$HOME/.local/bin:$PATH PATH=~/.local//sbin:~/.local//bin:~/.local/:$PATH
make ngircd make ngircd
timeout-minutes: 30 timeout-minutes: 30
@ -875,9 +853,7 @@ jobs:
run: |- run: |-
python -m pip install --upgrade pip python -m pip install --upgrade pip
pip install pytest pytest-xdist pytest-timeout -r requirements.txt pip install pytest pytest-xdist pytest-timeout -r requirements.txt
- env: - name: Test with pytest
IRCTEST_DEBUG_LOGS: ${{ runner.debug }}
name: Test with pytest
run: PYTEST_ARGS='--junit-xml pytest.xml --timeout 300' PATH=$HOME/.local/bin:$PATH PATH=~/.local//sbin:~/.local//bin:~/.local/:$PATH make run: PYTEST_ARGS='--junit-xml pytest.xml --timeout 300' PATH=$HOME/.local/bin:$PATH PATH=~/.local//sbin:~/.local//bin:~/.local/:$PATH make
ngircd-anope ngircd-anope
timeout-minutes: 30 timeout-minutes: 30
@ -910,9 +886,7 @@ jobs:
run: |- run: |-
python -m pip install --upgrade pip python -m pip install --upgrade pip
pip install pytest pytest-xdist pytest-timeout -r requirements.txt pip install pytest pytest-xdist pytest-timeout -r requirements.txt
- env: - name: Test with pytest
IRCTEST_DEBUG_LOGS: ${{ runner.debug }}
name: Test with pytest
run: PYTEST_ARGS='--junit-xml pytest.xml --timeout 300' PATH=$HOME/.local/bin:$PATH PATH=~/.local//sbin:~/.local//bin:~/.local/:$PATH run: PYTEST_ARGS='--junit-xml pytest.xml --timeout 300' PATH=$HOME/.local/bin:$PATH PATH=~/.local//sbin:~/.local//bin:~/.local/:$PATH
make ngircd-atheme make ngircd-atheme
timeout-minutes: 30 timeout-minutes: 30
@ -951,9 +925,7 @@ jobs:
run: |- run: |-
python -m pip install --upgrade pip python -m pip install --upgrade pip
pip install pytest pytest-xdist pytest-timeout -r requirements.txt pip install pytest pytest-xdist pytest-timeout -r requirements.txt
- env: - name: Test with pytest
IRCTEST_DEBUG_LOGS: ${{ runner.debug }}
name: Test with pytest
run: PYTEST_ARGS='--junit-xml pytest.xml --timeout 300' PATH=$HOME/.local/bin:$PATH make run: PYTEST_ARGS='--junit-xml pytest.xml --timeout 300' PATH=$HOME/.local/bin:$PATH make
plexus4 plexus4
timeout-minutes: 30 timeout-minutes: 30
@ -1000,9 +972,7 @@ jobs:
run: |- run: |-
python -m pip install --upgrade pip python -m pip install --upgrade pip
pip install pytest pytest-xdist pytest-timeout -r requirements.txt pip install pytest pytest-xdist pytest-timeout -r requirements.txt
- env: - name: Test with pytest
IRCTEST_DEBUG_LOGS: ${{ runner.debug }}
name: Test with pytest
run: PYTEST_ARGS='--junit-xml pytest.xml --timeout 300' PATH=$HOME/.local/bin:$PATH PATH=$GITHUB_WORKSPACE/sable/target/debug/sbin:$GITHUB_WORKSPACE/sable/target/debug/bin:$GITHUB_WORKSPACE/sable/target/debug:$PATH run: PYTEST_ARGS='--junit-xml pytest.xml --timeout 300' PATH=$HOME/.local/bin:$PATH PATH=$GITHUB_WORKSPACE/sable/target/debug/sbin:$GITHUB_WORKSPACE/sable/target/debug/bin:$GITHUB_WORKSPACE/sable/target/debug:$PATH
make sable make sable
timeout-minutes: 30 timeout-minutes: 30
@ -1035,9 +1005,7 @@ jobs:
run: |- run: |-
python -m pip install --upgrade pip python -m pip install --upgrade pip
pip install pytest pytest-xdist pytest-timeout -r requirements.txt pip install pytest pytest-xdist pytest-timeout -r requirements.txt
- env: - name: Test with pytest
IRCTEST_DEBUG_LOGS: ${{ runner.debug }}
name: Test with pytest
run: PYTEST_ARGS='--junit-xml pytest.xml --timeout 300' PATH=$HOME/.local/bin:$PATH make run: PYTEST_ARGS='--junit-xml pytest.xml --timeout 300' PATH=$HOME/.local/bin:$PATH make
solanum solanum
timeout-minutes: 30 timeout-minutes: 30
@ -1064,9 +1032,7 @@ jobs:
run: |- run: |-
python -m pip install --upgrade pip python -m pip install --upgrade pip
pip install pytest pytest-xdist pytest-timeout -r requirements.txt pip install pytest pytest-xdist pytest-timeout -r requirements.txt
- env: - name: Test with pytest
IRCTEST_DEBUG_LOGS: ${{ runner.debug }}
name: Test with pytest
run: PYTEST_ARGS='--junit-xml pytest.xml --timeout 300' PATH=$HOME/.local/bin:$PATH make run: PYTEST_ARGS='--junit-xml pytest.xml --timeout 300' PATH=$HOME/.local/bin:$PATH make
sopel sopel
timeout-minutes: 30 timeout-minutes: 30
@ -1104,9 +1070,7 @@ jobs:
run: |- run: |-
python -m pip install --upgrade pip python -m pip install --upgrade pip
pip install pytest pytest-xdist pytest-timeout -r requirements.txt pip install pytest pytest-xdist pytest-timeout -r requirements.txt
- env: - name: Test with pytest
IRCTEST_DEBUG_LOGS: ${{ runner.debug }}
name: Test with pytest
run: PYTEST_ARGS='--junit-xml pytest.xml --timeout 300' PATH=$HOME/.local/bin:$PATH make run: PYTEST_ARGS='--junit-xml pytest.xml --timeout 300' PATH=$HOME/.local/bin:$PATH make
thelounge thelounge
timeout-minutes: 30 timeout-minutes: 30
@ -1139,9 +1103,7 @@ jobs:
run: |- run: |-
python -m pip install --upgrade pip python -m pip install --upgrade pip
pip install pytest pytest-xdist pytest-timeout -r requirements.txt pip install pytest pytest-xdist pytest-timeout -r requirements.txt
- env: - name: Test with pytest
IRCTEST_DEBUG_LOGS: ${{ runner.debug }}
name: Test with pytest
run: PYTEST_ARGS='--junit-xml pytest.xml --timeout 300' PATH=$HOME/.local/bin:$PATH PATH=~/.local/unrealircd/sbin:~/.local/unrealircd/bin:~/.local/unrealircd:$PATH run: PYTEST_ARGS='--junit-xml pytest.xml --timeout 300' PATH=$HOME/.local/bin:$PATH PATH=~/.local/unrealircd/sbin:~/.local/unrealircd/bin:~/.local/unrealircd:$PATH
make unrealircd make unrealircd
timeout-minutes: 30 timeout-minutes: 30
@ -1174,9 +1136,7 @@ jobs:
run: |- run: |-
python -m pip install --upgrade pip python -m pip install --upgrade pip
pip install pytest pytest-xdist pytest-timeout -r requirements.txt pip install pytest pytest-xdist pytest-timeout -r requirements.txt
- env: - name: Test with pytest
IRCTEST_DEBUG_LOGS: ${{ runner.debug }}
name: Test with pytest
run: PYTEST_ARGS='--junit-xml pytest.xml --timeout 300' PATH=$HOME/.local/bin:$PATH PATH=~/.local/unrealircd/sbin:~/.local/unrealircd/bin:~/.local/unrealircd:$PATH run: PYTEST_ARGS='--junit-xml pytest.xml --timeout 300' PATH=$HOME/.local/bin:$PATH PATH=~/.local/unrealircd/sbin:~/.local/unrealircd/bin:~/.local/unrealircd:$PATH
make unrealircd-5 make unrealircd-5
timeout-minutes: 30 timeout-minutes: 30
@ -1215,9 +1175,7 @@ jobs:
run: |- run: |-
python -m pip install --upgrade pip python -m pip install --upgrade pip
pip install pytest pytest-xdist pytest-timeout -r requirements.txt pip install pytest pytest-xdist pytest-timeout -r requirements.txt
- env: - name: Test with pytest
IRCTEST_DEBUG_LOGS: ${{ runner.debug }}
name: Test with pytest
run: PYTEST_ARGS='--junit-xml pytest.xml --timeout 300' PATH=$HOME/.local/bin:$PATH PATH=~/.local/unrealircd/sbin:~/.local/unrealircd/bin:~/.local/unrealircd:$PATH make run: PYTEST_ARGS='--junit-xml pytest.xml --timeout 300' PATH=$HOME/.local/bin:$PATH PATH=~/.local/unrealircd/sbin:~/.local/unrealircd/bin:~/.local/unrealircd:$PATH make
unrealircd-anope unrealircd-anope
timeout-minutes: 30 timeout-minutes: 30
@ -1250,9 +1208,7 @@ jobs:
run: |- run: |-
python -m pip install --upgrade pip python -m pip install --upgrade pip
pip install pytest pytest-xdist pytest-timeout -r requirements.txt pip install pytest pytest-xdist pytest-timeout -r requirements.txt
- env: - name: Test with pytest
IRCTEST_DEBUG_LOGS: ${{ runner.debug }}
name: Test with pytest
run: PYTEST_ARGS='--junit-xml pytest.xml --timeout 300' PATH=$HOME/.local/bin:$PATH PATH=~/.local/unrealircd/sbin:~/.local/unrealircd/bin:~/.local/unrealircd:$PATH run: PYTEST_ARGS='--junit-xml pytest.xml --timeout 300' PATH=$HOME/.local/bin:$PATH PATH=~/.local/unrealircd/sbin:~/.local/unrealircd/bin:~/.local/unrealircd:$PATH
make unrealircd-atheme make unrealircd-atheme
timeout-minutes: 30 timeout-minutes: 30
@ -1296,9 +1252,7 @@ jobs:
run: |- run: |-
python -m pip install --upgrade pip python -m pip install --upgrade pip
pip install pytest pytest-xdist pytest-timeout -r requirements.txt pip install pytest pytest-xdist pytest-timeout -r requirements.txt
- env: - name: Test with pytest
IRCTEST_DEBUG_LOGS: ${{ runner.debug }}
name: Test with pytest
run: PYTEST_ARGS='--junit-xml pytest.xml --timeout 300' PATH=$HOME/.local/bin:$PATH PATH=~/.local/unrealircd/sbin:~/.local/unrealircd/bin:~/.local/unrealircd:$PATH run: PYTEST_ARGS='--junit-xml pytest.xml --timeout 300' PATH=$HOME/.local/bin:$PATH PATH=~/.local/unrealircd/sbin:~/.local/unrealircd/bin:~/.local/unrealircd:$PATH
IRCTEST_DLK_PATH="${{ github.workspace }}/Dlk-Services" IRCTEST_WP_CLI_PATH="${{ IRCTEST_DLK_PATH="${{ github.workspace }}/Dlk-Services" IRCTEST_WP_CLI_PATH="${{
github.workspace }}/wp-cli.phar" IRCTEST_WP_ZIP_PATH="${{ github.workspace github.workspace }}/wp-cli.phar" IRCTEST_WP_ZIP_PATH="${{ github.workspace

View File

@ -126,9 +126,7 @@ jobs:
run: |- run: |-
python -m pip install --upgrade pip python -m pip install --upgrade pip
pip install pytest pytest-xdist pytest-timeout -r requirements.txt pip install pytest pytest-xdist pytest-timeout -r requirements.txt
- env: - name: Test with pytest
IRCTEST_DEBUG_LOGS: ${{ runner.debug }}
name: Test with pytest
run: PYTEST_ARGS='--junit-xml pytest.xml --timeout 300' PATH=$HOME/.local/bin:$PATH PATH=~/.local/inspircd/sbin:~/.local/inspircd/bin:~/.local/inspircd:$PATH run: PYTEST_ARGS='--junit-xml pytest.xml --timeout 300' PATH=$HOME/.local/bin:$PATH PATH=~/.local/inspircd/sbin:~/.local/inspircd/bin:~/.local/inspircd:$PATH
make inspircd make inspircd
timeout-minutes: 30 timeout-minutes: 30
@ -167,9 +165,7 @@ jobs:
run: |- run: |-
python -m pip install --upgrade pip python -m pip install --upgrade pip
pip install pytest pytest-xdist pytest-timeout -r requirements.txt pip install pytest pytest-xdist pytest-timeout -r requirements.txt
- env: - name: Test with pytest
IRCTEST_DEBUG_LOGS: ${{ runner.debug }}
name: Test with pytest
run: PYTEST_ARGS='--junit-xml pytest.xml --timeout 300' PATH=$HOME/.local/bin:$PATH PATH=~/.local/inspircd/sbin:~/.local/inspircd/bin:~/.local/inspircd:$PATH make run: PYTEST_ARGS='--junit-xml pytest.xml --timeout 300' PATH=$HOME/.local/bin:$PATH PATH=~/.local/inspircd/sbin:~/.local/inspircd/bin:~/.local/inspircd:$PATH make
inspircd-anope inspircd-anope
timeout-minutes: 30 timeout-minutes: 30
@ -202,9 +198,7 @@ jobs:
run: |- run: |-
python -m pip install --upgrade pip python -m pip install --upgrade pip
pip install pytest pytest-xdist pytest-timeout -r requirements.txt pip install pytest pytest-xdist pytest-timeout -r requirements.txt
- env: - name: Test with pytest
IRCTEST_DEBUG_LOGS: ${{ runner.debug }}
name: Test with pytest
run: PYTEST_ARGS='--junit-xml pytest.xml --timeout 300' PATH=$HOME/.local/bin:$PATH PATH=~/.local/inspircd/sbin:~/.local/inspircd/bin:~/.local/inspircd:$PATH run: PYTEST_ARGS='--junit-xml pytest.xml --timeout 300' PATH=$HOME/.local/bin:$PATH PATH=~/.local/inspircd/sbin:~/.local/inspircd/bin:~/.local/inspircd:$PATH
make inspircd-atheme make inspircd-atheme
timeout-minutes: 30 timeout-minutes: 30

View File

@ -65,7 +65,7 @@ jobs:
uses: actions/checkout@v4 uses: actions/checkout@v4
with: with:
path: Bahamut path: Bahamut
ref: v2.2.4 ref: v2.2.1
repository: DALnet/Bahamut repository: DALnet/Bahamut
- name: Build Bahamut - name: Build Bahamut
run: | run: |
@ -228,7 +228,7 @@ jobs:
uses: actions/checkout@v4 uses: actions/checkout@v4
with: with:
path: ngircd path: ngircd
ref: acf8409c60ccc96beed0a1f990c4f9374823c0ce ref: 3e3f6cbeceefd9357b53b27c2386bb39306ab353
repository: ngircd/ngircd repository: ngircd/ngircd
- name: Build ngircd - name: Build ngircd
run: | run: |
@ -351,7 +351,7 @@ jobs:
uses: actions/checkout@v4 uses: actions/checkout@v4
with: with:
path: unrealircd path: unrealircd
ref: a68625454078641ce984eeb197f7e02b1857ab6c ref: da3c1c654481a33035b9c703957e1c25d0158259
repository: unrealircd/unrealircd repository: unrealircd/unrealircd
- name: Build UnrealIRCd 6 - name: Build UnrealIRCd 6
run: | run: |
@ -496,9 +496,7 @@ jobs:
run: |- run: |-
python -m pip install --upgrade pip python -m pip install --upgrade pip
pip install pytest pytest-xdist pytest-timeout -r requirements.txt pip install pytest pytest-xdist pytest-timeout -r requirements.txt
- env: - name: Test with pytest
IRCTEST_DEBUG_LOGS: ${{ runner.debug }}
name: Test with pytest
run: PYTEST_ARGS='--junit-xml pytest.xml --timeout 300' PATH=$HOME/.local/bin:$PATH make run: PYTEST_ARGS='--junit-xml pytest.xml --timeout 300' PATH=$HOME/.local/bin:$PATH make
bahamut bahamut
timeout-minutes: 30 timeout-minutes: 30
@ -537,9 +535,7 @@ jobs:
run: |- run: |-
python -m pip install --upgrade pip python -m pip install --upgrade pip
pip install pytest pytest-xdist pytest-timeout -r requirements.txt pip install pytest pytest-xdist pytest-timeout -r requirements.txt
- env: - name: Test with pytest
IRCTEST_DEBUG_LOGS: ${{ runner.debug }}
name: Test with pytest
run: PYTEST_ARGS='--junit-xml pytest.xml --timeout 300' PATH=$HOME/.local/bin:$PATH make run: PYTEST_ARGS='--junit-xml pytest.xml --timeout 300' PATH=$HOME/.local/bin:$PATH make
bahamut-anope bahamut-anope
timeout-minutes: 30 timeout-minutes: 30
@ -572,9 +568,7 @@ jobs:
run: |- run: |-
python -m pip install --upgrade pip python -m pip install --upgrade pip
pip install pytest pytest-xdist pytest-timeout -r requirements.txt pip install pytest pytest-xdist pytest-timeout -r requirements.txt
- env: - name: Test with pytest
IRCTEST_DEBUG_LOGS: ${{ runner.debug }}
name: Test with pytest
run: PYTEST_ARGS='--junit-xml pytest.xml --timeout 300' PATH=$HOME/.local/bin:$PATH make run: PYTEST_ARGS='--junit-xml pytest.xml --timeout 300' PATH=$HOME/.local/bin:$PATH make
bahamut-atheme bahamut-atheme
timeout-minutes: 30 timeout-minutes: 30
@ -607,9 +601,7 @@ jobs:
run: |- run: |-
python -m pip install --upgrade pip python -m pip install --upgrade pip
pip install pytest pytest-xdist pytest-timeout -r requirements.txt pip install pytest pytest-xdist pytest-timeout -r requirements.txt
- env: - name: Test with pytest
IRCTEST_DEBUG_LOGS: ${{ runner.debug }}
name: Test with pytest
run: PYTEST_ARGS='--junit-xml pytest.xml --timeout 300' PATH=$HOME/.local/bin:$PATH make run: PYTEST_ARGS='--junit-xml pytest.xml --timeout 300' PATH=$HOME/.local/bin:$PATH make
charybdis charybdis
timeout-minutes: 30 timeout-minutes: 30
@ -636,7 +628,7 @@ jobs:
repository: ergochat/ergo repository: ergochat/ergo
- uses: actions/setup-go@v3 - uses: actions/setup-go@v3
with: with:
go-version: ^1.23.0 go-version: ^1.22.0
- run: go version - run: go version
- name: Build Ergo - name: Build Ergo
run: | run: |
@ -649,9 +641,7 @@ jobs:
run: |- run: |-
python -m pip install --upgrade pip python -m pip install --upgrade pip
pip install pytest pytest-xdist pytest-timeout -r requirements.txt pip install pytest pytest-xdist pytest-timeout -r requirements.txt
- env: - name: Test with pytest
IRCTEST_DEBUG_LOGS: ${{ runner.debug }}
name: Test with pytest
run: PYTEST_ARGS='--junit-xml pytest.xml --timeout 300' PATH=$HOME/.local/bin:$PATH PATH=~/go/sbin:~/go/bin:~/go:$PATH run: PYTEST_ARGS='--junit-xml pytest.xml --timeout 300' PATH=$HOME/.local/bin:$PATH PATH=~/go/sbin:~/go/bin:~/go:$PATH
make ergo make ergo
timeout-minutes: 30 timeout-minutes: 30
@ -690,9 +680,7 @@ jobs:
run: |- run: |-
python -m pip install --upgrade pip python -m pip install --upgrade pip
pip install pytest pytest-xdist pytest-timeout -r requirements.txt pip install pytest pytest-xdist pytest-timeout -r requirements.txt
- env: - name: Test with pytest
IRCTEST_DEBUG_LOGS: ${{ runner.debug }}
name: Test with pytest
run: PYTEST_ARGS='--junit-xml pytest.xml --timeout 300' PATH=$HOME/.local/bin:$PATH make run: PYTEST_ARGS='--junit-xml pytest.xml --timeout 300' PATH=$HOME/.local/bin:$PATH make
hybrid hybrid
timeout-minutes: 30 timeout-minutes: 30
@ -725,9 +713,7 @@ jobs:
run: |- run: |-
python -m pip install --upgrade pip python -m pip install --upgrade pip
pip install pytest pytest-xdist pytest-timeout -r requirements.txt pip install pytest pytest-xdist pytest-timeout -r requirements.txt
- env: - name: Test with pytest
IRCTEST_DEBUG_LOGS: ${{ runner.debug }}
name: Test with pytest
run: PYTEST_ARGS='--junit-xml pytest.xml --timeout 300' PATH=$HOME/.local/bin:$PATH PATH=~/.local/inspircd/sbin:~/.local/inspircd/bin:~/.local/inspircd:$PATH run: PYTEST_ARGS='--junit-xml pytest.xml --timeout 300' PATH=$HOME/.local/bin:$PATH PATH=~/.local/inspircd/sbin:~/.local/inspircd/bin:~/.local/inspircd:$PATH
make inspircd make inspircd
timeout-minutes: 30 timeout-minutes: 30
@ -766,9 +752,7 @@ jobs:
run: |- run: |-
python -m pip install --upgrade pip python -m pip install --upgrade pip
pip install pytest pytest-xdist pytest-timeout -r requirements.txt pip install pytest pytest-xdist pytest-timeout -r requirements.txt
- env: - name: Test with pytest
IRCTEST_DEBUG_LOGS: ${{ runner.debug }}
name: Test with pytest
run: PYTEST_ARGS='--junit-xml pytest.xml --timeout 300' PATH=$HOME/.local/bin:$PATH PATH=~/.local/inspircd/sbin:~/.local/inspircd/bin:~/.local/inspircd:$PATH make run: PYTEST_ARGS='--junit-xml pytest.xml --timeout 300' PATH=$HOME/.local/bin:$PATH PATH=~/.local/inspircd/sbin:~/.local/inspircd/bin:~/.local/inspircd:$PATH make
inspircd-anope inspircd-anope
timeout-minutes: 30 timeout-minutes: 30
@ -801,9 +785,7 @@ jobs:
run: |- run: |-
python -m pip install --upgrade pip python -m pip install --upgrade pip
pip install pytest pytest-xdist pytest-timeout -r requirements.txt pip install pytest pytest-xdist pytest-timeout -r requirements.txt
- env: - name: Test with pytest
IRCTEST_DEBUG_LOGS: ${{ runner.debug }}
name: Test with pytest
run: PYTEST_ARGS='--junit-xml pytest.xml --timeout 300' PATH=$HOME/.local/bin:$PATH PATH=~/.local/inspircd/sbin:~/.local/inspircd/bin:~/.local/inspircd:$PATH run: PYTEST_ARGS='--junit-xml pytest.xml --timeout 300' PATH=$HOME/.local/bin:$PATH PATH=~/.local/inspircd/sbin:~/.local/inspircd/bin:~/.local/inspircd:$PATH
make inspircd-atheme make inspircd-atheme
timeout-minutes: 30 timeout-minutes: 30
@ -853,9 +835,7 @@ jobs:
run: |- run: |-
python -m pip install --upgrade pip python -m pip install --upgrade pip
pip install pytest pytest-xdist pytest-timeout -r requirements.txt pip install pytest pytest-xdist pytest-timeout -r requirements.txt
- env: - name: Test with pytest
IRCTEST_DEBUG_LOGS: ${{ runner.debug }}
name: Test with pytest
run: PYTEST_ARGS='--junit-xml pytest.xml --timeout 300' PATH=$HOME/.local/bin:$PATH make run: PYTEST_ARGS='--junit-xml pytest.xml --timeout 300' PATH=$HOME/.local/bin:$PATH make
irc2 irc2
timeout-minutes: 30 timeout-minutes: 30
@ -894,9 +874,7 @@ jobs:
run: |- run: |-
python -m pip install --upgrade pip python -m pip install --upgrade pip
pip install pytest pytest-xdist pytest-timeout -r requirements.txt pip install pytest pytest-xdist pytest-timeout -r requirements.txt
- env: - name: Test with pytest
IRCTEST_DEBUG_LOGS: ${{ runner.debug }}
name: Test with pytest
run: PYTEST_ARGS='--junit-xml pytest.xml --timeout 300' PATH=$HOME/.local/bin:$PATH make run: PYTEST_ARGS='--junit-xml pytest.xml --timeout 300' PATH=$HOME/.local/bin:$PATH make
ircu2 ircu2
timeout-minutes: 30 timeout-minutes: 30
@ -923,9 +901,7 @@ jobs:
run: |- run: |-
python -m pip install --upgrade pip python -m pip install --upgrade pip
pip install pytest pytest-xdist pytest-timeout -r requirements.txt pip install pytest pytest-xdist pytest-timeout -r requirements.txt
- env: - name: Test with pytest
IRCTEST_DEBUG_LOGS: ${{ runner.debug }}
name: Test with pytest
run: PYTEST_ARGS='--junit-xml pytest.xml --timeout 300' PATH=$HOME/.local/bin:$PATH make run: PYTEST_ARGS='--junit-xml pytest.xml --timeout 300' PATH=$HOME/.local/bin:$PATH make
limnoria limnoria
timeout-minutes: 30 timeout-minutes: 30
@ -963,9 +939,7 @@ jobs:
run: |- run: |-
python -m pip install --upgrade pip python -m pip install --upgrade pip
pip install pytest pytest-xdist pytest-timeout -r requirements.txt pip install pytest pytest-xdist pytest-timeout -r requirements.txt
- env: - name: Test with pytest
IRCTEST_DEBUG_LOGS: ${{ runner.debug }}
name: Test with pytest
run: PYTEST_ARGS='--junit-xml pytest.xml --timeout 300' PATH=$HOME/.local/bin:$PATH make run: PYTEST_ARGS='--junit-xml pytest.xml --timeout 300' PATH=$HOME/.local/bin:$PATH make
nefarious nefarious
timeout-minutes: 30 timeout-minutes: 30
@ -998,9 +972,7 @@ jobs:
run: |- run: |-
python -m pip install --upgrade pip python -m pip install --upgrade pip
pip install pytest pytest-xdist pytest-timeout -r requirements.txt pip install pytest pytest-xdist pytest-timeout -r requirements.txt
- env: - name: Test with pytest
IRCTEST_DEBUG_LOGS: ${{ runner.debug }}
name: Test with pytest
run: PYTEST_ARGS='--junit-xml pytest.xml --timeout 300' PATH=$HOME/.local/bin:$PATH PATH=~/.local//sbin:~/.local//bin:~/.local/:$PATH run: PYTEST_ARGS='--junit-xml pytest.xml --timeout 300' PATH=$HOME/.local/bin:$PATH PATH=~/.local//sbin:~/.local//bin:~/.local/:$PATH
make ngircd make ngircd
timeout-minutes: 30 timeout-minutes: 30
@ -1039,9 +1011,7 @@ jobs:
run: |- run: |-
python -m pip install --upgrade pip python -m pip install --upgrade pip
pip install pytest pytest-xdist pytest-timeout -r requirements.txt pip install pytest pytest-xdist pytest-timeout -r requirements.txt
- env: - name: Test with pytest
IRCTEST_DEBUG_LOGS: ${{ runner.debug }}
name: Test with pytest
run: PYTEST_ARGS='--junit-xml pytest.xml --timeout 300' PATH=$HOME/.local/bin:$PATH PATH=~/.local//sbin:~/.local//bin:~/.local/:$PATH make run: PYTEST_ARGS='--junit-xml pytest.xml --timeout 300' PATH=$HOME/.local/bin:$PATH PATH=~/.local//sbin:~/.local//bin:~/.local/:$PATH make
ngircd-anope ngircd-anope
timeout-minutes: 30 timeout-minutes: 30
@ -1074,9 +1044,7 @@ jobs:
run: |- run: |-
python -m pip install --upgrade pip python -m pip install --upgrade pip
pip install pytest pytest-xdist pytest-timeout -r requirements.txt pip install pytest pytest-xdist pytest-timeout -r requirements.txt
- env: - name: Test with pytest
IRCTEST_DEBUG_LOGS: ${{ runner.debug }}
name: Test with pytest
run: PYTEST_ARGS='--junit-xml pytest.xml --timeout 300' PATH=$HOME/.local/bin:$PATH PATH=~/.local//sbin:~/.local//bin:~/.local/:$PATH run: PYTEST_ARGS='--junit-xml pytest.xml --timeout 300' PATH=$HOME/.local/bin:$PATH PATH=~/.local//sbin:~/.local//bin:~/.local/:$PATH
make ngircd-atheme make ngircd-atheme
timeout-minutes: 30 timeout-minutes: 30
@ -1115,9 +1083,7 @@ jobs:
run: |- run: |-
python -m pip install --upgrade pip python -m pip install --upgrade pip
pip install pytest pytest-xdist pytest-timeout -r requirements.txt pip install pytest pytest-xdist pytest-timeout -r requirements.txt
- env: - name: Test with pytest
IRCTEST_DEBUG_LOGS: ${{ runner.debug }}
name: Test with pytest
run: PYTEST_ARGS='--junit-xml pytest.xml --timeout 300' PATH=$HOME/.local/bin:$PATH make run: PYTEST_ARGS='--junit-xml pytest.xml --timeout 300' PATH=$HOME/.local/bin:$PATH make
plexus4 plexus4
timeout-minutes: 30 timeout-minutes: 30
@ -1140,7 +1106,7 @@ jobs:
uses: actions/checkout@v4 uses: actions/checkout@v4
with: with:
path: sable path: sable
ref: baed3ef9ac4550dc36a45b758436769e82e8ec58 ref: e9701e5e8d0c4f278ddd61ce7285f4918ecf99e9
repository: Libera-Chat/sable repository: Libera-Chat/sable
- name: Install rust toolchain - name: Install rust toolchain
uses: actions-rs/toolchain@v1 uses: actions-rs/toolchain@v1
@ -1164,9 +1130,7 @@ jobs:
run: |- run: |-
python -m pip install --upgrade pip python -m pip install --upgrade pip
pip install pytest pytest-xdist pytest-timeout -r requirements.txt pip install pytest pytest-xdist pytest-timeout -r requirements.txt
- env: - name: Test with pytest
IRCTEST_DEBUG_LOGS: ${{ runner.debug }}
name: Test with pytest
run: PYTEST_ARGS='--junit-xml pytest.xml --timeout 300' PATH=$HOME/.local/bin:$PATH PATH=$GITHUB_WORKSPACE/sable/target/debug/sbin:$GITHUB_WORKSPACE/sable/target/debug/bin:$GITHUB_WORKSPACE/sable/target/debug:$PATH run: PYTEST_ARGS='--junit-xml pytest.xml --timeout 300' PATH=$HOME/.local/bin:$PATH PATH=$GITHUB_WORKSPACE/sable/target/debug/sbin:$GITHUB_WORKSPACE/sable/target/debug/bin:$GITHUB_WORKSPACE/sable/target/debug:$PATH
make sable make sable
timeout-minutes: 30 timeout-minutes: 30
@ -1199,9 +1163,7 @@ jobs:
run: |- run: |-
python -m pip install --upgrade pip python -m pip install --upgrade pip
pip install pytest pytest-xdist pytest-timeout -r requirements.txt pip install pytest pytest-xdist pytest-timeout -r requirements.txt
- env: - name: Test with pytest
IRCTEST_DEBUG_LOGS: ${{ runner.debug }}
name: Test with pytest
run: PYTEST_ARGS='--junit-xml pytest.xml --timeout 300' PATH=$HOME/.local/bin:$PATH make run: PYTEST_ARGS='--junit-xml pytest.xml --timeout 300' PATH=$HOME/.local/bin:$PATH make
solanum solanum
timeout-minutes: 30 timeout-minutes: 30
@ -1228,9 +1190,7 @@ jobs:
run: |- run: |-
python -m pip install --upgrade pip python -m pip install --upgrade pip
pip install pytest pytest-xdist pytest-timeout -r requirements.txt pip install pytest pytest-xdist pytest-timeout -r requirements.txt
- env: - name: Test with pytest
IRCTEST_DEBUG_LOGS: ${{ runner.debug }}
name: Test with pytest
run: PYTEST_ARGS='--junit-xml pytest.xml --timeout 300' PATH=$HOME/.local/bin:$PATH make run: PYTEST_ARGS='--junit-xml pytest.xml --timeout 300' PATH=$HOME/.local/bin:$PATH make
sopel sopel
timeout-minutes: 30 timeout-minutes: 30
@ -1268,9 +1228,7 @@ jobs:
run: |- run: |-
python -m pip install --upgrade pip python -m pip install --upgrade pip
pip install pytest pytest-xdist pytest-timeout -r requirements.txt pip install pytest pytest-xdist pytest-timeout -r requirements.txt
- env: - name: Test with pytest
IRCTEST_DEBUG_LOGS: ${{ runner.debug }}
name: Test with pytest
run: PYTEST_ARGS='--junit-xml pytest.xml --timeout 300' PATH=$HOME/.local/bin:$PATH make run: PYTEST_ARGS='--junit-xml pytest.xml --timeout 300' PATH=$HOME/.local/bin:$PATH make
thelounge thelounge
timeout-minutes: 30 timeout-minutes: 30
@ -1303,9 +1261,7 @@ jobs:
run: |- run: |-
python -m pip install --upgrade pip python -m pip install --upgrade pip
pip install pytest pytest-xdist pytest-timeout -r requirements.txt pip install pytest pytest-xdist pytest-timeout -r requirements.txt
- env: - name: Test with pytest
IRCTEST_DEBUG_LOGS: ${{ runner.debug }}
name: Test with pytest
run: PYTEST_ARGS='--junit-xml pytest.xml --timeout 300' PATH=$HOME/.local/bin:$PATH PATH=~/.local/unrealircd/sbin:~/.local/unrealircd/bin:~/.local/unrealircd:$PATH run: PYTEST_ARGS='--junit-xml pytest.xml --timeout 300' PATH=$HOME/.local/bin:$PATH PATH=~/.local/unrealircd/sbin:~/.local/unrealircd/bin:~/.local/unrealircd:$PATH
make unrealircd make unrealircd
timeout-minutes: 30 timeout-minutes: 30
@ -1338,9 +1294,7 @@ jobs:
run: |- run: |-
python -m pip install --upgrade pip python -m pip install --upgrade pip
pip install pytest pytest-xdist pytest-timeout -r requirements.txt pip install pytest pytest-xdist pytest-timeout -r requirements.txt
- env: - name: Test with pytest
IRCTEST_DEBUG_LOGS: ${{ runner.debug }}
name: Test with pytest
run: PYTEST_ARGS='--junit-xml pytest.xml --timeout 300' PATH=$HOME/.local/bin:$PATH PATH=~/.local/unrealircd/sbin:~/.local/unrealircd/bin:~/.local/unrealircd:$PATH run: PYTEST_ARGS='--junit-xml pytest.xml --timeout 300' PATH=$HOME/.local/bin:$PATH PATH=~/.local/unrealircd/sbin:~/.local/unrealircd/bin:~/.local/unrealircd:$PATH
make unrealircd-5 make unrealircd-5
timeout-minutes: 30 timeout-minutes: 30
@ -1379,9 +1333,7 @@ jobs:
run: |- run: |-
python -m pip install --upgrade pip python -m pip install --upgrade pip
pip install pytest pytest-xdist pytest-timeout -r requirements.txt pip install pytest pytest-xdist pytest-timeout -r requirements.txt
- env: - name: Test with pytest
IRCTEST_DEBUG_LOGS: ${{ runner.debug }}
name: Test with pytest
run: PYTEST_ARGS='--junit-xml pytest.xml --timeout 300' PATH=$HOME/.local/bin:$PATH PATH=~/.local/unrealircd/sbin:~/.local/unrealircd/bin:~/.local/unrealircd:$PATH make run: PYTEST_ARGS='--junit-xml pytest.xml --timeout 300' PATH=$HOME/.local/bin:$PATH PATH=~/.local/unrealircd/sbin:~/.local/unrealircd/bin:~/.local/unrealircd:$PATH make
unrealircd-anope unrealircd-anope
timeout-minutes: 30 timeout-minutes: 30
@ -1414,9 +1366,7 @@ jobs:
run: |- run: |-
python -m pip install --upgrade pip python -m pip install --upgrade pip
pip install pytest pytest-xdist pytest-timeout -r requirements.txt pip install pytest pytest-xdist pytest-timeout -r requirements.txt
- env: - name: Test with pytest
IRCTEST_DEBUG_LOGS: ${{ runner.debug }}
name: Test with pytest
run: PYTEST_ARGS='--junit-xml pytest.xml --timeout 300' PATH=$HOME/.local/bin:$PATH PATH=~/.local/unrealircd/sbin:~/.local/unrealircd/bin:~/.local/unrealircd:$PATH run: PYTEST_ARGS='--junit-xml pytest.xml --timeout 300' PATH=$HOME/.local/bin:$PATH PATH=~/.local/unrealircd/sbin:~/.local/unrealircd/bin:~/.local/unrealircd:$PATH
make unrealircd-atheme make unrealircd-atheme
timeout-minutes: 30 timeout-minutes: 30

View File

@ -84,12 +84,15 @@ LIMNORIA_SELECTORS := \
$(EXTRA_SELECTORS) $(EXTRA_SELECTORS)
# Tests marked with arbitrary_client_tags or react_tag can't pass because Sable does not support client tags yet # Tests marked with arbitrary_client_tags or react_tag can't pass because Sable does not support client tags yet
# Tests marked with private_chathistory can't pass because Sable does not implement CHATHISTORY for DMs
SABLE_SELECTORS := \ SABLE_SELECTORS := \
not Ergo \ not Ergo \
and not deprecated \ and not deprecated \
and not strict \ and not strict \
and not arbitrary_client_tags \ and not arbitrary_client_tags \
and not react_tag \ and not react_tag \
and not private_chathistory \
and not list and not lusers and not time and not info \ and not list and not lusers and not time and not info \
$(EXTRA_SELECTORS) $(EXTRA_SELECTORS)

View File

@ -11,20 +11,7 @@ import subprocess
import tempfile import tempfile
import textwrap import textwrap
import time import time
from typing import ( from typing import IO, Any, Callable, Dict, Iterator, List, Optional, Set, Tuple, Type
IO,
Any,
Callable,
Dict,
Iterator,
List,
Optional,
Sequence,
Set,
Tuple,
Type,
Union,
)
import irctest import irctest
@ -87,7 +74,6 @@ class _BaseController:
_port_lock = FileLock(Path(tempfile.gettempdir()) / "irctest_ports.json.lock") _port_lock = FileLock(Path(tempfile.gettempdir()) / "irctest_ports.json.lock")
def __init__(self, test_config: TestCaseControllerConfig): def __init__(self, test_config: TestCaseControllerConfig):
self.debug_mode = os.getenv("IRCTEST_DEBUG_LOGS", "0").lower() in ("true", "1")
self.test_config = test_config self.test_config = test_config
self.proc = None self.proc = None
self._own_ports: Set[Tuple[str, int]] = set() self._own_ports: Set[Tuple[str, int]] = set()
@ -144,12 +130,6 @@ class _BaseController:
used_ports.remove((hostname, port)) used_ports.remove((hostname, port))
self._own_ports.remove((hostname, port)) self._own_ports.remove((hostname, port))
def execute(
self, command: Sequence[Union[str, Path]], **kwargs: Any
) -> subprocess.Popen:
output_to = None if self.debug_mode else subprocess.DEVNULL
return subprocess.Popen(command, stderr=output_to, stdout=output_to, **kwargs)
class DirectoryBasedController(_BaseController): class DirectoryBasedController(_BaseController):
"""Helper for controllers whose software configuration is based on an """Helper for controllers whose software configuration is based on an

View File

@ -8,7 +8,7 @@ from irctest.basecontrollers import BaseServicesController, DirectoryBasedContro
TEMPLATE_CONFIG = """ TEMPLATE_CONFIG = """
serverinfo {{ serverinfo {{
name = "My.Little.Services" name = "services.example.org"
description = "Anope IRC Services" description = "Anope IRC Services"
numeric = "00A" numeric = "00A"
pid = "services.pid" pid = "services.pid"
@ -136,19 +136,16 @@ class AnopeController(BaseServicesController, DirectoryBasedController):
Path(services_path).parent.parent / "modules" Path(services_path).parent.parent / "modules"
) )
extra_args = [] self.proc = subprocess.Popen(
if self.debug_mode:
extra_args.append("--debug")
self.proc = self.execute(
[ [
"anope", "anope",
"--config=services.conf", # can't be an absolute path in 2.0 "--config=services.conf", # can't be an absolute path in 2.0
"--nofork", # don't fork "--nofork", # don't fork
"--nopid", # don't write a pid "--nopid", # don't write a pid
*extra_args,
], ],
cwd=self.directory, cwd=self.directory,
# stdout=subprocess.DEVNULL,
# stderr=subprocess.DEVNULL,
) )

View File

@ -1,3 +1,4 @@
import subprocess
from typing import Optional, Type from typing import Optional, Type
import irctest import irctest
@ -24,7 +25,7 @@ loadmodule "modules/saslserv/plain";
#loadmodule "modules/saslserv/scram"; #loadmodule "modules/saslserv/scram";
serverinfo {{ serverinfo {{
name = "My.Little.Services"; name = "services.example.org";
desc = "Atheme IRC Services"; desc = "Atheme IRC Services";
numeric = "00A"; numeric = "00A";
netname = "testnet"; netname = "testnet";
@ -74,7 +75,7 @@ class AthemeController(BaseServicesController, DirectoryBasedController):
) )
assert self.directory assert self.directory
self.proc = self.execute( self.proc = subprocess.Popen(
[ [
"atheme-services", "atheme-services",
"-n", # don't fork "-n", # don't fork
@ -87,6 +88,8 @@ class AthemeController(BaseServicesController, DirectoryBasedController):
"-D", "-D",
self.directory, self.directory,
], ],
# stdout=subprocess.DEVNULL,
# stderr=subprocess.DEVNULL,
) )
def registerUser( def registerUser(

View File

@ -1,5 +1,6 @@
from pathlib import Path from pathlib import Path
import shutil import shutil
import subprocess
from typing import Optional, Set, Type from typing import Optional, Set, Type
from irctest.basecontrollers import BaseServerController, DirectoryBasedController from irctest.basecontrollers import BaseServerController, DirectoryBasedController
@ -14,7 +15,7 @@ options {{
network_name unconfigured; network_name unconfigured;
allow_split_ops; # Give ops in empty channels allow_split_ops; # Give ops in empty channels
services_name My.Little.Services; services_name services.example.org;
// if you need to link more than 1 server, uncomment the following line // if you need to link more than 1 server, uncomment the following line
servtype hub; servtype hub;
@ -44,7 +45,7 @@ class {{
/* for services */ /* for services */
super {{ super {{
"My.Little.Services"; "services.example.org";
}}; }};
@ -57,7 +58,7 @@ class {{
/* our services */ /* our services */
connect {{ connect {{
name My.Little.Services; name services.example.org;
host *@127.0.0.1; # unfortunately, masks aren't allowed here host *@127.0.0.1; # unfortunately, masks aren't allowed here
apasswd password; apasswd password;
cpasswd password; cpasswd password;
@ -91,7 +92,7 @@ class BahamutController(BaseServerController, DirectoryBasedController):
software_name = "Bahamut" software_name = "Bahamut"
supported_sasl_mechanisms: Set[str] = set() supported_sasl_mechanisms: Set[str] = set()
supports_sts = False supports_sts = False
nickserv = "NickServ@My.Little.Services" nickserv = "NickServ@services.example.org"
def create_config(self) -> None: def create_config(self) -> None:
super().create_config() super().create_config()
@ -149,7 +150,7 @@ class BahamutController(BaseServerController, DirectoryBasedController):
else: else:
faketime_cmd = [] faketime_cmd = []
self.proc = self.execute( self.proc = subprocess.Popen(
[ [
*faketime_cmd, *faketime_cmd,
"ircd", "ircd",

View File

@ -1,5 +1,6 @@
from pathlib import Path from pathlib import Path
import shutil import shutil
import subprocess
from typing import Optional from typing import Optional
from irctest.basecontrollers import BaseServerController, DirectoryBasedController from irctest.basecontrollers import BaseServerController, DirectoryBasedController
@ -73,7 +74,7 @@ class BaseHybridController(BaseServerController, DirectoryBasedController):
else: else:
faketime_cmd = [] faketime_cmd = []
self.proc = self.execute( self.proc = subprocess.Popen(
[ [
*faketime_cmd, *faketime_cmd,
self.binary_name, self.binary_name,
@ -83,6 +84,7 @@ class BaseHybridController(BaseServerController, DirectoryBasedController):
"-pidfile", "-pidfile",
self.directory / "server.pid", self.directory / "server.pid",
], ],
# stderr=subprocess.DEVNULL,
) )
if run_services: if run_services:

View File

@ -44,7 +44,7 @@ channel {{
displayed_usercount = 0; displayed_usercount = 0;
}}; }};
connect "My.Little.Services" {{ connect "services.example.org" {{
host = "localhost"; # Used to validate incoming connection host = "localhost"; # Used to validate incoming connection
port = 0; # We don't need servers to connect to services port = 0; # We don't need servers to connect to services
send_password = "password"; send_password = "password";
@ -53,7 +53,7 @@ connect "My.Little.Services" {{
flags = topicburst; flags = topicburst;
}}; }};
service {{ service {{
name = "My.Little.Services"; name = "services.example.org";
}}; }};
privset "omnioper" {{ privset "omnioper" {{

View File

@ -13,7 +13,7 @@ TEMPLATE_DLK_CONFIG = """\
info {{ info {{
SID "00A"; SID "00A";
network-name "testnetwork"; network-name "testnetwork";
services-name "My.Little.Services"; services-name "services.example.org";
admin-email "admin@example.org"; admin-email "admin@example.org";
}} }}
@ -200,7 +200,7 @@ class DlkController(BaseServicesController, DirectoryBasedController):
fd.write(TEMPLATE_DLK_WP_CONFIG.format(**template_vars)) fd.write(TEMPLATE_DLK_WP_CONFIG.format(**template_vars))
(dlk_conf_dir / "modules.conf").symlink_to(self.dlk_path / "conf/modules.conf") (dlk_conf_dir / "modules.conf").symlink_to(self.dlk_path / "conf/modules.conf")
self.proc = self.execute( self.proc = subprocess.Popen(
[ [
"php", "php",
"src/dalek", "src/dalek",

View File

@ -213,7 +213,7 @@ class ErgoController(BaseServerController, DirectoryBasedController):
else: else:
faketime_cmd = [] faketime_cmd = []
self.proc = self.execute( self.proc = subprocess.Popen(
[*faketime_cmd, "ergo", "run", "--conf", self._config_path, "--quiet"] [*faketime_cmd, "ergo", "run", "--conf", self._config_path, "--quiet"]
) )

View File

@ -1,3 +1,4 @@
import subprocess
from typing import Optional, Type from typing import Optional, Type
from irctest import authentication, tls from irctest import authentication, tls
@ -30,7 +31,7 @@ class GircController(BaseClientController, DirectoryBasedController):
args += ["--sasl-fail-is-ok"] args += ["--sasl-fail-is-ok"]
# Runs a client with the config given as arguments # Runs a client with the config given as arguments
self.proc = self.execute(["girc_test", "connect"] + args) self.proc = subprocess.Popen(["girc_test", "connect"] + args)
def get_irctest_controller_class() -> Type[GircController]: def get_irctest_controller_class() -> Type[GircController]:

View File

@ -42,7 +42,7 @@ class {{
connectfreq = 5 minutes; connectfreq = 5 minutes;
}}; }};
connect {{ connect {{
name = "My.Little.Services"; name = "services.example.org";
host = "127.0.0.1"; # Used to validate incoming connection host = "127.0.0.1"; # Used to validate incoming connection
port = 0; # We don't need servers to connect to services port = 0; # We don't need servers to connect to services
send_password = "password"; send_password = "password";
@ -50,7 +50,7 @@ connect {{
class = "server"; class = "server";
}}; }};
service {{ service {{
name = "My.Little.Services"; name = "services.example.org";
}}; }};
auth {{ auth {{

View File

@ -33,15 +33,14 @@ TEMPLATE_CONFIG = """
class="ServerOperators" class="ServerOperators"
> >
<options casemapping="ascii" <options casemapping="ascii">
extbanformat="any">
# Disable 'NOTICE #chan :*** foo invited bar into the channel- # Disable 'NOTICE #chan :*** foo invited bar into the channel-
<security announceinvites="none"> <security announceinvites="none">
# Services: # Services:
<bind address="{services_hostname}" port="{services_port}" type="servers"> <bind address="{services_hostname}" port="{services_port}" type="servers">
<link name="My.Little.Services" <link name="services.example.org"
ipaddr="{services_hostname}" ipaddr="{services_hostname}"
port="{services_port}" port="{services_port}"
allowmask="*" allowmask="*"
@ -51,7 +50,7 @@ TEMPLATE_CONFIG = """
<module name="spanningtree"> <module name="spanningtree">
<module name="hidechans"> # Anope errors when missing <module name="hidechans"> # Anope errors when missing
<sasl requiressl="no" <sasl requiressl="no"
target="My.Little.Services"> target="services.example.org">
# Protocol: # Protocol:
<module name="banexception"> <module name="banexception">
@ -183,22 +182,15 @@ class InspircdController(BaseServerController, DirectoryBasedController):
else: else:
faketime_cmd = [] faketime_cmd = []
extra_args = [] self.proc = subprocess.Popen(
if self.debug_mode:
if installed_version() >= 4:
extra_args.append("--protocoldebug")
else:
extra_args.append("--debug")
self.proc = self.execute(
[ [
*faketime_cmd, *faketime_cmd,
"inspircd", "inspircd",
"--nofork", "--nofork",
"--config", "--config",
self.directory / "server.conf", self.directory / "server.conf",
*extra_args,
], ],
stdout=subprocess.DEVNULL,
) )
if run_services: if run_services:

View File

@ -1,4 +1,5 @@
import shutil import shutil
import subprocess
from typing import Optional, Type from typing import Optional, Type
from irctest.basecontrollers import ( from irctest.basecontrollers import (
@ -77,7 +78,7 @@ class Irc2Controller(BaseServerController, DirectoryBasedController):
else: else:
faketime_cmd = [] faketime_cmd = []
self.proc = self.execute( self.proc = subprocess.Popen(
[ [
*faketime_cmd, *faketime_cmd,
"ircd", "ircd",
@ -87,6 +88,7 @@ class Irc2Controller(BaseServerController, DirectoryBasedController):
"-f", "-f",
self.directory / "server.conf", self.directory / "server.conf",
], ],
# stderr=subprocess.DEVNULL,
) )

View File

@ -1,4 +1,5 @@
import shutil import shutil
import subprocess
from typing import Optional, Type from typing import Optional, Type
from irctest.basecontrollers import ( from irctest.basecontrollers import (
@ -96,7 +97,7 @@ class Ircu2Controller(BaseServerController, DirectoryBasedController):
else: else:
faketime_cmd = [] faketime_cmd = []
self.proc = self.execute( self.proc = subprocess.Popen(
[ [
*faketime_cmd, *faketime_cmd,
"ircd", "ircd",
@ -106,6 +107,7 @@ class Ircu2Controller(BaseServerController, DirectoryBasedController):
"-x", "-x",
"DEBUG", "DEBUG",
], ],
# stderr=subprocess.DEVNULL,
) )

View File

@ -1,3 +1,4 @@
import subprocess
from typing import Optional, Type from typing import Optional, Type
from irctest import authentication, tls from irctest import authentication, tls
@ -83,7 +84,7 @@ class LimnoriaController(BaseClientController, DirectoryBasedController):
) )
) )
assert self.directory assert self.directory
self.proc = self.execute(["supybot", self.directory / "bot.conf"]) self.proc = subprocess.Popen(["supybot", self.directory / "bot.conf"])
def get_irctest_controller_class() -> Type[LimnoriaController]: def get_irctest_controller_class() -> Type[LimnoriaController]:

View File

@ -1,4 +1,5 @@
import shutil import shutil
import subprocess
from typing import Optional, Set, Type from typing import Optional, Set, Type
from irctest.basecontrollers import ( from irctest.basecontrollers import (
@ -115,7 +116,7 @@ class MammonController(BaseServerController, DirectoryBasedController):
else: else:
faketime_cmd = [] faketime_cmd = []
self.proc = self.execute( self.proc = subprocess.Popen(
[ [
*faketime_cmd, *faketime_cmd,
"mammond", "mammond",

View File

@ -1,4 +1,5 @@
import shutil import shutil
import subprocess
from typing import Optional, Set, Type from typing import Optional, Set, Type
from irctest.basecontrollers import BaseServerController, DirectoryBasedController from irctest.basecontrollers import BaseServerController, DirectoryBasedController
@ -14,7 +15,7 @@ TEMPLATE_CONFIG = """
{password_field} {password_field}
[Server] [Server]
Name = My.Little.Services Name = services.example.org
MyPassword = password MyPassword = password
PeerPassword = password PeerPassword = password
Passive = yes # don't connect to it Passive = yes # don't connect to it
@ -94,7 +95,7 @@ class NgircdController(BaseServerController, DirectoryBasedController):
else: else:
faketime_cmd = [] faketime_cmd = []
self.proc = self.execute( self.proc = subprocess.Popen(
[ [
*faketime_cmd, *faketime_cmd,
"ngircd", "ngircd",
@ -102,6 +103,7 @@ class NgircdController(BaseServerController, DirectoryBasedController):
"--config", "--config",
self.directory / "server.conf", self.directory / "server.conf",
], ],
# stdout=subprocess.DEVNULL,
) )
if run_services: if run_services:

View File

@ -44,7 +44,7 @@ class {{
connectfreq = 5 minutes; connectfreq = 5 minutes;
}}; }};
connect {{ connect {{
name = "My.Little.Services"; name = "services.example.org";
host = "127.0.0.1"; # Used to validate incoming connection host = "127.0.0.1"; # Used to validate incoming connection
port = 0; # We don't need servers to connect to services port = 0; # We don't need servers to connect to services
send_password = "password"; send_password = "password";
@ -52,7 +52,7 @@ connect {{
class = "server"; class = "server";
}}; }};
service {{ service {{
name = "My.Little.Services"; name = "services.example.org";
}}; }};
auth {{ auth {{

View File

@ -107,8 +107,6 @@ NETWORK_CONFIG = """
NETWORK_CONFIG_CONFIG = """ NETWORK_CONFIG_CONFIG = """
{ {
"object_expiry": 300,
"opers": [ "opers": [
{ {
"name": "operuser", "name": "operuser",
@ -396,7 +394,7 @@ class SableController(BaseServerController, DirectoryBasedController):
else: else:
faketime_cmd = [] faketime_cmd = []
self.proc = self.execute( self.proc = subprocess.Popen(
[ [
*faketime_cmd, *faketime_cmd,
"sable_ircd", "sable_ircd",
@ -477,7 +475,7 @@ class SableServicesController(BaseServicesController):
with self.server_controller.open_file("configs/services.conf") as fd: with self.server_controller.open_file("configs/services.conf") as fd:
fd.write(SERVICES_CONFIG % self.server_controller.template_vars) fd.write(SERVICES_CONFIG % self.server_controller.template_vars)
self.proc = self.execute( self.proc = subprocess.Popen(
[ [
"sable_services", "sable_services",
"--foreground", "--foreground",

View File

@ -1,4 +1,5 @@
import shutil import shutil
import subprocess
from typing import Optional, Type from typing import Optional, Type
from irctest.basecontrollers import ( from irctest.basecontrollers import (
@ -95,7 +96,7 @@ class SnircdController(BaseServerController, DirectoryBasedController):
else: else:
faketime_cmd = [] faketime_cmd = []
self.proc = self.execute( self.proc = subprocess.Popen(
[ [
*faketime_cmd, *faketime_cmd,
"ircd", "ircd",
@ -105,6 +106,7 @@ class SnircdController(BaseServerController, DirectoryBasedController):
"-x", "-x",
"DEBUG", "DEBUG",
], ],
# stderr=subprocess.DEVNULL,
) )

View File

@ -1,4 +1,5 @@
from pathlib import Path from pathlib import Path
import subprocess
import tempfile import tempfile
from typing import Optional, TextIO, Type, cast from typing import Optional, TextIO, Type, cast
@ -72,7 +73,7 @@ class SopelController(BaseClientController):
auth_method="auth_method = sasl" if auth else "", auth_method="auth_method = sasl" if auth else "",
) )
) )
self.proc = self.execute(["sopel", "-c", self.filename]) self.proc = subprocess.Popen(["sopel", "-c", self.filename])
def get_irctest_controller_class() -> Type[SopelController]: def get_irctest_controller_class() -> Type[SopelController]:

View File

@ -1,5 +1,6 @@
import json import json
import os import os
import subprocess
from typing import Optional, Type from typing import Optional, Type
from irctest import authentication, tls from irctest import authentication, tls
@ -95,7 +96,7 @@ class TheLoungeController(BaseClientController, DirectoryBasedController):
) )
with self.open_file("users/testuser.json", "r") as fd: with self.open_file("users/testuser.json", "r") as fd:
print("config", json.load(fd)["networks"][0]["saslPassword"]) print("config", json.load(fd)["networks"][0]["saslPassword"])
self.proc = self.execute( self.proc = subprocess.Popen(
[os.environ.get("THELOUNGE_BIN", "thelounge"), "start"], [os.environ.get("THELOUNGE_BIN", "thelounge"), "start"],
env={**os.environ, "THELOUNGE_HOME": str(self.directory)}, env={**os.environ, "THELOUNGE_HOME": str(self.directory)},
) )

View File

@ -64,7 +64,7 @@ listen {{
options {{ serversonly; }} options {{ serversonly; }}
}} }}
link My.Little.Services {{ link services.example.org {{
incoming {{ incoming {{
mask *; mask *;
}} }}
@ -72,11 +72,11 @@ link My.Little.Services {{
class servers; class servers;
}} }}
ulines {{ ulines {{
My.Little.Services; services.example.org;
}} }}
set {{ set {{
sasl-server My.Little.Services; sasl-server services.example.org;
kline-address "example@example.org"; kline-address "example@example.org";
network-name "ExampleNET"; network-name "ExampleNET";
default-server "irc.example.org"; default-server "irc.example.org";
@ -261,7 +261,7 @@ class UnrealircdController(BaseServerController, DirectoryBasedController):
faketime_cmd = [] faketime_cmd = []
with _STARTSTOP_LOCK(): with _STARTSTOP_LOCK():
self.proc = self.execute( self.proc = subprocess.Popen(
[ [
*faketime_cmd, *faketime_cmd,
"unrealircd", "unrealircd",
@ -270,6 +270,7 @@ class UnrealircdController(BaseServerController, DirectoryBasedController):
"-f", "-f",
self.directory / "unrealircd.conf", self.directory / "unrealircd.conf",
], ],
# stdout=subprocess.DEVNULL,
) )
self.wait_for_port() self.wait_for_port()

View File

@ -7,14 +7,18 @@ and ban exception (`Modern <https://modern.ircdocs.horse/#exception-channel-mode
""" """
from irctest import cases, runner from irctest import cases, runner
from irctest.numerics import ERR_BANNEDFROMCHAN, RPL_BANLIST, RPL_ENDOFBANLIST from irctest.numerics import (
ERR_BANNEDFROMCHAN,
ERR_CANNOTSENDTOCHAN,
RPL_BANLIST,
RPL_ENDOFBANLIST,
)
from irctest.patma import ANYSTR, StrRe from irctest.patma import ANYSTR, StrRe
class BanModeTestCase(cases.BaseServerTestCase): class BanModeTestCase(cases.BaseServerTestCase):
@cases.mark_specifications("RFC1459", "RFC2812", "Modern") @cases.mark_specifications("RFC1459", "RFC2812", "Modern")
def testBan(self): def testBanJoin(self):
"""Basic ban operation"""
self.connectClient("chanop", name="chanop") self.connectClient("chanop", name="chanop")
self.joinChannel("chanop", "#chan") self.joinChannel("chanop", "#chan")
self.getMessages("chanop") self.getMessages("chanop")
@ -32,6 +36,55 @@ class BanModeTestCase(cases.BaseServerTestCase):
self.sendLine("bar", "JOIN #chan") self.sendLine("bar", "JOIN #chan")
self.assertMessageMatch(self.getMessage("bar"), command="JOIN") self.assertMessageMatch(self.getMessage("bar"), command="JOIN")
@cases.mark_specifications("Modern")
def testBanPrivmsg(self):
"""
TODO: this checks the following quote is false:
"If `<target>` is a channel name and the client is [banned](#ban-channel-mode)
and not covered by a [ban exception](#ban-exception-channel-mode), the
message will not be delivered and the command will silently fail."
-- https://modern.ircdocs.horse/#privmsg-message
to check https://github.com/ircdocs/modern-irc/pull/201
"""
self.connectClient("chanop", name="chanop")
self.joinChannel("chanop", "#chan")
self.getMessages("chanop")
self.connectClient("Bar", name="bar")
self.getMessages("bar")
self.sendLine("bar", "JOIN #chan")
self.getMessages("bar")
self.getMessages("chanop")
self.sendLine("chanop", "MODE #chan +b bar!*@*")
self.assertMessageMatch(self.getMessage("chanop"), command="MODE")
self.getMessages("chanop")
self.getMessages("bar")
self.sendLine("bar", "PRIVMSG #chan :hello world")
self.assertMessageMatch(
self.getMessage("bar"),
command=ERR_CANNOTSENDTOCHAN,
params=["Bar", "#chan", ANYSTR],
)
self.assertEqual(self.getMessages("bar"), [])
self.assertEqual(self.getMessages("chanop"), [])
self.sendLine("chanop", "MODE #chan -b bar!*@*")
self.assertMessageMatch(self.getMessage("chanop"), command="MODE")
self.getMessages("chanop")
self.getMessages("bar")
self.sendLine("bar", "PRIVMSG #chan :hello again")
self.assertEqual(self.getMessages("bar"), [])
self.assertMessageMatch(
self.getMessage("chanop"),
command="PRIVMSG",
params=["#chan", "hello again"],
)
@cases.mark_specifications("Modern") @cases.mark_specifications("Modern")
def testBanList(self): def testBanList(self):
"""`RPL_BANLIST <https://modern.ircdocs.horse/#rplbanlist-367>`_""" """`RPL_BANLIST <https://modern.ircdocs.horse/#rplbanlist-367>`_"""

View File

@ -71,34 +71,22 @@ class ChannelOperatorModeTestCase(cases.BaseServerTestCase):
self.assertLessEqual(commands, {ERR_NOSUCHNICK, ERR_USERNOTINCHANNEL}) self.assertLessEqual(commands, {ERR_NOSUCHNICK, ERR_USERNOTINCHANNEL})
@cases.mark_specifications("Modern") @cases.mark_specifications("Modern")
@cases.xfailIf(
lambda self: bool(
self.controller.software_name == "UnrealIRCd"
and self.controller.software_version == 5
),
"UnrealIRCd <6.1.7 returns ERR_NOSUCHNICK on non-existent channel",
)
def testChannelOperatorModeChannelDoesNotExist(self): def testChannelOperatorModeChannelDoesNotExist(self):
"""Test that +o targeting a nonexistent channel fails as expected. """Test that +o targeting a nonexistent channel fails as expected."""
"If <target> is a channel that does not exist on the network,
# the ERR_NOSUCHCHANNEL (403) numeric is returned."
"""
self.setupNicks() self.setupNicks()
# target channel does not exist, but target nick does: # target channel does not exist, but target nick does:
self.sendLine("chanop", "MODE #nonexistentchan +o chanop") self.sendLine("chanop", "MODE #nonexistentchan +o chanop")
messages = self.getMessages("chanop") messages = self.getMessages("chanop")
self.assertEqual(len(messages), 1) self.assertEqual(len(messages), 1)
self.assertMessageMatch(messages[0], command=ERR_NOSUCHCHANNEL) # Modern: "If <target> is a channel that does not exist on the network,
# the ERR_NOSUCHCHANNEL (403) numeric is returned."
# However, Unreal and ngircd send 401 ERR_NOSUCHNICK here instead:
if self.controller.software_name not in ("UnrealIRCd", "ngIRCd"):
self.assertEqual(messages[0].command, ERR_NOSUCHCHANNEL)
else:
self.assertIn(messages[0].command, [ERR_NOSUCHCHANNEL, ERR_NOSUCHNICK])
@cases.mark_specifications("Modern") @cases.mark_specifications("Modern")
@cases.xfailIf(
lambda self: bool(
self.controller.software_name == "UnrealIRCd"
and self.controller.software_version == 5
),
"UnrealIRCd <6.1.7 returns ERR_NOSUCHNICK on non-existent channel",
)
def testChannelOperatorModeChannelAndTargetDoNotExist(self): def testChannelOperatorModeChannelAndTargetDoNotExist(self):
"""Test that +o targeting a nonexistent channel and nickname """Test that +o targeting a nonexistent channel and nickname
fails as expected.""" fails as expected."""
@ -109,7 +97,7 @@ class ChannelOperatorModeTestCase(cases.BaseServerTestCase):
self.assertEqual(len(messages), 1) self.assertEqual(len(messages), 1)
self.assertIn( self.assertIn(
messages[0].command, messages[0].command,
[ERR_NOSUCHCHANNEL, ERR_NOTONCHANNEL, ERR_USERNOTINCHANNEL], [ERR_NOSUCHCHANNEL, ERR_NOTONCHANNEL, ERR_NOSUCHNICK, ERR_USERNOTINCHANNEL],
) )
@cases.mark_specifications("Modern") @cases.mark_specifications("Modern")

View File

@ -3,13 +3,6 @@ from irctest.numerics import ERR_UNKNOWNCOMMAND, RPL_ENDOFLINKS, RPL_LINKS
from irctest.patma import ANYSTR, StrRe from irctest.patma import ANYSTR, StrRe
def _server_info_regexp(case: cases.BaseServerTestCase) -> str:
if case.controller.software_name == "Sable":
return ".+"
else:
return "test server"
class LinksTestCase(cases.BaseServerTestCase): class LinksTestCase(cases.BaseServerTestCase):
@cases.mark_specifications("RFC1459", "RFC2812", "Modern") @cases.mark_specifications("RFC1459", "RFC2812", "Modern")
def testLinksSingleServer(self): def testLinksSingleServer(self):
@ -63,7 +56,7 @@ class LinksTestCase(cases.BaseServerTestCase):
"nick", "nick",
"My.Little.Server", "My.Little.Server",
"My.Little.Server", "My.Little.Server",
StrRe(f"0 (0042 )?{_server_info_regexp(self)}"), StrRe("0 (0042 )?test server"),
], ],
) )
@ -117,7 +110,7 @@ class ServicesLinksTestCase(cases.BaseServerTestCase):
# This server redacts links # This server redacts links
return return
messages.sort(key=lambda m: tuple(m.params)) messages.sort(key=lambda m: m.params[-1])
self.assertMessageMatch( self.assertMessageMatch(
messages.pop(0), messages.pop(0),
@ -126,7 +119,7 @@ class ServicesLinksTestCase(cases.BaseServerTestCase):
"nick", "nick",
"My.Little.Server", "My.Little.Server",
"My.Little.Server", "My.Little.Server",
StrRe(f"0 (0042 )?{_server_info_regexp(self)}"), StrRe("0 (0042 )?test server"),
], ],
) )
self.assertMessageMatch( self.assertMessageMatch(
@ -134,9 +127,9 @@ class ServicesLinksTestCase(cases.BaseServerTestCase):
command=RPL_LINKS, command=RPL_LINKS,
params=[ params=[
"nick", "nick",
"My.Little.Services", "services.example.org",
"My.Little.Server", "My.Little.Server",
StrRe("[01] .+"), # SID instead of description for Anope... StrRe("1 .+"), # SID instead of description for Anope...
], ],
) )

View File

@ -140,9 +140,9 @@ class TagsTestCase(cases.BaseServerTestCase):
self.joinChannel(1, "#xyz") self.joinChannel(1, "#xyz")
monsterMessage = "@+clientOnlyTagExample=" + "a" * 4096 + " PRIVMSG #xyz hi!" monsterMessage = "@+clientOnlyTagExample=" + "a" * 4096 + " PRIVMSG #xyz hi!"
self.sendLine(1, monsterMessage) self.sendLine(1, monsterMessage)
self.assertEqual(self.getMessages(2), [], "overflowing message was relayed")
replies = self.getMessages(1) replies = self.getMessages(1)
self.assertIn(ERR_INPUTTOOLONG, set(reply.command for reply in replies)) self.assertIn(ERR_INPUTTOOLONG, set(reply.command for reply in replies))
self.assertEqual(self.getMessages(2), [], "overflowing message was relayed")
class LengthLimitTestCase(cases.BaseServerTestCase): class LengthLimitTestCase(cases.BaseServerTestCase):

View File

@ -82,7 +82,7 @@ class SaslTestCase(cases.BaseServerTestCase):
@cases.mark_specifications("IRCv3") @cases.mark_specifications("IRCv3")
@cases.skipUnlessHasMechanism("PLAIN") @cases.skipUnlessHasMechanism("PLAIN")
def testPlainNonAscii(self): def testPlainNonAscii(self):
password = "é" * 30 password = "é" * 100
authstring = base64.b64encode( authstring = base64.b64encode(
b"\x00".join([b"foo", b"foo", password.encode()]) b"\x00".join([b"foo", b"foo", password.encode()])
).decode() ).decode()

View File

@ -221,6 +221,7 @@ class WhoisTestCase(_WhoisTestMixin, cases.BaseServerTestCase):
) )
@cases.mark_specifications("RFC2812") @cases.mark_specifications("RFC2812")
@cases.xfailIfSoftware(["Sable"], "https://github.com/Libera-Chat/sable/issues/101")
def testWhoisMissingUser(self): def testWhoisMissingUser(self):
"""Test WHOIS on a nonexistent nickname.""" """Test WHOIS on a nonexistent nickname."""
self.connectClient("qux", name="qux") self.connectClient("qux", name="qux")

View File

@ -223,9 +223,6 @@ def get_test_job(*, config, test_config, test_id, version_flavor, jobs):
{ {
"name": "Test with pytest", "name": "Test with pytest",
"timeout-minutes": 30, "timeout-minutes": 30,
"env": {
"IRCTEST_DEBUG_LOGS": "${{ runner.debug }}",
},
"run": ( "run": (
f"PYTEST_ARGS='--junit-xml pytest.xml --timeout 300' " f"PYTEST_ARGS='--junit-xml pytest.xml --timeout 300' "
f"PATH=$HOME/.local/bin:$PATH " f"PATH=$HOME/.local/bin:$PATH "

View File

@ -8,13 +8,13 @@ index 317b00e..adfcfcf 100644
dots = 1; dots = 1;
} }
- if (!dots) - if (!dots)
- { - {
- sendto_realops("Invalid hostname for %s, dumping user %s", - sendto_realops("Invalid hostname for %s, dumping user %s",
- sptr->hostip, sptr->name); - sptr->hostip, sptr->name);
- return exit_client(cptr, sptr, &me, "Invalid hostname"); - return exit_client(cptr, sptr, &me, "Invalid hostname");
- } - }
- -
if (bad_dns) if (bad_dns)
{ {
sendto_one(sptr, ":%s NOTICE %s :*** Notice -- You have a bad " sendto_one(sptr, ":%s NOTICE %s :*** Notice -- You have a bad "

View File

@ -97,7 +97,7 @@ software:
name: Bahamut name: Bahamut
repository: DALnet/Bahamut repository: DALnet/Bahamut
refs: refs:
stable: "v2.2.4" stable: "v2.2.1"
release: null release: null
devel: "master" devel: "master"
devel_release: null devel_release: null
@ -136,7 +136,7 @@ software:
pre_deps: pre_deps:
- uses: actions/setup-go@v3 - uses: actions/setup-go@v3
with: with:
go-version: '^1.23.0' go-version: '^1.22.0'
- run: go version - run: go version
separate_build_job: false separate_build_job: false
build_script: | build_script: |
@ -230,7 +230,7 @@ software:
name: ngircd name: ngircd
repository: ngircd/ngircd repository: ngircd/ngircd
refs: refs:
stable: acf8409c60ccc96beed0a1f990c4f9374823c0ce # three months ahead of v27 stable: 3e3f6cbeceefd9357b53b27c2386bb39306ab353 # three years ahead of rel-26.1
release: null release: null
devel: master devel: master
devel_release: null devel_release: null
@ -249,7 +249,7 @@ software:
name: Sable name: Sable
repository: Libera-Chat/sable repository: Libera-Chat/sable
refs: refs:
stable: baed3ef9ac4550dc36a45b758436769e82e8ec58 stable: e9701e5e8d0c4f278ddd61ce7285f4918ecf99e9
release: null release: null
devel: master devel: master
devel_release: null devel_release: null
@ -300,8 +300,8 @@ software:
name: UnrealIRCd 6 name: UnrealIRCd 6
repository: unrealircd/unrealircd repository: unrealircd/unrealircd
refs: refs:
stable: a68625454078641ce984eeb197f7e02b1857ab6c # 6.1.7.1 stable: da3c1c654481a33035b9c703957e1c25d0158259 # 6.0.7
release: a68625454078641ce984eeb197f7e02b1857ab6c # 6.1.7.1 release: da3c1c654481a33035b9c703957e1c25d0158259 # 6.0.7
devel: unreal60_dev devel: unreal60_dev
devel_release: null devel_release: null
path: unrealircd path: unrealircd