shithub: hugo

Download patch

ref: 0c01fef3213e1aad1f8901c8822d47c2f47bdf4a
parent: 32da9b20bcdd7b235048fd29dcb187ddbd25f7f1
author: Bjørn Erik Pedersen <[email protected]>
date: Fri Dec 18 04:35:14 EST 2015

Fix 2 data races in TestPageCache

See #1601

--- a/hugolib/pageCache_test.go
+++ b/hugolib/pageCache_test.go
@@ -14,7 +14,6 @@
 package hugolib
 
 import (
-	"fmt"
 	"github.com/stretchr/testify/assert"
 	"sync"
 	"sync/atomic"
@@ -38,34 +37,35 @@
 
 	var testPageSets []Pages
 
-	for j := 0; j < 50; j++ {
+	var i, j int
+
+	for j = 0; j < 50; j++ {
 		testPageSets = append(testPageSets, createSortTestPages(j+1))
 	}
 
-	for i := 0; i < 100; i++ {
+	for i = 0; i < 100; i++ {
 		wg.Add(1)
-		go func() {
+		go func(i1, i2 int) {
 			defer wg.Done()
 			for j, pages := range testPageSets {
-				msg := fmt.Sprintf("Go %d %d %d %d", i, j, o1, o2)
 				l1.Lock()
 				p, c := c1.get("k1", pages, nil)
-				assert.Equal(t, !atomic.CompareAndSwapUint64(&o1, uint64(j), uint64(j+1)), c, "c1: "+msg)
+				assert.Equal(t, !atomic.CompareAndSwapUint64(&o1, uint64(j), uint64(j+1)), c)
 				l1.Unlock()
 				p2, c2 := c1.get("k1", p, nil)
 				assert.True(t, c2)
 				assert.True(t, probablyEqualPages(p, p2))
 				assert.True(t, probablyEqualPages(p, pages))
-				assert.NotNil(t, p, msg)
+				assert.NotNil(t, p)
 
 				l2.Lock()
 				p3, c3 := c1.get("k2", pages, changeFirst)
-				assert.Equal(t, !atomic.CompareAndSwapUint64(&o2, uint64(j), uint64(j+1)), c3, "c3: "+msg)
+				assert.Equal(t, !atomic.CompareAndSwapUint64(&o2, uint64(j), uint64(j+1)), c3)
 				l2.Unlock()
-				assert.NotNil(t, p3, msg)
-				assert.Equal(t, p3[0].Description, "changed", msg)
+				assert.NotNil(t, p3)
+				assert.Equal(t, p3[0].Description, "changed")
 			}
-		}()
+		}(i, j)
 	}
 
 	wg.Wait()