summaryrefslogtreecommitdiff
path: root/pkg/signal/signal_common_test.go
diff options
context:
space:
mode:
authorBrent Baude <bbaude@redhat.com>2022-04-25 14:48:39 -0500
committerBrent Baude <bbaude@redhat.com>2022-04-25 14:48:39 -0500
commitecd245d8fdfd9f611bd23cebf93c2c23914e5653 (patch)
treee9b0ce975fd7f402c55baa6a953017d448611bf7 /pkg/signal/signal_common_test.go
parent6984a0f35704204fa15374aa2c133c4e6e0b366f (diff)
downloadpodman-ecd245d8fdfd9f611bd23cebf93c2c23914e5653.tar.gz
podman-ecd245d8fdfd9f611bd23cebf93c2c23914e5653.tar.bz2
podman-ecd245d8fdfd9f611bd23cebf93c2c23914e5653.zip
Unit tests for pkg/specgenutil pkg/signal
Add some lightweight unit tests to the arsenal. Signed-off-by: Brent Baude <bbaude@redhat.com>
Diffstat (limited to 'pkg/signal/signal_common_test.go')
-rw-r--r--pkg/signal/signal_common_test.go120
1 files changed, 120 insertions, 0 deletions
diff --git a/pkg/signal/signal_common_test.go b/pkg/signal/signal_common_test.go
new file mode 100644
index 000000000..c4ae6b389
--- /dev/null
+++ b/pkg/signal/signal_common_test.go
@@ -0,0 +1,120 @@
+package signal
+
+import (
+ "syscall"
+ "testing"
+)
+
+func TestParseSignal(t *testing.T) {
+ type args struct {
+ rawSignal string
+ }
+ tests := []struct {
+ name string
+ args args
+ want syscall.Signal
+ wantErr bool
+ }{
+ {
+ name: "KILL to SIGKILL",
+ args: args{
+ rawSignal: "KILL",
+ },
+ want: syscall.SIGKILL,
+ wantErr: false,
+ },
+ {
+ name: "Case doesnt matter",
+ args: args{
+ rawSignal: "kIlL",
+ },
+ want: syscall.SIGKILL,
+ wantErr: false,
+ },
+ {
+ name: "Garbage signal",
+ args: args{
+ rawSignal: "FOO",
+ },
+ want: -1,
+ wantErr: true,
+ },
+ {
+ name: "Signal with prepended SIG",
+ args: args{
+ rawSignal: "SIGKILL",
+ },
+ want: syscall.SIGKILL,
+ wantErr: false,
+ },
+ }
+ for _, tt := range tests {
+ t.Run(tt.name, func(t *testing.T) {
+ got, err := ParseSignal(tt.args.rawSignal)
+ if (err != nil) != tt.wantErr {
+ t.Errorf("ParseSignal() error = %v, wantErr %v", err, tt.wantErr)
+ return
+ }
+ if got != tt.want {
+ t.Errorf("ParseSignal() got = %v, want %v", got, tt.want)
+ }
+ })
+ }
+}
+
+func TestParseSignalNameOrNumber(t *testing.T) {
+ type args struct {
+ rawSignal string
+ }
+ tests := []struct {
+ name string
+ args args
+ want syscall.Signal
+ wantErr bool
+ }{
+ {
+ name: "Kill should work",
+ args: args{
+ rawSignal: "kill",
+ },
+ want: syscall.SIGKILL,
+ wantErr: false,
+ },
+ {
+ name: "9 for kill should work",
+ args: args{
+ rawSignal: "9",
+ },
+ want: syscall.SIGKILL,
+ wantErr: false,
+ },
+ {
+ name: "Non-defined signal number should work",
+ args: args{
+ rawSignal: "923",
+ },
+ want: 923,
+ wantErr: false,
+ },
+ {
+ name: "garbage should fail",
+ args: args{
+ rawSignal: "foo",
+ },
+ want: -1,
+ wantErr: true,
+ },
+ }
+ for _, tt := range tests {
+ t.Run(tt.name, func(t *testing.T) {
+ got, err := ParseSignalNameOrNumber(tt.args.rawSignal)
+ if (err != nil) != tt.wantErr {
+ t.Errorf("ParseSignalNameOrNumber() error = %v, wantErr %v", err, tt.wantErr)
+ return
+ }
+ if got != tt.want {
+ t.Errorf("ParseSignalNameOrNumber() got = %v, want %v", got, tt.want)
+ }
+ })
+ }
+}