mirror of
				https://github.com/caddyserver/caddy.git
				synced 2025-11-04 03:27:23 -05:00 
			
		
		
		
	In latest go versions TestWatcher fails pretty often, because it is "more concurrent" now. Reproducible with go master: while go test github.com/mholt/caddy/middleware/markdown; do :; done Signed-off-by: Alexander Morozov <lk4d4@docker.com>
		
			
				
	
	
		
			43 lines
		
	
	
		
			809 B
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			43 lines
		
	
	
		
			809 B
		
	
	
	
		
			Go
		
	
	
	
	
	
package markdown
 | 
						|
 | 
						|
import (
 | 
						|
	"fmt"
 | 
						|
	"strings"
 | 
						|
	"sync"
 | 
						|
	"testing"
 | 
						|
	"time"
 | 
						|
)
 | 
						|
 | 
						|
func TestWatcher(t *testing.T) {
 | 
						|
	expected := "12345678"
 | 
						|
	interval := time.Millisecond * 100
 | 
						|
	i := 0
 | 
						|
	out := ""
 | 
						|
	stopChan := TickerFunc(interval, func() {
 | 
						|
		i++
 | 
						|
		out += fmt.Sprint(i)
 | 
						|
	})
 | 
						|
	// wait little more because of concurrency
 | 
						|
	time.Sleep(interval * 9)
 | 
						|
	stopChan <- struct{}{}
 | 
						|
	if !strings.HasPrefix(out, expected) {
 | 
						|
		t.Fatalf("Expected to have prefix %v, found %v", expected, out)
 | 
						|
	}
 | 
						|
	out = ""
 | 
						|
	i = 0
 | 
						|
	var mu sync.Mutex
 | 
						|
	stopChan = TickerFunc(interval, func() {
 | 
						|
		i++
 | 
						|
		mu.Lock()
 | 
						|
		out += fmt.Sprint(i)
 | 
						|
		mu.Unlock()
 | 
						|
	})
 | 
						|
	time.Sleep(interval * 10)
 | 
						|
	mu.Lock()
 | 
						|
	res := out
 | 
						|
	mu.Unlock()
 | 
						|
	if !strings.HasPrefix(res, expected) || res == expected {
 | 
						|
		t.Fatalf("expected (%v) must be a proper prefix of out(%v).", expected, out)
 | 
						|
	}
 | 
						|
}
 |