Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add pending upgrade check #101

Open
wants to merge 2 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 14 additions & 0 deletions Chauffeur.Tests.Integration/UpgradeDeliverable.fs
Original file line number Diff line number Diff line change
Expand Up @@ -29,3 +29,17 @@ type ``Upgrade Umbraco``() =

x.TextWriter.Messages |> should haveLength 1
} |> Async.RunSynchronously

[<Fact>]
member x.``Upgrade will return a message saying there is no pending upgrade``() =
async {
let! _ = x.InstallUmbraco() |> Async.AwaitTask

x.TextWriter.Flush()

let! response = x.Host.Run([| "upgrade check" |]) |> Async.AwaitTask

response |> should equal DeliverableResponse.FinishedWithError
x.TextWriter.Messages |> should haveLength 1
} |> Async.RunSynchronously

45 changes: 44 additions & 1 deletion Chauffeur.Tests/Deliverables/UpgradeDeliverableTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -96,7 +96,7 @@ public async Task DifferentVersions_UpgradeIsCompleted()
}

[Fact]
public async Task UpgradeFailes_ErrorStateReturned()
public async Task UpgradeFails_ErrorStateReturned()
{
migrationRunnerService.Execute(Arg.Any<SemVersion>(), Arg.Any<SemVersion>()).Returns(false);

Expand All @@ -109,6 +109,49 @@ public async Task UpgradeFailes_ErrorStateReturned()
Assert.Equal(DeliverableResponse.FinishedWithError, response);
}

[Fact]
public async Task SameVersions_CheckReturnsNoPendingUpdate()
{

var deliverable = new UpgradeDeliverable(null, writer, null,
MigrationEntryService(new SemVersion(7, 1), UmbracoVersion.GetSemanticVersion(), new SemVersion(7, 3)), settings, xmlDocumentWrapper);

var response = await deliverable.Run(null, new [] { "check" });

Assert.Single(writer.Messages);
Assert.Equal(DeliverableResponse.FinishedWithError, response);
}

[Fact]
public async Task DifferentVersions_CheckReturnsPendingUpdate()
{
migrationRunnerService.Execute(Arg.Any<SemVersion>(), Arg.Any<SemVersion>()).Returns(true);
var anyStringArg = Arg.Any<string>();
settings.TryGetSiteRootDirectory(out anyStringArg).Returns(
x => {
x[0] = @"C:\test\umbraco";
return true;
});

var xmlDoc = new XmlDocument();
xmlDoc.LoadXml(
"<configuration>" +
"<appSettings>" +
"<add key=\"umbracoConfigurationStatus\" value=\"1.1.1\" />" +
"</appSettings>" +
"</configuration>"
);

xmlDocumentWrapper.LoadDocument(Arg.Any<string>()).Returns(xmlDoc);

var deliverable = new UpgradeDeliverable(null, writer, migrationRunnerService,
MigrationEntryService(new SemVersion(7, 1)), settings, xmlDocumentWrapper);

var response = await deliverable.Run(null, new[] { "Check"});

Assert.Single(writer.Messages);
Assert.Equal(DeliverableResponse.Continue, response);
}
private IMigrationEntryService MigrationEntryService(params SemVersion[] versions)
{
var migrationEntryService = Substitute.For<IMigrationEntryService>();
Expand Down
12 changes: 11 additions & 1 deletion Chauffeur/Deliverables/UpgradeDeliverable.cs
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,17 @@ public override async Task<DeliverableResponse> Run(string command, string[] arg

var targetVersion = UmbracoVersion.GetSemanticVersion();

if (currentVersion == targetVersion)
bool sameVersion = currentVersion == targetVersion;

if (args?.Length == 1 && string.Compare(args[0], "check", true) == 0)
{
await Out.WriteLineAsync(sameVersion ?
$"There is no pending upgrade. Umbraco is up to date {currentVersion}"
: $"There is a pending upgrade. Umbraco upgrade from {currentVersion} to {targetVersion}");
return sameVersion ? DeliverableResponse.FinishedWithError : DeliverableResponse.Continue;
}

if (sameVersion)
{
await Out.WriteLineAsync($"Version is up to date {currentVersion} no work todo");
return DeliverableResponse.FinishedWithError;
Expand Down
1 change: 1 addition & 0 deletions docs/available-deliverables.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,4 +18,5 @@ The following Deliverables ship in the box with Chauffeur:
* [Scaffold](deliverable-scaffold.md)
* [Settings](deliverable-settings.md)
* [Unknown](deliverable-unknown.md)
* [Upgrade](deliverable-upgrade.md)
* [User](deliverable-user.md)
8 changes: 8 additions & 0 deletions docs/deliverable-upgrade.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,3 +12,11 @@ Upgrades the Umbraco database from one release to another using the internal Umb
## Usage

umbraco> upgrade

# Check pending upgrade

Checks if there is an upgrade waiting to be installed.

## Usage

umbraco> upgrade check