From 856de30c09b2ca77cf8ab73f9d52bc5e6aef4e7b Mon Sep 17 00:00:00 2001 From: Fabian Reinartz Date: Sun, 13 Nov 2016 18:16:02 +0100 Subject: [PATCH 1/2] Check error before defer closing If an error is returned the file might be nil and a Close call would cause a panic. --- storage/local/persistence_test.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/storage/local/persistence_test.go b/storage/local/persistence_test.go index 9756b41a83..2b37857668 100644 --- a/storage/local/persistence_test.go +++ b/storage/local/persistence_test.go @@ -1097,11 +1097,12 @@ func TestQuranatineSeriesFile(t *testing.T) { t.Errorf("Unexpected state of quarantined file %q. Expected it to exist: %t. os.Stat returned: %s.", quarantinedFile, seriesFileShouldExist, err) } f, err := os.Open(hintFile) - defer f.Close() if err != nil { t.Errorf("Could not open hint file %q: %s", hintFile, err) return } + defer f.Close() + scanner := bufio.NewScanner(f) for _, want := range contentHintFile { if !scanner.Scan() { From 7ecc2714115c963641d2b89cc9fab90a590d9d5a Mon Sep 17 00:00:00 2001 From: Fabian Reinartz Date: Sun, 13 Nov 2016 18:21:42 +0100 Subject: [PATCH 2/2] Move Fatalf call into main test goroutine --- retrieval/scrape_test.go | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/retrieval/scrape_test.go b/retrieval/scrape_test.go index e07cbdc85f..489d73c365 100644 --- a/retrieval/scrape_test.go +++ b/retrieval/scrape_test.go @@ -506,7 +506,7 @@ func TestTargetScrapeScrapeCancel(t *testing.T) { } ctx, cancel := context.WithCancel(context.Background()) - done := make(chan struct{}) + errc := make(chan error) go func() { time.Sleep(1 * time.Second) @@ -515,15 +515,18 @@ func TestTargetScrapeScrapeCancel(t *testing.T) { go func() { if _, err := ts.scrape(ctx, time.Now()); err != context.Canceled { - t.Fatalf("Expected context cancelation error but got: %s", err) + errc <- fmt.Errorf("Expected context cancelation error but got: %s", err) } - close(done) + close(errc) }() select { case <-time.After(5 * time.Second): t.Fatalf("Scrape function did not return unexpectedly") - case <-done: + case err := <-errc: + if err != nil { + t.Fatalf(err.Error()) + } } // If this is closed in a defer above the function the test server // does not terminate and the test doens't complete.