From 94a812d98f8d22c67f85faf062f95cf08ebf2c7a Mon Sep 17 00:00:00 2001 From: Bryan Boreham Date: Wed, 22 Oct 2014 18:24:02 +0100 Subject: [PATCH] Factor out error type checks --- server/http_test.go | 4 +--- server/testing_utils.go | 15 +++++++++++++++ server/zone_test.go | 16 ++++------------ 3 files changed, 20 insertions(+), 15 deletions(-) diff --git a/server/http_test.go b/server/http_test.go index a53792fe..fe2b1c04 100644 --- a/server/http_test.go +++ b/server/http_test.go @@ -69,9 +69,7 @@ func TestHttp(t *testing.T) { // Check that the address is not there now. _, err = zone.MatchLocal(success_test_name) - if _, ok := err.(LookupError); !ok { - t.Fatal(err) - } + assertErrorType(t, err, (*LookupError)(nil), "nonexistent lookup") // Delete the address again, it should accept this resp, err = genForm("DELETE", addr_url, nil) diff --git a/server/testing_utils.go b/server/testing_utils.go index c5695c93..53dab804 100644 --- a/server/testing_utils.go +++ b/server/testing_utils.go @@ -1,6 +1,7 @@ package weavedns import ( + "reflect" "testing" ) @@ -15,3 +16,17 @@ func assertStatus(t *testing.T, got int, wanted int, desc string) { t.Fatalf("Expected %s %d but got %d", desc, wanted, got) } } + +func assertErrorInterface(t *testing.T, got interface{}, wanted interface{}, desc string) { + got_t, wanted_t := reflect.TypeOf(got), reflect.TypeOf(wanted).Elem() + if !got_t.Implements(wanted_t) { + t.Fatalf("Expected %s but got %s (%s)", wanted_t.String(), got_t.String(), desc) + } +} + +func assertErrorType(t *testing.T, got interface{}, wanted interface{}, desc string) { + got_t, wanted_t := reflect.TypeOf(got), reflect.TypeOf(wanted).Elem() + if got_t != wanted_t { + t.Fatalf("Expected %s but got %s (%s)", wanted_t.String(), got_t.String(), desc) + } +} diff --git a/server/zone_test.go b/server/zone_test.go index 236b7518..6fe44094 100644 --- a/server/zone_test.go +++ b/server/zone_test.go @@ -30,9 +30,7 @@ func TestZone(t *testing.T) { // Now try to add the same address again err = zone.AddRecord(container_id, success_test_name, ip, weave_ip, subnet) - if _, ok := err.(DuplicateError); !ok { - t.Fatal(err) - } + assertErrorType(t, err, (*DuplicateError)(nil), "duplicate add") // Now delete the record err = zone.DeleteRecord(container_id, weave_ip) @@ -40,15 +38,11 @@ func TestZone(t *testing.T) { // Check that the address is not there now. _, err = zone.MatchLocal(success_test_name) - if _, ok := err.(LookupError); !ok { - t.Fatal("Unexpected result when deleting record", success_test_name, err) - } + assertErrorType(t, err, (*LookupError)(nil), "after deleting record") // Delete a record that isn't there err = zone.DeleteRecord(container_id, net.ParseIP("0.0.0.0")) - if _, ok := err.(LookupError); !ok { - t.Fatal("Expected a LookupError when deleting a record that doesn't exist") - } + assertErrorType(t, err, (*LookupError)(nil), "when deleting record that doesn't exist") } func TestDeleteFor(t *testing.T) { @@ -72,7 +66,5 @@ func TestDeleteFor(t *testing.T) { err = zone.DeleteRecordsFor(id) _, err = zone.MatchLocal(name) - if _, ok := err.(LookupError); !ok { - t.Fatal("Expected no results after deleting records for ident") - } + assertErrorType(t, err, (*LookupError)(nil), "after deleting records for ident") }