- 提升 go.mod 基线到 Go 1.20,并补齐对应测试 - 修正 Passwd / PasswdResponseSignal 语义,Ctrl+C 默认退出当前流程 - 优化 raw terminal redraw、Restore 与 StopUntil 的边界行为 - 新增 StarPipe、FrameReader/FrameWriter、ReadFullContext/WriteFullContext/CopyContext、IsTerminal/ReadPasswordContext - 收口 StarQueue / StarBuffer 语义,删除 EndWrite,统一 Close / Abort 行为 - 补齐 signal、timeout、queue、terminal、pipe、buffer 的回归测试与 race 覆盖
51 lines
1.3 KiB
Go
51 lines
1.3 KiB
Go
package stario
|
|
|
|
import (
|
|
"errors"
|
|
"testing"
|
|
)
|
|
|
|
func TestSignalErrorForType(t *testing.T) {
|
|
cases := []struct {
|
|
name string
|
|
sig rune
|
|
msg string
|
|
want error
|
|
}{
|
|
{name: "interrupt", sig: 0x03, msg: "SIGNAL SIGINT RECIVED", want: ErrSignalInterrupt},
|
|
{name: "stop", sig: 0x1a, msg: "SIGNAL SIGSTOP RECIVED", want: ErrSignalStop},
|
|
{name: "quit", sig: 0x1c, msg: "SIGNAL SIGQUIT RECIVED", want: ErrSignalQuit},
|
|
}
|
|
for _, tc := range cases {
|
|
err := signalErrorForType(tc.sig)
|
|
if err == nil {
|
|
t.Fatalf("%s: expected non-nil error", tc.name)
|
|
}
|
|
if err.Error() != tc.msg {
|
|
t.Fatalf("%s: unexpected error text: got %q want %q", tc.name, err.Error(), tc.msg)
|
|
}
|
|
if !errors.Is(err, tc.want) {
|
|
t.Fatalf("%s: errors.Is mismatch: got %v want %v", tc.name, err, tc.want)
|
|
}
|
|
}
|
|
}
|
|
|
|
func TestSignalErrorForUnknownType(t *testing.T) {
|
|
if err := signalErrorForType('x'); err != nil {
|
|
t.Fatalf("expected nil error for unknown signal, got %v", err)
|
|
}
|
|
}
|
|
|
|
func TestSignalReturnsTypedError(t *testing.T) {
|
|
err := signal(0x03)
|
|
if !errors.Is(err, ErrSignalInterrupt) {
|
|
t.Fatalf("expected interrupt error, got %v", err)
|
|
}
|
|
}
|
|
|
|
func TestSignalReturnsNilForUnknownType(t *testing.T) {
|
|
if err := signal('x'); err != nil {
|
|
t.Fatalf("expected nil error for unknown signal, got %v", err)
|
|
}
|
|
}
|