| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970 |
- // Copyright 2024 The Gitea Authors. All rights reserved.
- // SPDX-License-Identifier: MIT
-
- package actions
-
- import (
- "testing"
- "time"
-
- "code.gitea.io/gitea/modules/test"
-
- "github.com/stretchr/testify/assert"
- "github.com/stretchr/testify/require"
- )
-
- func TestActionScheduleSpec_Parse(t *testing.T) {
- // Mock the local timezone is not UTC
- tz, err := time.LoadLocation("Asia/Shanghai")
- require.NoError(t, err)
- defer test.MockVariableValue(&time.Local, tz)()
-
- now, err := time.Parse(time.RFC3339, "2024-07-31T15:47:55+08:00")
- require.NoError(t, err)
-
- tests := []struct {
- name string
- spec string
- want string
- wantErr assert.ErrorAssertionFunc
- }{
- {
- name: "regular",
- spec: "0 10 * * *",
- want: "2024-07-31T10:00:00Z",
- wantErr: assert.NoError,
- },
- {
- name: "invalid",
- spec: "0 10 * *",
- want: "",
- wantErr: assert.Error,
- },
- {
- name: "with timezone",
- spec: "TZ=America/New_York 0 10 * * *",
- want: "2024-07-31T14:00:00Z",
- wantErr: assert.NoError,
- },
- {
- name: "timezone irrelevant",
- spec: "@every 5m",
- want: "2024-07-31T07:52:55Z",
- wantErr: assert.NoError,
- },
- }
- for _, tt := range tests {
- t.Run(tt.name, func(t *testing.T) {
- s := &ActionScheduleSpec{
- Spec: tt.spec,
- }
- got, err := s.Parse()
- tt.wantErr(t, err)
-
- if err == nil {
- assert.Equal(t, tt.want, got.Next(now).UTC().Format(time.RFC3339))
- }
- })
- }
- }
|