Bake first-parent git log at Server build and remember the SHA in a browser cookie. Co-authored-by: Cursor <cursoragent@cursor.com>
61 lines
2.1 KiB
C#
61 lines
2.1 KiB
C#
using HSchool.Server.Changelog;
|
|
|
|
namespace HSchool.Server.Tests;
|
|
|
|
public class BuildChangelogTests
|
|
{
|
|
private const string Head = "cccccccccccccccccccccccccccccccccccccccc";
|
|
private const string Mark = "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb";
|
|
private const string Merge = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";
|
|
private const string Unknown = "dddddddddddddddddddddddddddddddddddddddd";
|
|
|
|
private static readonly string Sample = string.Join('\n',
|
|
Head,
|
|
$"{Head}\u001f2026-01-03T12:00:00Z\u001fAdd changelog window",
|
|
$"{Mark}\u001f2026-01-02T12:00:00Z\u001fMark phase 54 in progress.",
|
|
$"{Merge}\u001f2026-01-01T12:00:00Z\u001fMerge branch 'phase/53-weather-commute'");
|
|
|
|
[Fact]
|
|
public void VisibleSince_KnownSha_ReturnsOlderToNewerWithoutMarkPhase()
|
|
{
|
|
var changelog = BuildChangelog.Parse(Sample);
|
|
|
|
var visible = changelog.VisibleSince(Merge);
|
|
|
|
var commit = Assert.Single(visible);
|
|
Assert.Equal(Head, commit.Sha);
|
|
Assert.Equal("Add changelog window", commit.Subject);
|
|
}
|
|
|
|
[Fact]
|
|
public void VisibleSince_MarkPhaseAnchor_StillReturnsLaterVisibleCommits()
|
|
{
|
|
var changelog = BuildChangelog.Parse(Sample);
|
|
|
|
var visible = changelog.VisibleSince(Mark);
|
|
|
|
var commit = Assert.Single(visible);
|
|
Assert.Equal("Add changelog window", commit.Subject);
|
|
}
|
|
|
|
[Fact]
|
|
public void VisibleSince_MissingUnknownOrCurrent_ReturnsEmpty()
|
|
{
|
|
var changelog = BuildChangelog.Parse(Sample);
|
|
|
|
Assert.Empty(changelog.VisibleSince(null));
|
|
Assert.Empty(changelog.VisibleSince(""));
|
|
Assert.Empty(changelog.VisibleSince(Unknown));
|
|
Assert.Empty(changelog.VisibleSince(Head));
|
|
Assert.Empty(changelog.VisibleSince(Head.ToUpperInvariant()));
|
|
}
|
|
|
|
[Fact]
|
|
public void IsMarkPhase_MatchesStatusLineSubjects()
|
|
{
|
|
Assert.True(BuildChangelog.IsMarkPhase("Mark phase 54 in progress."));
|
|
Assert.True(BuildChangelog.IsMarkPhase("Mark phase 47 romance pack as complete."));
|
|
Assert.False(BuildChangelog.IsMarkPhase("Merge branch 'phase/54-whats-new'"));
|
|
}
|
|
}
|