"bytes"
"crypto/tls"
"crypto/x509"
+ "fmt"
"internal/testenv"
"io"
"net"
"net/textproto"
"runtime"
"strings"
- "sync"
"testing"
"time"
)
t.Fatalf("Unable to create listener: %v", err)
}
defer l.Close()
- wg := sync.WaitGroup{}
- var done = make(chan struct{})
+
+ errCh := make(chan error)
go func() {
- defer wg.Done()
+ defer close(errCh)
conn, err := l.Accept()
if err != nil {
- t.Errorf("Accept error: %v", err)
+ errCh <- fmt.Errorf("Accept: %v", err)
return
}
defer conn.Close()
if msg == "EHLO localhost" {
tc.PrintfLine("250 mx.google.com at your service")
}
- // for this test case, there should have no more traffic
- <-done
+ if err != nil {
+ errCh <- fmt.Errorf("PrintfLine: %v", err)
+ return
+ }
}()
- wg.Add(1)
err = SendMail(l.Addr().String(), PlainAuth("", "user", "pass", "smtp.google.com"), "test@example.com", []string{"other@example.com"}, []byte(strings.Replace(`From: test@example.com
To: other@example.com
if err.Error() != "smtp: server doesn't support AUTH" {
t.Errorf("Expected: smtp: server doesn't support AUTH, got: %s", err)
}
- close(done)
- wg.Wait()
+ err = <-errCh
+ if err != nil {
+ t.Fatalf("server error: %v", err)
+ }
}
func TestAuthFailed(t *testing.T) {