package atexit import ( "os" "runtime" "testing" "github.com/rclone/rclone/lib/exitcode" "github.com/stretchr/testify/assert" ) type fakeSignal struct{} func (*fakeSignal) String() string { return "fake" } func (*fakeSignal) Signal() { } var _ os.Signal = (*fakeSignal)(nil) func TestExitCode(t *testing.T) { switch runtime.GOOS { case "windows", "plan9": for _, i := range []os.Signal{ os.Interrupt, os.Kill, } { assert.Equal(t, exitCode(i), exitcode.UncategorizedError) } default: // SIGINT (2) and SIGKILL (9) are portable numbers specified by POSIX. assert.Equal(t, exitCode(os.Interrupt), 128+2) assert.Equal(t, exitCode(os.Kill), 128+9) } // Never a real signal assert.Equal(t, exitCode(&fakeSignal{}), exitcode.UncategorizedError) }