podman
1package signal
2
3import (
4"syscall"
5"testing"
6)
7
8func TestParseSignal(t *testing.T) {
9type args struct {
10rawSignal string
11}
12tests := []struct {
13name string
14args args
15want syscall.Signal
16wantErr bool
17}{
18{
19name: "KILL to SIGKILL",
20args: args{
21rawSignal: "KILL",
22},
23want: syscall.SIGKILL,
24wantErr: false,
25},
26{
27name: "Case does not matter",
28args: args{
29rawSignal: "kIlL",
30},
31want: syscall.SIGKILL,
32wantErr: false,
33},
34{
35name: "Garbage signal",
36args: args{
37rawSignal: "FOO",
38},
39want: -1,
40wantErr: true,
41},
42{
43name: "Signal with prepended SIG",
44args: args{
45rawSignal: "SIGKILL",
46},
47want: syscall.SIGKILL,
48wantErr: false,
49},
50}
51for _, tt := range tests {
52t.Run(tt.name, func(t *testing.T) {
53got, err := ParseSignal(tt.args.rawSignal)
54if (err != nil) != tt.wantErr {
55t.Errorf("ParseSignal() error = %v, wantErr %v", err, tt.wantErr)
56return
57}
58if got != tt.want {
59t.Errorf("ParseSignal() got = %v, want %v", got, tt.want)
60}
61})
62}
63}
64
65func TestParseSignalNameOrNumber(t *testing.T) {
66type args struct {
67rawSignal string
68}
69tests := []struct {
70name string
71args args
72want syscall.Signal
73wantErr bool
74}{
75{
76name: "Kill should work",
77args: args{
78rawSignal: "kill",
79},
80want: syscall.SIGKILL,
81wantErr: false,
82},
83{
84name: "9 for kill should work",
85args: args{
86rawSignal: "9",
87},
88want: syscall.SIGKILL,
89wantErr: false,
90},
91{
92name: "Non-defined signal number should work",
93args: args{
94rawSignal: "923",
95},
96want: 923,
97wantErr: false,
98},
99{
100name: "garbage should fail",
101args: args{
102rawSignal: "foo",
103},
104want: -1,
105wantErr: true,
106},
107}
108for _, tt := range tests {
109t.Run(tt.name, func(t *testing.T) {
110got, err := ParseSignalNameOrNumber(tt.args.rawSignal)
111if (err != nil) != tt.wantErr {
112t.Errorf("ParseSignalNameOrNumber() error = %v, wantErr %v", err, tt.wantErr)
113return
114}
115if got != tt.want {
116t.Errorf("ParseSignalNameOrNumber() got = %v, want %v", got, tt.want)
117}
118})
119}
120}
121
122func TestParseSysSignalToName(t *testing.T) {
123type args struct {
124signal syscall.Signal
125}
126tests := []struct {
127name string
128args args
129want string
130wantErr bool
131}{
132{
133name: "Kill should work",
134args: args{
135signal: syscall.SIGKILL,
136},
137want: "KILL",
138wantErr: false,
139},
140{
141name: "Non-defined signal number should not work",
142args: args{
143signal: 923,
144},
145want: "",
146wantErr: true,
147},
148{
149name: "garbage should fail",
150args: args{
151signal: -1,
152},
153want: "",
154wantErr: true,
155},
156}
157for _, tt := range tests {
158t.Run(tt.name, func(t *testing.T) {
159got, err := ParseSysSignalToName(tt.args.signal)
160if (err != nil) != tt.wantErr {
161t.Errorf("ParseSysSignalToName() error = %v, wantErr %v", err, tt.wantErr)
162return
163}
164if got != tt.want {
165t.Errorf("ParseSysSignalToName() got = %v, want %v", got, tt.want)
166}
167})
168}
169}
170