package gio import ( "fmt" "os" "path/filepath" "strconv" "testing" "time" "github.com/stretchr/testify/require" ) func TestChtimes(t *testing.T) { modTime := time.Now().AddDate(-1, 0, 0).Round(1 * time.Second).UTC() path := filepath.Join(t.TempDir(), "file") require.NoError(t, os.WriteFile(path, nil, 0o644)) require.NoError(t, Chtimes(path, fmt.Sprintf("%d", modTime.Unix()))) stat, err := os.Stat(path) require.NoError(t, err) require.True(t, modTime.Equal(stat.ModTime())) } func TestChtimesFileDoesNotExist(t *testing.T) { modTime := time.Now().AddDate(-1, 0, 0).Round(1 * time.Second).UTC() path := filepath.Join(t.TempDir(), "file") require.ErrorIs(t, Chtimes(path, fmt.Sprintf("%d", modTime.Unix())), os.ErrNotExist) } func TestChtimesInvalidTS(t *testing.T) { path := filepath.Join(t.TempDir(), "file") require.NoError(t, os.WriteFile(path, nil, 0o644)) require.ErrorIs(t, Chtimes(path, "fake"), strconv.ErrSyntax) } func TestChtimesEmpty(t *testing.T) { modTime := time.Now().AddDate(-1, 0, 0).Round(1 * time.Second).UTC() path := filepath.Join(t.TempDir(), "file") require.NoError(t, os.WriteFile(path, nil, 0o644)) require.NoError(t, Chtimes(path, "")) stat, err := os.Stat(path) require.NoError(t, err) require.False(t, modTime.Equal(stat.ModTime())) }