stario/signal_error_test.go
starainrt c8facb5a03
stario: 提升 Go 1.20 基线与交互/队列稳定性
- 提升 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 覆盖
2026-04-15 14:35:19 +08:00

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)
}
}