func/vendor/github.com/jonboulle/clockwork
Lance Ball dd7c8bdc4e
deps: update tekton to latest versions (#1753)
* deps: update tekton to latest versions

Fixes: https://github.com/knative/func/issues/1716

Signed-off-by: Lance Ball <lball@redhat.com>

* fixup: rebase

Signed-off-by: Lance Ball <lball@redhat.com>

* fixup: replace kube-openapi with older version and add shell scripts

Signed-off-by: Lance Ball <lball@redhat.com>

* fixup: handle deprecations

Signed-off-by: Lance Ball <lball@redhat.com>

* fixup: revert make check timeout value

Signed-off-by: Lance Ball <lball@redhat.com>

---------

Signed-off-by: Lance Ball <lball@redhat.com>
2023-05-26 20:04:26 +00:00
..
.editorconfig Update Knative dependencies to v1.0 (0.27) (#833) 2022-02-16 12:15:40 -08:00
.gitignore Update Knative dependencies to v1.0 (0.27) (#833) 2022-02-16 12:15:40 -08:00
LICENSE feat!: support on cluster build from git repo with Tekton (#743) 2022-01-12 11:58:51 -08:00
README.md deps: update tekton to latest versions (#1753) 2023-05-26 20:04:26 +00:00
clockwork.go deps: update tekton to latest versions (#1753) 2023-05-26 20:04:26 +00:00
context.go chore: Update versions of major libraries used (#1277) 2022-09-23 17:46:13 +00:00
ticker.go deps: update tekton to latest versions (#1753) 2023-05-26 20:04:26 +00:00
timer.go deps: update tekton to latest versions (#1753) 2023-05-26 20:04:26 +00:00

README.md

clockwork

Mentioned in Awesome Go

GitHub Workflow Status Go Report Card Go Version go.dev reference

A simple fake clock for Go.

Usage

Replace uses of the time package with the clockwork.Clock interface instead.

For example, instead of using time.Sleep directly:

func myFunc() {
	time.Sleep(3 * time.Second)
	doSomething()
}

Inject a clock and use its Sleep method instead:

func myFunc(clock clockwork.Clock) {
	clock.Sleep(3 * time.Second)
	doSomething()
}

Now you can easily test myFunc with a FakeClock:

func TestMyFunc(t *testing.T) {
	c := clockwork.NewFakeClock()

	// Start our sleepy function
	var wg sync.WaitGroup
	wg.Add(1)
	go func() {
		myFunc(c)
		wg.Done()
	}()

	// Ensure we wait until myFunc is sleeping
	c.BlockUntil(1)

	assertState()

	// Advance the FakeClock forward in time
	c.Advance(3 * time.Second)

	// Wait until the function completes
	wg.Wait()

	assertState()
}

and in production builds, simply inject the real clock instead:

myFunc(clockwork.NewRealClock())

See example_test.go for a full example.

Credits

clockwork is inspired by @wickman's threaded fake clock, and the Golang playground

License

Apache License, Version 2.0. Please see License File for more information.