Skip to content

Commit

Permalink
Improve existing tests, and fix runsettings.
Browse files Browse the repository at this point in the history
  • Loading branch information
Gwindalmir committed Oct 12, 2021
1 parent 72c751d commit d1b140d
Show file tree
Hide file tree
Showing 3 changed files with 80 additions and 3 deletions.
70 changes: 69 additions & 1 deletion Tests/IntegrationBase.cs
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,8 @@ namespace Phoenix.WorkshopTool.Tests
public abstract class IntegrationBase : GameTestBase
{
#region Base Setup
protected TextWriter ConsoleOut = new StringWriter();
protected TextWriter ConsoleError = new StringWriter();
protected string[] _extraArguments = new string[0];

public IntegrationBase()
Expand Down Expand Up @@ -65,6 +67,29 @@ public override void OneTimeSetup()
}

}

[SetUp]
public void Setup()
{
// Setup console stream redirection, so we can check the output during the test
Console.SetOut(ConsoleOut);
Console.SetError(ConsoleError);
}

[TearDown]
public void TearDown()
{
// Restore previous streams for the next test
ConsoleOut.Close();
ConsoleError.Close();

Console.SetOut(new StreamWriter(Console.OpenStandardOutput()));
Console.SetError(new StreamWriter(Console.OpenStandardError()));

// Write out the contents to the real stdout/stderr, so they are visible in the test explorer.
TestContext.Out.Write(ConsoleOut.ToString());
TestContext.Error.Write(ConsoleError.ToString());
}
#endregion Base Setup

#region Common Tests
Expand All @@ -77,6 +102,10 @@ public void DownloadMod()

var exitCode = LaunchMain(args.ToArray());
Assert.That(exitCode, Is.EqualTo(0));

var output = ConsoleOut.ToString();
Assert.That(output, Contains.Substring("Download success!"));
Assert.That(output, Contains.Substring($"\\{TestContext.Parameters[$"{ParameterPrefix}.ModIDToDownload"]}"));
}

[Test]
Expand All @@ -88,6 +117,10 @@ public void UpdateTags()

var exitCode = LaunchMain(args.ToArray());
Assert.That(exitCode, Is.EqualTo(0));

var output = ConsoleOut.ToString();
Assert.That(output, Contains.Substring("Tags: Mod, other"));
Assert.That(output, Contains.Substring("Published file update successful"));
}

[Test]
Expand All @@ -99,6 +132,10 @@ public void UploadMod()

var exitCode = LaunchMain(args.ToArray());
Assert.That(exitCode, Is.EqualTo(0));

var output = ConsoleOut.ToString();
Assert.That(output, Contains.Substring("Updating Mod: "));
Assert.That(output, Contains.Substring("Upload/Publish success: "));
}

[Test]
Expand All @@ -110,6 +147,10 @@ public void CompileMod()

var exitCode = LaunchMain(args.ToArray());
Assert.That(exitCode, Is.EqualTo(0));

var output = ConsoleOut.ToString();
Assert.That(output, Contains.Substring("Compilation successful!"));
Assert.That(output, Contains.Substring("Publish skipped"));
}

[Test]
Expand All @@ -122,18 +163,30 @@ public void UploadModWithDescription()

var exitCode = LaunchMain(args.ToArray());
Assert.That(exitCode, Is.EqualTo(0));

var desc = File.ReadAllText(filename);
var output = ConsoleOut.ToString();
Assert.That(output, Contains.Substring("Updating Mod: "));
Assert.That(output, Contains.Substring($"Description: {desc.Substring(0, 20)}"));
Assert.That(output, Contains.Substring("Upload/Publish success: "));
}

// This requires an actual change to push, otherwise there's no changelog posted.
[Test]
[Explicit]
public void UploadModWithChangelog()
{
var args = new List<string>(new[] { "--upload", "--mods", TestContext.Parameters[$"{ParameterPrefix}.ModNameToUpload"], "--tags", "Mod", "--message", $"SEWT Unit Test: {DateTime.Now.ToShortTimeString()}" });
var changelog = $"SEWT Unit Test: {DateTime.Now.ToShortDateString()} {DateTime.Now.ToShortTimeString()}";
var args = new List<string>(new[] { "--upload", "--mods", TestContext.Parameters[$"{ParameterPrefix}.ModNameToUpload"], "--tags", "Mod", "--message", changelog });
args.AddRange(_extraArguments);

var exitCode = LaunchMain(args.ToArray());
Assert.That(exitCode, Is.EqualTo(0));

var output = ConsoleOut.ToString();
Assert.That(output, Contains.Substring("Updating Mod: "));
Assert.That(output, Contains.Substring($"Changelog: {changelog}"));
Assert.That(output, Contains.Substring("Upload/Publish success: "));
}

// This requires an actual change to push, otherwise there's no changelog posted.
Expand All @@ -147,6 +200,12 @@ public void UploadModWithChangelogFile ()

var exitCode = LaunchMain(args.ToArray());
Assert.That(exitCode, Is.EqualTo(0));

var log = File.ReadAllText(filename);
var output = ConsoleOut.ToString();
Assert.That(output, Contains.Substring("Updating Mod: "));
Assert.That(output, Contains.Substring($"Changelog: {log.Substring(0, 20)}"));
Assert.That(output, Contains.Substring("Upload/Publish success: "));
}

[Test]
Expand All @@ -166,6 +225,15 @@ public void UploadNewModDryRun()

var exitCode = LaunchMain(args.ToArray());
Assert.That(exitCode, Is.EqualTo(0));

// Since this is a new upload, this needs to be a throughout check
var output = ConsoleOut.ToString();
Assert.That(output, Contains.Substring($"Uploading new Mod: {newModName}"));
Assert.That(output, Contains.Substring("Visibility: Private"));
Assert.That(output, Contains.Substring("Tags: Mod"));
Assert.That(output, Contains.Substring("DLC requirements: None"));
Assert.That(output, Contains.Substring("Thumbnail: No change"));
Assert.That(output, Contains.Substring("DRY-RUN; Publish skipped"));
}
finally
{
Expand Down
9 changes: 9 additions & 0 deletions Tests/SE/IntegrationTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,11 @@ public void UploadScript()

var exitCode = LaunchMain(args.ToArray());
Assert.That(exitCode, Is.EqualTo(0));

var output = ConsoleOut.ToString();
Assert.That(output, Contains.Substring("Compilation successful!"));
Assert.That(output, Contains.Substring("Updating IngameScript: "));
Assert.That(output, Contains.Substring("Upload/Publish success: "));
}

[Test]
Expand All @@ -30,6 +35,10 @@ public void CompileScript()

var exitCode = LaunchMain(args.ToArray());
Assert.That(exitCode, Is.EqualTo(0));

var output = ConsoleOut.ToString();
Assert.That(output, Contains.Substring("Compilation successful!"));
Assert.That(output, Contains.Substring("DRY-RUN; Publish skipped"));
}
}
}
4 changes: 2 additions & 2 deletions Tests/tests.runsettings
Original file line number Diff line number Diff line change
Expand Up @@ -9,15 +9,15 @@

<!-- Parameters used by tests at runtime -->
<TestRunParameters>
<Parameter name="SE.Install" value="SEWorkshopTool\Bin64" />
<Parameter name="SE.Install" value="SEWorkshopTool" />
<Parameter name="SE.ModIDToDownload" value="637504549" />
<Parameter name="SE.ModNameToUpload" value="test-dev" />
<Parameter name="SE.ScriptNameToUpload" value="Test Script" />
<Parameter name="SE.ModDescriptionFile" value="se-mod-desc.txt" />
<Parameter name="SE.ModChangelogFile" value="se-mod-log.txt" />
<!-- <Parameter name="SE.AppData" value="" /> -->

<Parameter name="ME.Install" value="MEWorkshopTool\Bin64" />
<Parameter name="ME.Install" value="MEWorkshopTool" />
<Parameter name="ME.ModIDToDownload" value="1342545091" />
<Parameter name="ME.ModNameToUpload" value="PickaxeMod_mewt" />
<Parameter name="ME.ModChangelogFile" value="me-mod-log.txt" />
Expand Down

0 comments on commit d1b140d

Please sign in to comment.