Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
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
Next Next commit
Update tests so they work better in VSCode
Addresses #6 by adding coverage.xml when you run test.ps1
  • Loading branch information
Jaykul committed Dec 19, 2019
commit 4e2a651feb9d0928ea183accb0f21ac700d5e7ad
15 changes: 5 additions & 10 deletions .vscode/tasks.json
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,10 @@
"isDefault": true
},
"type": "shell",
"command": "${workspaceFolder}\\build.ps1",
"command": "${workspaceFolder}/build.ps1",
"options": {
"cwd": "${workspaceFolder}"
},
"presentation": {
"echo": true,
"reveal": "silent",
Expand All @@ -27,18 +30,10 @@
"isDefault": true
},
"type": "shell",
"command": "${workspaceFolder}/test.ps1",
"options": {
"cwd": "${workspaceFolder}",
"env": {
"PSModulePath": "${workspaceFolder}\\Output;${env:PSModulePath}"
}
},
"command": "Invoke-Pester",
"args": [
"${workspaceFolder}\\Tests",
"-PesterOption", "@{ IncludeVSCodeMarker = $True }",
"-CodeCoverage", "${workspaceFolder}\\Output\\*.psm1"
],
"presentation": {
"echo": true,
"reveal": "always",
Expand Down
2 changes: 1 addition & 1 deletion Tests/Private/ConvertToAst.Tests.ps1
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
#requires -Module ModuleBuilder
Describe "ConvertToAst" {
Import-Module ModuleBuilder -DisableNameChecking -Verbose:$False

Context "It returns a ParseResult for file paths" {
$ParseResult = InModuleScope ModuleBuilder {
Expand Down
2 changes: 1 addition & 1 deletion Tests/Private/CopyReadMe.Tests.ps1
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
#requires -Module ModuleBuilder
Describe "Copy ReadMe" {
. $PSScriptRoot\..\Convert-FolderSeparator.ps1
Import-Module ModuleBuilder -DisableNameChecking -Verbose:$False

Context "There's no ReadMe" {
# It should not even call Test-Path
Expand Down
2 changes: 1 addition & 1 deletion Tests/Private/GetBuildInfo.Tests.ps1
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
#requires -Module ModuleBuilder
Describe "GetBuildInfo" {
. $PSScriptRoot\..\Convert-FolderSeparator.ps1
Import-Module ModuleBuilder -DisableNameChecking -Verbose:$False

Mock Import-Metadata -ModuleName ModuleBuilder {
@{
Expand Down
2 changes: 1 addition & 1 deletion Tests/Private/GetCommandAlias.Tests.ps1
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
#requires -Module ModuleBuilder
Describe "GetCommandAlias" {
Import-Module ModuleBuilder -DisableNameChecking -Verbose:$False

Context "Mandatory Parameter" {
$CommandInfo = InModuleScope ModuleBuilder { Get-Command GetCommandAlias }
Expand Down
2 changes: 1 addition & 1 deletion Tests/Private/InitializeBuild.Tests.ps1
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
#requires -Module ModuleBuilder
Describe "InitializeBuild" {
. $PSScriptRoot\..\Convert-FolderSeparator.ps1
Import-Module ModuleBuilder -DisableNameChecking -Verbose:$False

Context "It collects the initial data" {

Expand Down
4 changes: 2 additions & 2 deletions Tests/Private/ParseLineNumber.Tests.ps1
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
#requires -Module ModuleBuilder
Describe "ParseLineNumber" {
Import-Module ModuleBuilder -DisableNameChecking -Verbose:$False

It 'Should get the SourceFile and LineNumber from stack trace messages with modules' {
$Source = InModuleScope ModuleBuilder { ParseLineNumber "at Test-Throw<End>, C:\Test\Path\Modules\ErrorMaker\ErrorMaker.psm1: line 27" }
Expand Down Expand Up @@ -60,4 +60,4 @@ Describe "ParseLineNumber" {
$Source.SourceLineNumber | Should -Be 207
$Source.InvocationBlock | Should -Be "ItImpl"
}
}
}
2 changes: 1 addition & 1 deletion Tests/Private/ResolveBuildManifest.Tests.ps1
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
#requires -Module ModuleBuilder
Describe "ResolveBuildManifest" {
Import-Module ModuleBuilder -DisableNameChecking -Verbose:$False

[string]${Global:Test Root Path} = Resolve-Path $PSScriptRoot\..\..\Source

Expand Down
2 changes: 1 addition & 1 deletion Tests/Private/ResolveOutputFolder.Tests.ps1
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
#requires -Module ModuleBuilder
Describe "ResolveOutputFolder" {
Import-Module ModuleBuilder -DisableNameChecking -Verbose:$False

Context "Given an OutputDirectory and ModuleBase" {

Expand Down
2 changes: 1 addition & 1 deletion Tests/Public/Convert-LineNumber.Tests.ps1
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
#requires -Module ModuleBuilder
Describe "Convert-LineNumber" {
Import-Module ModuleBuilder -DisableNameChecking -Verbose:$False

$ModulePath = Join-Path (Get-Module ModuleBuilder).ModuleBase ModuleBuilder.psm1
$ModuleContent = Get-Content $ModulePath
Expand Down
6 changes: 2 additions & 4 deletions build.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -12,19 +12,17 @@ param(
[Alias("ModuleVersion")]
[string]$SemVer
)

# Sanitize parameters to pass to Build-Module
$null = $PSBoundParameters.Remove('Test')
$ErrorActionPreference = "Stop"
Push-Location $PSScriptRoot -StackName BuildBuildModule

if (-not $Semver) {
if ($semver = gitversion -showvariable SemVer) {
$null = $PSBoundParameters.Add("SemVer", $SemVer)
}
}


$ErrorActionPreference = "Stop"
Push-Location $PSScriptRoot -StackName BuildBuildModule
try {
# Build ModuleBuilder with ModuleBuilder:
Write-Verbose "Compiling ModuleBuilderBootstrap module"
Expand Down
44 changes: 44 additions & 0 deletions test.ps1
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
#requires -Module PowerShellGet, Pester
using namespace Microsoft.PackageManagement.Provider.Utility
param(
[switch]$SkipCodeCoverage,
[switch]$HideSuccess
[switch]$IncludeVSCodeMarker
)
Push-Location $PSScriptRoot
$ModuleUnderTest = Split-Path $PSScriptRoot -Leaf

# Disable default parameters during testing, just in case
$PSDefaultParameterValues += @{}
$PSDefaultParameterValues["Disabled"] = $true

# Find a built module as a version-numbered folder:
$FullModulePath = Get-ChildItem [0-9]* -Directory | Sort-Object { $_.Name -as [SemanticVersion[]] } |
Select-Object -Last 1 -Ov Version |
Get-ChildItem -Filter "$($ModuleUnderTest).psd1"

if(!$FullModulePath) {
throw "Can't find $($ModuleUnderTest).psd1 in $($Version.FullName)"
}

$Show = if ($HideSuccess) {
"Fails"
} else {
"All"
}

Remove-Module (Split-Path $ModuleUnderTest -Leaf) -ErrorAction Ignore -Force
$ModuleUnderTest = Import-Module $FullModulePath -PassThru -Force -DisableNameChecking -Verbose:$false
Write-Host "Invoke-Pester for Module $($ModuleUnderTest) version $($ModuleUnderTest.Version)"

if (-not $SkipCodeCoverage) {
# Get code coverage for the psm1 file to a coverage.xml that we can mess with later
Invoke-Pester (Join-Path $PSScriptRoot Tests) -CodeCoverage $ModuleUnderTest.Path -CodeCoverageOutputFile ./coverage.xml -Show $Show -PesterOption @{ IncludeVSCodeMarker = $IncludeVSCodeMarker }
} else {
Invoke-Pester (Join-Path $PSScriptRoot Tests) -Show $Show -PesterOption @{ IncludeVSCodeMarker = $IncludeVSCodeMarker }
}

Pop-Location

# Re-enable default parameters after testing
$PSDefaultParameterValues["Disabled"] = $false