Skip to content
This repository was archived by the owner on Dec 5, 2024. It is now read-only.

Commit 84ee60e

Browse files
authored
Merge pull request #113 from github-for-unity/fixes/git-log-entry-string
Using a string to store time in GitLogEntry
2 parents 52ab55f + 6ebb668 commit 84ee60e

File tree

7 files changed

+124
-37
lines changed

7 files changed

+124
-37
lines changed

src/GitHub.Api/Git/GitLogEntry.cs

Lines changed: 37 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
using System;
22
using System.Collections.Generic;
3+
using System.Globalization;
34
using System.Text;
45

56
namespace GitHub.Unity
@@ -19,8 +20,8 @@ struct GitLogEntry
1920
public string CommitName;
2021
public string Summary;
2122
public string Description;
22-
public DateTimeOffset Time;
23-
public DateTimeOffset CommitTime;
23+
public string TimeString;
24+
public string CommitTimeString;
2425
public List<GitStatusEntry> Changes;
2526

2627
public string ShortID
@@ -41,11 +42,43 @@ public string PrettyTimeString
4142
}
4243
}
4344

45+
[NonSerialized] public DateTimeOffset? timeValue;
46+
public DateTimeOffset Time
47+
{
48+
get
49+
{
50+
if (!timeValue.HasValue)
51+
{
52+
timeValue = DateTimeOffset.Parse(TimeString);
53+
}
54+
55+
return timeValue.Value;
56+
}
57+
}
58+
59+
[NonSerialized] public DateTimeOffset? commitTimeValue;
60+
public DateTimeOffset? CommitTime
61+
{
62+
get
63+
{
64+
if (!timeValue.HasValue && !string.IsNullOrEmpty(CommitTimeString))
65+
{
66+
commitTimeValue = DateTimeOffset.Parse(CommitTimeString);
67+
}
68+
69+
return commitTimeValue;
70+
}
71+
}
72+
4473
public void Clear()
4574
{
4675
CommitID = MergeA = MergeB = AuthorName = AuthorEmail = Summary = Description = "";
47-
Time = DateTimeOffset.Now;
48-
Changes = new List<GitStatusEntry>();
76+
77+
timeValue = DateTimeOffset.MinValue;
78+
TimeString = timeValue.Value.ToString(DateTimeFormatInfo.CurrentInfo);
79+
80+
commitTimeValue = null;
81+
CommitTimeString = null;
4982
}
5083

5184
public override string ToString()

src/GitHub.Api/OutputProcessors/LogEntryOutputProcessor.cs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
using System;
22
using System.Collections.Generic;
3+
using System.Globalization;
34
using System.Text;
45
using System.Text.RegularExpressions;
56

@@ -328,8 +329,8 @@ private void ReturnGitLogEntry()
328329
Summary = summary,
329330
Description = description,
330331
CommitID = commitId,
331-
Time = time.Value,
332-
CommitTime = committerTime.Value
332+
TimeString = time.Value.ToString(DateTimeFormatInfo.CurrentInfo),
333+
CommitTimeString = committerTime.Value.ToString(DateTimeFormatInfo.CurrentInfo)
333334
});
334335
}
335336

src/tests/IntegrationTests/Process/ProcessManagerIntegrationTests.cs

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
using System;
22
using System.Collections.Generic;
3+
using System.Globalization;
34
using FluentAssertions;
45
using NUnit.Framework;
56
using GitHub.Unity;
@@ -36,6 +37,9 @@ public async Task LogEntriesTest()
3637
.GetGitLogEntries(TestRepoMasterCleanUnsynchronized, Environment, GitEnvironment, 2)
3738
.StartAsAsync();
3839

40+
var firstCommitTime = new DateTimeOffset(2017, 1, 27, 17, 19, 32, TimeSpan.FromHours(-5));
41+
var secondCommitTime = new DateTimeOffset(2017, 1, 17, 11, 46, 16, TimeSpan.FromHours(-8));
42+
3943
logEntries.AssertEqual(new[]
4044
{
4145
new GitLogEntry
@@ -53,8 +57,8 @@ public async Task LogEntriesTest()
5357
CommitID = "018997938335742f8be694240a7c2b352ec0835f",
5458
Description = "Moving project files where they should be kept",
5559
Summary = "Moving project files where they should be kept",
56-
Time = new DateTimeOffset(2017, 1, 27, 17, 19, 32, TimeSpan.FromHours(-5)),
57-
CommitTime = new DateTimeOffset(2017, 1, 27, 17, 19, 32, TimeSpan.FromHours(-5)),
60+
TimeString = firstCommitTime.ToString(DateTimeFormatInfo.CurrentInfo),
61+
CommitTimeString = firstCommitTime.ToString(DateTimeFormatInfo.CurrentInfo),
5862
},
5963
new GitLogEntry
6064
{
@@ -71,8 +75,8 @@ public async Task LogEntriesTest()
7175
CommitID = "03939ffb3eb8486dba0259b43db00842bbe6eca1",
7276
Description = "Initial Commit",
7377
Summary = "Initial Commit",
74-
Time = new DateTimeOffset(2017, 1, 17, 11, 46, 16, TimeSpan.FromHours(-8)),
75-
CommitTime = new DateTimeOffset(2017, 1, 17, 11, 46, 16, TimeSpan.FromHours(-8)),
78+
TimeString = secondCommitTime.ToString(DateTimeFormatInfo.CurrentInfo),
79+
CommitTimeString = secondCommitTime.ToString(DateTimeFormatInfo.CurrentInfo),
7680
},
7781
});
7882
}
@@ -87,6 +91,8 @@ public async Task RussianLogEntriesTest()
8791
.GetGitLogEntries(TestRepoMasterCleanUnsynchronizedRussianLanguage, Environment, GitEnvironment, 1)
8892
.StartAsAsync();
8993

94+
var commitTime = new DateTimeOffset(2017, 4, 20, 11, 47, 18, TimeSpan.FromHours(-4));
95+
9096
logEntries.AssertEqual(new[]
9197
{
9298
new GitLogEntry
@@ -104,8 +110,8 @@ public async Task RussianLogEntriesTest()
104110
CommitID = "06d6451d351626894a30e9134f551db12c74254b",
105111
Description = "Я люблю github",
106112
Summary = "Я люблю github",
107-
Time = new DateTimeOffset(2017, 4, 20, 11, 47, 18, TimeSpan.FromHours(-4)),
108-
CommitTime = new DateTimeOffset(2017, 4, 20, 11, 47, 18, TimeSpan.FromHours(-4)),
113+
TimeString = commitTime.ToString(DateTimeFormatInfo.CurrentInfo),
114+
CommitTimeString = commitTime.ToString(DateTimeFormatInfo.CurrentInfo),
109115
}
110116
});
111117
}

src/tests/TestUtils/Helpers/AssertExtensions.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,8 @@ public static void AssertEqual(this GitLogEntry gitLogEntry, GitLogEntry other)
2020
gitLogEntry.CommitID.Should().Be(other.CommitID);
2121
gitLogEntry.Summary.Should().Be(other.Summary);
2222
gitLogEntry.Description.Should().Be(other.Description);
23+
gitLogEntry.TimeString.Should().Be(other.TimeString);
24+
gitLogEntry.CommitTimeString.Should().Be(other.CommitTimeString);
2325
gitLogEntry.Time.Should().Be(other.Time);
2426
gitLogEntry.CommitTime.Should().Be(other.CommitTime);
2527
}

src/tests/UnitTests/IO/GitLogEntryListTests.cs

Lines changed: 34 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
using System;
22
using System.Collections.Generic;
3+
using System.Globalization;
34
using NUnit.Framework;
45
using TestUtils;
56
using GitHub.Unity;
@@ -30,6 +31,7 @@ public void NullListShouldNotEqualEmptyList()
3031
[Test]
3132
public void NullListShouldNotEqualListOf1()
3233
{
34+
var commitTime = new DateTimeOffset(1921, 12, 23, 1, 3, 6, 23, TimeSpan.Zero);
3335
var entries = new[]
3436
{
3537
new GitLogEntry
@@ -42,7 +44,8 @@ public void NullListShouldNotEqualListOf1()
4244
CommitID = "CommitID",
4345
Summary = "Summary",
4446
Description = "Description",
45-
Time = new DateTimeOffset(1921, 12, 23, 1, 3, 6, 23, TimeSpan.Zero)
47+
TimeString = commitTime.ToString(DateTimeFormatInfo.CurrentInfo),
48+
CommitTimeString = commitTime.ToString(DateTimeFormatInfo.CurrentInfo),
4649
}
4750
};
4851
GitLogEntry[] otherEntries = null;
@@ -53,6 +56,7 @@ public void NullListShouldNotEqualListOf1()
5356
[Test]
5457
public void EmptyListShouldNotEqualListOf1()
5558
{
59+
var commitTime = new DateTimeOffset(1921, 12, 23, 1, 3, 6, 23, TimeSpan.Zero);
5660
var entries = new[]
5761
{
5862
new GitLogEntry
@@ -65,7 +69,8 @@ public void EmptyListShouldNotEqualListOf1()
6569
CommitID = "CommitID",
6670
Summary = "Summary",
6771
Description = "Description",
68-
Time = new DateTimeOffset(1921, 12, 23, 1, 3, 6, 23, TimeSpan.Zero)
72+
TimeString = commitTime.ToString(DateTimeFormatInfo.CurrentInfo),
73+
CommitTimeString = commitTime.ToString(DateTimeFormatInfo.CurrentInfo),
6974
}
7075
};
7176
GitLogEntry[] otherEntries = new GitLogEntry[0];
@@ -76,6 +81,7 @@ public void EmptyListShouldNotEqualListOf1()
7681
[Test]
7782
public void ListOf1ShouldEqualListOf1()
7883
{
84+
var commitTime = new DateTimeOffset(1921, 12, 23, 1, 3, 6, 23, TimeSpan.Zero);
7985
var entries = new[]
8086
{
8187
new GitLogEntry
@@ -92,7 +98,8 @@ public void ListOf1ShouldEqualListOf1()
9298
CommitID = "CommitID",
9399
Summary = "Summary",
94100
Description = "Description",
95-
Time = new DateTimeOffset(1921, 12, 23, 1, 3, 6, 23, TimeSpan.Zero)
101+
TimeString = commitTime.ToString(DateTimeFormatInfo.CurrentInfo),
102+
CommitTimeString = commitTime.ToString(DateTimeFormatInfo.CurrentInfo),
96103
}
97104
};
98105

@@ -112,7 +119,8 @@ public void ListOf1ShouldEqualListOf1()
112119
CommitID = "CommitID",
113120
Summary = "Summary",
114121
Description = "Description",
115-
Time = new DateTimeOffset(1921, 12, 23, 1, 3, 6, 23, TimeSpan.Zero)
122+
TimeString = commitTime.ToString(DateTimeFormatInfo.CurrentInfo),
123+
CommitTimeString = commitTime.ToString(DateTimeFormatInfo.CurrentInfo),
116124
}
117125
};
118126

@@ -122,6 +130,9 @@ public void ListOf1ShouldEqualListOf1()
122130
[Test]
123131
public void ListOf2ShouldEqualListOf2()
124132
{
133+
var commitTime = new DateTimeOffset(1921, 12, 23, 1, 3, 6, 23, TimeSpan.Zero);
134+
var otherCommitTime = new DateTimeOffset(1981, 12, 23, 1, 3, 6, 23, TimeSpan.Zero);
135+
125136
var entries = new[]
126137
{
127138
new GitLogEntry
@@ -138,7 +149,8 @@ public void ListOf2ShouldEqualListOf2()
138149
CommitID = "CommitID",
139150
Summary = "Summary",
140151
Description = "Description",
141-
Time = new DateTimeOffset(1921, 12, 23, 1, 3, 6, 23, TimeSpan.Zero)
152+
TimeString = commitTime.ToString(DateTimeFormatInfo.CurrentInfo),
153+
CommitTimeString = commitTime.ToString(DateTimeFormatInfo.CurrentInfo),
142154
},
143155
new GitLogEntry
144156
{
@@ -150,7 +162,8 @@ public void ListOf2ShouldEqualListOf2()
150162
CommitID = "OtherCommitID",
151163
Summary = "OtherSummary",
152164
Description = "OtherDescription",
153-
Time = new DateTimeOffset(1981, 12, 23, 1, 3, 6, 23, TimeSpan.Zero)
165+
TimeString = otherCommitTime.ToString(DateTimeFormatInfo.CurrentInfo),
166+
CommitTimeString = otherCommitTime.ToString(DateTimeFormatInfo.CurrentInfo),
154167
}
155168
};
156169

@@ -170,7 +183,8 @@ public void ListOf2ShouldEqualListOf2()
170183
CommitID = "CommitID",
171184
Summary = "Summary",
172185
Description = "Description",
173-
Time = new DateTimeOffset(1921, 12, 23, 1, 3, 6, 23, TimeSpan.Zero)
186+
TimeString = commitTime.ToString(DateTimeFormatInfo.CurrentInfo),
187+
CommitTimeString = commitTime.ToString(DateTimeFormatInfo.CurrentInfo),
174188
},
175189
new GitLogEntry
176190
{
@@ -182,7 +196,8 @@ public void ListOf2ShouldEqualListOf2()
182196
CommitID = "OtherCommitID",
183197
Summary = "OtherSummary",
184198
Description = "OtherDescription",
185-
Time = new DateTimeOffset(1981, 12, 23, 1, 3, 6, 23, TimeSpan.Zero)
199+
TimeString = otherCommitTime.ToString(DateTimeFormatInfo.CurrentInfo),
200+
CommitTimeString = otherCommitTime.ToString(DateTimeFormatInfo.CurrentInfo),
186201
}
187202
};
188203

@@ -192,6 +207,9 @@ public void ListOf2ShouldEqualListOf2()
192207
[Test]
193208
public void ListOf2ShouldNotEqualListOf2InDifferentOrder()
194209
{
210+
var commitTime = new DateTimeOffset(1921, 12, 23, 1, 3, 6, 23, TimeSpan.Zero);
211+
var otherCommitTime = new DateTimeOffset(1981, 12, 23, 1, 3, 6, 23, TimeSpan.Zero);
212+
195213
var entries = new[]
196214
{
197215
new GitLogEntry
@@ -208,7 +226,8 @@ public void ListOf2ShouldNotEqualListOf2InDifferentOrder()
208226
CommitID = "CommitID",
209227
Summary = "Summary",
210228
Description = "Description",
211-
Time = new DateTimeOffset(1921, 12, 23, 1, 3, 6, 23, TimeSpan.Zero)
229+
TimeString = commitTime.ToString(DateTimeFormatInfo.CurrentInfo),
230+
CommitTimeString = commitTime.ToString(DateTimeFormatInfo.CurrentInfo),
212231
},
213232
new GitLogEntry
214233
{
@@ -220,7 +239,8 @@ public void ListOf2ShouldNotEqualListOf2InDifferentOrder()
220239
CommitID = "OtherCommitID",
221240
Summary = "OtherSummary",
222241
Description = "OtherDescription",
223-
Time = new DateTimeOffset(1981, 12, 23, 1, 3, 6, 23, TimeSpan.Zero)
242+
TimeString = otherCommitTime.ToString(DateTimeFormatInfo.CurrentInfo),
243+
CommitTimeString = otherCommitTime.ToString(DateTimeFormatInfo.CurrentInfo),
224244
}
225245
};
226246

@@ -236,7 +256,8 @@ public void ListOf2ShouldNotEqualListOf2InDifferentOrder()
236256
CommitID = "OtherCommitID",
237257
Summary = "OtherSummary",
238258
Description = "OtherDescription",
239-
Time = new DateTimeOffset(1981, 12, 23, 1, 3, 6, 23, TimeSpan.Zero)
259+
TimeString = otherCommitTime.ToString(DateTimeFormatInfo.CurrentInfo),
260+
CommitTimeString = otherCommitTime.ToString(DateTimeFormatInfo.CurrentInfo),
240261
},
241262
new GitLogEntry
242263
{
@@ -252,7 +273,8 @@ public void ListOf2ShouldNotEqualListOf2InDifferentOrder()
252273
CommitID = "CommitID",
253274
Summary = "Summary",
254275
Description = "Description",
255-
Time = new DateTimeOffset(1921, 12, 23, 1, 3, 6, 23, TimeSpan.Zero)
276+
TimeString = commitTime.ToString(DateTimeFormatInfo.CurrentInfo),
277+
CommitTimeString = commitTime.ToString(DateTimeFormatInfo.CurrentInfo),
256278
}
257279
};
258280

0 commit comments

Comments
 (0)