38 lines
826 B
Go
38 lines
826 B
Go
|
package zfs
|
||
|
|
||
|
import (
|
||
|
"errors"
|
||
|
"fmt"
|
||
|
"testing"
|
||
|
)
|
||
|
|
||
|
func TestError(t *testing.T) {
|
||
|
var tests = []struct {
|
||
|
err error
|
||
|
debug string
|
||
|
stderr string
|
||
|
}{
|
||
|
// Empty error
|
||
|
{nil, "", ""},
|
||
|
// Typical error
|
||
|
{errors.New("exit status foo"), "/sbin/foo bar qux", "command not found"},
|
||
|
// Quoted error
|
||
|
{errors.New("exit status quoted"), "\"/sbin/foo\" bar qux", "\"some\" 'random' `quotes`"},
|
||
|
}
|
||
|
|
||
|
for _, test := range tests {
|
||
|
// Generate error from tests
|
||
|
zErr := Error{
|
||
|
Err: test.err,
|
||
|
Debug: test.debug,
|
||
|
Stderr: test.stderr,
|
||
|
}
|
||
|
|
||
|
// Verify output format is consistent, so that any changes to the
|
||
|
// Error method must be reflected by the test
|
||
|
if str := zErr.Error(); str != fmt.Sprintf("%s: %q => %s", test.err, test.debug, test.stderr) {
|
||
|
t.Fatalf("unexpected Error string: %v", str)
|
||
|
}
|
||
|
}
|
||
|
}
|