From 0c9b459fb1828e913f39d6368eda826968cfdda2 Mon Sep 17 00:00:00 2001 From: Nixevol Date: Wed, 30 Sep 2026 16:34:33 +0800 Subject: [PATCH] =?UTF-8?q?style:=20=E5=90=88=E5=85=A5=E5=90=8E=E4=BF=AE?= =?UTF-8?q?=20gofmt/govet=20=E4=B8=8E=20RegistrationView=20=E7=B1=BB?= =?UTF-8?q?=E5=9E=8B=E6=A3=80=E6=9F=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- cmd/nixmsg/commands_test.go | 4 +-- internal/admin/h03_test.go | 6 ++-- internal/admin/h06_test.go | 6 ++-- internal/admin/handler.go | 5 +-- internal/app/message/ack.go | 6 ++-- internal/app/message/push.go | 14 ++++---- internal/app/message/review_c03_test.go | 14 ++++---- internal/app/message/submit_test.go | 10 +++--- internal/app/message/void_finalize_test.go | 2 +- internal/broker/broker.go | 1 - internal/broker/downlink.go | 5 +-- internal/listener/handshake_test.go | 40 +++++++++++----------- internal/store/migrate_test.go | 4 +-- internal/store/queue_test.go | 14 ++++---- test/load/bench.go | 4 +-- test/load/client.go | 12 +++---- test/load/mqtt_bench_test.go | 4 +-- web/src/views/RegistrationView.spec.ts | 2 +- 18 files changed, 74 insertions(+), 79 deletions(-) diff --git a/cmd/nixmsg/commands_test.go b/cmd/nixmsg/commands_test.go index 94a4147..2b2464c 100644 --- a/cmd/nixmsg/commands_test.go +++ b/cmd/nixmsg/commands_test.go @@ -178,10 +178,10 @@ func TestAdminSetPasswordClearsSessions(t *testing.T) { t.Fatalf("me before set-password status=%d", me.StatusCode) } - if err := cmdAdminSetPassword([]string{"--password", "long-enough-password"}); err != nil { + if setErr := cmdAdminSetPassword([]string{"--password", "long-enough-password"}); setErr != nil { cancel() <-errCh - t.Fatal(err) + t.Fatal(setErr) } me2, err := client.Get(base + "/api/admin/me") diff --git a/internal/admin/h03_test.go b/internal/admin/h03_test.go index d4ebd92..0c6dd67 100644 --- a/internal/admin/h03_test.go +++ b/internal/admin/h03_test.go @@ -4,6 +4,9 @@ import ( "context" "errors" "net/http" + "net/http/cookiejar" + "net/http/httptest" + "path/filepath" "sync" "testing" @@ -11,9 +14,6 @@ import ( "git.asio.asia/nixevol/NixMsg/internal/app/identity" "git.asio.asia/nixevol/NixMsg/internal/auth" "git.asio.asia/nixevol/NixMsg/internal/store" - "net/http/cookiejar" - "net/http/httptest" - "path/filepath" ) type failDisableIdentity struct { diff --git a/internal/admin/h06_test.go b/internal/admin/h06_test.go index 2d16503..3942f3c 100644 --- a/internal/admin/h06_test.go +++ b/internal/admin/h06_test.go @@ -53,11 +53,11 @@ func TestLoginDeletesExpiredAdminSessions(t *testing.T) { }) srv := httptest.NewServer(h) t.Cleanup(srv.Close) - if err := db.Queue.Do(context.Background(), func(tx *sql.Tx) error { + if qerr := db.Queue.Do(context.Background(), func(tx *sql.Tx) error { _, e := tx.Exec(`INSERT INTO admin_sessions(token_hash, created_at, expires_at) VALUES ('expired-hash', 1, 1)`) return e - }); err != nil { - t.Fatal(err) + }); qerr != nil { + t.Fatal(qerr) } jar, err := cookiejar.New(nil) if err != nil { diff --git a/internal/admin/handler.go b/internal/admin/handler.go index 2a181f5..c691fcb 100644 --- a/internal/admin/handler.go +++ b/internal/admin/handler.go @@ -1,7 +1,6 @@ package admin import ( - "errors" "log/slog" "net" "net/http" @@ -148,9 +147,7 @@ func New(d Deps) *Handler { // ServeHTTP 实现 http.Handler。按路由限制请求体大小与读截止时间。 func (h *Handler) ServeHTTP(w http.ResponseWriter, r *http.Request) { limit, readFor := requestBodyBudget(r) - if err := http.NewResponseController(w).SetReadDeadline(time.Now().Add(readFor)); err != nil && !errors.Is(err, http.ErrNotSupported) { - // 测试用 ResponseRecorder 或不支持截止时间的封装:忽略。 - } + _ = http.NewResponseController(w).SetReadDeadline(time.Now().Add(readFor)) if r.Body != nil { r.Body = http.MaxBytesReader(w, r.Body, limit) } diff --git a/internal/app/message/ack.go b/internal/app/message/ack.go index 220ee3e..d6694dd 100644 --- a/internal/app/message/ack.go +++ b/internal/app/message/ack.go @@ -302,9 +302,9 @@ func (a *App) ReceiptAck(ctx context.Context, endpointID string, req *protocol.R } var acked bool err = a.db.Queue.Do(ctx, func(tx *sql.Tx) error { - res, err := tx.Exec(`UPDATE receipts SET acked = 1 WHERE receipt_id = ? AND sender_id = ? AND acked = 0`, rid, endpointID) - if err != nil { - return err + res, execErr := tx.Exec(`UPDATE receipts SET acked = 1 WHERE receipt_id = ? AND sender_id = ? AND acked = 0`, rid, endpointID) + if execErr != nil { + return execErr } aff, _ := res.RowsAffected() acked = aff > 0 diff --git a/internal/app/message/push.go b/internal/app/message/push.go index 1a8881c..b788ac1 100644 --- a/internal/app/message/push.go +++ b/internal/app/message/push.go @@ -191,15 +191,15 @@ LIMIT ?`, endpointID, room) var items []pushItem for rows.Next() { var it pushItem - if err := rows.Scan(&it.seq, &it.sendAt, &it.keep, &it.expireAt, &it.msgID, &it.senderID, &it.destKind, &it.destID, &it.meta, &it.contentType, &it.bodyEnc, &it.body); err != nil { + if scanErr := rows.Scan(&it.seq, &it.sendAt, &it.keep, &it.expireAt, &it.msgID, &it.senderID, &it.destKind, &it.destID, &it.meta, &it.contentType, &it.bodyEnc, &it.body); scanErr != nil { _ = rows.Close() - return err + return scanErr } items = append(items, it) } _ = rows.Close() - if err := rows.Err(); err != nil { - return err + if rowsErr := rows.Err(); rowsErr != nil { + return rowsErr } var toClaim []pushItem @@ -217,9 +217,9 @@ LIMIT ?`, endpointID, room) Meta: decodeMetaJSON(it.meta), SendAtMs: it.sendAt, } - payload, err := protocol.Marshal(msg) - if err != nil { - return err + payload, marshErr := protocol.Marshal(msg) + if marshErr != nil { + return marshErr } limit := effectivePayloadLimit(live.MaxPacketSize, live.MaxReceiveBytes) if limit > 0 && len(payload) > limit { diff --git a/internal/app/message/review_c03_test.go b/internal/app/message/review_c03_test.go index fe32383..bb24d20 100644 --- a/internal/app/message/review_c03_test.go +++ b/internal/app/message/review_c03_test.go @@ -198,14 +198,14 @@ func TestC03WALShrinksAfterPurge(t *testing.T) { ctx := context.Background() nowMs := int64(1_700_000_000_000) err = db.Queue.Do(ctx, func(tx *sql.Tx) error { - if _, err := tx.Exec(`INSERT INTO endpoints(id,name,login_hash,enabled,created_at) VALUES('alice','a','x',1,?)`, nowMs); err != nil { - return err + if _, insErr := tx.Exec(`INSERT INTO endpoints(id,name,login_hash,enabled,created_at) VALUES('alice','a','x',1,?)`, nowMs); insErr != nil { + return insErr } for i := 0; i < 200; i++ { - if _, err := tx.Exec(`INSERT INTO messages(id, sender_id, dest_kind, dest_id, meta, content_type, body_enc, send_at, keep, ttl_seconds, receipt, state, reason, created_at) + if _, insErr := tx.Exec(`INSERT INTO messages(id, sender_id, dest_kind, dest_id, meta, content_type, body_enc, send_at, keep, ttl_seconds, receipt, state, reason, created_at) VALUES(?,?, 'endpoint','bob','{}','text/plain','utf8',?,0,0,0,'completed','',?)`, - "m"+itoa(i), "alice", nowMs-10*24*3600*1000, nowMs-10*24*3600*1000); err != nil { - return err + "m"+itoa(i), "alice", nowMs-10*24*3600*1000, nowMs-10*24*3600*1000); insErr != nil { + return insErr } } return nil @@ -217,8 +217,8 @@ VALUES(?,?, 'endpoint','bob','{}','text/plain','utf8',?,0,0,0,'completed','',?)` before, _ := os.Stat(walPath) app := New(db, Limits{RecordRetentionDays: 1, ReceiptRetentionDays: 1, IdempotencyHours: 1}, nil) app.nowFn = func() time.Time { return time.UnixMilli(nowMs) } - if err := app.PurgeOnce(ctx, nowMs); err != nil { - t.Fatal(err) + if purgeErr := app.PurgeOnce(ctx, nowMs); purgeErr != nil { + t.Fatal(purgeErr) } after, err := os.Stat(walPath) if err == nil && before != nil && after.Size() > before.Size() { diff --git a/internal/app/message/submit_test.go b/internal/app/message/submit_test.go index d726679..0aa696a 100644 --- a/internal/app/message/submit_test.go +++ b/internal/app/message/submit_test.go @@ -508,7 +508,9 @@ WHERE m.id='late-1' AND d.endpoint_id='bob'`).Scan(&bobN); err != nil { app, db := openTestApp(t, lim) insertEndpoint(t, db, "alice", "", 1, 0) insertEndpoint(t, db, "bob", "", 1, 0) - if !app.AllowRequest("alice") || !app.AllowRequest("alice") { + first := app.AllowRequest("alice") + second := app.AllowRequest("alice") + if !first || !second { t.Fatal("burst should allow first two") } if app.AllowRequest("alice") { @@ -544,9 +546,9 @@ func TestU03SubmitTalkLockNoIP(t *testing.T) { for i := 0; i < 10; i++ { bad := baseSend(fmt.Sprintf("w%d", i), "bob") bad.TalkPassword = "wrong" - _, err := app.Submit(ctx, "alice", port.ConnInfo{RemoteIP: fmt.Sprintf("10.0.0.%d", i+1)}, bad) - if protoCode(err) != protocol.CodeTalkPasswordInvalid { - t.Fatalf("i=%d got %v", i, err) + _, subErr := app.Submit(ctx, "alice", port.ConnInfo{RemoteIP: fmt.Sprintf("10.0.0.%d", i+1)}, bad) + if protoCode(subErr) != protocol.CodeTalkPasswordInvalid { + t.Fatalf("i=%d got %v", i, subErr) } } empty := baseSend("empty", "bob") diff --git a/internal/app/message/void_finalize_test.go b/internal/app/message/void_finalize_test.go index 5be2a6c..5ab9b30 100644 --- a/internal/app/message/void_finalize_test.go +++ b/internal/app/message/void_finalize_test.go @@ -142,4 +142,4 @@ VALUES(?,?,?,0,'accepted','',?)`, seq, "bob", nowMs, nowMs) if n != 1 { t.Fatalf("recently completed message should remain, n=%d", n) } -} \ No newline at end of file +} diff --git a/internal/broker/broker.go b/internal/broker/broker.go index 1474d69..7530eab 100644 --- a/internal/broker/broker.go +++ b/internal/broker/broker.go @@ -127,7 +127,6 @@ type connState struct { maxPacketSize uint32 maxRecvBytes int authOK bool - authErr error sessionToken string handshook bool subscribedDown bool diff --git a/internal/broker/downlink.go b/internal/broker/downlink.go index 5d31ca6..3c5d2d5 100644 --- a/internal/broker/downlink.go +++ b/internal/broker/downlink.go @@ -132,10 +132,7 @@ func (st *connState) sendOne(b *Broker, item downItem) { topic := downTopic(st.endpointID) before := st.sentPub.Load() var err error - for { - if b.closed.Load() { - break - } + for !b.closed.Load() { select { case <-st.downStop: err = ErrNoConnection diff --git a/internal/listener/handshake_test.go b/internal/listener/handshake_test.go index b961a1e..a3502c9 100644 --- a/internal/listener/handshake_test.go +++ b/internal/listener/handshake_test.go @@ -33,8 +33,8 @@ func startPlain(t *testing.T, opts Options) *Server { } ctx, cancel := context.WithCancel(context.Background()) t.Cleanup(cancel) - if err := s.Start(ctx); err != nil { - t.Fatal(err) + if startErr := s.Start(ctx); startErr != nil { + t.Fatal(startErr) } t.Cleanup(func() { _ = s.Close() }) return s @@ -62,8 +62,8 @@ func TestTLSHandshakeTimeout(t *testing.T) { } ctx, cancel := context.WithCancel(context.Background()) defer cancel() - if err := s.Start(ctx); err != nil { - t.Fatal(err) + if startErr := s.Start(ctx); startErr != nil { + t.Fatal(startErr) } defer func() { _ = s.Close() }() @@ -72,8 +72,8 @@ func TestTLSHandshakeTimeout(t *testing.T) { t.Fatal(err) } defer func() { _ = c.Close() }() - if _, err := c.Write([]byte{0x16}); err != nil { - t.Fatal(err) + if _, werr := c.Write([]byte{0x16}); werr != nil { + t.Fatal(werr) } start := time.Now() _ = c.SetReadDeadline(time.Now().Add(2 * time.Second)) @@ -101,8 +101,8 @@ func TestMQTTConnectHeaderTimeout(t *testing.T) { t.Fatal(err) } defer func() { _ = c.Close() }() - if _, err := c.Write([]byte{0x10}); err != nil { - t.Fatal(err) + if _, werr := c.Write([]byte{0x10}); werr != nil { + t.Fatal(werr) } start := time.Now() _ = c.SetReadDeadline(time.Now().Add(2 * time.Second)) @@ -134,8 +134,8 @@ func TestMQTTConnectRemainingTooLarge(t *testing.T) { t.Fatal(err) } defer func() { _ = c.Close() }() - if _, err := c.Write([]byte{0x10, 0xFF, 0xFF, 0x2F}); err != nil { - t.Fatal(err) + if _, werr := c.Write([]byte{0x10, 0xFF, 0xFF, 0x2F}); werr != nil { + t.Fatal(werr) } _ = c.SetReadDeadline(time.Now().Add(2 * time.Second)) buf := make([]byte, 1) @@ -157,8 +157,8 @@ func TestHTTPIdleTimeoutCloses(t *testing.T) { t.Fatal(err) } defer func() { _ = c.Close() }() - if _, err := c.Write([]byte("GET /healthz HTTP/1.1\r\nHost: x\r\n\r\n")); err != nil { - t.Fatal(err) + if _, werr := c.Write([]byte("GET /healthz HTTP/1.1\r\nHost: x\r\n\r\n")); werr != nil { + t.Fatal(werr) } _ = c.SetReadDeadline(time.Now().Add(2 * time.Second)) buf := make([]byte, 4096) @@ -192,8 +192,8 @@ func TestPreHandshakeLimitDropsNewConn(t *testing.T) { } ctx, cancel := context.WithCancel(context.Background()) defer cancel() - if err := s.Start(ctx); err != nil { - t.Fatal(err) + if startErr := s.Start(ctx); startErr != nil { + t.Fatal(startErr) } defer func() { _ = s.Close() }() @@ -202,8 +202,8 @@ func TestPreHandshakeLimitDropsNewConn(t *testing.T) { t.Fatal(err) } defer func() { _ = c1.Close() }() - if _, err := c1.Write([]byte{0x16}); err != nil { - t.Fatal(err) + if _, werr := c1.Write([]byte{0x16}); werr != nil { + t.Fatal(werr) } deadline := time.Now().Add(time.Second) for time.Now().Before(deadline) { @@ -256,8 +256,8 @@ func TestHTTPRequestTLSState(t *testing.T) { } ctx, cancel := context.WithCancel(context.Background()) defer cancel() - if err := s.Start(ctx); err != nil { - t.Fatal(err) + if startErr := s.Start(ctx); startErr != nil { + t.Fatal(startErr) } defer func() { _ = s.Close() }() cl := &http.Client{ @@ -324,8 +324,8 @@ func TestTLSSessionResume(t *testing.T) { } ctx, cancel := context.WithCancel(context.Background()) defer cancel() - if err := s.Start(ctx); err != nil { - t.Fatal(err) + if startErr := s.Start(ctx); startErr != nil { + t.Fatal(startErr) } defer func() { _ = s.Close() }() diff --git a/internal/store/migrate_test.go b/internal/store/migrate_test.go index f26d6b6..5e66f70 100644 --- a/internal/store/migrate_test.go +++ b/internal/store/migrate_test.go @@ -28,7 +28,7 @@ func TestFailingMigrationReusesBackup(t *testing.T) { name: "9999_fail.sql", body: "THIS IS NOT VALID SQL", }} - if err := applyPending(w, dir, true, pending); err == nil { + if applyErr := applyPending(w, dir, true, pending); applyErr == nil { t.Fatal("expected first failing migration to error") } backupDir := filepath.Join(dir, "backup") @@ -40,7 +40,7 @@ func TestFailingMigrationReusesBackup(t *testing.T) { t.Fatalf("first backups=%v", dirNames(first)) } - if err := applyPending(w, dir, true, pending); err == nil { + if applyErr := applyPending(w, dir, true, pending); applyErr == nil { t.Fatal("expected second failing migration to error") } second, err := os.ReadDir(backupDir) diff --git a/internal/store/queue_test.go b/internal/store/queue_test.go index e371999..d51cb26 100644 --- a/internal/store/queue_test.go +++ b/internal/store/queue_test.go @@ -208,8 +208,8 @@ ON CONFLICT(key) DO UPDATE SET value = excluded.value, updated_at = excluded.upd }() } time.Sleep(2 * time.Millisecond) - if err := db.Queue.Close(); err != nil { - t.Fatal(err) + if closeErr := db.Queue.Close(); closeErr != nil { + t.Fatal(closeErr) } wg.Wait() @@ -232,21 +232,21 @@ func TestQueueCheckpointTruncatesWAL(t *testing.T) { payload := strings.Repeat("x", 4096) for i := 0; i < 300; i++ { i := i - if err := db.Queue.Do(ctx, func(tx *sql.Tx) error { + if doErr := db.Queue.Do(ctx, func(tx *sql.Tx) error { _, e := tx.Exec( `INSERT INTO settings(key, value, updated_at) VALUES(?, ?, ?)`, fmt.Sprintf("wal_%d", i), payload, time.Now().UnixMilli(), ) return e - }); err != nil { - t.Fatal(err) + }); doErr != nil { + t.Fatal(doErr) } } walPath := filepath.Join(dir, DBFileName+"-wal") before, statErr := os.Stat(walPath) - if err := db.Checkpoint(ctx); err != nil { - t.Fatal(err) + if cpErr := db.Checkpoint(ctx); cpErr != nil { + t.Fatal(cpErr) } if statErr != nil { return diff --git a/test/load/bench.go b/test/load/bench.go index 9e2ed79..5154a51 100644 --- a/test/load/bench.go +++ b/test/load/bench.go @@ -91,8 +91,8 @@ func Run(cfg Config) (*Report, error) { if err != nil { return nil, err } - if err := Provision(cfg, ids); err != nil { - return nil, err + if provErr := Provision(cfg, ids); provErr != nil { + return nil, provErr } clients, err := ConnectAll(cfg, ids) if err != nil { diff --git a/test/load/client.go b/test/load/client.go index 05ee3f2..621f7a3 100644 --- a/test/load/client.go +++ b/test/load/client.go @@ -80,8 +80,8 @@ func (c *Client) connectSubscribeHello(password string, timeout time.Duration) e if err != nil { return err } - if err := c.mc.Send(pkt); err != nil { - return fmt.Errorf("%s CONNECT: %w", c.ID, err) + if sendErr := c.mc.Send(pkt); sendErr != nil { + return fmt.Errorf("%s CONNECT: %w", c.ID, sendErr) } ack, err := c.mc.Recv() if err != nil { @@ -99,11 +99,11 @@ func (c *Client) connectSubscribeHello(password string, timeout time.Duration) e if err != nil { return err } - if err := c.mc.Send(sub); err != nil { - return fmt.Errorf("%s SUBSCRIBE: %w", c.ID, err) + if sendErr := c.mc.Send(sub); sendErr != nil { + return fmt.Errorf("%s SUBSCRIBE: %w", c.ID, sendErr) } - if _, err := c.mc.Recv(); err != nil { - return fmt.Errorf("%s SUBACK: %w", c.ID, err) + if _, recvErr := c.mc.Recv(); recvErr != nil { + return fmt.Errorf("%s SUBACK: %w", c.ID, recvErr) } hello := protocol.Hello{V: protocol.Version, Type: protocol.TypeHello, RID: "h0", Client: "mqttbench/0.1"} diff --git a/test/load/mqtt_bench_test.go b/test/load/mqtt_bench_test.go index 0dd5fc7..1cab2d7 100644 --- a/test/load/mqtt_bench_test.go +++ b/test/load/mqtt_bench_test.go @@ -108,8 +108,8 @@ func TestMQTT5ConnectFakeBroker(t *testing.T) { if err != nil { t.Fatal(err) } - if err := mc.Send(pkt); err != nil { - t.Fatal(err) + if sendErr := mc.Send(pkt); sendErr != nil { + t.Fatal(sendErr) } ack, err := mc.Recv() if err != nil { diff --git a/web/src/views/RegistrationView.spec.ts b/web/src/views/RegistrationView.spec.ts index 6e436b0..1f492b8 100644 --- a/web/src/views/RegistrationView.spec.ts +++ b/web/src/views/RegistrationView.spec.ts @@ -46,7 +46,7 @@ describe("RegistrationView", () => { attachTo: document.body, }); await flushPromises(); - expect(w.get('[data-testid="reg-enabled"]').exists()).toBe(true); + expect(w.find('[data-testid="reg-enabled"]').exists()).toBe(true); expect(w.find('[data-testid="reg-code-missing"]').exists()).toBe(false); w.unmount(); });