[short] skip

go test -timeout=0 -run=TestNoDeadline
go test -timeout=1m -run=TestDeadlineWithinMinute
go test -timeout=1m -run=TestSubtestDeadlineWithinMinute

-- go.mod --
module m

go 1.16
-- deadline_test.go --
package testing_test

import (
	"testing"
	"time"
)

func TestNoDeadline(t *testing.T) {
	d, ok := t.Deadline()
	if ok || !d.IsZero() {
		t.Fatalf("t.Deadline() = %v, %v; want 0, false", d, ok)
	}
}

func TestDeadlineWithinMinute(t *testing.T) {
	now := time.Now()
	d, ok := t.Deadline()
	if !ok || d.IsZero() {
		t.Fatalf("t.Deadline() = %v, %v; want nonzero deadline", d, ok)
	}
	if !d.After(now) {
		t.Fatalf("t.Deadline() = %v; want after start of test (%v)", d, now)
	}
	if d.Sub(now) > time.Minute {
		t.Fatalf("t.Deadline() = %v; want within one minute of start of test (%v)", d, now)
	}
}

func TestSubtestDeadlineWithinMinute(t *testing.T) {
	t.Run("sub", func(t *testing.T) {
		now := time.Now()
		d, ok := t.Deadline()
		if !ok || d.IsZero() {
			t.Fatalf("t.Deadline() = %v, %v; want nonzero deadline", d, ok)
		}
		if !d.After(now) {
			t.Fatalf("t.Deadline() = %v; want after start of test (%v)", d, now)
		}
		if d.Sub(now) > time.Minute {
			t.Fatalf("t.Deadline() = %v; want within one minute of start of test (%v)", d, now)
		}
	})
}
