Thanks to visit codestin.com
Credit goes to github.com

Skip to content

sivchari/ctxtime

 
 

Repository files navigation

ctxtime Go ReferenceGo Report Card

ctxtime provides testable time.Now.

Usage

By default, ctxtime.Now(ctx) returns the current time in UTC. ctxtimetest.SetFixedNow' can be used to set the return value of ctxtime.Now(ctx). The return value will be assocciated the test id that can be obtained from the context. However, if testing.Testing returns false, ctxtimetest.SetFixedNow won't affect ctxtime.Now.

package a_test

import (
	"context"
	"testing"
	"time"

	"github.com/google/uuid"
	"github.com/newmo-oss/ctxtime"
	"github.com/newmo-oss/ctxtime/ctxtimetest"
	"github.com/newmo-oss/testid"
)

func Test(t *testing.T) {
	tid := uuid.NewString()
	ctx := testid.WithValue(context.Background(), tid)
	now := ctxtime.Now(ctx)
	ctxtimetest.SetFixedNow(t, ctx, now)
	time.Sleep(10 * time.Second)
	now2 := ctxtime.Now(ctx)
	t.Log(now == now2) // true
}

Linter

ctxtimecheck is a linter that finds calls of time.Now in your code.

You can install ctxtimecheck by go install.

$ go install github.com/newmo-oss/ctxtime/ctxtimecheck/cmd/ctxtimecheck@latest

ctxtimecheck can be run with the go vet command.

$ go vet -vettool=$(which ctxtimecheck) ./...

If you are already using gostaticanalysis/called, it can be used instead of ctxtimecheck as follows.

$ go vet -vettool=$(which called) -called.funcs="time.Now" ./...

License

MIT

About

ctxtime provides testable time.Now

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Go 100.0%