3
3
This project aims at testing interoperability of software using the
4
4
IRC protocol, by running them against common test suites.
5
5
6
+ It is also used while editing [ the "Modern" specification] ( https://modern.ircdocs.horse/ )
7
+ to check behavior of a large selection of servers at once.
8
+
6
9
## The big picture
7
10
8
11
This project contains:
9
12
10
- * IRC protocol test cases
11
- * small wrappers around existing software to run tests on them
13
+ * IRC protocol test cases, primarily checking conformance to
14
+ [ the "Modern" specification] ( https://modern.ircdocs.horse/ ) and
15
+ [ IRCv3 extensions] ( https://ircv3.net/irc/ ) , but also
16
+ [ RFC 1459] ( https://datatracker.ietf.org/doc/html/rfc1459 ) and
17
+ [ RFC 2812] ( https://datatracker.ietf.org/doc/html/rfc2812 ) .
18
+ Most of them are for servers but also some for clients.
19
+ Only the client-server protocol is tested; server-server protocols are out of scope.
20
+ * Small wrappers around existing software to run tests on them.
21
+ So far this is restricted to headless software (servers, service packages,
22
+ and clients bots).
12
23
13
24
Wrappers run software in temporary directories, so running ` irctest ` should
14
25
have no side effect.
15
26
27
+ Test results for the latest version of each supported software, and respective logs,
28
+ are [ published daily] ( https://dashboard.irctest.limnoria.net/ ) .
29
+
16
30
## Prerequisites
17
31
18
32
Install irctest and dependencies:
19
33
20
34
```
21
35
sudo apt install faketime # Optional, but greatly speeds up irctest/server_tests/list.py
22
36
cd ~
23
- git clone https://github.com/ProgVal /irctest.git
37
+ git clone https://github.com/progval /irctest.git
24
38
cd irctest
25
39
pip3 install --user -r requirements.txt
26
40
```
@@ -40,18 +54,23 @@ You can usually invoke it with `python3 -m pytest` command; which can often
40
54
be called by the ` pytest ` or ` pytest-3 ` commands (if not, alias them if you
41
55
are planning to use them often).
42
56
57
+ After installing ` pytest-xdist ` , you can also pass ` pytest ` the ` -n 10 ` option
58
+ to run ` 10 ` tests in parallel.
59
+
43
60
The rest of this README assumes ` pytest ` works.
44
61
45
62
## Test selection
46
63
47
64
A major feature of pytest that irctest heavily relies on is test selection.
48
65
Using the ` -k ` option, you can select and deselect tests based on their names
49
- and/or markers (listed in ` pytest.ini ` ).
50
66
For example, you can run ` LUSERS ` -related tests with ` -k lusers ` .
51
- Or only tests based on RFC1459 with ` -k rfc1459 ` .
67
+
68
+ Using the ` -m ` option, you can select and deselect and them based on their markers
69
+ (listed in ` pytest.ini ` ).
70
+ For example, you can run only tests based on RFC1459 with ` -m rfc1459 ` .
52
71
53
72
By default, all tests run; even niche ones. So you probably always want to
54
- use these options: ` -k 'not Ergo and not deprecated and not strict ` .
73
+ use these options: ` -m 'not Ergo and not deprecated and not strict ` .
55
74
This excludes:
56
75
57
76
* ` Ergo ` -specific tests (included as Ergo uses irctest as its official
@@ -63,6 +82,10 @@ This excludes:
63
82
64
83
## Running tests
65
84
85
+ This list is non-exhaustive, see ` workflows.yml ` for software not listed here.
86
+ If software you want to test is not listed their either, please open an issue
87
+ or pull request to add support for it.
88
+
66
89
### Servers
67
90
68
91
#### Ergo:
@@ -89,20 +112,6 @@ make install
89
112
pytest --controller irctest.controllers.solanum -k 'not Ergo and not deprecated and not strict'
90
113
```
91
114
92
- #### Charybdis:
93
-
94
- ```
95
- cd /tmp/
96
- git clone https://github.com/atheme/charybdis.git
97
- cd charybdis
98
- ./autogen.sh
99
- ./configure --prefix=$HOME/.local/
100
- make -j 4
101
- make install
102
- cd ~/irctest
103
- pytest --controller irctest.controllers.charybdis -k 'not Ergo and not deprecated and not strict'
104
- ```
105
-
106
115
#### InspIRCd:
107
116
108
117
```
@@ -123,14 +132,6 @@ cd ~/irctest
123
132
pytest --controller irctest.controllers.inspircd -k 'not Ergo and not deprecated and not strict'
124
133
```
125
134
126
- #### Mammon:
127
-
128
- ```
129
- pip3 install --user git+https://github.com/mammon-ircd/mammon.git
130
- cd ~/irctest
131
- pytest --controller irctest.controllers.mammon -k 'not Ergo and not deprecated and not strict'
132
- ```
133
-
134
135
#### UnrealIRCd:
135
136
136
137
```
@@ -147,8 +148,8 @@ pytest --controller irctest.controllers.unreal -k 'not Ergo and not deprecated a
147
148
148
149
### Servers with services
149
150
150
- Besides Ergo (that has built-in services), most server controllers can optionally run
151
- service packages.
151
+ Besides Ergo (that has built-in services) and Sable (that ships its own services),
152
+ most server controllers can optionally run service packages.
152
153
153
154
#### Atheme:
154
155
0 commit comments