@@ -9,6 +9,7 @@ import (
99
1010type ValidatorTest struct {
1111 auth_email_file *os.File
12+ done chan bool
1213}
1314
1415func NewValidatorTest(t *testing.T) *ValidatorTest {
@@ -18,13 +19,21 @@ func NewValidatorTest(t *testing.T) *ValidatorTest {
1819 if err != nil {
1920 t.Fatal("failed to create temp file: " + err.Error())
2021 }
22+ vt.done = make(chan bool)
2123 return vt
2224}
2325
2426func (vt *ValidatorTest) TearDown() {
27+ vt.done <- true
2528 os.Remove(vt.auth_email_file.Name())
2629}
2730
31+func (vt *ValidatorTest) NewValidator(domains []string,
32+ updated chan<- bool) func(string) bool {
33+ return newValidatorImpl(domains, vt.auth_email_file.Name(),
34+ vt.done, func() { updated <- true })
35+}
36+
2837// This will close vt.auth_email_file.
2938func (vt *ValidatorTest) WriteEmails(t *testing.T, emails []string) {
3039 defer vt.auth_email_file.Close()
@@ -41,7 +50,7 @@ func TestValidatorEmpty(t *testing.T) {
4150
4251 vt.WriteEmails(t, []string(nil))
4352 domains := []string(nil)
44− validator := NewValidator(domains, vt.auth_email_file.Name())
53+ validator := vt.NewValidator(domains, nil)
4554
4655 if validator("foo.bar@example.com") {
4756 t.Error("nothing should validate when the email and " +
@@ -55,7 +64,7 @@ func TestValidatorSingleEmail(t *testing.T) {
5564
5665 vt.WriteEmails(t, []string{"foo.bar@example.com"})
5766 domains := []string(nil)
58− validator := NewValidator(domains, vt.auth_email_file.Name())
67+ validator := vt.NewValidator(domains, nil)
5968
6069 if !validator("foo.bar@example.com") {
6170 t.Error("email should validate")
@@ -72,7 +81,7 @@ func TestValidatorSingleDomain(t *testing.T) {
7281
7382 vt.WriteEmails(t, []string(nil))
7483 domains := []string{"example.com"}
75− validator := NewValidator(domains, vt.auth_email_file.Name())
84+ validator := vt.NewValidator(domains, nil)
7685
7786 if !validator("foo.bar@example.com") {
7887 t.Error("email should validate")
@@ -91,7 +100,7 @@ func TestValidatorMultipleEmailsMultipleDomains(t *testing.T) {
91100 "plugh@example.com",
92101 })
93102 domains := []string{"example0.com", "example1.com"}
94− validator := NewValidator(domains, vt.auth_email_file.Name())
103+ validator := vt.NewValidator(domains, nil)
95104
96105 if !validator("foo.bar@example0.com") {
97106 t.Error("email from first domain should validate")
@@ -117,7 +126,7 @@ func TestValidatorComparisonsAreCaseInsensitive(t *testing.T) {
117126
118127 vt.WriteEmails(t, []string{"Foo.Bar@Example.Com"})
119128 domains := []string{"Frobozz.Com"}
120− validator := NewValidator(domains, vt.auth_email_file.Name())
129+ validator := vt.NewValidator(domains, nil)
121130
122131 if !validator("foo.bar@example.com") {
123132 t.Error("loaded email addresses are not lower-cased")