Skip to content

Commit c3b0ee3

Browse files
committed
Show error message when dependencies aren't met.
Co-authored-by: Brian Dukes <[email protected]> Co-authored-by: Daniel Bolef <[email protected]> DotNetNuke.BulkInstall/DotNetNuke.BulkInstall.DeployClient.Tests/RendererTests.cs
1 parent f86766a commit c3b0ee3

File tree

2 files changed

+66
-2
lines changed

2 files changed

+66
-2
lines changed

DotNetNuke.BulkInstall/DotNetNuke.BulkInstall.DeployClient.Tests/RendererTests.cs

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -315,6 +315,7 @@ public void RenderInstallationOverview_DisplaysDnnPlatformVersionDependency(LogL
315315
{
316316
new() { PackageName = "09.01.02", DependencyVersion = string.Empty, IsPackageDependency = false, },
317317
},
318+
CanInstall = true,
318319
},
319320
},
320321
};
@@ -341,6 +342,7 @@ public void RenderInstallationOverview_WhenDependencyHasNoVersion_DisplaysDepend
341342
{
342343
new() { PackageName = "DNNJWT", DependencyVersion = string.Empty, IsPackageDependency = true, },
343344
},
345+
CanInstall = true,
344346
},
345347
},
346348
};
@@ -367,6 +369,8 @@ public void RenderInstallationOverview_LogLevelAboveInformation_DoesNotRender(Lo
367369
{
368370
new() { PackageName = "DNNJWT", DependencyVersion = string.Empty, IsPackageDependency = true, },
369371
},
372+
CanInstall = true,
373+
370374
},
371375
},
372376
};
@@ -387,13 +391,15 @@ public void RenderInstallationStatus_OnlyOutputsAttemptedSessionResponses(LogLev
387391
Name = "Jimmy",
388392
Attempted = true,
389393
Success = true,
394+
CanInstall = true,
390395
};
391396

392397
var james = new SessionResponse
393398
{
394399
Name = "James",
395400
Attempted = false,
396401
Success = false,
402+
CanInstall = true,
397403
};
398404

399405
renderer.RenderInstallationStatus(logLevel, new SortedList<int, SessionResponse?> { { 1, jimmy }, { 2, james }, });
@@ -413,19 +419,54 @@ public void RenderInstallationStatus_OutputsMultipleResponsesOnDifferentLines(Lo
413419
Name = "Jimmy",
414420
Attempted = true,
415421
Success = true,
422+
CanInstall = true,
416423
};
417424

418425
var james = new SessionResponse
419426
{
420427
Name = "James",
421428
Attempted = true,
422429
Success = true,
430+
CanInstall = true,
423431
};
424432

425433
renderer.RenderInstallationStatus(logLevel, new SortedList<int, SessionResponse?> { { 1, jimmy }, { 2, james }, });
426434
console.Output.ShouldContainStringsInOrder("✅", "Jimmy", "Succeeded", "\n", "✅", "James", "Succeeded", "\n");
427435
}
428436

437+
[MemberData(nameof(LogLevelsLessThanOrEqualTo), LogLevel.Information)]
438+
[Theory]
439+
public void RenderInstallationStatus_WhenNotSuccessfulButNoFailures_ShowsThatPackageFailed(LogLevel logLevel)
440+
{
441+
var packages = new SortedList<int, SessionResponse?>
442+
{
443+
{
444+
0,
445+
new SessionResponse
446+
{
447+
CanInstall = false,
448+
Name = "Jamestown.zip",
449+
Failures = new List<string?>(0),
450+
Attempted = true,
451+
Success = false,
452+
Packages = new List<PackageResponse?>
453+
{
454+
new PackageResponse { Name = "James: Town", CanInstall = false, VersionStr = "1.2.3", Dependencies = new List<DependencyResponse?>(1) { new DependencyResponse { DependencyVersion = string.Empty, IsPackageDependency = true, PackageName = "Miss Sing" }, }, },
455+
},
456+
}
457+
},
458+
};
459+
460+
var console = new TestConsole().Interactive();
461+
var renderer = new Renderer(console);
462+
renderer.RenderInstallationStatus(logLevel, packages);
463+
464+
console.Output.ShouldContainStringsInOrder(
465+
"❌",
466+
"Jamestown.zip",
467+
"Failed");
468+
}
469+
429470
[MemberData(nameof(LogLevelsGreaterThanOrEqualTo), LogLevel.Warning)]
430471
[Theory]
431472
public void RenderInstallationStatus_ShouldNotRenderWarningOrHigher(LogLevel logLevel)
@@ -438,13 +479,15 @@ public void RenderInstallationStatus_ShouldNotRenderWarningOrHigher(LogLevel log
438479
Name = "Jimmy",
439480
Attempted = true,
440481
Success = true,
482+
CanInstall = true,
441483
};
442484

443485
var james = new SessionResponse
444486
{
445487
Name = "James",
446488
Attempted = true,
447489
Success = true,
490+
CanInstall = true,
448491
};
449492

450493
renderer.RenderInstallationStatus(logLevel, new SortedList<int, SessionResponse?> { { 1, jimmy }, { 2, james }, });
@@ -463,13 +506,15 @@ public void RenderInstallationStatus_DoesNotOutputDuplicateInformation(LogLevel
463506
Name = "James",
464507
Attempted = true,
465508
Success = true,
509+
CanInstall = true,
466510
};
467511

468512
var george = new SessionResponse
469513
{
470514
Name = "George",
471515
Attempted = false,
472516
Success = false,
517+
CanInstall = true,
473518
};
474519

475520
renderer.RenderInstallationStatus(logLevel, new SortedList<int, SessionResponse?> { { 2, james }, { 3, george }, });
@@ -492,13 +537,15 @@ public void RenderInstallationStatus_WhenErrorLevel_DoesNotOutputInformationLeve
492537
Name = "James",
493538
Attempted = true,
494539
Success = true,
540+
CanInstall = true,
495541
};
496542

497543
var george = new SessionResponse
498544
{
499545
Name = "George",
500546
Attempted = false,
501547
Success = false,
548+
CanInstall = true,
502549
};
503550

504551
renderer.RenderInstallationStatus(logLevel, new SortedList<int, SessionResponse?> { { 2, james }, { 3, george }, });
@@ -521,6 +568,7 @@ public void RenderInstallationStatus_OutputsMessageWhenPackageIsSuccessful(LogLe
521568
Name = "James",
522569
Attempted = false,
523570
Success = false,
571+
CanInstall = true,
524572
};
525573

526574
renderer.RenderInstallationStatus(logLevel, new SortedList<int, SessionResponse?> { { 2, james }, });
@@ -542,13 +590,15 @@ public void RenderInstallationStatus_RendersFailures(LogLevel logLevel)
542590
Name = "Jimmy",
543591
Attempted = true,
544592
Failures = new List<string?> { "BAD ZIP", "REALLY FAILED", },
593+
CanInstall = true,
545594
};
546595

547596
var james = new SessionResponse
548597
{
549598
Name = "James",
550599
Attempted = true,
551600
Success = false,
601+
CanInstall = true,
552602
};
553603

554604
renderer.RenderInstallationStatus(logLevel, new SortedList<int, SessionResponse?> { { 1, jimmy }, { 2, james }, });
@@ -568,6 +618,7 @@ public void RenderInstallationStatus_FailuresHaveSpectreMarkup_RendersFailures(L
568618
Name = "Jimmy",
569619
Attempted = true,
570620
Failures = new List<string?> { "Failed SQL Query", "SELECT [Name] FROM Place", },
621+
CanInstall = true,
571622
};
572623

573624
renderer.RenderInstallationStatus(logLevel, new SortedList<int, SessionResponse?> { { 1, jimmy }, });

DotNetNuke.BulkInstall/DotNetNuke.BulkInstall.DeployClient/Renderer.cs

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -228,12 +228,25 @@ public void RenderInstallationStatus(LogLevel level, SortedList<int, SessionResp
228228
this.succeededPackageFiles.Add(file.Name);
229229
}
230230

231-
if (file.Failures?.Any() == true && !this.failedPackageFiles.Contains(file.Name))
231+
if ((file.Failures?.Any() == true || !file.CanInstall) && !this.failedPackageFiles.Contains(file.Name))
232232
{
233233
if (level <= LogLevel.Error)
234234
{
235235
var failureTree = new Tree(Markup.FromInterpolated($":cross_mark: [aqua]{file.Name}[/] [red]Failed[/]"));
236-
failureTree.AddNodes(file.Failures.Where(f => f != null).Select(f => new Text(f!)));
236+
237+
if (file.Failures?.Any() == true)
238+
{
239+
failureTree.AddNodes(file.Failures.Where(f => f != null).Select(f => new Text(f!)));
240+
}
241+
else
242+
{
243+
failureTree.AddNode("Can't install some packages, check their dependencies");
244+
if (file.Packages != null)
245+
{
246+
failureTree.AddNodes(file.Packages.Where(p => p?.CanInstall == false).Select(p => Markup.FromInterpolated($"Unable to install [aqua]{p!.Name}[/]")));
247+
}
248+
}
249+
237250
this.console.Write(failureTree);
238251
}
239252

0 commit comments

Comments
 (0)