mirror of
https://github.com/rclone/rclone.git
synced 2024-12-05 07:20:35 +08:00
42 lines
782 B
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)
|
||
|
}
|