mirror of https://go.googlesource.com/go
67 lines
2.2 KiB
Go
67 lines
2.2 KiB
Go
// Copyright 2011 The Go Authors. All rights reserved.
|
|
// Use of this source code is governed by a BSD-style
|
|
// license that can be found in the LICENSE file.
|
|
|
|
package time
|
|
|
|
func init() {
|
|
// Force US/Pacific for time zone tests.
|
|
ForceUSPacificForTesting()
|
|
}
|
|
|
|
func initTestingZone() {
|
|
// For hermeticity, use only tzinfo source from the test's GOROOT,
|
|
// not the system sources and not whatever GOROOT may happen to be
|
|
// set in the process's environment (if any).
|
|
// This test runs in GOROOT/src/time, so GOROOT is "../..",
|
|
// but it is theoretically possible
|
|
sources := []string{"../../lib/time/zoneinfo.zip"}
|
|
z, err := loadLocation("America/Los_Angeles", sources)
|
|
if err != nil {
|
|
panic("cannot load America/Los_Angeles for testing: " + err.Error() + "; you may want to use -tags=timetzdata")
|
|
}
|
|
z.name = "Local"
|
|
localLoc = *z
|
|
}
|
|
|
|
var origPlatformZoneSources []string = platformZoneSources
|
|
|
|
func disablePlatformSources() (undo func()) {
|
|
platformZoneSources = nil
|
|
return func() {
|
|
platformZoneSources = origPlatformZoneSources
|
|
}
|
|
}
|
|
|
|
var Interrupt = interrupt
|
|
var DaysIn = daysIn
|
|
|
|
func empty(arg any, seq uintptr, delta int64) {}
|
|
|
|
// Test that a runtimeTimer with a period that would overflow when on
|
|
// expiration does not throw or cause other timers to hang.
|
|
//
|
|
// This test has to be in internal_test.go since it fiddles with
|
|
// unexported data structures.
|
|
func CheckRuntimeTimerPeriodOverflow() {
|
|
// We manually create a runtimeTimer with huge period, but that expires
|
|
// immediately. The public Timer interface would require waiting for
|
|
// the entire period before the first update.
|
|
t := (*Timer)(newTimer(runtimeNano(), 1<<63-1, empty, nil, nil))
|
|
defer t.Stop()
|
|
|
|
// If this test fails, we will either throw (when siftdownTimer detects
|
|
// bad when on update), or other timers will hang (if the timer in a
|
|
// heap is in a bad state). There is no reliable way to test this, but
|
|
// we wait on a short timer here as a smoke test (alternatively, timers
|
|
// in later tests may hang).
|
|
<-After(25 * Millisecond)
|
|
}
|
|
|
|
var (
|
|
MinMonoTime = Time{wall: 1 << 63, ext: -1 << 63, loc: UTC}
|
|
MaxMonoTime = Time{wall: 1 << 63, ext: 1<<63 - 1, loc: UTC}
|
|
|
|
NotMonoNegativeTime = Time{wall: 0, ext: -1<<63 + 50}
|
|
)
|