forked from gitea/gitea
		
	* Fixes #12341: Release date should only be set to current time if draft or tag created * Removes old date set * Adds unit tests * make fmt * Fixes tests * Adds sleep for comparing times * Adds sleep for comparing times * Fixes tests Co-authored-by: Matti R <matti@mdranta.net> Co-authored-by: techknowlogick <techknowlogick@gitea.io> Co-authored-by: zeripath <art27@cantab.net>
This commit is contained in:
		
							parent
							
								
									cd7f1fd72b
								
							
						
					
					
						commit
						8a36c46a7e
					
				| @ -46,6 +46,7 @@ func createTag(gitRepo *git.Repository, rel *models.Release) error { | ||||
| 				rel.Publisher, rel.Repo, git.TagPrefix+rel.TagName, | ||||
| 				git.EmptySHA, commit.ID.String(), repository.NewPushCommits()) | ||||
| 			notification.NotifyCreateRef(rel.Publisher, rel.Repo, "tag", git.TagPrefix+rel.TagName) | ||||
| 			rel.CreatedUnix = timeutil.TimeStampNow() | ||||
| 		} | ||||
| 		commit, err := gitRepo.GetTagCommit(rel.TagName) | ||||
| 		if err != nil { | ||||
| @ -53,7 +54,6 @@ func createTag(gitRepo *git.Repository, rel *models.Release) error { | ||||
| 		} | ||||
| 
 | ||||
| 		rel.Sha1 = commit.ID.String() | ||||
| 		rel.CreatedUnix = timeutil.TimeStampNow() | ||||
| 		rel.NumCommits, err = commit.CommitsCount() | ||||
| 		if err != nil { | ||||
| 			return fmt.Errorf("CommitsCount: %v", err) | ||||
|  | ||||
| @ -7,6 +7,7 @@ package release | ||||
| import ( | ||||
| 	"path/filepath" | ||||
| 	"testing" | ||||
| 	"time" | ||||
| 
 | ||||
| 	"code.gitea.io/gitea/models" | ||||
| 	"code.gitea.io/gitea/modules/git" | ||||
| @ -101,3 +102,153 @@ func TestRelease_Create(t *testing.T) { | ||||
| 		IsTag:        true, | ||||
| 	}, nil)) | ||||
| } | ||||
| 
 | ||||
| func TestRelease_Update(t *testing.T) { | ||||
| 	assert.NoError(t, models.PrepareTestDatabase()) | ||||
| 
 | ||||
| 	user := models.AssertExistsAndLoadBean(t, &models.User{ID: 2}).(*models.User) | ||||
| 	repo := models.AssertExistsAndLoadBean(t, &models.Repository{ID: 1}).(*models.Repository) | ||||
| 	repoPath := models.RepoPath(user.Name, repo.Name) | ||||
| 
 | ||||
| 	gitRepo, err := git.OpenRepository(repoPath) | ||||
| 	assert.NoError(t, err) | ||||
| 	defer gitRepo.Close() | ||||
| 
 | ||||
| 	// Test a changed release | ||||
| 	assert.NoError(t, CreateRelease(gitRepo, &models.Release{ | ||||
| 		RepoID:       repo.ID, | ||||
| 		PublisherID:  user.ID, | ||||
| 		TagName:      "v1.1.1", | ||||
| 		Target:       "master", | ||||
| 		Title:        "v1.1.1 is released", | ||||
| 		Note:         "v1.1.1 is released", | ||||
| 		IsDraft:      false, | ||||
| 		IsPrerelease: false, | ||||
| 		IsTag:        false, | ||||
| 	}, nil)) | ||||
| 	release, err := models.GetRelease(repo.ID, "v1.1.1") | ||||
| 	assert.NoError(t, err) | ||||
| 	releaseCreatedUnix := release.CreatedUnix | ||||
| 	time.Sleep(2 * time.Second) // sleep 2 seconds to ensure a different timestamp | ||||
| 	release.Note = "Changed note" | ||||
| 	assert.NoError(t, UpdateRelease(user, gitRepo, release, nil)) | ||||
| 	release, err = models.GetReleaseByID(release.ID) | ||||
| 	assert.NoError(t, err) | ||||
| 	assert.Equal(t, int64(releaseCreatedUnix), int64(release.CreatedUnix)) | ||||
| 
 | ||||
| 	// Test a changed draft | ||||
| 	assert.NoError(t, CreateRelease(gitRepo, &models.Release{ | ||||
| 		RepoID:       repo.ID, | ||||
| 		PublisherID:  user.ID, | ||||
| 		TagName:      "v1.2.1", | ||||
| 		Target:       "65f1bf2", | ||||
| 		Title:        "v1.2.1 is draft", | ||||
| 		Note:         "v1.2.1 is draft", | ||||
| 		IsDraft:      true, | ||||
| 		IsPrerelease: false, | ||||
| 		IsTag:        false, | ||||
| 	}, nil)) | ||||
| 	release, err = models.GetRelease(repo.ID, "v1.2.1") | ||||
| 	assert.NoError(t, err) | ||||
| 	releaseCreatedUnix = release.CreatedUnix | ||||
| 	time.Sleep(2 * time.Second) // sleep 2 seconds to ensure a different timestamp | ||||
| 	release.Title = "Changed title" | ||||
| 	assert.NoError(t, UpdateRelease(user, gitRepo, release, nil)) | ||||
| 	release, err = models.GetReleaseByID(release.ID) | ||||
| 	assert.NoError(t, err) | ||||
| 	assert.Less(t, int64(releaseCreatedUnix), int64(release.CreatedUnix)) | ||||
| 
 | ||||
| 	// Test a changed pre-release | ||||
| 	assert.NoError(t, CreateRelease(gitRepo, &models.Release{ | ||||
| 		RepoID:       repo.ID, | ||||
| 		PublisherID:  user.ID, | ||||
| 		TagName:      "v1.3.1", | ||||
| 		Target:       "65f1bf2", | ||||
| 		Title:        "v1.3.1 is pre-released", | ||||
| 		Note:         "v1.3.1 is pre-released", | ||||
| 		IsDraft:      false, | ||||
| 		IsPrerelease: true, | ||||
| 		IsTag:        false, | ||||
| 	}, nil)) | ||||
| 	release, err = models.GetRelease(repo.ID, "v1.3.1") | ||||
| 	assert.NoError(t, err) | ||||
| 	releaseCreatedUnix = release.CreatedUnix | ||||
| 	time.Sleep(2 * time.Second) // sleep 2 seconds to ensure a different timestamp | ||||
| 	release.Title = "Changed title" | ||||
| 	release.Note = "Changed note" | ||||
| 	assert.NoError(t, UpdateRelease(user, gitRepo, release, nil)) | ||||
| 	release, err = models.GetReleaseByID(release.ID) | ||||
| 	assert.NoError(t, err) | ||||
| 	assert.Equal(t, int64(releaseCreatedUnix), int64(release.CreatedUnix)) | ||||
| } | ||||
| 
 | ||||
| func TestRelease_createTag(t *testing.T) { | ||||
| 	assert.NoError(t, models.PrepareTestDatabase()) | ||||
| 
 | ||||
| 	user := models.AssertExistsAndLoadBean(t, &models.User{ID: 2}).(*models.User) | ||||
| 	repo := models.AssertExistsAndLoadBean(t, &models.Repository{ID: 1}).(*models.Repository) | ||||
| 	repoPath := models.RepoPath(user.Name, repo.Name) | ||||
| 
 | ||||
| 	gitRepo, err := git.OpenRepository(repoPath) | ||||
| 	assert.NoError(t, err) | ||||
| 	defer gitRepo.Close() | ||||
| 
 | ||||
| 	// Test a changed release | ||||
| 	release := &models.Release{ | ||||
| 		RepoID:       repo.ID, | ||||
| 		PublisherID:  user.ID, | ||||
| 		TagName:      "v2.1.1", | ||||
| 		Target:       "master", | ||||
| 		Title:        "v2.1.1 is released", | ||||
| 		Note:         "v2.1.1 is released", | ||||
| 		IsDraft:      false, | ||||
| 		IsPrerelease: false, | ||||
| 		IsTag:        false, | ||||
| 	} | ||||
| 	assert.NoError(t, createTag(gitRepo, release)) | ||||
| 	assert.NotEmpty(t, release.CreatedUnix) | ||||
| 	releaseCreatedUnix := release.CreatedUnix | ||||
| 	time.Sleep(2 * time.Second) // sleep 2 seconds to ensure a different timestamp | ||||
| 	release.Note = "Changed note" | ||||
| 	assert.NoError(t, createTag(gitRepo, release)) | ||||
| 	assert.Equal(t, int64(releaseCreatedUnix), int64(release.CreatedUnix)) | ||||
| 
 | ||||
| 	// Test a changed draft | ||||
| 	release = &models.Release{ | ||||
| 		RepoID:       repo.ID, | ||||
| 		PublisherID:  user.ID, | ||||
| 		TagName:      "v2.2.1", | ||||
| 		Target:       "65f1bf2", | ||||
| 		Title:        "v2.2.1 is draft", | ||||
| 		Note:         "v2.2.1 is draft", | ||||
| 		IsDraft:      true, | ||||
| 		IsPrerelease: false, | ||||
| 		IsTag:        false, | ||||
| 	} | ||||
| 	assert.NoError(t, createTag(gitRepo, release)) | ||||
| 	releaseCreatedUnix = release.CreatedUnix | ||||
| 	time.Sleep(2 * time.Second) // sleep 2 seconds to ensure a different timestamp | ||||
| 	release.Title = "Changed title" | ||||
| 	assert.NoError(t, createTag(gitRepo, release)) | ||||
| 	assert.Less(t, int64(releaseCreatedUnix), int64(release.CreatedUnix)) | ||||
| 
 | ||||
| 	// Test a changed pre-release | ||||
| 	release = &models.Release{ | ||||
| 		RepoID:       repo.ID, | ||||
| 		PublisherID:  user.ID, | ||||
| 		TagName:      "v2.3.1", | ||||
| 		Target:       "65f1bf2", | ||||
| 		Title:        "v2.3.1 is pre-released", | ||||
| 		Note:         "v2.3.1 is pre-released", | ||||
| 		IsDraft:      false, | ||||
| 		IsPrerelease: true, | ||||
| 		IsTag:        false, | ||||
| 	} | ||||
| 	assert.NoError(t, createTag(gitRepo, release)) | ||||
| 	releaseCreatedUnix = release.CreatedUnix | ||||
| 	time.Sleep(2 * time.Second) // sleep 2 seconds to ensure a different timestamp | ||||
| 	release.Title = "Changed title" | ||||
| 	release.Note = "Changed note" | ||||
| 	assert.NoError(t, createTag(gitRepo, release)) | ||||
| 	assert.Equal(t, int64(releaseCreatedUnix), int64(release.CreatedUnix)) | ||||
| } | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Richard Mahn
						Richard Mahn