From b98ae5aca7a1948edeb23e64defac32e16f59a36 Mon Sep 17 00:00:00 2001 From: Przemyslaw Klys Date: Thu, 19 Aug 2021 21:38:23 +0200 Subject: [PATCH] Tests file, for future use. --- O365Essentials.Tests.ps1 | 59 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 59 insertions(+) create mode 100644 O365Essentials.Tests.ps1 diff --git a/O365Essentials.Tests.ps1 b/O365Essentials.Tests.ps1 new file mode 100644 index 000000000..f0e735a7e --- /dev/null +++ b/O365Essentials.Tests.ps1 @@ -0,0 +1,59 @@ +$ModuleName = (Get-ChildItem $PSScriptRoot\*.psd1).BaseName +$PrimaryModule = Get-ChildItem -Path $PSScriptRoot -Filter '*.psd1' -Recurse -ErrorAction SilentlyContinue -Depth 1 +if (-not $PrimaryModule) { + throw "Path $PSScriptRoot doesn't contain PSD1 files. Failing tests." +} +if ($PrimaryModule.Count -ne 1) { + throw 'More than one PSD1 files detected. Failing tests.' +} +$PSDInformation = Import-PowerShellDataFile -Path $PrimaryModule.FullName +$RequiredModules = @( + 'Pester' + 'PSWriteColor' + 'PSParseHTML' + if ($PSDInformation.RequiredModules) { + $PSDInformation.RequiredModules + } +) +foreach ($Module in $RequiredModules) { + if ($Module -is [System.Collections.IDictionary]) { + $Exists = Get-Module -ListAvailable -Name $Module.ModuleName + if (-not $Exists) { + Write-Warning "$ModuleName - Downloading $($Module.ModuleName) from PSGallery" + Install-Module -Name $Module.ModuleName -Force -SkipPublisherCheck + } + } else { + $Exists = Get-Module -ListAvailable $Module -ErrorAction SilentlyContinue + if (-not $Exists) { + Install-Module -Name $Module -Force -SkipPublisherCheck + } + } +} + +Write-Color 'ModuleName: ', $ModuleName, ' Version: ', $PSDInformation.ModuleVersion -Color Yellow, Green, Yellow, Green -LinesBefore 2 +Write-Color 'PowerShell Version: ', $PSVersionTable.PSVersion -Color Yellow, Green +Write-Color 'PowerShell Edition: ', $PSVersionTable.PSEdition -Color Yellow, Green +Write-Color 'Required modules: ' -Color Yellow +foreach ($Module in $PSDInformation.RequiredModules) { + if ($Module -is [System.Collections.IDictionary]) { + Write-Color ' [>] ', $Module.ModuleName, ' Version: ', $Module.ModuleVersion -Color Yellow, Green, Yellow, Green + } else { + Write-Color ' [>] ', $Module -Color Yellow, Green + } +} +Write-Color + +Import-Module $PSScriptRoot\*.psd1 -Force +Import-Module Pester -Force +$Configuration = [PesterConfiguration]::Default +$Configuration.Run.Path = "$PSScriptRoot\Tests" +$Configuration.Run.Exit = $true +$Configuration.Should.ErrorAction = 'Continue' +$Configuration.CodeCoverage.Enabled = $false +$Configuration.Output.Verbosity = 'Detailed' +$Result = Invoke-Pester -Configuration $Configuration +#$result = Invoke-Pester -Script $PSScriptRoot\Tests -Verbose -Output Detailed #-EnableExit + +if ($Result.FailedCount -gt 0) { + throw "$($Result.FailedCount) tests failed." +} \ No newline at end of file