rclone/lib/atexit/atexit_test.go

42 lines
782 B
Go

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