~emersion/#1451079

success

contrib: print network address when name is unset

d371461145 — Simon Ser

Owner
~emersion
Created
a month ago
Updated
a month ago
Build manifest
view manifest »

Tasks

view log »
build view log »
setup-postgresql view log »
test view log »
gofmt view log »
go to bottom »
go to top »
setup
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
[#1451079] 2025/03/16 23:38:17 Booting image alpine/latest (default) on port 22938
[#1451079] 2025/03/16 23:38:17 Waiting for guest to settle
[#1451079] 2025/03/16 23:38:26 Sending tasks
[#1451079] 2025/03/16 23:38:28 Sending build environment
[#1451079] 2025/03/16 23:38:28 Installing packages
Warning: Permanently added '[localhost]:22938' (ED25519) to the list of known hosts.
fetch http://dl-cdn.alpinelinux.org/alpine/v3.21/main/x86_64/APKINDEX.tar.gz
fetch http://dl-cdn.alpinelinux.org/alpine/v3.21/community/x86_64/APKINDEX.tar.gz
(1/1) Upgrading libexpat (2.6.4-r0 -> 2.7.0-r0)
OK: 451 MiB in 137 packages
Warning: Permanently added '[localhost]:22938' (ED25519) to the list of known hosts.
(1/12) Installing go (1.23.7-r0)
(2/12) Installing postgresql-common (1.2-r1)
Executing postgresql-common-1.2-r1.pre-install
(3/12) Installing lz4-libs (1.10.0-r0)
(4/12) Installing libpq (17.4-r0)
(5/12) Installing postgresql17-client (17.4-r0)
(6/12) Installing icu-data-en (74.2-r0)
Executing icu-data-en-74.2-r0.post-install
(7/12) Installing icu-libs (74.2-r0)
*
* If you need ICU with non-English locales and legacy charset support, install
* package icu-data-full.
*
(8/12) Installing libxml2 (2.13.4-r5)
(9/12) Installing postgresql17 (17.4-r0)
Executing postgresql17-17.4-r0.post-install
(10/12) Installing postgresql-common-openrc (1.2-r1)
(11/12) Installing postgresql17-openrc (17.4-r0)
(12/12) Installing scdoc (1.11.3-r0)
Executing busybox-1.37.0-r12.trigger
*
* If you want to use JIT in PostgreSQL, install postgresql17-jit or
* postgresql-jit (if you didn't install specific major version of postgresql).
*
Executing postgresql-common-1.2-r1.trigger
* Setting postgresql17 as the default version
OK: 661 MiB in 149 packages
[#1451079] 2025/03/16 23:38:31 Cloning repositories
Cloning into 'soju'...
+ cd soju
+ git checkout -q d371461145dd7a2a9dd28c36a219d12063f064df
+ cd soju
+ git submodule update --init --recursive
[#1451079] 2025/03/16 23:38:32 Running task build
[#1451079] 2025/03/16 23:39:20 Running task setup-postgresql
[#1451079] 2025/03/16 23:39:21 Running task test
[#1451079] 2025/03/16 23:39:26 Running task gofmt
build
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
+ cd soju
+ go build -v ./...
go: downloading github.com/pires/go-proxyproto v0.8.0
go: downloading github.com/prometheus/client_golang v1.20.5
go: downloading gopkg.in/irc.v4 v4.0.0
go: downloading golang.org/x/crypto v0.32.0
go: downloading codeberg.org/emersion/go-scfg v0.1.0
go: downloading github.com/SherClockHolmes/webpush-go v1.4.0
go: downloading github.com/coder/websocket v1.8.12
go: downloading github.com/emersion/go-sasl v0.0.0-20241020182733-b788ff22d5a6
go: downloading golang.org/x/time v0.10.0
go: downloading git.sr.ht/~emersion/go-sqlite3-fts5 v0.0.0-20240124102820-f3a72e8b79b1
go: downloading github.com/lib/pq v1.10.9
go: downloading github.com/mattn/go-sqlite3 v1.14.24
go: downloading git.sr.ht/~sircmpwn/go-bare v0.0.0-20210406120253-ab86bc2846d9
go: downloading github.com/beorn7/perks v1.0.1
go: downloading github.com/cespare/xxhash/v2 v2.3.0
go: downloading github.com/prometheus/client_model v0.6.1
go: downloading github.com/prometheus/common v0.59.1
go: downloading github.com/prometheus/procfs v0.15.1
go: downloading google.golang.org/protobuf v1.34.2
go: downloading github.com/klauspost/compress v1.17.9
go: downloading golang.org/x/term v0.29.0
go: downloading github.com/golang-jwt/jwt/v5 v5.2.1
go: downloading github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822
go: downloading golang.org/x/sys v0.30.0
internal/unsafeheader
internal/goarch
internal/cpu
internal/abi
internal/bytealg
internal/byteorder
internal/chacha8rand
internal/coverage/rtcov
internal/godebugs
internal/goexperiment
internal/goos
internal/profilerecord
internal/runtime/atomic
internal/runtime/syscall
internal/stringslite
internal/runtime/exithook
runtime/internal/math
runtime/internal/sys
internal/race
sync/atomic
runtime
unicode
unicode/utf8
math/bits
math
internal/itoa
cmp
internal/asan
internal/msan
crypto/internal/alias
crypto/subtle
crypto/internal/boring/sig
container/list
unicode/utf16
vendor/golang.org/x/crypto/cryptobyte/asn1
vendor/golang.org/x/crypto/internal/alias
internal/nettrace
github.com/lib/pq/oid
encoding
log/internal
google.golang.org/protobuf/internal/flags
google.golang.org/protobuf/internal/set
github.com/coder/websocket/internal/util
github.com/klauspost/compress
github.com/klauspost/compress/internal/cpuinfo
internal/reflectlite
sync
iter
errors
slices
internal/bisect
io
strconv
bytes
internal/oserror
path
internal/godebug
reflect
syscall
time
encoding/binary
internal/fmtsort
io/fs
encoding/base64
internal/filepathlite
internal/syscall/unix
internal/syscall/execenv
internal/testlog
internal/poll
strings
bufio
os
context
sort
regexp/syntax
fmt
regexp
golang.org/x/time/rate
database/sql/driver
math/rand/v2
database/sql
gopkg.in/irc.v4
codeberg.org/emersion/soju/xirc
embed
runtime/cgo
hash
crypto
crypto/cipher
crypto/internal/boring
crypto/sha1
crypto/sha256
crypto/sha512
net/url
crypto/md5
crypto/aes
crypto/des
crypto/internal/edwards25519/field
crypto/internal/nistec/fiat
git.sr.ht/~emersion/go-sqlite3-fts5/internal
github.com/mattn/go-sqlite3
crypto/internal/nistec
crypto/internal/randutil
crypto/ecdh
math/rand
math/big
crypto/elliptic
crypto/internal/bigmod
crypto/internal/boring/bbig
encoding/asn1
vendor/golang.org/x/crypto/cryptobyte
crypto/ecdsa
crypto/internal/edwards25519
crypto/rand
crypto/ed25519
crypto/hmac
vendor/golang.org/x/crypto/chacha20
vendor/golang.org/x/crypto/internal/poly1305
vendor/golang.org/x/sys/cpu
vendor/golang.org/x/crypto/chacha20poly1305
vendor/golang.org/x/crypto/hkdf
crypto/internal/hpke
vendor/golang.org/x/crypto/sha3
crypto/internal/mlkem768
crypto/rc4
crypto/rsa
crypto/dsa
encoding/hex
crypto/x509/pkix
encoding/pem
vendor/golang.org/x/net/dns/dnsmessage
internal/singleflight
internal/concurrent
internal/weak
unique
net/netip
net
path/filepath
crypto/x509
crypto/tls
github.com/lib/pq/scram
io/ioutil
os/user
github.com/lib/pq
encoding/json
log
compress/flate
hash/crc32
compress/gzip
vendor/golang.org/x/text/transform
vendor/golang.org/x/text/unicode/bidi
vendor/golang.org/x/text/secure/bidirule
vendor/golang.org/x/text/unicode/norm
vendor/golang.org/x/net/idna
net/textproto
vendor/golang.org/x/net/http/httpguts
vendor/golang.org/x/net/http/httpproxy
vendor/golang.org/x/net/http2/hpack
maps
mime
mime/quotedprintable
mime/multipart
net/http/httptrace
net/http/internal
net/http/internal/ascii
net/http
expvar
github.com/beorn7/perks/quantile
github.com/cespare/xxhash/v2
hash/fnv
google.golang.org/protobuf/internal/detrand
google.golang.org/protobuf/internal/errors
google.golang.org/protobuf/encoding/protowire
google.golang.org/protobuf/internal/pragma
google.golang.org/protobuf/reflect/protoreflect
google.golang.org/protobuf/internal/descfmt
google.golang.org/protobuf/internal/descopts
google.golang.org/protobuf/internal/editiondefaults
go/token
google.golang.org/protobuf/internal/strs
google.golang.org/protobuf/internal/encoding/text
google.golang.org/protobuf/internal/encoding/defval
google.golang.org/protobuf/internal/encoding/messageset
google.golang.org/protobuf/internal/genid
google.golang.org/protobuf/internal/order
google.golang.org/protobuf/reflect/protoregistry
google.golang.org/protobuf/runtime/protoiface
google.golang.org/protobuf/proto
google.golang.org/protobuf/internal/filedesc
google.golang.org/protobuf/encoding/prototext
google.golang.org/protobuf/internal/encoding/tag
google.golang.org/protobuf/internal/impl
google.golang.org/protobuf/internal/filetype
google.golang.org/protobuf/internal/version
google.golang.org/protobuf/runtime/protoimpl
google.golang.org/protobuf/types/known/timestamppb
github.com/prometheus/client_model/go
github.com/prometheus/common/model
runtime/metrics
github.com/prometheus/client_golang/prometheus/internal
github.com/munnerz/goautoneg
google.golang.org/protobuf/encoding/protodelim
github.com/prometheus/common/expfmt
github.com/prometheus/procfs/internal/fs
github.com/prometheus/procfs/internal/util
golang.org/x/sys/unix
github.com/prometheus/procfs
runtime/debug
github.com/prometheus/client_golang/prometheus
github.com/prometheus/client_golang/prometheus/collectors
golang.org/x/crypto/blowfish
golang.org/x/crypto/bcrypt
codeberg.org/emersion/go-scfg
codeberg.org/emersion/soju/config
codeberg.org/emersion/soju/identd
git.sr.ht/~sircmpwn/go-bare
flag
github.com/golang-jwt/jwt/v5
golang.org/x/crypto/hkdf
github.com/SherClockHolmes/webpush-go
github.com/coder/websocket/internal/errd
github.com/coder/websocket/internal/xsync
github.com/coder/websocket
github.com/emersion/go-sasl
github.com/prometheus/client_golang/prometheus/promauto
github.com/pires/go-proxyproto
github.com/klauspost/compress/fse
github.com/klauspost/compress/huff0
github.com/klauspost/compress/internal/snapref
github.com/klauspost/compress/zstd/internal/xxhash
github.com/klauspost/compress/zstd
github.com/prometheus/client_golang/internal/github.com/golang/gddo/httputil/header
github.com/prometheus/client_golang/internal/github.com/golang/gddo/httputil
github.com/prometheus/client_golang/prometheus/promhttp
html
internal/profile
text/tabwriter
runtime/pprof
runtime/trace
net/http/pprof
os/signal
codeberg.org/emersion/soju/cmd/sojuctl
golang.org/x/term
golang.org/x/crypto/ssh/terminal
git.sr.ht/~emersion/go-sqlite3-fts5
codeberg.org/emersion/soju/database
codeberg.org/emersion/soju/auth
codeberg.org/emersion/soju/msgstore/znclog
codeberg.org/emersion/soju/msgstore
codeberg.org/emersion/soju/fileupload
codeberg.org/emersion/soju/cmd/sojudb
codeberg.org/emersion/soju
codeberg.org/emersion/soju/cmd/soju
codeberg.org/emersion/soju/contrib/migrate-db
codeberg.org/emersion/soju/contrib/migrate-logs
codeberg.org/emersion/soju/contrib/znc-import
+ scdoc
setup-postgresql
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
+ sudo /etc/init.d/postgresql start
 * Caching service dependencies ... [ ok ]
 * Creating a new PostgreSQL 17 database cluster ...The files belonging to this database system will be owned by user "postgres".
This user must also own the server process.

Using language tag "en-001-x-icu" for ICU locale "en-001-x-icu".
The database cluster will be initialized with this locale configuration:
  locale provider:   icu
  default collation: en-001-x-icu
  LC_COLLATE:  C
  LC_CTYPE:    C.UTF-8
  LC_MESSAGES: C
  LC_MONETARY: C
  LC_NUMERIC:  C
  LC_TIME:     C
The default text search configuration will be set to "english".

Data page checksums are enabled.

fixing permissions on existing directory /var/lib/postgresql/17/data ... ok
creating subdirectories ... ok
selecting dynamic shared memory implementation ... posix
selecting default "max_connections" ... 100
selecting default "shared_buffers" ... 128MB
selecting default time zone ... UTC
creating configuration files ... ok
running bootstrap script ... ok
performing post-bootstrap initialization ... ok
syncing data to disk ... ok


Success.

initdb: warning: enabling "trust" authentication for local connections
initdb: hint: You can change this by editing pg_hba.conf or using the option -A, or --auth-local and --auth-host, the next time you run initdb.
 [ ok ]
 * /run/postgresql: creating directory
 * /run/postgresql: correcting owner
 * Starting PostgreSQL 17 ... [ ok ]
+ sudo -u postgres -- createuser build
+ sudo -u postgres -- createdb soju
test
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
+ cd soju
+ export 'SOJU_TEST_POSTGRES=host=/run/postgresql dbname=soju'
+ SOJU_TEST_POSTGRES='host=/run/postgresql dbname=soju'
+ go test -v ./...
?   	codeberg.org/emersion/soju/auth	[no test files]
?   	codeberg.org/emersion/soju/cmd/soju	[no test files]
=== RUN   TestIsHighlight
=== RUN   TestIsHighlight/noContains
=== RUN   TestIsHighlight/standalone
=== RUN   TestIsHighlight/middle
=== RUN   TestIsHighlight/start
=== RUN   TestIsHighlight/end
=== RUN   TestIsHighlight/inWord
=== RUN   TestIsHighlight/startWord
=== RUN   TestIsHighlight/endWord
=== RUN   TestIsHighlight/underscore
=== RUN   TestIsHighlight/zeroWidthSpace
=== RUN   TestIsHighlight/url
=== RUN   TestIsHighlight/startURL
=== RUN   TestIsHighlight/endURL
=== RUN   TestIsHighlight/parenthesizedURL
=== RUN   TestIsHighlight/afterURL
--- PASS: TestIsHighlight (0.00s)
    --- PASS: TestIsHighlight/noContains (0.00s)
    --- PASS: TestIsHighlight/standalone (0.00s)
    --- PASS: TestIsHighlight/middle (0.00s)
    --- PASS: TestIsHighlight/start (0.00s)
    --- PASS: TestIsHighlight/end (0.00s)
    --- PASS: TestIsHighlight/inWord (0.00s)
    --- PASS: TestIsHighlight/startWord (0.00s)
    --- PASS: TestIsHighlight/endWord (0.00s)
    --- PASS: TestIsHighlight/underscore (0.00s)
    --- PASS: TestIsHighlight/zeroWidthSpace (0.00s)
    --- PASS: TestIsHighlight/url (0.00s)
    --- PASS: TestIsHighlight/startURL (0.00s)
    --- PASS: TestIsHighlight/endURL (0.00s)
    --- PASS: TestIsHighlight/parenthesizedURL (0.00s)
    --- PASS: TestIsHighlight/afterURL (0.00s)
=== RUN   TestServer_broadcast
=== RUN   TestServer_broadcast/sqlite
    server_test.go:29: generating Web push VAPID key pair
    server_test.go:29: starting bouncer for user "soju-test-user"
    server_test.go:29: user "soju-test-user": upstream "testnet": connecting to plain-text server at address "127.0.0.1:43831"
    server_test.go:29: user "soju-test-user": upstream "testnet": new connection
    server_test.go:29: user "soju-test-user": upstream "testnet": sent: CAP LS 302
    server_test.go:29: user "soju-test-user": upstream "testnet": sent: NICK soju-test-user
    server_test.go:29: user "soju-test-user": upstream "testnet": sent: USER soju-test-user 0 * soju-test-user
    server_test.go:29: downstream "pipe": new connection
    server_test.go:29: downstream "pipe": received: PASS soju-test-user
    server_test.go:29: downstream "pipe": received: NICK soju-test-user
    server_test.go:29: downstream "pipe": received: USER soju-test-user/testnet 0 * soju-test-user
    server_test.go:29: user "soju-test-user": upstream "testnet": received: :soju-test-server 001 soju-test-user Welcome!
    server_test.go:29: user "soju-test-user": upstream "testnet": connection registered with nick "soju-test-user"
    server_test.go:29: user "soju-test-user": upstream "testnet": received: :soju-test-server 002 soju-test-user :Your host is soju-test-server
    server_test.go:29: user "soju-test-user": upstream "testnet": received: :soju-test-server 003 soju-test-user :Who cares when the server was created?
    server_test.go:29: user "soju-test-user": upstream "testnet": received: :soju-test-server 004 soju-test-user soju-test-server soju aiwroO OovaimnqpsrtklbeI
    server_test.go:29: user "soju-test-user": upstream "testnet": received: :soju-test-server 422 soju-test-user :No MOTD
    server_test.go:29: user "soju-test-user": upstream "testnet": sent: AWAY :Auto away
    server_test.go:29: downstream "pipe": registration complete for user "soju-test-user"
    server_test.go:29: user "soju-test-user": downstream "pipe": sent: :localhost 001 soju-test-user :Welcome to soju, soju-test-user
    server_test.go:29: user "soju-test-user": downstream "pipe": sent: :localhost 002 soju-test-user :Your host is localhost
    server_test.go:29: user "soju-test-user": downstream "pipe": sent: :localhost 004 soju-test-user localhost soju aiwroO OovaimnqpsrtklbeI
    server_test.go:29: user "soju-test-user": downstream "pipe": sent: :localhost 005 * soju.im/SAFERATE BOUNCER_NETID=1 CLIENTTAGDENY=* :are supported
    server_test.go:29: user "soju-test-user": downstream "pipe": sent: :localhost 221 soju-test-user +
    server_test.go:29: user "soju-test-user": downstream "pipe": sent: :localhost 422 soju-test-user :Use /motd to read the message of the day
    server_test.go:29: user "soju-test-user": upstream "testnet": sent: AWAY
    server_test.go:29: user "soju-test-user": upstream "testnet": received: :soju-test-server NOTICE soju-test-user :This is a very important server notice.
    server_test.go:29: user "soju-test-user": downstream "pipe": sent: :soju-test-server NOTICE soju-test-user :This is a very important server notice.
    server_test.go:29: shutting down server
    server_test.go:29: waiting for users to finish
    server_test.go:29: user "soju-test-user": downstream "pipe": connection closed
    server_test.go:29: user "soju-test-user": network "testnet": connection error to "irc+insecure://127.0.0.1:43831": failed to handle messages: failed to read IRC command: read tcp 127.0.0.1:53006->127.0.0.1:43831: read: connection reset by peer
    server_test.go:29: user "soju-test-user": upstream "testnet": connection closed
=== RUN   TestServer_broadcast/postgres
    server_test.go:29: generating Web push VAPID key pair
    server_test.go:29: starting bouncer for user "soju-test-user"
    server_test.go:29: user "soju-test-user": upstream "testnet": connecting to plain-text server at address "127.0.0.1:46451"
    server_test.go:29: user "soju-test-user": upstream "testnet": new connection
    server_test.go:29: user "soju-test-user": upstream "testnet": sent: CAP LS 302
    server_test.go:29: user "soju-test-user": upstream "testnet": sent: NICK soju-test-user
    server_test.go:29: user "soju-test-user": upstream "testnet": sent: USER soju-test-user 0 * soju-test-user
    server_test.go:29: user "soju-test-user": upstream "testnet": received: :soju-test-server 001 soju-test-user Welcome!
    server_test.go:29: user "soju-test-user": upstream "testnet": connection registered with nick "soju-test-user"
    server_test.go:29: user "soju-test-user": upstream "testnet": received: :soju-test-server 002 soju-test-user :Your host is soju-test-server
    server_test.go:29: user "soju-test-user": upstream "testnet": received: :soju-test-server 003 soju-test-user :Who cares when the server was created?
    server_test.go:29: user "soju-test-user": upstream "testnet": received: :soju-test-server 004 soju-test-user soju-test-server soju aiwroO OovaimnqpsrtklbeI
    server_test.go:29: user "soju-test-user": upstream "testnet": received: :soju-test-server 422 soju-test-user :No MOTD
    server_test.go:29: downstream "pipe": new connection
    server_test.go:29: downstream "pipe": received: PASS soju-test-user
    server_test.go:29: user "soju-test-user": upstream "testnet": sent: AWAY :Auto away
    server_test.go:29: downstream "pipe": received: NICK soju-test-user
    server_test.go:29: downstream "pipe": received: USER soju-test-user/testnet 0 * soju-test-user
    server_test.go:29: downstream "pipe": registration complete for user "soju-test-user"
    server_test.go:29: user "soju-test-user": downstream "pipe": sent: :localhost 001 soju-test-user :Welcome to soju, soju-test-user
    server_test.go:29: user "soju-test-user": downstream "pipe": sent: :localhost 002 soju-test-user :Your host is localhost
    server_test.go:29: user "soju-test-user": downstream "pipe": sent: :localhost 004 soju-test-user localhost soju aiwroO OovaimnqpsrtklbeI
    server_test.go:29: user "soju-test-user": downstream "pipe": sent: :localhost 005 * soju.im/SAFERATE BOUNCER_NETID=1 CLIENTTAGDENY=* :are supported
    server_test.go:29: user "soju-test-user": downstream "pipe": sent: :localhost 221 soju-test-user +
    server_test.go:29: user "soju-test-user": downstream "pipe": sent: :localhost 422 soju-test-user :Use /motd to read the message of the day
    server_test.go:29: user "soju-test-user": upstream "testnet": sent: AWAY
    server_test.go:29: user "soju-test-user": upstream "testnet": received: :soju-test-server NOTICE soju-test-user :This is a very important server notice.
    server_test.go:29: user "soju-test-user": downstream "pipe": sent: :soju-test-server NOTICE soju-test-user :This is a very important server notice.
    server_test.go:29: shutting down server
    server_test.go:29: waiting for users to finish
    server_test.go:29: user "soju-test-user": downstream "pipe": connection closed
    server_test.go:29: user "soju-test-user": network "testnet": connection error to "irc+insecure://127.0.0.1:46451": failed to handle messages: failed to read IRC command: read tcp 127.0.0.1:57282->127.0.0.1:46451: read: connection reset by peer
    server_test.go:29: user "soju-test-user": upstream "testnet": connection closed
--- PASS: TestServer_broadcast (0.27s)
    --- PASS: TestServer_broadcast/sqlite (0.12s)
    --- PASS: TestServer_broadcast/postgres (0.14s)
=== RUN   TestServer_chatHistory
=== RUN   TestServer_chatHistory/fs
    server_test.go:29: generating Web push VAPID key pair
    server_test.go:29: starting bouncer for user "soju-test-user"
    server_test.go:29: user "soju-test-user": upstream "testnet": connecting to plain-text server at address "127.0.0.1:33257"
    server_test.go:29: user "soju-test-user": upstream "testnet": new connection
    server_test.go:29: user "soju-test-user": upstream "testnet": sent: CAP LS 302
    server_test.go:29: user "soju-test-user": upstream "testnet": sent: NICK soju-test-user
    server_test.go:29: user "soju-test-user": upstream "testnet": sent: USER soju-test-user 0 * soju-test-user
    server_test.go:29: user "soju-test-user": upstream "testnet": received: :soju-test-server 001 soju-test-user Welcome!
    server_test.go:29: user "soju-test-user": upstream "testnet": connection registered with nick "soju-test-user"
    server_test.go:29: user "soju-test-user": upstream "testnet": received: :soju-test-server 002 soju-test-user :Your host is soju-test-server
    server_test.go:29: user "soju-test-user": upstream "testnet": received: :soju-test-server 003 soju-test-user :Who cares when the server was created?
    server_test.go:29: user "soju-test-user": upstream "testnet": received: :soju-test-server 004 soju-test-user soju-test-server soju aiwroO OovaimnqpsrtklbeI
    server_test.go:29: user "soju-test-user": upstream "testnet": received: :soju-test-server 422 soju-test-user :No MOTD
    server_test.go:29: user "soju-test-user": upstream "testnet": received: @time=2023-05-23T06:00:00.000Z :foo PRIVMSG soju-test-user Hiya!
    server_test.go:29: user "soju-test-user": upstream "testnet": received: @time=2023-05-23T06:00:01.000Z :foo PRIVMSG soju-test-user :How are you doing?
    server_test.go:29: user "soju-test-user": upstream "testnet": received: @time=2023-05-23T06:00:02.000Z :foo PRIVMSG soju-test-user :Can I take a sip from your glass of soju?
    server_test.go:29: user "soju-test-user": upstream "testnet": received: PING roundtrip
    server_test.go:29: user "soju-test-user": upstream "testnet": sent: AWAY :Auto away
    server_test.go:29: user "soju-test-user": upstream "testnet": sent: PONG roundtrip
    server_test.go:29: downstream "pipe": new connection
    server_test.go:29: downstream "pipe": received: PASS soju-test-user
    server_test.go:29: downstream "pipe": received: NICK soju-test-user
    server_test.go:29: downstream "pipe": received: USER soju-test-user/testnet 0 * soju-test-user
    server_test.go:29: downstream "pipe": registration complete for user "soju-test-user"
    server_test.go:29: user "soju-test-user": downstream "pipe": sent: :localhost 001 soju-test-user :Welcome to soju, soju-test-user
    server_test.go:29: user "soju-test-user": downstream "pipe": received: PING roundtrip
    server_test.go:29: user "soju-test-user": downstream "pipe": sent: :localhost 002 soju-test-user :Your host is localhost
    server_test.go:29: user "soju-test-user": downstream "pipe": sent: :localhost 004 soju-test-user localhost soju aiwroO OovaimnqpsrtklbeI
    server_test.go:29: user "soju-test-user": downstream "pipe": sent: :localhost 005 * soju.im/SAFERATE BOUNCER_NETID=1 CHATHISTORY=1000 MSGREFTYPES=timestamp CLIENTTAGDENY=* :are supported
    server_test.go:29: user "soju-test-user": downstream "pipe": sent: :localhost 221 soju-test-user +
    server_test.go:29: user "soju-test-user": downstream "pipe": sent: :localhost 422 soju-test-user :Use /motd to read the message of the day
    server_test.go:29: user "soju-test-user": upstream "testnet": sent: AWAY
    server_test.go:29: user "soju-test-user": downstream "pipe": sent: :localhost PONG localhost roundtrip
=== RUN   TestServer_chatHistory/fs/all
=== NAME  TestServer_chatHistory/fs
    server_test.go:29: user "soju-test-user": downstream "pipe": received: CHATHISTORY AFTER foo timestamp=2023-05-23T05:59:59.000Z 100
    server_test.go:29: user "soju-test-user": downstream "pipe": received: PING roundtrip
    server_test.go:29: user "soju-test-user": downstream "pipe": sent: :foo PRIVMSG soju-test-user Hiya!
    server_test.go:29: user "soju-test-user": downstream "pipe": sent: :foo PRIVMSG soju-test-user :How are you doing?
    server_test.go:29: user "soju-test-user": downstream "pipe": sent: :foo PRIVMSG soju-test-user :Can I take a sip from your glass of soju?
    server_test.go:29: user "soju-test-user": downstream "pipe": sent: :localhost PONG localhost roundtrip
=== RUN   TestServer_chatHistory/fs/none
=== NAME  TestServer_chatHistory/fs
    server_test.go:29: user "soju-test-user": downstream "pipe": received: CHATHISTORY AFTER foo timestamp=2023-05-23T06:00:02.000Z 100
    server_test.go:29: user "soju-test-user": downstream "pipe": received: PING roundtrip
    server_test.go:29: user "soju-test-user": downstream "pipe": sent: :localhost PONG localhost roundtrip
=== RUN   TestServer_chatHistory/fs/all_but_first
=== NAME  TestServer_chatHistory/fs
    server_test.go:29: user "soju-test-user": downstream "pipe": received: CHATHISTORY AFTER foo timestamp=2023-05-23T06:00:00.000Z 100
    server_test.go:29: user "soju-test-user": downstream "pipe": received: PING roundtrip
    server_test.go:29: user "soju-test-user": downstream "pipe": sent: :foo PRIVMSG soju-test-user :How are you doing?
    server_test.go:29: user "soju-test-user": downstream "pipe": sent: :foo PRIVMSG soju-test-user :Can I take a sip from your glass of soju?
    server_test.go:29: user "soju-test-user": downstream "pipe": sent: :localhost PONG localhost roundtrip
    server_test.go:29: shutting down server
    server_test.go:29: waiting for users to finish
    server_test.go:29: user "soju-test-user": downstream "pipe": connection closed
    server_test.go:29: user "soju-test-user": network "testnet": connection error to "irc+insecure://127.0.0.1:33257": failed to handle messages: failed to read IRC command: read tcp 127.0.0.1:44466->127.0.0.1:33257: read: connection reset by peer
    server_test.go:29: user "soju-test-user": upstream "testnet": connection closed
=== RUN   TestServer_chatHistory/db
    server_test.go:29: generating Web push VAPID key pair
    server_test.go:29: starting bouncer for user "soju-test-user"
    server_test.go:29: user "soju-test-user": upstream "testnet": connecting to plain-text server at address "127.0.0.1:37371"
    server_test.go:29: user "soju-test-user": upstream "testnet": new connection
    server_test.go:29: user "soju-test-user": upstream "testnet": sent: CAP LS 302
    server_test.go:29: user "soju-test-user": upstream "testnet": sent: NICK soju-test-user
    server_test.go:29: user "soju-test-user": upstream "testnet": sent: USER soju-test-user 0 * soju-test-user
    server_test.go:29: user "soju-test-user": upstream "testnet": received: :soju-test-server 001 soju-test-user Welcome!
    server_test.go:29: user "soju-test-user": upstream "testnet": connection registered with nick "soju-test-user"
    server_test.go:29: user "soju-test-user": upstream "testnet": received: :soju-test-server 002 soju-test-user :Your host is soju-test-server
    server_test.go:29: user "soju-test-user": upstream "testnet": received: :soju-test-server 003 soju-test-user :Who cares when the server was created?
    server_test.go:29: user "soju-test-user": upstream "testnet": received: :soju-test-server 004 soju-test-user soju-test-server soju aiwroO OovaimnqpsrtklbeI
    server_test.go:29: user "soju-test-user": upstream "testnet": received: :soju-test-server 422 soju-test-user :No MOTD
    server_test.go:29: user "soju-test-user": upstream "testnet": received: @time=2023-05-23T06:00:00.000Z :foo PRIVMSG soju-test-user Hiya!
    server_test.go:29: user "soju-test-user": upstream "testnet": received: @time=2023-05-23T06:00:01.000Z :foo PRIVMSG soju-test-user :How are you doing?
    server_test.go:29: user "soju-test-user": upstream "testnet": received: @time=2023-05-23T06:00:02.000Z :foo PRIVMSG soju-test-user :Can I take a sip from your glass of soju?
    server_test.go:29: user "soju-test-user": upstream "testnet": received: PING roundtrip
    server_test.go:29: user "soju-test-user": upstream "testnet": sent: AWAY :Auto away
    server_test.go:29: user "soju-test-user": upstream "testnet": sent: PONG roundtrip
    server_test.go:29: downstream "pipe": new connection
    server_test.go:29: downstream "pipe": received: PASS soju-test-user
    server_test.go:29: downstream "pipe": received: NICK soju-test-user
    server_test.go:29: downstream "pipe": received: USER soju-test-user/testnet 0 * soju-test-user
    server_test.go:29: downstream "pipe": registration complete for user "soju-test-user"
    server_test.go:29: user "soju-test-user": downstream "pipe": sent: :localhost 001 soju-test-user :Welcome to soju, soju-test-user
    server_test.go:29: user "soju-test-user": downstream "pipe": received: PING roundtrip
    server_test.go:29: user "soju-test-user": upstream "testnet": sent: AWAY
    server_test.go:29: user "soju-test-user": downstream "pipe": sent: :localhost 002 soju-test-user :Your host is localhost
    server_test.go:29: user "soju-test-user": downstream "pipe": sent: :localhost 004 soju-test-user localhost soju aiwroO OovaimnqpsrtklbeI
    server_test.go:29: user "soju-test-user": downstream "pipe": sent: :localhost 005 * soju.im/SAFERATE BOUNCER_NETID=1 CHATHISTORY=1000 MSGREFTYPES=timestamp CLIENTTAGDENY=* :are supported
    server_test.go:29: user "soju-test-user": downstream "pipe": sent: :localhost 221 soju-test-user +
    server_test.go:29: user "soju-test-user": downstream "pipe": sent: :localhost 422 soju-test-user :Use /motd to read the message of the day
    server_test.go:29: user "soju-test-user": downstream "pipe": sent: :localhost PONG localhost roundtrip
=== RUN   TestServer_chatHistory/db/all
=== NAME  TestServer_chatHistory/db
    server_test.go:29: user "soju-test-user": downstream "pipe": received: CHATHISTORY AFTER foo timestamp=2023-05-23T05:59:59.000Z 100
    server_test.go:29: user "soju-test-user": downstream "pipe": sent: :foo PRIVMSG soju-test-user Hiya!
    server_test.go:29: user "soju-test-user": downstream "pipe": received: PING roundtrip
    server_test.go:29: user "soju-test-user": downstream "pipe": sent: :foo PRIVMSG soju-test-user :How are you doing?
    server_test.go:29: user "soju-test-user": downstream "pipe": sent: :foo PRIVMSG soju-test-user :Can I take a sip from your glass of soju?
    server_test.go:29: user "soju-test-user": downstream "pipe": sent: :localhost PONG localhost roundtrip
=== RUN   TestServer_chatHistory/db/none
=== NAME  TestServer_chatHistory/db
    server_test.go:29: user "soju-test-user": downstream "pipe": received: CHATHISTORY AFTER foo timestamp=2023-05-23T06:00:02.000Z 100
    server_test.go:29: user "soju-test-user": downstream "pipe": received: PING roundtrip
    server_test.go:29: user "soju-test-user": downstream "pipe": sent: :localhost PONG localhost roundtrip
=== RUN   TestServer_chatHistory/db/all_but_first
=== NAME  TestServer_chatHistory/db
    server_test.go:29: user "soju-test-user": downstream "pipe": received: CHATHISTORY AFTER foo timestamp=2023-05-23T06:00:00.000Z 100
    server_test.go:29: user "soju-test-user": downstream "pipe": sent: :foo PRIVMSG soju-test-user :How are you doing?
    server_test.go:29: user "soju-test-user": downstream "pipe": received: PING roundtrip
    server_test.go:29: user "soju-test-user": downstream "pipe": sent: :foo PRIVMSG soju-test-user :Can I take a sip from your glass of soju?
    server_test.go:29: user "soju-test-user": downstream "pipe": sent: :localhost PONG localhost roundtrip
    server_test.go:29: shutting down server
    server_test.go:29: waiting for users to finish
--- PASS: TestServer_chatHistory (0.23s)
    --- PASS: TestServer_chatHistory/fs (0.12s)
        --- PASS: TestServer_chatHistory/fs/all (0.00s)
        --- PASS: TestServer_chatHistory/fs/none (0.00s)
        --- PASS: TestServer_chatHistory/fs/all_but_first (0.00s)
    --- PASS: TestServer_chatHistory/db (0.11s)
        --- PASS: TestServer_chatHistory/db/all (0.00s)
        --- PASS: TestServer_chatHistory/db/none (0.00s)
        --- PASS: TestServer_chatHistory/db/all_but_first (0.00s)
=== RUN   TestSplit
--- PASS: TestSplit (0.00s)
PASS
ok  	codeberg.org/emersion/soju	0.499s
?   	codeberg.org/emersion/soju/cmd/sojuctl	[no test files]
?   	codeberg.org/emersion/soju/cmd/sojudb	[no test files]
?   	codeberg.org/emersion/soju/config	[no test files]
?   	codeberg.org/emersion/soju/contrib/migrate-db	[no test files]
?   	codeberg.org/emersion/soju/contrib/migrate-logs	[no test files]
?   	codeberg.org/emersion/soju/contrib/znc-import	[no test files]
?   	codeberg.org/emersion/soju/fileupload	[no test files]
?   	codeberg.org/emersion/soju/identd	[no test files]
?   	codeberg.org/emersion/soju/msgstore	[no test files]
?   	codeberg.org/emersion/soju/msgstore/znclog	[no test files]
?   	codeberg.org/emersion/soju/xirc	[no test files]
=== RUN   TestPostgresMigrations
--- PASS: TestPostgresMigrations (0.04s)
=== RUN   TestSqliteMigrations
--- PASS: TestSqliteMigrations (0.01s)
PASS
ok  	codeberg.org/emersion/soju/database	0.052s
gofmt
1
2
3
+ cd soju
++ gofmt -l .
+ test -z
Build complete: success a month ago (took a minute)