8000 There is a race issue · Issue #99 · briandowns/spinner · GitHub
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content
There is a race issue #99
Open
Open
@metrue

Description

@metrue

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

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions

      0