Compare commits

...

1 Commits

Author SHA1 Message Date
zhangheng.023
c920204c42 fix: preserve local timezone in skill sync state 2026-06-11 21:01:07 +08:00
2 changed files with 7 additions and 3 deletions

View File

@@ -335,7 +335,7 @@ func SyncSkills(opts SyncOptions) *SyncResult {
UpdatedSkills: plan.ToUpdate,
AddedOfficialSkills: plan.Added,
SkippedDeletedSkills: plan.SkippedDeleted,
UpdatedAt: opts.Now().UTC().Format(time.RFC3339),
UpdatedAt: opts.Now().Format(time.RFC3339),
}
if err := WriteState(state); err != nil {
result.Action = "failed"
@@ -428,7 +428,7 @@ func fallbackFullInstall(opts SyncOptions, reason string, official []string) *Sy
UpdatedSkills: official,
AddedOfficialSkills: official,
SkippedDeletedSkills: []string{},
UpdatedAt: opts.Now().UTC().Format(time.RFC3339),
UpdatedAt: opts.Now().Format(time.RFC3339),
}
if writeErr := WriteState(state); writeErr != nil {
return &SyncResult{

View File

@@ -322,6 +322,7 @@ func (f *fakeSkillsRunner) InstallAllSkills() *selfupdate.NpmResult {
func TestSyncSkills_WritesStateAndDoesNotWriteStamp(t *testing.T) {
dir := t.TempDir()
t.Setenv("LARKSUITE_CLI_CONFIG_DIR", dir)
localZone := time.FixedZone("UTC+8", 8*60*60)
if err := WriteState(SkillsState{
Version: "1.0.30",
OfficialSkills: []string{"lark-calendar", "lark-mail"},
@@ -339,7 +340,7 @@ func TestSyncSkills_WritesStateAndDoesNotWriteStamp(t *testing.T) {
result := SyncSkills(SyncOptions{
Version: "1.0.33",
Runner: runner,
Now: func() time.Time { return time.Date(2026, 5, 18, 12, 0, 0, 0, time.UTC) },
Now: func() time.Time { return time.Date(2026, 5, 18, 20, 0, 0, 0, localZone) },
})
if result.Err != nil {
@@ -361,6 +362,9 @@ func TestSyncSkills_WritesStateAndDoesNotWriteStamp(t *testing.T) {
assertStrings(t, state.UpdatedSkills, []string{"lark-calendar", "lark-new"})
assertStrings(t, state.AddedOfficialSkills, []string{"lark-new"})
assertStrings(t, state.SkippedDeletedSkills, []string{"lark-mail"})
if state.UpdatedAt != "2026-05-18T20:00:00+08:00" {
t.Fatalf("UpdatedAt = %q, want local RFC3339 timestamp with offset preserved", state.UpdatedAt)
}
if _, err := os.Stat(filepath.Join(dir, "skills.stamp")); !os.IsNotExist(err) {
t.Fatalf("skills.stamp exists or stat failed with unexpected err: %v", err)
}