From ee80f52ded1d126f17436fe0d2357db997f9bd30 Mon Sep 17 00:00:00 2001 From: Steven Masley Date: Tue, 17 May 2022 18:43:32 -0500 Subject: [PATCH 1/2] test: Using local time in unit test fails in certain time zones This test was failing when running in CST (GMT-5) timezone. My local timezone pushed the next to the upcoming monday --- coderd/autobuild/schedule/schedule_test.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/coderd/autobuild/schedule/schedule_test.go b/coderd/autobuild/schedule/schedule_test.go index 0dd9884fb3b2a..6202365a38ca6 100644 --- a/coderd/autobuild/schedule/schedule_test.go +++ b/coderd/autobuild/schedule/schedule_test.go @@ -32,8 +32,8 @@ func Test_Weekly(t *testing.T) { { name: "without timezone", spec: "CRON_TZ=UTC 30 9 * * 1-5", - at: time.Date(2022, 4, 1, 9, 29, 0, 0, time.Local), - expectedNext: time.Date(2022, 4, 1, 9, 30, 0, 0, time.Local), + at: time.Date(2022, 4, 1, 9, 29, 0, 0, time.UTC), + expectedNext: time.Date(2022, 4, 1, 9, 30, 0, 0, time.UTC), expectedError: "", expectedCron: "30 9 * * 1-5", expectedTz: "UTC", From 81576449d5b9d9e35f0e2a7f2d79873301e444ea Mon Sep 17 00:00:00 2001 From: Cian Johnston Date: Wed, 18 May 2022 11:41:50 +0100 Subject: [PATCH 2/2] fix: schedule: assert expected result of String() separately from input spec --- coderd/autobuild/schedule/schedule_test.go | 47 ++++++++++++---------- 1 file changed, 25 insertions(+), 22 deletions(-) diff --git a/coderd/autobuild/schedule/schedule_test.go b/coderd/autobuild/schedule/schedule_test.go index 6202365a38ca6..0af54e04a3e0c 100644 --- a/coderd/autobuild/schedule/schedule_test.go +++ b/coderd/autobuild/schedule/schedule_test.go @@ -12,31 +12,34 @@ import ( func Test_Weekly(t *testing.T) { t.Parallel() testCases := []struct { - name string - spec string - at time.Time - expectedNext time.Time - expectedError string - expectedCron string - expectedTz string + name string + spec string + at time.Time + expectedNext time.Time + expectedError string + expectedCron string + expectedTz string + expectedString string }{ { - name: "with timezone", - spec: "CRON_TZ=US/Central 30 9 * * 1-5", - at: time.Date(2022, 4, 1, 14, 29, 0, 0, time.UTC), - expectedNext: time.Date(2022, 4, 1, 14, 30, 0, 0, time.UTC), - expectedError: "", - expectedCron: "30 9 * * 1-5", - expectedTz: "US/Central", + name: "with timezone", + spec: "CRON_TZ=US/Central 30 9 * * 1-5", + at: time.Date(2022, 4, 1, 14, 29, 0, 0, time.UTC), + expectedNext: time.Date(2022, 4, 1, 14, 30, 0, 0, time.UTC), + expectedError: "", + expectedCron: "30 9 * * 1-5", + expectedTz: "US/Central", + expectedString: "CRON_TZ=US/Central 30 9 * * 1-5", }, { - name: "without timezone", - spec: "CRON_TZ=UTC 30 9 * * 1-5", - at: time.Date(2022, 4, 1, 9, 29, 0, 0, time.UTC), - expectedNext: time.Date(2022, 4, 1, 9, 30, 0, 0, time.UTC), - expectedError: "", - expectedCron: "30 9 * * 1-5", - expectedTz: "UTC", + name: "without timezone", + spec: "30 9 * * 1-5", + at: time.Date(2022, 4, 1, 9, 29, 0, 0, time.UTC), + expectedNext: time.Date(2022, 4, 1, 9, 30, 0, 0, time.UTC), + expectedError: "", + expectedCron: "30 9 * * 1-5", + expectedTz: "UTC", + expectedString: "CRON_TZ=UTC 30 9 * * 1-5", }, { name: "invalid schedule", @@ -91,9 +94,9 @@ func Test_Weekly(t *testing.T) { nextTime := actual.Next(testCase.at) require.NoError(t, err) require.Equal(t, testCase.expectedNext, nextTime) - require.Equal(t, testCase.spec, actual.String()) require.Equal(t, testCase.expectedCron, actual.Cron()) require.Equal(t, testCase.expectedTz, actual.Timezone()) + require.Equal(t, testCase.expectedString, actual.String()) } else { require.EqualError(t, err, testCase.expectedError) require.Nil(t, actual)