Skip to content

Commit 2fded87

Browse files
Loïc Dacharyrealaravinth
Loïc Dachary
authored andcommitted
migrations: a deadline at January 1st, 1970 is valid
Do not change the deadline value if it is set to January 1st, 1970. Setting the deadline to year 9999 when it is zero (which is equal to January 1st, 1970) modifies a deadline set to January 1st, 1970 which is a valid date. In addition, setting a date in year 9999 will be converted to a null date in some cases. Signed-off-by: Loïc Dachary <[email protected]>
1 parent 8c647bf commit 2fded87

File tree

2 files changed

+37
-9
lines changed

2 files changed

+37
-9
lines changed

integrations/dump_restore_test.go

Lines changed: 37 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -15,12 +15,14 @@ import (
1515
repo_model "code.gitea.io/gitea/models/repo"
1616
"code.gitea.io/gitea/models/unittest"
1717
user_model "code.gitea.io/gitea/models/user"
18+
base "code.gitea.io/gitea/modules/migration"
1819
"code.gitea.io/gitea/modules/setting"
1920
"code.gitea.io/gitea/modules/structs"
2021
"code.gitea.io/gitea/modules/util"
2122
"code.gitea.io/gitea/services/migrations"
2223

2324
"github.com/stretchr/testify/assert"
25+
"gopkg.in/yaml.v2"
2426
)
2527

2628
func TestDumpRestore(t *testing.T) {
@@ -56,6 +58,8 @@ func TestDumpRestore(t *testing.T) {
5658
var opts = migrations.MigrateOptions{
5759
GitServiceType: structs.GiteaService,
5860
Issues: true,
61+
Labels: true,
62+
Milestones: true,
5963
Comments: true,
6064
AuthToken: token,
6165
CloneAddr: repo.CloneLink().HTTPS,
@@ -68,7 +72,7 @@ func TestDumpRestore(t *testing.T) {
6872
// Verify desired side effects of the dump
6973
//
7074
d := filepath.Join(basePath, repo.OwnerName, repo.Name)
71-
for _, f := range []string{"repo.yml", "topic.yml", "issue.yml"} {
75+
for _, f := range []string{"repo.yml", "topic.yml", "label.yml", "milestone.yml", "issue.yml"} {
7276
assert.FileExists(t, filepath.Join(d, f))
7377
}
7478

@@ -77,7 +81,7 @@ func TestDumpRestore(t *testing.T) {
7781
//
7882

7983
newreponame := "restoredrepo"
80-
err = migrations.RestoreRepository(ctx, d, repo.OwnerName, newreponame, []string{"issues", "comments"})
84+
err = migrations.RestoreRepository(ctx, d, repo.OwnerName, newreponame, []string{"labels", "milestones", "issues", "comments"})
8185
assert.NoError(t, err)
8286

8387
newrepo := unittest.AssertExistsAndLoadBean(t, &repo_model.Repository{Name: newreponame}).(*repo_model.Repository)
@@ -94,11 +98,38 @@ func TestDumpRestore(t *testing.T) {
9498
// Verify the dump of restoredrepo is the same as the dump of repo1
9599
//
96100
newd := filepath.Join(basePath, newrepo.OwnerName, newrepo.Name)
97-
beforeBytes, err := os.ReadFile(filepath.Join(d, "repo.yml"))
101+
for _, filename := range []string{"repo.yml", "label.yml", "milestone.yml"} {
102+
beforeBytes, err := os.ReadFile(filepath.Join(d, filename))
103+
assert.NoError(t, err)
104+
before := strings.ReplaceAll(string(beforeBytes), reponame, newreponame)
105+
after, err := os.ReadFile(filepath.Join(newd, filename))
106+
assert.NoError(t, err)
107+
assert.EqualValues(t, before, string(after))
108+
}
109+
110+
beforeBytes, err := os.ReadFile(filepath.Join(d, "issue.yml"))
98111
assert.NoError(t, err)
99-
before := strings.ReplaceAll(string(beforeBytes), reponame, newreponame)
100-
after, err := os.ReadFile(filepath.Join(newd, "repo.yml"))
112+
var before = make([]*base.Issue, 0, 10)
113+
assert.NoError(t, yaml.Unmarshal(beforeBytes, &before))
114+
afterBytes, err := os.ReadFile(filepath.Join(newd, "issue.yml"))
101115
assert.NoError(t, err)
102-
assert.EqualValues(t, before, string(after))
116+
var after = make([]*base.Issue, 0, 10)
117+
assert.NoError(t, yaml.Unmarshal(afterBytes, &after))
118+
119+
assert.EqualValues(t, len(before), len(after))
120+
if len(before) == len(after) {
121+
for i := 0; i < len(before); i++ {
122+
assert.EqualValues(t, before[i].Number, after[i].Number)
123+
assert.EqualValues(t, before[i].Title, after[i].Title)
124+
assert.EqualValues(t, before[i].Content, after[i].Content)
125+
assert.EqualValues(t, before[i].Ref, after[i].Ref)
126+
assert.EqualValues(t, before[i].Milestone, after[i].Milestone)
127+
assert.EqualValues(t, before[i].State, after[i].State)
128+
assert.EqualValues(t, before[i].IsLocked, after[i].IsLocked)
129+
assert.EqualValues(t, before[i].Created, after[i].Created)
130+
assert.EqualValues(t, before[i].Updated, after[i].Updated)
131+
assert.EqualValues(t, before[i].Labels, after[i].Labels)
132+
}
133+
}
103134
})
104135
}

services/migrations/gitea_uploader.go

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -165,9 +165,6 @@ func (g *GiteaLocalUploader) CreateMilestones(milestones ...*base.Milestone) err
165165
if milestone.Deadline != nil {
166166
deadline = timeutil.TimeStamp(milestone.Deadline.Unix())
167167
}
168-
if deadline == 0 {
169-
deadline = timeutil.TimeStamp(time.Date(9999, 1, 1, 0, 0, 0, 0, setting.DefaultUILocation).Unix())
170-
}
171168

172169
if milestone.Created.IsZero() {
173170
if milestone.Updated != nil {

0 commit comments

Comments
 (0)