diff options
| author | 2026-06-24 04:51:05 +0000 | |
|---|---|---|
| committer | 2026-06-24 05:24:16 +0000 | |
| commit | f0fb5737fd6437c5776e8c5c25563e355f0ceef3 (patch) | |
| tree | a4c6fb298a92eca4c5cb1a9c28f2b519af93da1b /internal/progress/meter_test.go | |
| parent | object/store/packed: fix promotion (diff) | |
internal/progress: Concurrent
Diffstat (limited to 'internal/progress/meter_test.go')
| -rw-r--r-- | internal/progress/meter_test.go | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/internal/progress/meter_test.go b/internal/progress/meter_test.go new file mode 100644 index 00000000..62b489e3 --- /dev/null +++ b/internal/progress/meter_test.go @@ -0,0 +1,47 @@ +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.Add(1) + + go func() { + defer wg.Done() + + 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)") + } +} |
