diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 242bb8dbe70a7d7a5dd0e4517899698aab27d41a..a6734362d31d3d08a00f03782821d36895ceeee7 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -13,9 +13,9 @@ jobs: fail-fast: false matrix: go_version: - - '1.18' - - '1.19' - - '1.20' + - '1.21' + - '1.22' + - '1.23' - tip name: Test with ${{ matrix.go_version }} steps: @@ -29,16 +29,20 @@ jobs: - name: Install Go ${{ matrix.go_version }} if: ${{ matrix.go_version == 'tip' }} run: | - curl -sL https://storage.googleapis.com/go-build-snap/go/linux-amd64/$(git ls-remote https://github.com/golang/go.git HEAD | awk '{print $1;}').tar.gz -o gotip.tar.gz - ls -lah gotip.tar.gz - mkdir -p ~/sdk/gotip - tar -C ~/sdk/gotip -xzf gotip.tar.gz - echo "PATH=$HOME/go/bin:$HOME/sdk/gotip/bin/:$PATH" >> $GITHUB_ENV - - name: Vet and test + go install golang.org/dl/gotip@latest + `go env GOPATH`/bin/gotip download + - name: Vet and test no tip + if: ${{ matrix.go_version != 'tip' }} run: | go version go vet ./... go test ./... + - name: Vet and test gotip + if: ${{ matrix.go_version == 'tip' }} + run: | + `go env GOPATH`/bin/gotip version + `go env GOPATH`/bin/gotip vet ./... + `go env GOPATH`/bin/gotip test ./... golangci: name: Linting runs-on: ubuntu-latest @@ -46,7 +50,7 @@ jobs: - uses: actions/checkout@v2 - uses: actions/setup-go@master with: - go-version: '1.20' + go-version: '1.23' check-latest: true - name: golangci-lint uses: golangci/golangci-lint-action@v2 diff --git a/server/handlers_test.go b/server/handlers_test.go index 2c76ffdfbfbf5cb27cfb987e884cdafcbcfeeb62..f8f14ca1ee66a61122a3370462d6c8f033a6ba63 100644 --- a/server/handlers_test.go +++ b/server/handlers_test.go @@ -26,7 +26,7 @@ func (s *suiteRedirectWithForceHTTPS) SetUpTest(c *C) { c.Assert(err, IsNil) handler := http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - fmt.Fprintln(w, "Hello, client") + _, _ = fmt.Fprintln(w, "Hello, client") }) s.handler = srvr.RedirectHandler(handler) @@ -83,7 +83,7 @@ func (s *suiteRedirectWithoutForceHTTPS) SetUpTest(c *C) { c.Assert(err, IsNil) handler := http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - fmt.Fprintln(w, "Hello, client") + _, _ = fmt.Fprintln(w, "Hello, client") }) s.handler = srvr.RedirectHandler(handler) diff --git a/server/server.go b/server/server.go index 23eb5c35047d516449cdc357813923fcfe43b501..b7a4e926dd1d2a80659e481c14aa0c3b7b8cb27c 100644 --- a/server/server.go +++ b/server/server.go @@ -402,12 +402,15 @@ func New(options ...OptionFn) (*Server, error) { return s, nil } +var theRand *rand.Rand + func init() { var seedBytes [8]byte if _, err := cryptoRand.Read(seedBytes[:]); err != nil { panic("cannot obtain cryptographically secure seed") } - rand.Seed(int64(binary.LittleEndian.Uint64(seedBytes[:]))) + + theRand = rand.New(rand.NewSource(int64(binary.LittleEndian.Uint64(seedBytes[:])))) } // Run starts Server diff --git a/server/token.go b/server/token.go index f3aa012ede44e6e261902bd6afa1872a4cae80b4..d73403ebcc905e84363b9daf52a08cc265b1b41e 100644 --- a/server/token.go +++ b/server/token.go @@ -24,10 +24,6 @@ THE SOFTWARE. package server -import ( - "math/rand" -) - const ( // SYMBOLS characters used for short-urls SYMBOLS = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ" @@ -37,7 +33,7 @@ const ( func token(length int) string { result := "" for i := 0; i < length; i++ { - x := rand.Intn(len(SYMBOLS) - 1) + x := theRand.Intn(len(SYMBOLS) - 1) result = string(SYMBOLS[x]) + result }