From c3067062c2f8d81badb40e812f3fed06f110cb4f Mon Sep 17 00:00:00 2001 From: taknb2nch Date: Mon, 7 Apr 2014 10:37:42 +0900 Subject: [PATCH 1/3] update pop3proto test --- pop3proto.go | 34 ++++++++++++++++++++++---------- pop3proto_test.go | 50 ++++++++++++++++++++++++++++++++++++++++++++++- 2 files changed, 73 insertions(+), 11 deletions(-) diff --git a/pop3proto.go b/pop3proto.go index e6c9b1b..a2a4c02 100644 --- a/pop3proto.go +++ b/pop3proto.go @@ -110,18 +110,32 @@ func (r *Reader) ReadResponse() (string, error) { } func (r *Reader) parseResponse(line string) (string, error) { - var index int + // var index int - if index = strings.Index(line, " "); index < 0 { - return "", ResponseError(fmt.Sprintf("invalid response format: %s", line)) - } + // if index = strings.Index(line, " "); index < 0 { + // return "", ResponseError(fmt.Sprintf("invalid response format: %s", line)) + // } - switch strings.ToUpper(line[:index]) { - case "+OK": - return line[index+1:], nil - case "-ERR": - return "", ResponseError(line[index+1:]) - default: + // switch strings.ToUpper(line[:index]) { + // case "+OK": + // return line[index+1:], nil + // case "-ERR": + // return "", ResponseError(line[index+1:]) + // default: + // return "", ResponseError(fmt.Sprintf("unknown response: %s", line)) + // } + + s := strings.ToUpper(line) + + if s == "+OK" { + return "", nil + } else if strings.HasPrefix(s, "+OK ") { + return s[4:], nil + } else if s == "-ERR" { + return "", ResponseError("") + } else if strings.HasPrefix(s, "-ERR ") { + return "", ResponseError(s[5:]) + } else { return "", ResponseError(fmt.Sprintf("unknown response: %s", line)) } } diff --git a/pop3proto_test.go b/pop3proto_test.go index 835c02c..215ff79 100644 --- a/pop3proto_test.go +++ b/pop3proto_test.go @@ -59,15 +59,51 @@ func TestReadResponse(t *testing.T) { t.Fatalf("%v, %v", s, err) } + r = reader("+OK\n") + s, err = r.ReadResponse() + if s != "" || err != nil { + t.Fatalf("%v, %v", s, err) + } + + r = reader("+OK \n") + s, err = r.ReadResponse() + if s != "" || err != nil { + t.Fatalf("%v, %v", s, err) + } + + r = reader("+OKAY\n") + s, err = r.ReadResponse() + if s != "" || err == nil || err.Error() != "unknown response: +OKAY" { + t.Fatalf("%v, %v", s, err) + } + r = reader("-ERR message\n") s, err = r.ReadResponse() if s != "" || err == nil || err.Error() != "message" { t.Fatalf("%v, %v", s, err) } + r = reader("-ERR\n") + s, err = r.ReadResponse() + if s != "" || err == nil || err.Error() != "" { + t.Fatalf("%v, %v", s, err) + } + + r = reader("-ERR \n") + s, err = r.ReadResponse() + if s != "" || err == nil || err.Error() != "" { + t.Fatalf("%v, %v", s, err) + } + + r = reader("-ERROR\n") + s, err = r.ReadResponse() + if s != "" || err == nil || err.Error() != "unknown response: -ERROR" { + t.Fatalf("%v, %v", s, err) + } + r = reader("message\n") s, err = r.ReadResponse() - if s != "" || err == nil || err.Error() != "invalid response format: message" { + if s != "" || err == nil || err.Error() != "unknown response: message" { t.Fatalf("%v, %v", s, err) } @@ -76,6 +112,18 @@ func TestReadResponse(t *testing.T) { if s != "" || err == nil || err.Error() != "unknown response: * message" { t.Fatalf("%v, %v", s, err) } + + r = reader(" message\n") + s, err = r.ReadResponse() + if s != "" || err == nil || err.Error() != "unknown response: message" { + t.Fatalf("%v, %v", s, err) + } + + r = reader("\n") + s, err = r.ReadResponse() + if s != "" || err == nil || err.Error() != "unknown response: " { + t.Fatalf("%v, %v", s, err) + } } func TestWriteLine(t *testing.T) { From 75435e5cd757bcca846a22fa7170773f37d3da40 Mon Sep 17 00:00:00 2001 From: taknb2nch Date: Mon, 7 Apr 2014 11:18:17 +0900 Subject: [PATCH 2/3] fixed bug/issue #1 fixed parseResponse --- pop3proto.go | 19 ++----------------- 1 file changed, 2 insertions(+), 17 deletions(-) diff --git a/pop3proto.go b/pop3proto.go index a2a4c02..ac972c0 100644 --- a/pop3proto.go +++ b/pop3proto.go @@ -110,31 +110,16 @@ func (r *Reader) ReadResponse() (string, error) { } func (r *Reader) parseResponse(line string) (string, error) { - // var index int - - // if index = strings.Index(line, " "); index < 0 { - // return "", ResponseError(fmt.Sprintf("invalid response format: %s", line)) - // } - - // switch strings.ToUpper(line[:index]) { - // case "+OK": - // return line[index+1:], nil - // case "-ERR": - // return "", ResponseError(line[index+1:]) - // default: - // return "", ResponseError(fmt.Sprintf("unknown response: %s", line)) - // } - s := strings.ToUpper(line) if s == "+OK" { return "", nil } else if strings.HasPrefix(s, "+OK ") { - return s[4:], nil + return line[4:], nil } else if s == "-ERR" { return "", ResponseError("") } else if strings.HasPrefix(s, "-ERR ") { - return "", ResponseError(s[5:]) + return "", ResponseError(line[5:]) } else { return "", ResponseError(fmt.Sprintf("unknown response: %s", line)) } From 6c6a07f6d441eca1e6b4d06f98ff1b2491623035 Mon Sep 17 00:00:00 2001 From: taknb2nch Date: Mon, 7 Apr 2014 11:19:46 +0900 Subject: [PATCH 3/3] update .gitignore --- .gitignore | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.gitignore b/.gitignore index 8365624..4b7b1f9 100644 --- a/.gitignore +++ b/.gitignore @@ -21,3 +21,6 @@ _testmain.go *.exe *.test + +# +*.out