Provisioning: Ensure name and email are always set for the AuthorSignature (#112594)

* all properties

* lint
This commit is contained in:
Ryan McKinley
2025-10-20 08:45:02 +00:00
committed by GitHub
parent e478ee2e5f
commit 5c5ecac6ee
2 changed files with 17 additions and 39 deletions
@@ -756,28 +756,26 @@ func (r *gitRepository) createSignature(ctx context.Context) (nanogit.Author, na
Email: "noreply@grafana.com",
Time: time.Now(),
}
committer := nanogit.Committer{
Name: "Grafana",
Email: "noreply@grafana.com",
Time: time.Now(),
}
// Use signature from context if available
if sig := repository.GetAuthorSignature(ctx); sig != nil && sig.Name != "" {
author.Name = sig.Name
author.Email = sig.Email
author.Time = sig.When
committer.Name = sig.Name
committer.Email = sig.Email
committer.Time = sig.When
if sig := repository.GetAuthorSignature(ctx); sig != nil {
if sig.Name != "" {
author.Name = sig.Name
}
if sig.Email != "" {
author.Email = sig.Email
}
if !sig.When.IsZero() {
author.Time = sig.When
}
}
if author.Time.IsZero() {
author.Time = time.Now()
committer.Time = time.Now()
}
return author, committer
// Author and committer are always the same (for now)
return author, nanogit.Committer(author)
}
func (r *gitRepository) commit(ctx context.Context, writer nanogit.StagedWriter, comment string) error {
@@ -346,25 +346,6 @@ func TestCreateSignature(t *testing.T) {
require.Equal(t, time.Date(2024, 1, 1, 12, 0, 0, 0, time.UTC), committer.Time)
})
t.Run("should fallback to default when context signature has empty name", func(t *testing.T) {
sig := repository.CommitSignature{
Name: "",
Email: "john@example.com",
When: time.Date(2024, 1, 1, 12, 0, 0, 0, time.UTC),
}
ctx := repository.WithAuthorSignature(context.Background(), sig)
author, committer := gitRepo.createSignature(ctx)
require.Equal(t, "Grafana", author.Name)
require.Equal(t, "noreply@grafana.com", author.Email)
require.False(t, author.Time.IsZero())
require.Equal(t, "Grafana", committer.Name)
require.Equal(t, "noreply@grafana.com", committer.Email)
require.False(t, committer.Time.IsZero())
})
t.Run("should use current time when signature time is zero", func(t *testing.T) {
sig := repository.CommitSignature{
Name: "John Doe",
@@ -1787,23 +1768,22 @@ func TestGitRepository_createSignature(t *testing.T) {
require.Equal(t, time.Date(2024, 1, 1, 12, 0, 0, 0, time.UTC), committer.Time)
})
t.Run("should fallback to default when context signature has empty name", func(t *testing.T) {
t.Run("should fill in missing signature properties from default values", func(t *testing.T) {
sig := repository.CommitSignature{
Name: "",
Email: "john@example.com",
When: time.Date(2024, 1, 1, 12, 0, 0, 0, time.UTC),
}
ctx := repository.WithAuthorSignature(context.Background(), sig)
author, committer := gitRepo.createSignature(ctx)
require.Equal(t, "Grafana", author.Name)
require.Equal(t, "noreply@grafana.com", author.Email)
require.Equal(t, "Grafana", author.Name) // The default name
require.Equal(t, sig.Email, author.Email)
require.False(t, author.Time.IsZero())
require.Equal(t, "Grafana", committer.Name)
require.Equal(t, "noreply@grafana.com", committer.Email)
require.False(t, committer.Time.IsZero())
require.Equal(t, sig.Email, author.Email)
require.False(t, author.Time.IsZero())
})
t.Run("should use current time when signature time is zero", func(t *testing.T) {