diff options
Diffstat (limited to 'internal/progress/meter_test.go')
| -rw-r--r-- | internal/progress/meter_test.go | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/internal/progress/meter_test.go b/internal/progress/meter_test.go new file mode 100644 index 00000000..8fa09973 --- /dev/null +++ b/internal/progress/meter_test.go @@ -0,0 +1,43 @@ +package progress_test + +import ( + "bytes" + "strings" + "sync" + "testing" + "time" + + "lindenii.org/go/furgit/internal/progress" + "lindenii.org/go/lgo/iowrap" +) + +func TestMeterConcurrentAdd(t *testing.T) { + t.Parallel() + + var buf bytes.Buffer + + meter := progress.New(progress.Options{ + Writer: iowrap.NopFlush(&buf), + Title: "test", + Total: 1000, + }) + + var wg sync.WaitGroup + + for range 10 { + wg.Go(func() { + for range 100 { + meter.Add(1, 0) + time.Sleep(time.Millisecond) + } + }) + } + + wg.Wait() + + meter.Stop("done") + + if got := buf.String(); !strings.Contains(got, "100% (1000/1000)") { + t.Fatalf("final line = %q, want it to contain %q", got, "100% (1000/1000)") + } +} |
