Open
Description
How to produces?
spinner.go
package spinner
import (
"time"
"github.com/briandowns/spinner"
)
var s *spinner.Spinner
func init() {
style := spinner.CharSets[36]
interval := 100 * time.Millisecond
s = spinner.New(style, interval)
}
// Start spinner
func Start(task string) {
s.Start()
}
// Stop spinner
func Stop(task string, err error) {
s.Stop()
}
spinner_test.go
package spinner
import (
"fmt"
"testing"
"time"
)
func TestSpinner(t *testing.T) {
t.Run("failure", func(t *testing.T) {
Start("task 2")
time.Sleep(1 * time.Second)
Stop("task 2", fmt.Errorf("error happened"))
})
t.Run("success", func(t *testing.T) {
Start("task 1")
time.Sleep(1 * time.Second)
Stop("task 1", nil)
})
}
Then run test command,
go test -v ./... --race
Will get failure message.
=== RUN TestSpinner
=== RUN TestSpinner/failure
=== RUN TestSpinner/success
==================
WARNING: DATA RACE
Read at 0x00c000140340 by goroutine 9:
github.com/briandowns/spinner.(*Spinner).Start.func1()
/Users/minhuang/.go/pkg/mod/github.com/briandowns/spinner@v1.11.1/spinner.go:288 +0x109
Previous write at 0x00c000140340 by goroutine 11:
github.com/briandowns/spinner.(*Spinner).Start()
/Users/minhuang/.go/pkg/mod/github.com/briandowns/spinner@v1.11.1/spinner.go:278 +0xa7
github.com/metrue/fx/pkg/spinner.Start()
/Users/minhuang/Codes/fx/pkg/spinner/spiner.go:19 +0x4b
github.com/metrue/fx/pkg/spinner.TestSpinner.func2()
/Users/minhuang/Codes/fx/pkg/spinner/spiner_test.go:16 +0x2b
testing.tRunner()
/usr/local/opt/go/libexec/src/testing/testing.go:992 +0x1eb
Goroutine 9 (running) created at:
github.com/briandowns/spinner.(*Spinner).Start()
/Users/minhuang/.go/pkg/mod/github.com/briandowns/spinner@v1.11.1/spinner.go:281 +0xef
github.com/metrue/fx/pkg/spinner.Start()
/Users/minhuang/Codes/fx/pkg/spinner/spiner.go:19 +0x4f
github.com/metrue/fx/pkg/spinner.TestSpinner.func1()
/Users/minhuang/Codes/fx/pkg/spinner/spiner_test.go:11 +0x2f
testing.tRunner()
/usr/local/opt/go/libexec/src/testing/testing.go:992 +0x1eb
Goroutine 11 (running) created at:
testing.(*T).Run()
/usr/local/opt/go/libexec/src/testing/testing.go:1043 +0x660
github.com/metrue/fx/pkg/spinner.TestSpinner()
/Users/minhuang/Codes/fx/pkg/spinner/spiner_test.go:15 +0x8c
testing.tRunner()
/usr/local/opt/go/libexec/src/testing/testing.go:992 +0x1eb
==================
TestSpinner/success: testing.go:906: race detected during execution of test
TestSpinner: testing.go:906: race detected during execution of test
--- FAIL: TestSpinner (2.01s)
--- PASS: TestSpinner/failure (1.00s)
--- FAIL: TestSpinner/success (1.00s)
: testing.go:906: race detected during execution of test
FAIL
FAIL github.com/metrue/fx/pkg/spinner 2.039s
FAIL
Metadata
Metadata
Assignees
Labels
No labels