Pass -c through to dotnet run so Release stamp and process match, assert changelog order for more than one commit, and restore the last school tab from sessionStorage when opening from the menu. Co-authored-by: Cursor <cursoragent@cursor.com>
66 lines
2.4 KiB
C#
66 lines
2.4 KiB
C#
using HSchool.Server.Changelog;
|
|
|
|
namespace HSchool.Server.Tests;
|
|
|
|
public class BuildChangelogTests
|
|
{
|
|
private const string Head = "cccccccccccccccccccccccccccccccccccccccc";
|
|
private const string Mid = "eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee";
|
|
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-04T12:00:00Z\u001fAdd changelog window",
|
|
$"{Mid}\u001f2026-01-03T12:00:00Z\u001fSkip stale AppHost build",
|
|
$"{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);
|
|
|
|
Assert.Equal(2, visible.Count);
|
|
Assert.Equal(Mid, visible[0].Sha);
|
|
Assert.Equal("Skip stale AppHost build", visible[0].Subject);
|
|
Assert.Equal(Head, visible[1].Sha);
|
|
Assert.Equal("Add changelog window", visible[1].Subject);
|
|
}
|
|
|
|
[Fact]
|
|
public void VisibleSince_MarkPhaseAnchor_StillReturnsLaterVisibleCommits()
|
|
{
|
|
var changelog = BuildChangelog.Parse(Sample);
|
|
|
|
var visible = changelog.VisibleSince(Mark);
|
|
|
|
Assert.Equal(2, visible.Count);
|
|
Assert.Equal("Skip stale AppHost build", visible[0].Subject);
|
|
Assert.Equal("Add changelog window", visible[1].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'"));
|
|
}
|
|
}
|