mirror of
https://github.com/samuelncui/acp.git
synced 2026-07-23 16:02:18 +00:00
52 lines
1.2 KiB
Go
52 lines
1.2 KiB
Go
package acp
|
|
|
|
import (
|
|
"errors"
|
|
"syscall"
|
|
"testing"
|
|
|
|
"github.com/davecgh/go-spew/spew"
|
|
"github.com/modern-go/reflect2"
|
|
"github.com/sirupsen/logrus"
|
|
)
|
|
|
|
func TestErrorJSONMarshal(t *testing.T) {
|
|
m := map[string]error{}
|
|
m["test"] = syscall.EROFS
|
|
|
|
var innerNilErr *Error
|
|
m["test-nil"] = innerNilErr
|
|
|
|
var err error
|
|
logrus.Infof("get error type %s", spew.Sdump(reflect2.TypeOfPtr(&err).Elem()))
|
|
|
|
buf, _ := reportJSON.Marshal(m)
|
|
logrus.Infof("get json %s", buf)
|
|
}
|
|
|
|
func TestReportJSONErrorRoundTrip(t *testing.T) {
|
|
const message = "copy 100% failed"
|
|
want := &Report{
|
|
Jobs: []*Job{{
|
|
FailTargets: map[string]error{"dst": errors.New(message)},
|
|
}},
|
|
Errors: []*Error{{Src: "src", Dst: "dst", Err: errors.New(message)}},
|
|
}
|
|
|
|
buf, err := reportJSON.Marshal(want)
|
|
if err != nil {
|
|
t.Fatalf("marshal report: %v", err)
|
|
}
|
|
|
|
var got Report
|
|
if err := reportJSON.Unmarshal(buf, &got); err != nil {
|
|
t.Fatalf("unmarshal report: %v", err)
|
|
}
|
|
if len(got.Errors) != 1 || got.Errors[0].Err.Error() != message {
|
|
t.Fatalf("report errors = %+v", got.Errors)
|
|
}
|
|
if len(got.Jobs) != 1 || got.Jobs[0].FailTargets["dst"].Error() != message {
|
|
t.Fatalf("fail targets = %+v", got.Jobs)
|
|
}
|
|
}
|