From 529264c4dcc4203d0ce803a675908bfa0404e2da Mon Sep 17 00:00:00 2001 From: KevinMarquette Date: Sun, 28 Oct 2018 14:05:36 -0700 Subject: [PATCH 1/4] add test coverage for Get-Module --- .../Get-Module.Tests.ps1 | 36 +++++++++++++++++-- 1 file changed, 34 insertions(+), 2 deletions(-) diff --git a/test/powershell/Modules/Microsoft.PowerShell.Core/Get-Module.Tests.ps1 b/test/powershell/Modules/Microsoft.PowerShell.Core/Get-Module.Tests.ps1 index ec7eeb3f663..c379bf456e0 100644 --- a/test/powershell/Modules/Microsoft.PowerShell.Core/Get-Module.Tests.ps1 +++ b/test/powershell/Modules/Microsoft.PowerShell.Core/Get-Module.Tests.ps1 @@ -13,8 +13,8 @@ Describe "Get-Module" -Tags "CI" { New-ModuleManifest -Path "$testdrive\Modules\Foo\1.1\Foo.psd1" -ModuleVersion 1.1 New-ModuleManifest -Path "$testdrive\Modules\Foo\2.0\Foo.psd1" -ModuleVersion 2.0 - New-ModuleManifest -Path "$testdrive\Modules\Bar\Bar.psd1" - New-ModuleManifest -Path "$testdrive\Modules\Zoo\Zoo.psd1" + New-ModuleManifest -Path "$testdrive\Modules\Bar\Bar.psd1" -CompatiblePSEditions Desktop + New-ModuleManifest -Path "$testdrive\Modules\Zoo\Zoo.psd1" -CompatiblePSEditions Core New-Item -ItemType File -Path "$testdrive\Modules\Foo\1.1\Foo.psm1" > $null New-Item -ItemType File -Path "$testdrive\Modules\Foo\2.0\Foo.psm1" > $null @@ -99,4 +99,36 @@ Describe "Get-Module" -Tags "CI" { $modules.Name -join "," | Should -BeExactly "Bar,Foo,Foo,Zoo,Zoo" $modules[3].Path | Should -BeExactly (Resolve-Path "$testdrive\Modules\Zoo\Too\Zoo.psm1").Path } + + It "Get-Module -FullyQualifiedName -ListAvailable" { + $moduleSpecification = @{ModuleName = "Foo"; ModuleVersion = "2.0"} + $modules = Get-Module -FullyQualifiedName $moduleSpecification -ListAvailable + $modules | Should -HaveCount 1 + $modules.Name | Should -BeExactly "Foo" + $modules.Version | Should -Be "2.0" + } + + It "Get-Module -PSEdition -ListAvailable" { + $modules = Get-Module -PSEdition 'Desktop' -ListAvailable + $modules | Should -HaveCount 1 + $modules.Name | Should -BeExactly "Bar" + + $modules = Get-Module -PSEdition 'Core' -ListAvailable + $modules | Should -HaveCount 1 + $modules.Name | Should -BeExactly "Zoo" + } + + It "Get-Module -Refresh -ListAvailable" { + $modules = Get-Module -Name 'Zoo' -ListAvailable + $modules | Should -HaveCount 1 + $modules.Name | Should -BeExactly "Zoo" + $modules.ExportedFunctions.Count | Should -Be 0 -Because 'No exports were defined' + + New-ModuleManifest -Path "$testdrive\Modules\Zoo\Zoo.psd1" -CompatiblePSEditions Core -FunctionsToExport 'Test-ZooFunction' + + $modules = Get-Module -Name 'Zoo' -ListAvailable -Refresh + $modules | Should -HaveCount 1 + $modules.Name | Should -BeExactly "Zoo" + $modules.ExportedFunctions.Count | Should -Be 1 -Because 'We added a new function to export' + } } From 27fdb7bbbe99ff7950756e7af726888ef10940ec Mon Sep 17 00:00:00 2001 From: KevinMarquette Date: Sat, 3 Nov 2018 11:49:50 -0700 Subject: [PATCH 2/4] Create new context for PSEdition tests --- .../Get-Module.Tests.ps1 | 45 +++++++++++++------ 1 file changed, 31 insertions(+), 14 deletions(-) diff --git a/test/powershell/Modules/Microsoft.PowerShell.Core/Get-Module.Tests.ps1 b/test/powershell/Modules/Microsoft.PowerShell.Core/Get-Module.Tests.ps1 index c379bf456e0..caf7f9b740d 100644 --- a/test/powershell/Modules/Microsoft.PowerShell.Core/Get-Module.Tests.ps1 +++ b/test/powershell/Modules/Microsoft.PowerShell.Core/Get-Module.Tests.ps1 @@ -1,7 +1,7 @@ # Copyright (c) Microsoft Corporation. All rights reserved. # Licensed under the MIT License. -Describe "Get-Module" -Tags "CI" { +Describe "Get-Module -ListAvailable" -Tags "CI" { BeforeAll { $originalPSModulePath = $env:PSModulePath @@ -13,8 +13,8 @@ Describe "Get-Module" -Tags "CI" { New-ModuleManifest -Path "$testdrive\Modules\Foo\1.1\Foo.psd1" -ModuleVersion 1.1 New-ModuleManifest -Path "$testdrive\Modules\Foo\2.0\Foo.psd1" -ModuleVersion 2.0 - New-ModuleManifest -Path "$testdrive\Modules\Bar\Bar.psd1" -CompatiblePSEditions Desktop - New-ModuleManifest -Path "$testdrive\Modules\Zoo\Zoo.psd1" -CompatiblePSEditions Core + New-ModuleManifest -Path "$testdrive\Modules\Bar\Bar.psd1" + New-ModuleManifest -Path "$testdrive\Modules\Zoo\Zoo.psd1" New-Item -ItemType File -Path "$testdrive\Modules\Foo\1.1\Foo.psm1" > $null New-Item -ItemType File -Path "$testdrive\Modules\Foo\2.0\Foo.psm1" > $null @@ -108,27 +108,44 @@ Describe "Get-Module" -Tags "CI" { $modules.Version | Should -Be "2.0" } - It "Get-Module -PSEdition -ListAvailable" { - $modules = Get-Module -PSEdition 'Desktop' -ListAvailable - $modules | Should -HaveCount 1 - $modules.Name | Should -BeExactly "Bar" - - $modules = Get-Module -PSEdition 'Core' -ListAvailable - $modules | Should -HaveCount 1 - $modules.Name | Should -BeExactly "Zoo" - } - It "Get-Module -Refresh -ListAvailable" { $modules = Get-Module -Name 'Zoo' -ListAvailable $modules | Should -HaveCount 1 $modules.Name | Should -BeExactly "Zoo" $modules.ExportedFunctions.Count | Should -Be 0 -Because 'No exports were defined' - New-ModuleManifest -Path "$testdrive\Modules\Zoo\Zoo.psd1" -CompatiblePSEditions Core -FunctionsToExport 'Test-ZooFunction' + New-ModuleManifest -Path "$testdrive\Modules\Zoo\Zoo.psd1" -FunctionsToExport 'Test-ZooFunction' $modules = Get-Module -Name 'Zoo' -ListAvailable -Refresh $modules | Should -HaveCount 1 $modules.Name | Should -BeExactly "Zoo" $modules.ExportedFunctions.Count | Should -Be 1 -Because 'We added a new function to export' } + + Context "PSEdition" { + + BeforeAll { + New-Item -ItemType Directory -Path "$testdrive\Modules\DesktopOnlyModule" -Force > $null + New-Item -ItemType Directory -Path "$testdrive\Modules\CoreOnlyModule" -Force > $null + New-Item -ItemType Directory -Path "$testdrive\Modules\CoreAndDesktopModule" -Force > $null + + New-ModuleManifest -Path "$testdrive\Modules\DesktopOnlyModule\DesktopOnlyModule.psd1" -CompatiblePSEditions Desktop + New-ModuleManifest -Path "$testdrive\Modules\CoreOnlyModule\CoreOnlyModule.psd1" -CompatiblePSEditions Core + New-ModuleManifest -Path "$testdrive\Modules\CoreAndDesktopModule\CoreAndDesktopModule.psd1" -CompatiblePSEditions Core,Desktop + + New-Item -ItemType File -Path "$testdrive\Modules\DesktopOnlyModule\DesktopOnlyModule.psm1" > $null + New-Item -ItemType File -Path "$testdrive\Modules\CoreOnlyModule\CoreOnlyModule.psm1" > $null + New-Item -ItemType File -Path "$testdrive\Modules\CoreAndDesktopModule\CoreAndDesktopModule.psm1" > $null + } + + It "Get-Module -PSEdition -ListAvailable" -TestCases @( + @{ CompatiblePSEditions = 'Desktop' ; ExpectedModule = 'CoreAndDesktopModule','DesktopOnlyModule' }, + @{ CompatiblePSEditions = 'Core' ; ExpectedModule = 'CoreAndDesktopModule','CoreOnlyModule' } + ) { + param ($CompatiblePSEditions, $ExpectedModule) + $modules = Get-Module -PSEdition $CompatiblePSEditions -ListAvailable + $modules | Should -HaveCount $ExpectedModule.Count + $modules.Name | Sort-Object | Should -Be $ExpectedModule + } + } } From 9e2ad3333aac2b8bfdadc46c731e92741c000955 Mon Sep 17 00:00:00 2001 From: KevinMarquette Date: Sat, 3 Nov 2018 11:53:04 -0700 Subject: [PATCH 3/4] whitespace --- .../Modules/Microsoft.PowerShell.Core/Get-Module.Tests.ps1 | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/test/powershell/Modules/Microsoft.PowerShell.Core/Get-Module.Tests.ps1 b/test/powershell/Modules/Microsoft.PowerShell.Core/Get-Module.Tests.ps1 index caf7f9b740d..570fe4d82fa 100644 --- a/test/powershell/Modules/Microsoft.PowerShell.Core/Get-Module.Tests.ps1 +++ b/test/powershell/Modules/Microsoft.PowerShell.Core/Get-Module.Tests.ps1 @@ -131,7 +131,7 @@ Describe "Get-Module -ListAvailable" -Tags "CI" { New-ModuleManifest -Path "$testdrive\Modules\DesktopOnlyModule\DesktopOnlyModule.psd1" -CompatiblePSEditions Desktop New-ModuleManifest -Path "$testdrive\Modules\CoreOnlyModule\CoreOnlyModule.psd1" -CompatiblePSEditions Core - New-ModuleManifest -Path "$testdrive\Modules\CoreAndDesktopModule\CoreAndDesktopModule.psd1" -CompatiblePSEditions Core,Desktop + New-ModuleManifest -Path "$testdrive\Modules\CoreAndDesktopModule\CoreAndDesktopModule.psd1" -CompatiblePSEditions Core, Desktop New-Item -ItemType File -Path "$testdrive\Modules\DesktopOnlyModule\DesktopOnlyModule.psm1" > $null New-Item -ItemType File -Path "$testdrive\Modules\CoreOnlyModule\CoreOnlyModule.psm1" > $null @@ -139,8 +139,8 @@ Describe "Get-Module -ListAvailable" -Tags "CI" { } It "Get-Module -PSEdition -ListAvailable" -TestCases @( - @{ CompatiblePSEditions = 'Desktop' ; ExpectedModule = 'CoreAndDesktopModule','DesktopOnlyModule' }, - @{ CompatiblePSEditions = 'Core' ; ExpectedModule = 'CoreAndDesktopModule','CoreOnlyModule' } + @{ CompatiblePSEditions = 'Desktop'; ExpectedModule = 'CoreAndDesktopModule', 'DesktopOnlyModule' }, + @{ CompatiblePSEditions = 'Core' ; ExpectedModule = 'CoreAndDesktopModule', 'CoreOnlyModule' } ) { param ($CompatiblePSEditions, $ExpectedModule) $modules = Get-Module -PSEdition $CompatiblePSEditions -ListAvailable From eadd2a40aaa6a5ded6d54e395d191818008227fc Mon Sep 17 00:00:00 2001 From: Kevin Marquette Date: Wed, 7 Nov 2018 01:07:39 -0800 Subject: [PATCH 4/4] test style corrections --- .../Modules/Microsoft.PowerShell.Core/Get-Module.Tests.ps1 | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/powershell/Modules/Microsoft.PowerShell.Core/Get-Module.Tests.ps1 b/test/powershell/Modules/Microsoft.PowerShell.Core/Get-Module.Tests.ps1 index 570fe4d82fa..5e79478a481 100644 --- a/test/powershell/Modules/Microsoft.PowerShell.Core/Get-Module.Tests.ps1 +++ b/test/powershell/Modules/Microsoft.PowerShell.Core/Get-Module.Tests.ps1 @@ -105,7 +105,7 @@ Describe "Get-Module -ListAvailable" -Tags "CI" { $modules = Get-Module -FullyQualifiedName $moduleSpecification -ListAvailable $modules | Should -HaveCount 1 $modules.Name | Should -BeExactly "Foo" - $modules.Version | Should -Be "2.0" + $modules.Version | Should -BeExactly "2.0" } It "Get-Module -Refresh -ListAvailable" { @@ -145,7 +145,7 @@ Describe "Get-Module -ListAvailable" -Tags "CI" { param ($CompatiblePSEditions, $ExpectedModule) $modules = Get-Module -PSEdition $CompatiblePSEditions -ListAvailable $modules | Should -HaveCount $ExpectedModule.Count - $modules.Name | Sort-Object | Should -Be $ExpectedModule + $modules.Name | Sort-Object | Should -BeExactly $ExpectedModule } } }