summaryrefslogtreecommitdiffstats
path: root/vendor/github.com/mattermost/rsc/imap/mail_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/github.com/mattermost/rsc/imap/mail_test.go')
-rw-r--r--vendor/github.com/mattermost/rsc/imap/mail_test.go335
1 files changed, 335 insertions, 0 deletions
diff --git a/vendor/github.com/mattermost/rsc/imap/mail_test.go b/vendor/github.com/mattermost/rsc/imap/mail_test.go
new file mode 100644
index 000000000..3c1aec860
--- /dev/null
+++ b/vendor/github.com/mattermost/rsc/imap/mail_test.go
@@ -0,0 +1,335 @@
+package imap
+
+import "testing"
+
+var shortTextTests = []struct {
+ in, out string
+}{
+ {
+ in: `From: Brad Fitzpatrick <bradfitz@golang.org>
+Date: Tue Oct 18 18:23:11 EDT 2011
+To: r@golang.org, golang-dev@googlegroups.com, reply@codereview.appspotmail.com
+Subject: Re: [golang-dev] code review 5307043: rpc: don't panic on write error. (issue 5307043)
+
+Here's a test:
+
+bradfitz@gopher:~/go/src/pkg/rpc$ hg diff
+diff -r b7f9a5e9b87f src/pkg/rpc/server_test.go
+--- a/src/pkg/rpc/server_test.go Tue Oct 18 17:01:42 2011 -0500
++++ b/src/pkg/rpc/server_test.go Tue Oct 18 15:22:19 2011 -0700
+@@ -467,6 +467,27 @@
+ fmt.Printf("mallocs per HTTP rpc round trip: %d\n",
+countMallocs(dialHTTP, t))
+ }
+
++type writeCrasher struct{}
++
++func (writeCrasher) Close() os.Error {
++ return nil
++}
++
++func (writeCrasher) Read(p []byte) (int, os.Error) {
++ return 0, os.EOF
++}
++
++func (writeCrasher) Write(p []byte) (int, os.Error) {
++ return 0, os.NewError("fake write failure")
++}
++
++func TestClientWriteError(t *testing.T) {
++ c := NewClient(writeCrasher{})
++ res := false
++ c.Call("foo", 1, &res)
++}
++
+ func benchmarkEndToEnd(dial func() (*Client, os.Error), b *testing.B) {
+ b.StopTimer()
+ once.Do(startServer)
+
+
+On Tue, Oct 18, 2011 at 3:12 PM, <r@golang.org> wrote:
+
+> Reviewers: golang-dev_googlegroups.com,
+>
+> Message:
+> Hello golang-dev@googlegroups.com,
+>
+> I'd like you to review this change to
+> https://go.googlecode.com/hg/
+>
+>
+> Description:
+> rpc: don't panic on write error.
+> The mechanism to record the error in the call is already in place.
+> Fixes issue 2382.
+>
+> Please review this at http://codereview.appspot.com/**5307043/<http://codereview.appspot.com/5307043/>
+>
+> Affected files:
+> M src/pkg/rpc/client.go
+>
+>
+> Index: src/pkg/rpc/client.go
+> ==============================**==============================**=======
+> --- a/src/pkg/rpc/client.go
+> +++ b/src/pkg/rpc/client.go
+> @@ -85,7 +85,8 @@
+> client.request.Seq = c.seq
+> client.request.ServiceMethod = c.ServiceMethod
+> if err := client.codec.WriteRequest(&**client.request, c.Args); err
+> != nil {
+> - panic("rpc: client encode error: " + err.String())
+> + c.Error = err
+> + c.done()
+> }
+> }
+>
+> @@ -251,10 +252,10 @@
+> // the same Call object. If done is nil, Go will allocate a new channel.
+> // If non-nil, done must be buffered or Go will deliberately crash.
+> func (client *Client) Go(serviceMethod string, args interface{}, reply
+> interface{}, done chan *Call) *Call {
+> - c := new(Call)
+> - c.ServiceMethod = serviceMethod
+> - c.Args = args
+> - c.Reply = reply
+> + call := new(Call)
+> + call.ServiceMethod = serviceMethod
+> + call.Args = args
+> + call.Reply = reply
+> if done == nil {
+> done = make(chan *Call, 10) // buffered.
+> } else {
+> @@ -266,14 +267,14 @@
+> log.Panic("rpc: done channel is unbuffered")
+> }
+> }
+> - c.Done = done
+> + call.Done = done
+> if client.shutdown {
+> - c.Error = ErrShutdown
+> - c.done()
+> - return c
+> + call.Error = ErrShutdown
+> + call.done()
+> + return call
+> }
+> - client.send(c)
+> - return c
+> + client.send(call)
+> + return call
+> }
+>
+> // Call invokes the named function, waits for it to complete, and returns
+> its error status.
+>
+>
+>
+
+`,
+ out: `From: Brad Fitzpatrick <bradfitz@golang.org>
+Date: Tue Oct 18 18:23:11 EDT 2011
+To: r@golang.org, golang-dev@googlegroups.com, reply@codereview.appspotmail.com
+Subject: Re: [golang-dev] code review 5307043: rpc: don't panic on write error. (issue 5307043)
+
+Here's a test:
+
+bradfitz@gopher:~/go/src/pkg/rpc$ hg diff
+diff -r b7f9a5e9b87f src/pkg/rpc/server_test.go
+--- a/src/pkg/rpc/server_test.go Tue Oct 18 17:01:42 2011 -0500
++++ b/src/pkg/rpc/server_test.go Tue Oct 18 15:22:19 2011 -0700
+@@ -467,6 +467,27 @@
+ fmt.Printf("mallocs per HTTP rpc round trip: %d\n",
+countMallocs(dialHTTP, t))
+ }
+
++type writeCrasher struct{}
++
++func (writeCrasher) Close() os.Error {
++ return nil
++}
++
++func (writeCrasher) Read(p []byte) (int, os.Error) {
++ return 0, os.EOF
++}
++
++func (writeCrasher) Write(p []byte) (int, os.Error) {
++ return 0, os.NewError("fake write failure")
++}
++
++func TestClientWriteError(t *testing.T) {
++ c := NewClient(writeCrasher{})
++ res := false
++ c.Call("foo", 1, &res)
++}
++
+ func benchmarkEndToEnd(dial func() (*Client, os.Error), b *testing.B) {
+ b.StopTimer()
+ once.Do(startServer)
+`,
+ },
+ {
+ in: `From: David Symonds <dsymonds@golang.org>
+Date: Tue Oct 18 18:17:52 EDT 2011
+To: reply@codereview.appspotmail.com, r@golang.org, golang-dev@googlegroups.com
+Subject: Re: [golang-dev] code review 5307043: rpc: don't panic on write error. (issue 5307043)
+
+LGTM
+On Oct 19, 2011 9:12 AM, <r@golang.org> wrote:
+
+> Reviewers: golang-dev_googlegroups.com,
+>
+> Message:
+> Hello golang-dev@googlegroups.com,
+>
+> I'd like you to review this change to
+> https://go.googlecode.com/hg/
+>
+>
+> Description:
+> rpc: don't panic on write error.
+> The mechanism to record the error in the call is already in place.
+> Fixes issue 2382.
+>
+> Please review this at http://codereview.appspot.com/**5307043/<http://codereview.appspot.com/5307043/>
+>
+> Affected files:
+> M src/pkg/rpc/client.go
+>
+>
+> Index: src/pkg/rpc/client.go
+> ==============================**==============================**=======
+> --- a/src/pkg/rpc/client.go
+> +++ b/src/pkg/rpc/client.go
+> @@ -85,7 +85,8 @@
+> client.request.Seq = c.seq
+> client.request.ServiceMethod = c.ServiceMethod
+> if err := client.codec.WriteRequest(&**client.request, c.Args); err
+> != nil {
+> - panic("rpc: client encode error: " + err.String())
+> + c.Error = err
+> + c.done()
+> }
+> }
+>
+> @@ -251,10 +252,10 @@
+> // the same Call object. If done is nil, Go will allocate a new channel.
+> // If non-nil, done must be buffered or Go will deliberately crash.
+> func (client *Client) Go(serviceMethod string, args interface{}, reply
+> interface{}, done chan *Call) *Call {
+> - c := new(Call)
+> - c.ServiceMethod = serviceMethod
+> - c.Args = args
+> - c.Reply = reply
+> + call := new(Call)
+> + call.ServiceMethod = serviceMethod
+> + call.Args = args
+> + call.Reply = reply
+> if done == nil {
+> done = make(chan *Call, 10) // buffered.
+> } else {
+> @@ -266,14 +267,14 @@
+> log.Panic("rpc: done channel is unbuffered")
+> }
+> }
+> - c.Done = done
+> + call.Done = done
+> if client.shutdown {
+> - c.Error = ErrShutdown
+> - c.done()
+> - return c
+> + call.Error = ErrShutdown
+> + call.done()
+> + return call
+> }
+> - client.send(c)
+> - return c
+> + client.send(call)
+> + return call
+> }
+>
+> // Call invokes the named function, waits for it to complete, and returns
+> its error status.
+>
+>
+>
+
+`,
+ out: `From: David Symonds <dsymonds@golang.org>
+Date: Tue Oct 18 18:17:52 EDT 2011
+To: reply@codereview.appspotmail.com, r@golang.org, golang-dev@googlegroups.com
+Subject: Re: [golang-dev] code review 5307043: rpc: don't panic on write error. (issue 5307043)
+
+LGTM
+`,
+ },
+ {
+ in: `From: Brad Fitzpatrick <bradfitz@golang.org>
+Date: Tue Oct 18 23:26:07 EDT 2011
+To: rsc@golang.org, golang-dev@googlegroups.com, reply@codereview.appspotmail.com
+Subject: Re: [golang-dev] code review 5297044: gotest: use $GCFLAGS like make does (issue 5297044)
+
+LGTM
+
+On Tue, Oct 18, 2011 at 7:52 PM, <rsc@golang.org> wrote:
+
+> Reviewers: golang-dev_googlegroups.com,
+>
+> Message:
+> Hello golang-dev@googlegroups.com,
+>
+> I'd like you to review this change to
+> https://go.googlecode.com/hg/
+>
+>
+> Description:
+> gotest: use $GCFLAGS like make does
+>
+> Please review this at http://codereview.appspot.com/**5297044/<http://codereview.appspot.com/5297044/>
+>
+> Affected files:
+> M src/cmd/gotest/gotest.go
+>
+>
+> Index: src/cmd/gotest/gotest.go
+> ==============================**==============================**=======
+> --- a/src/cmd/gotest/gotest.go
+> +++ b/src/cmd/gotest/gotest.go
+> @@ -153,8 +153,12 @@
+> if gc == "" {
+> gc = O + "g"
+> }
+> - XGC = []string{gc, "-I", "_test", "-o", "_xtest_." + O}
+> - GC = []string{gc, "-I", "_test", "_testmain.go"}
+> + var gcflags []string
+> + if gf := strings.TrimSpace(os.Getenv("**GCFLAGS")); gf != "" {
+> + gcflags = strings.Fields(gf)
+> + }
+> + XGC = append([]string{gc, "-I", "_test", "-o", "_xtest_." + O},
+> gcflags...)
+> + GC = append(append([]string{gc, "-I", "_test"}, gcflags...),
+> "_testmain.go")
+> gl := os.Getenv("GL")
+> if gl == "" {
+> gl = O + "l"
+>
+>
+>
+`,
+ out: `From: Brad Fitzpatrick <bradfitz@golang.org>
+Date: Tue Oct 18 23:26:07 EDT 2011
+To: rsc@golang.org, golang-dev@googlegroups.com, reply@codereview.appspotmail.com
+Subject: Re: [golang-dev] code review 5297044: gotest: use $GCFLAGS like make does (issue 5297044)
+
+LGTM
+`,
+ },
+}
+
+func TestShortText(t *testing.T) {
+ for i, tt := range shortTextTests {
+ if out := string(shortText([]byte(tt.in))); out != tt.out {
+ t.Errorf("#%d: = %q, want %q\n", i, out, tt.out)
+ }
+ }
+}