зеркало из https://github.com/microsoft/PSDocs.git
Merge branch 'main' into dependabot/github_actions/actions/upload-artifact-4
This commit is contained in:
Коммит
f1367bc937
|
@ -125,7 +125,7 @@ jobs:
|
|||
run: ./scripts/pipeline-deps.ps1
|
||||
|
||||
- name: Download module
|
||||
uses: actions/download-artifact@v3
|
||||
uses: actions/download-artifact@v4
|
||||
with:
|
||||
name: Module
|
||||
path: ./out/modules/PSDocs
|
||||
|
|
|
@ -11,3 +11,6 @@ src/**/*-help.xml
|
|||
src/**/*.help.txt
|
||||
BenchmarkDotNet.Artifacts/
|
||||
PSDocs.Benchmark*.log
|
||||
.idea/.idea.PSDocs/.idea/.gitignore
|
||||
.idea/.idea.PSDocs/.idea/indexLayout.xml
|
||||
.idea/.idea.PSDocs/.idea/vcs.xml
|
||||
|
|
14
CHANGELOG.md
14
CHANGELOG.md
|
@ -5,10 +5,16 @@
|
|||
What's changed since v0.9.0:
|
||||
|
||||
- Engineering:
|
||||
- Bump YamlDotNet to v13.7.1.
|
||||
[#284](https://github.com/microsoft/PSDocs/pull/284)
|
||||
- Bump Newtonsoft.Json to v13.0.3.
|
||||
[#284](https://github.com/microsoft/PSDocs/pull/284)
|
||||
- CI update Pester to v5.6.1
|
||||
- Bump BenchmarkDotNet to v0.14.0.
|
||||
- Bump Microsoft.CodeCoverage to v17.10.0.
|
||||
- Bump Microsoft.NET.Test.Sdk to v17.10.0.
|
||||
- Bump xunit to v2.9.0.
|
||||
- Bump xunit.runner.visualstudio to v2.5.7.
|
||||
- Bump YamlDotNet to v13.7.1.
|
||||
[#284](https://github.com/microsoft/PSDocs/pull/284)
|
||||
- Bump Newtonsoft.Json to v13.0.3.
|
||||
[#284](https://github.com/microsoft/PSDocs/pull/284)
|
||||
|
||||
## v0.9.0
|
||||
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
"dependencies": {},
|
||||
"devDependencies": {
|
||||
"Pester": {
|
||||
"version": "4.10.1"
|
||||
"version": "5.6.1"
|
||||
},
|
||||
"platyPS": {
|
||||
"version": "0.14.2"
|
||||
|
|
|
@ -191,14 +191,20 @@ task Dependencies NuGet, {
|
|||
|
||||
# Synopsis: Test the module
|
||||
task TestModule Dependencies, {
|
||||
Import-Module Pester -RequiredVersion 4.10.1 -Force;
|
||||
Import-Module Pester -RequiredVersion 5.6.1 -Force;
|
||||
|
||||
# Run Pester tests
|
||||
$pesterParams = @{ Path = $PWD; OutputFile = 'reports/pester-unit.xml'; OutputFormat = 'NUnitXml'; PesterOption = @{ IncludeVSCodeMarker = $True }; PassThru = $True; };
|
||||
# Define Pester configuration
|
||||
$pesterConfig = [PesterConfiguration]::Default
|
||||
$pesterConfig.Run.PassThru = $True
|
||||
# Enable NUnitXml output
|
||||
$pesterConfig.TestResult.OutputFormat = "NUnitXml"
|
||||
$pesterConfig.TestResult.OutputPath = 'reports/pester-unit.xml'
|
||||
$pesterConfig.TestResult.Enabled = $True
|
||||
|
||||
if ($CodeCoverage) {
|
||||
$pesterParams.Add('CodeCoverage', (Join-Path -Path $PWD -ChildPath 'out/modules/**/*.psm1'));
|
||||
$pesterParams.Add('CodeCoverageOutputFile', (Join-Path -Path $PWD -ChildPath reports/pester-coverage.xml));
|
||||
$pesterConfig.CodeCoverage.OutputFormat = 'JaCoCo'
|
||||
$pesterConfig.CodeCoverage.OutputPath = 'reports/pester-coverage.xml'
|
||||
$pesterConfig.CodeCoverage.Path = (Join-Path -Path $PWD -ChildPath 'out/modules/**/*.psm1')
|
||||
}
|
||||
|
||||
if (!(Test-Path -Path reports)) {
|
||||
|
@ -206,20 +212,22 @@ task TestModule Dependencies, {
|
|||
}
|
||||
|
||||
if ($Null -ne $TestGroup) {
|
||||
$pesterParams['Tags'] = $TestGroup;
|
||||
$pesterConfig.Filter.Tag = $TestGroup
|
||||
}
|
||||
|
||||
$results = Invoke-Pester @pesterParams;
|
||||
# Run Pester tests
|
||||
$results = Invoke-Pester -Configuration $pesterConfig
|
||||
|
||||
# Throw an error if pester tests failed
|
||||
# Throw an error if Pester tests failed
|
||||
if ($Null -eq $results) {
|
||||
throw 'Failed to get Pester test results.';
|
||||
throw 'Failed to get Pester test results.'
|
||||
}
|
||||
elseif ($results.FailedCount -gt 0) {
|
||||
throw "$($results.FailedCount) tests failed.";
|
||||
elseif ($results.Result.FailedCount -gt 0) {
|
||||
throw "$($results.Result.FailedCount) tests failed."
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
task Benchmark {
|
||||
if ($Benchmark -or $BuildTask -eq 'Benchmark') {
|
||||
dotnet run --project src/PSDocs.Benchmark -f net7.0 -c Release -- benchmark --output $PWD;
|
||||
|
|
|
@ -17,7 +17,7 @@
|
|||
</ItemGroup>
|
||||
|
||||
<ItemGroup Condition="'$(OS)' != 'Windows_NT'">
|
||||
<PackageReference Include="BenchmarkDotNet" Version="0.13.9" />
|
||||
<PackageReference Include="BenchmarkDotNet" Version="0.14.0" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup Condition="'$(OS)' == 'Windows_NT'">
|
||||
|
|
|
@ -8,27 +8,30 @@
|
|||
[CmdletBinding()]
|
||||
param ()
|
||||
|
||||
# Setup error handling
|
||||
$ErrorActionPreference = 'Stop';
|
||||
Set-StrictMode -Version latest;
|
||||
|
||||
# Setup tests paths
|
||||
$rootPath = $PWD;
|
||||
Import-Module (Join-Path -Path $rootPath -ChildPath out/modules/PSDocs) -Force;
|
||||
$here = (Resolve-Path $PSScriptRoot).Path;
|
||||
$nl = [System.Environment]::NewLine;
|
||||
BeforeAll{
|
||||
# Setup error handling
|
||||
$ErrorActionPreference = 'Stop';
|
||||
Set-StrictMode -Version latest;
|
||||
|
||||
# Setup tests paths
|
||||
$rootPath = $PWD;
|
||||
Import-Module (Join-Path -Path $rootPath -ChildPath out/modules/PSDocs) -Force;
|
||||
$here = (Resolve-Path $PSScriptRoot).Path;
|
||||
$nl = [System.Environment]::NewLine;
|
||||
}
|
||||
Describe 'PSDocs -- BlockQuote keyword' -Tag BlockQuote {
|
||||
$docFilePath = Join-Path -Path $here -ChildPath 'FromFile.Keyword.Doc.ps1';
|
||||
$testObject = [PSCustomObject]@{
|
||||
Name = 'TestObject'
|
||||
}
|
||||
|
||||
|
||||
Context 'Markdown' {
|
||||
$invokeParams = @{
|
||||
Path = $docFilePath
|
||||
InputObject = $testObject
|
||||
PassThru = $True
|
||||
BeforeAll{
|
||||
$docFilePath = Join-Path -Path $here -ChildPath 'FromFile.Keyword.Doc.ps1';
|
||||
$testObject = [PSCustomObject]@{
|
||||
Name = 'TestObject'
|
||||
}
|
||||
$invokeParams = @{
|
||||
Path = $docFilePath
|
||||
InputObject = $testObject
|
||||
PassThru = $True
|
||||
}
|
||||
}
|
||||
It 'Should handle single line input' {
|
||||
$result = Invoke-PSDocument @invokeParams -Name 'BlockQuoteSingleMarkdown';
|
||||
|
|
|
@ -8,27 +8,30 @@
|
|||
[CmdletBinding()]
|
||||
param ()
|
||||
|
||||
# Setup error handling
|
||||
$ErrorActionPreference = 'Stop';
|
||||
Set-StrictMode -Version latest;
|
||||
BeforeAll {
|
||||
# Setup error handling
|
||||
$ErrorActionPreference = 'Stop';
|
||||
Set-StrictMode -Version latest;
|
||||
|
||||
# Setup tests paths
|
||||
$rootPath = $PWD;
|
||||
Import-Module (Join-Path -Path $rootPath -ChildPath out/modules/PSDocs) -Force;
|
||||
$here = (Resolve-Path $PSScriptRoot).Path;
|
||||
$nl = [System.Environment]::NewLine;
|
||||
# Setup tests paths
|
||||
$rootPath = $PWD;
|
||||
Import-Module (Join-Path -Path $rootPath -ChildPath out/modules/PSDocs) -Force;
|
||||
$here = (Resolve-Path $PSScriptRoot).Path;
|
||||
$nl = [System.Environment]::NewLine;
|
||||
}
|
||||
|
||||
Describe 'PSDocs -- Code keyword' -Tag Code {
|
||||
$docFilePath = Join-Path -Path $here -ChildPath 'FromFile.Keyword.Doc.ps1';
|
||||
$testObject = [PSCustomObject]@{
|
||||
Name = 'TestObject'
|
||||
}
|
||||
|
||||
Context 'Markdown' {
|
||||
$invokeParams = @{
|
||||
Path = $docFilePath
|
||||
InputObject = $testObject
|
||||
PassThru = $True
|
||||
BeforeAll {
|
||||
$docFilePath = Join-Path -Path $here -ChildPath 'FromFile.Keyword.Doc.ps1';
|
||||
$testObject = [PSCustomObject]@{
|
||||
Name = 'TestObject'
|
||||
}
|
||||
$invokeParams = @{
|
||||
Path = $docFilePath
|
||||
InputObject = $testObject
|
||||
PassThru = $True
|
||||
}
|
||||
}
|
||||
It 'Should have generated output' {
|
||||
$result = Invoke-PSDocument @invokeParams -Name 'CodeMarkdown';
|
||||
|
|
|
@ -8,44 +8,45 @@
|
|||
[CmdletBinding()]
|
||||
param ()
|
||||
|
||||
# Setup error handling
|
||||
$ErrorActionPreference = 'Stop';
|
||||
Set-StrictMode -Version latest;
|
||||
BeforeAll {
|
||||
# Setup error handling
|
||||
$ErrorActionPreference = 'Stop';
|
||||
Set-StrictMode -Version latest;
|
||||
|
||||
# Setup tests paths
|
||||
$rootPath = $PWD;
|
||||
# Setup tests paths
|
||||
$rootPath = $PWD;
|
||||
Import-Module (Join-Path -Path $rootPath.Path -ChildPath out/modules/PSDocs) -Force;
|
||||
$outputPath = Join-Path -Path $rootPath.Path -ChildPath out/tests/PSDocs.Tests/Common;
|
||||
Remove-Item -Path $outputPath -Force -Recurse -Confirm:$False -ErrorAction Ignore;
|
||||
$Null = New-Item -Path $outputPath -ItemType Directory -Force;
|
||||
$here = (Resolve-Path $PSScriptRoot).Path;
|
||||
|
||||
Import-Module (Join-Path -Path $rootPath -ChildPath out/modules/PSDocs) -Force;
|
||||
|
||||
$outputPath = Join-Path -Path $rootPath -ChildPath out/tests/PSDocs.Tests/Common;
|
||||
Remove-Item -Path $outputPath -Force -Recurse -Confirm:$False -ErrorAction Ignore;
|
||||
$Null = New-Item -Path $outputPath -ItemType Directory -Force;
|
||||
$here = (Resolve-Path $PSScriptRoot).Path;
|
||||
|
||||
$dummyObject = New-Object -TypeName PSObject -Property @{
|
||||
Object = [PSObject]@{
|
||||
Name = 'ObjectName'
|
||||
Value = 'ObjectValue'
|
||||
}
|
||||
|
||||
Hashtable = @{
|
||||
Name = 'HashName'
|
||||
Value = 'HashValue'
|
||||
$dummyObject = New-Object -TypeName PSObject -Property @{
|
||||
Object = [PSObject]@{
|
||||
Name = 'ObjectName'
|
||||
Value = 'ObjectValue'
|
||||
}
|
||||
|
||||
Hashtable = @{
|
||||
Name = 'HashName'
|
||||
Value = 'HashValue'
|
||||
}
|
||||
}
|
||||
$docFilePath = Join-Path -Path $here -ChildPath 'FromFile.Cmdlets.Doc.ps1';
|
||||
}
|
||||
|
||||
Describe 'PSDocs instance names' -Tag 'Common', 'InstanceName' {
|
||||
$docFilePath = Join-Path -Path $here -ChildPath 'FromFile.Cmdlets.Doc.ps1';
|
||||
|
||||
Context 'Generate a document without an instance name' {
|
||||
$invokeParams = @{
|
||||
Path = $docFilePath
|
||||
InputObject = $dummyObject
|
||||
OutputPath = $outputPath
|
||||
BeforeAll {
|
||||
$invokeParams = @{
|
||||
Path = $docFilePath
|
||||
InputObject = $dummyObject
|
||||
OutputPath = $outputPath
|
||||
}
|
||||
$result = Invoke-PSDocument @invokeParams -Name 'WithoutInstanceName';
|
||||
}
|
||||
$result = Invoke-PSDocument @invokeParams -Name 'WithoutInstanceName';
|
||||
It 'Should generate an output named WithoutInstanceName.md' {
|
||||
Test-Path -Path $result.FullName | Should be $True;
|
||||
Test-Path -Path $result.FullName | Should -Be $True;
|
||||
$outputDoc = Get-Content -Path $result.FullName -Raw;
|
||||
$outputDoc | Should -Match 'WithoutInstanceName';
|
||||
$outputDoc | Should -Match 'ObjectName';
|
||||
|
@ -54,12 +55,14 @@ Describe 'PSDocs instance names' -Tag 'Common', 'InstanceName' {
|
|||
}
|
||||
|
||||
Context 'Generate a document with an instance name' {
|
||||
$invokeParams = @{
|
||||
Path = $docFilePath
|
||||
InputObject = $dummyObject
|
||||
OutputPath = $outputPath
|
||||
BeforeAll {
|
||||
$invokeParams = @{
|
||||
Path = $docFilePath
|
||||
InputObject = $dummyObject
|
||||
OutputPath = $outputPath
|
||||
}
|
||||
$null = Invoke-PSDocument @invokeParams -InstanceName 'Instance1' -Name 'WithInstanceName';
|
||||
}
|
||||
$null = Invoke-PSDocument @invokeParams -InstanceName 'Instance1' -Name 'WithInstanceName';
|
||||
It 'Should not create a output with the document name' {
|
||||
Test-Path -Path "$outputPath\WithInstanceName.md" | Should -Be $False;
|
||||
Test-Path -Path "$outputPath\Instance1.md" | Should -Be $True;
|
||||
|
@ -68,51 +71,59 @@ Describe 'PSDocs instance names' -Tag 'Common', 'InstanceName' {
|
|||
}
|
||||
|
||||
Context 'Generate a document with multiple instance names' {
|
||||
$invokeParams = @{
|
||||
Path = $docFilePath
|
||||
InputObject = $dummyObject
|
||||
OutputPath = $outputPath
|
||||
BeforeAll {
|
||||
$invokeParams = @{
|
||||
Path = $docFilePath
|
||||
InputObject = $dummyObject
|
||||
OutputPath = $outputPath
|
||||
}
|
||||
$null = Invoke-PSDocument @invokeParams -InstanceName 'Instance2', 'Instance3' -Name 'WithMultiInstanceName';
|
||||
}
|
||||
$null = Invoke-PSDocument @invokeParams -InstanceName 'Instance2','Instance3' -Name 'WithMultiInstanceName';
|
||||
It 'Should not create a output with the document name' {
|
||||
Test-Path -Path "$outputPath\WithMultiInstanceName.md" | Should be $False;
|
||||
Test-Path -Path "$outputPath\WithMultiInstanceName.md" | Should -Be $False;
|
||||
}
|
||||
It 'Should generate an output named Instance2.md' {
|
||||
Test-Path -Path "$outputPath\Instance2.md" | Should be $True;
|
||||
Get-Content -Path "$outputPath\Instance2.md" -Raw | Should match 'Instance2';
|
||||
Test-Path -Path "$outputPath\Instance2.md" | Should -Be $True;
|
||||
Get-Content -Path "$outputPath\Instance2.md" -Raw | Should -Match 'Instance2';
|
||||
}
|
||||
It 'Should generate an output named Instance3.md' {
|
||||
Test-Path -Path "$outputPath\Instance3.md" | Should be $True;
|
||||
Get-Content -Path "$outputPath\Instance3.md" -Raw | Should match 'Instance3';
|
||||
Test-Path -Path "$outputPath\Instance3.md" | Should -Be $True;
|
||||
Get-Content -Path "$outputPath\Instance3.md" -Raw | Should -Match 'Instance3';
|
||||
}
|
||||
}
|
||||
|
||||
Context 'Generate a document with a specific encoding' {
|
||||
$testObject = [PSCustomObject]@{
|
||||
Name = 'TestObject'
|
||||
}
|
||||
$invokeParams = @{
|
||||
Path = $docFilePath
|
||||
InputObject = $testObject
|
||||
OutputPath = $outputPath
|
||||
BeforeAll {
|
||||
$testObject = [PSCustomObject]@{
|
||||
Name = 'TestObject'
|
||||
}
|
||||
$invokeParams = @{
|
||||
Path = $docFilePath
|
||||
InputObject = $testObject
|
||||
OutputPath = $outputPath
|
||||
}
|
||||
$encodings = @('UTF8', 'UTF7', 'Unicode', 'ASCII', 'UTF32')
|
||||
}
|
||||
# Check each encoding can be written then read
|
||||
foreach ($encoding in @('UTF8', 'UTF7', 'Unicode', 'ASCII', 'UTF32')) {
|
||||
foreach ($encoding in $encodings) {
|
||||
$currentEncoding = $encoding
|
||||
It "Should generate $encoding encoded content" {
|
||||
Invoke-PSDocument @invokeParams -InstanceName "With$encoding" -Encoding $encoding -Name 'WithEncoding';
|
||||
Get-Content -Path (Join-Path -Path $outputPath -ChildPath "With$encoding.md") -Encoding $encoding | Out-String | Should -Match "^(With$encoding(\r|\n|\r\n))$";
|
||||
Invoke-PSDocument @invokeParams -InstanceName "With$currentEncoding" -Encoding $currentEncoding -Name 'WithEncoding';
|
||||
Get-Content -Path (Join-Path -Path $outputPath -ChildPath "With$currentEncoding.md") -Encoding $currentEncoding | Out-String | Should -Match "^(With$currentEncoding(\r|\n|\r\n))$";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Context 'With -PassThru' {
|
||||
$testObject = [PSCustomObject]@{
|
||||
Name = 'TestObject'
|
||||
}
|
||||
$invokeParams = @{
|
||||
Path = $docFilePath
|
||||
InputObject = $testObject
|
||||
PassThru = $True
|
||||
BeforeAll {
|
||||
$testObject = [PSCustomObject]@{
|
||||
Name = 'TestObject'
|
||||
}
|
||||
$invokeParams = @{
|
||||
Path = $docFilePath
|
||||
InputObject = $testObject
|
||||
PassThru = $True
|
||||
}
|
||||
}
|
||||
It 'Should return results' {
|
||||
$result = Invoke-PSDocument @invokeParams -Name 'WithPassThru';
|
||||
|
@ -122,8 +133,11 @@ Describe 'PSDocs instance names' -Tag 'Common', 'InstanceName' {
|
|||
}
|
||||
|
||||
Describe 'Invoke-PSDocument' -Tag 'Cmdlet', 'Common', 'Invoke-PSDocument', 'FromPath' {
|
||||
$testObject = [PSCustomObject]@{};
|
||||
|
||||
Context 'With -Path' {
|
||||
BeforeAll {
|
||||
$testObject = [PSCustomObject]@{};
|
||||
}
|
||||
It 'Should match name' {
|
||||
# Only generate documents for the named document
|
||||
$testObject | Invoke-PSDocument -Path $here -OutputPath $outputPath -Name FromFileTest2;
|
||||
|
@ -139,7 +153,7 @@ Describe 'Invoke-PSDocument' -Tag 'Cmdlet', 'Common', 'Invoke-PSDocument', 'From
|
|||
}
|
||||
It 'Should match all tags' {
|
||||
# Only generate for documents with all matching tags
|
||||
$testObject | Invoke-PSDocument -Path $here -OutputPath $outputPath -Tag Test4,Test5;
|
||||
$testObject | Invoke-PSDocument -Path $here -OutputPath $outputPath -Tag Test4, Test5;
|
||||
Test-Path -Path "$outputPath\FromFileTest1.md" | Should -Be $False;
|
||||
Test-Path -Path "$outputPath\FromFileTest4.md" | Should -Be $False;
|
||||
Test-Path -Path "$outputPath\FromFileTest5.md" | Should -Be $True;
|
||||
|
@ -155,11 +169,14 @@ Describe 'Invoke-PSDocument' -Tag 'Cmdlet', 'Common', 'Invoke-PSDocument', 'From
|
|||
}
|
||||
|
||||
Context 'With -Module' {
|
||||
$testModuleSourcePath = Join-Path $here -ChildPath 'TestModule';
|
||||
|
||||
It 'Returns documents' {
|
||||
BeforeAll {
|
||||
$testObject = [PSCustomObject]@{};
|
||||
$testModuleSourcePath = Join-Path $here -ChildPath 'TestModule';
|
||||
$Null = Import-Module $testModuleSourcePath -Force;
|
||||
$result = @($testObject | Invoke-PSDocument -Module 'TestModule' -Name 'TestDocument1' -Culture 'en-US', 'en-AU', 'en-ZZ');
|
||||
}
|
||||
|
||||
It 'Returns documents' {
|
||||
$result | Should -Not -BeNullOrEmpty;
|
||||
$result.Length | Should -Be 3;
|
||||
$result[0].Split([System.Environment]::NewLine, [System.StringSplitOptions]::RemoveEmptyEntries) | Should -Be "Culture=en-US";
|
||||
|
@ -169,8 +186,11 @@ Describe 'Invoke-PSDocument' -Tag 'Cmdlet', 'Common', 'Invoke-PSDocument', 'From
|
|||
}
|
||||
|
||||
Context 'With -PassThru' {
|
||||
BeforeAll {
|
||||
$testObject = [PSCustomObject]@{};
|
||||
$result = @($testObject | Invoke-PSDocument -Path $here -OutputPath $outputPath -Name FromFileTest1, FromFileTest2 -PassThru);
|
||||
}
|
||||
It 'Should return results' {
|
||||
$result = @($testObject | Invoke-PSDocument -Path $here -OutputPath $outputPath -Name FromFileTest1,FromFileTest2 -PassThru);
|
||||
$result | Should -Not -BeNullOrEmpty;
|
||||
$result.Length | Should -Be 2;
|
||||
$result[0] | Should -Match "`# Test title";
|
||||
|
@ -179,8 +199,10 @@ Describe 'Invoke-PSDocument' -Tag 'Cmdlet', 'Common', 'Invoke-PSDocument', 'From
|
|||
}
|
||||
|
||||
Context 'With -InputPath' {
|
||||
BeforeAll {
|
||||
$result = @(Invoke-PSDocument -Path $here -OutputPath $outputPath -InputPath $here/*.yml -Name FromFileTest1, FromFileTest2 -PassThru);
|
||||
}
|
||||
It 'Should return results' {
|
||||
$result = @(Invoke-PSDocument -Path $here -OutputPath $outputPath -InputPath $here/*.yml -Name FromFileTest1,FromFileTest2 -PassThru);
|
||||
$result | Should -Not -BeNullOrEmpty;
|
||||
$result.Length | Should -Be 4;
|
||||
$result[0] | Should -Match "`# Test title";
|
||||
|
@ -189,6 +211,9 @@ Describe 'Invoke-PSDocument' -Tag 'Cmdlet', 'Common', 'Invoke-PSDocument', 'From
|
|||
}
|
||||
|
||||
Context 'With constrained language' {
|
||||
BeforeAll {
|
||||
$testObject = [PSCustomObject]@{};
|
||||
}
|
||||
# Check that '[Console]::WriteLine('Should fail')' is not executed
|
||||
It 'Should fail to execute blocked code' {
|
||||
{ $testObject | Invoke-PSDocument -Path $here -OutputPath $outputPath -Name 'ConstrainedTest2' -Option @{ 'Execution.LanguageMode' = 'ConstrainedLanguage' } -ErrorAction Stop } | Should -Throw 'Cannot invoke method. Method invocation is supported only on core types in this language mode.';
|
||||
|
@ -205,48 +230,54 @@ Describe 'Invoke-PSDocument' -Tag 'Cmdlet', 'Common', 'Invoke-PSDocument', 'From
|
|||
}
|
||||
|
||||
Describe 'Get-PSDocument' -Tag 'Cmdlet', 'Common', 'Get-PSDocument' {
|
||||
$docFilePath = Join-Path -Path $here -ChildPath 'FromFile.Cmdlets.Doc.ps1';
|
||||
|
||||
Context 'With -Module' {
|
||||
$testModuleSourcePath = Join-Path $here -ChildPath 'TestModule';
|
||||
|
||||
It 'Returns documents' {
|
||||
BeforeAll {
|
||||
$testModuleSourcePath = Join-Path $here -ChildPath 'TestModule'
|
||||
$mock = Mock -ModuleName 'PSDocs' LoadModule
|
||||
Import-Module $testModuleSourcePath -Force
|
||||
if ($Null -ne (Get-Module -Name TestModule -ErrorAction SilentlyContinue)) {
|
||||
$Null = Remove-Module -Name TestModule;
|
||||
}
|
||||
$Null = Import-Module $testModuleSourcePath -Force;
|
||||
$result = @(Get-PSDocument -Module 'TestModule');
|
||||
$currentLoadingPreference = Get-Variable -Name PSModuleAutoLoadingPreference -ErrorAction SilentlyContinue -ValueOnly
|
||||
$Env:PSModulePath = $here;
|
||||
}
|
||||
It 'Returns documents' {
|
||||
$result | Should -Not -BeNullOrEmpty;
|
||||
$result.Length | Should -Be 2;
|
||||
$result.Id | Should -BeIn 'TestModule\TestDocument1', 'TestModule\TestDocument2';
|
||||
}
|
||||
|
||||
if ($Null -ne (Get-Module -Name TestModule -ErrorAction SilentlyContinue)) {
|
||||
$Null = Remove-Module -Name TestModule;
|
||||
}
|
||||
|
||||
It 'Loads module with preference' {
|
||||
Mock -CommandName 'LoadModule' -ModuleName 'PSDocs';
|
||||
$currentLoadingPreference = Get-Variable -Name PSModuleAutoLoadingPreference -ErrorAction SilentlyContinue -ValueOnly;
|
||||
|
||||
try {
|
||||
# Test negative case
|
||||
$Global:PSModuleAutoLoadingPreference = [System.Management.Automation.PSModuleAutoLoadingPreference]::None;
|
||||
$Null = Get-PSDocument -Module 'TestModule';
|
||||
Assert-MockCalled -CommandName 'LoadModule' -ModuleName 'PSDocs' -Times 0 -Scope 'It';
|
||||
|
||||
$Global:PSModuleAutoLoadingPreference = [System.Management.Automation.PSModuleAutoLoadingPreference]::None
|
||||
Write-Host "Calling Get-PSDocument with preference set to None"
|
||||
$Null = Get-PSDocument -Module 'TestModule'
|
||||
#Assert-MockCalled -CommandName 'LoadModule' -ModuleName 'PSDocs' -Times 0 -Scope 'It'
|
||||
$mock | Should -Invoke LoadModule -ModuleName 'PSDocs' -Times 0 -Scope 'It'
|
||||
# Test positive case
|
||||
$Global:PSModuleAutoLoadingPreference = [System.Management.Automation.PSModuleAutoLoadingPreference]::All;
|
||||
$Null = Get-PSDocument -Module 'TestModule';
|
||||
Assert-MockCalled -CommandName 'LoadModule' -ModuleName 'PSDocs' -Times 1 -Scope 'It';
|
||||
$Global:PSModuleAutoLoadingPreference = [System.Management.Automation.PSModuleAutoLoadingPreference]::All
|
||||
Write-Host "Calling Get-PSDocument with preference set to All"
|
||||
$Null = Get-PSDocument -Module 'TestModule'
|
||||
#Assert-MockCalled -CommandName 'LoadModule' -ModuleName 'PSDocs' -Times 1 -Scope 'It' -Exactly
|
||||
$mock | Should -Invoke LoadModule -ModuleName 'PSDocs' -Times 1 -Scope 'It'
|
||||
|
||||
Assert-VerifiableMocks
|
||||
}
|
||||
finally {
|
||||
if ($Null -eq $currentLoadingPreference) {
|
||||
Remove-Variable -Name PSModuleAutoLoadingPreference -Force -ErrorAction SilentlyContinue;
|
||||
Remove-Variable -Name PSModuleAutoLoadingPreference -Force -ErrorAction SilentlyContinue
|
||||
}
|
||||
else {
|
||||
$Global:PSModuleAutoLoadingPreference = $currentLoadingPreference;
|
||||
$Global:PSModuleAutoLoadingPreference = $currentLoadingPreference
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
It 'Use modules already loaded' {
|
||||
Mock -CommandName 'GetAutoloadPreference' -ModuleName 'PSDocs' -MockWith {
|
||||
return [System.Management.Automation.PSModuleAutoLoadingPreference]::All;
|
||||
|
@ -312,17 +343,18 @@ Describe 'Get-PSDocument' -Tag 'Cmdlet', 'Common', 'Get-PSDocument' {
|
|||
}
|
||||
|
||||
Describe 'Get-PSDocumentHeader' -Tag 'Cmdlet', 'Common', 'Get-PSDocumentHeader' {
|
||||
$docFilePath = Join-Path -Path $here -ChildPath 'FromFile.Cmdlets.Doc.ps1';
|
||||
|
||||
Context 'With -Path' {
|
||||
$testObject = [PSCustomObject]@{
|
||||
Name = 'TestObject'
|
||||
}
|
||||
$invokeParams = @{
|
||||
Path = $docFilePath
|
||||
InputObject = $testObject
|
||||
OutputPath = $outputPath
|
||||
BeforeAll {
|
||||
$testObject = [PSCustomObject]@{
|
||||
Name = 'TestObject'
|
||||
}
|
||||
$invokeParams = @{
|
||||
Path = $docFilePath
|
||||
InputObject = $testObject
|
||||
OutputPath = $outputPath
|
||||
}
|
||||
}
|
||||
|
||||
It 'Get Metadata header' {
|
||||
$result = Invoke-PSDocument @invokeParams -Name 'WithMetadata';
|
||||
$result = Get-PSDocumentHeader -Path $outputPath;
|
||||
|
|
|
@ -7,28 +7,31 @@
|
|||
|
||||
[CmdletBinding()]
|
||||
param ()
|
||||
BeforeAll {
|
||||
# Setup error handling
|
||||
$ErrorActionPreference = 'Stop';
|
||||
Set-StrictMode -Version latest;
|
||||
|
||||
# Setup error handling
|
||||
$ErrorActionPreference = 'Stop';
|
||||
Set-StrictMode -Version latest;
|
||||
|
||||
# Setup tests paths
|
||||
$rootPath = $PWD;
|
||||
Import-Module (Join-Path -Path $rootPath -ChildPath out/modules/PSDocs) -Force;
|
||||
$outputPath = Join-Path -Path $rootPath -ChildPath out/tests/PSDocs.Tests/Conventions;
|
||||
$here = (Resolve-Path $PSScriptRoot).Path;
|
||||
|
||||
# Setup tests paths
|
||||
$rootPath = $PWD;
|
||||
Import-Module (Join-Path -Path $rootPath -ChildPath out/modules/PSDocs) -Force;
|
||||
$outputPath = Join-Path -Path $rootPath -ChildPath out/tests/PSDocs.Tests/Conventions;
|
||||
$here = (Resolve-Path $PSScriptRoot).Path;
|
||||
}
|
||||
Describe 'PSDocs -- Conventions' -Tag Conventions {
|
||||
$docFilePath = Join-Path -Path $here -ChildPath 'FromFile.Conventions.Doc.ps1';
|
||||
$testObject = [PSCustomObject]@{
|
||||
Name = 'TestObject'
|
||||
}
|
||||
|
||||
|
||||
Context '-Convention' {
|
||||
$invokeParams = @{
|
||||
Path = $docFilePath
|
||||
InputObject = $testObject
|
||||
OutputPath = $outputPath
|
||||
BeforeAll {
|
||||
$docFilePath = Join-Path -Path $here -ChildPath 'FromFile.Conventions.Doc.ps1';
|
||||
$testObject = [PSCustomObject]@{
|
||||
Name = 'TestObject'
|
||||
}
|
||||
$invokeParams = @{
|
||||
Path = $docFilePath
|
||||
InputObject = $testObject
|
||||
OutputPath = $outputPath
|
||||
}
|
||||
}
|
||||
It 'Generate output' {
|
||||
# Singe convention
|
||||
|
|
|
@ -8,29 +8,31 @@
|
|||
[CmdletBinding()]
|
||||
param ()
|
||||
|
||||
# Setup error handling
|
||||
$ErrorActionPreference = 'Stop';
|
||||
Set-StrictMode -Version latest;
|
||||
BeforeAll {
|
||||
# Setup error handling
|
||||
$ErrorActionPreference = 'Stop';
|
||||
Set-StrictMode -Version latest;
|
||||
|
||||
# Setup tests paths
|
||||
$rootPath = $PWD;
|
||||
# Setup tests paths
|
||||
$rootPath = $PWD;
|
||||
|
||||
Import-Module (Join-Path -Path $rootPath -ChildPath out/modules/PSDocs) -Force;
|
||||
|
||||
$outputPath = Join-Path -Path $rootPath -ChildPath out/tests/PSDocs.Tests/Include;
|
||||
Remove-Item -Path $outputPath -Force -Recurse -Confirm:$False -ErrorAction Ignore;
|
||||
$Null = New-Item -Path $outputPath -ItemType Directory -Force;
|
||||
$here = (Resolve-Path $PSScriptRoot).Path;
|
||||
Import-Module (Join-Path -Path $rootPath -ChildPath out/modules/PSDocs) -Force;
|
||||
|
||||
$outputPath = Join-Path -Path $rootPath -ChildPath out/tests/PSDocs.Tests/Include;
|
||||
Remove-Item -Path $outputPath -Force -Recurse -Confirm:$False -ErrorAction Ignore;
|
||||
$Null = New-Item -Path $outputPath -ItemType Directory -Force;
|
||||
$here = (Resolve-Path $PSScriptRoot).Path;
|
||||
}
|
||||
Describe 'PSDocs -- Include keyword' -Tag Include {
|
||||
$docFilePath = Join-Path -Path $here -ChildPath 'FromFile.Keyword.Doc.ps1';
|
||||
$testObject = [PSCustomObject]@{};
|
||||
|
||||
Context 'Markdown' {
|
||||
$invokeParams = @{
|
||||
Path = $docFilePath
|
||||
OutputPath = $outputPath
|
||||
ErrorAction = [System.Management.Automation.ActionPreference]::Stop
|
||||
BeforeAll {
|
||||
$docFilePath = Join-Path -Path $here -ChildPath 'FromFile.Keyword.Doc.ps1';
|
||||
$testObject = [PSCustomObject]@{};
|
||||
$invokeParams = @{
|
||||
Path = $docFilePath
|
||||
OutputPath = $outputPath
|
||||
ErrorAction = [System.Management.Automation.ActionPreference]::Stop
|
||||
}
|
||||
}
|
||||
|
||||
It 'Should include a relative path' {
|
||||
|
@ -51,7 +53,7 @@ Describe 'PSDocs -- Include keyword' -Tag Include {
|
|||
}
|
||||
|
||||
It 'Should include from culture' {
|
||||
$Null = $testObject | Invoke-PSDocument @invokeParams -Culture 'en-AU','en-US' -Name 'IncludeCulture';
|
||||
$Null = $testObject | Invoke-PSDocument @invokeParams -Culture 'en-AU', 'en-US' -Name 'IncludeCulture';
|
||||
|
||||
$outputDoc = "$outputPath\en-AU\IncludeCulture.md";
|
||||
Test-Path -Path $outputDoc | Should -Be $True;
|
||||
|
|
|
@ -9,26 +9,29 @@
|
|||
param (
|
||||
|
||||
)
|
||||
BeforeAll {
|
||||
# Setup error handling
|
||||
$ErrorActionPreference = 'Stop';
|
||||
Set-StrictMode -Version latest;
|
||||
|
||||
# Setup error handling
|
||||
$ErrorActionPreference = 'Stop';
|
||||
Set-StrictMode -Version latest;
|
||||
|
||||
# Setup tests paths
|
||||
$rootPath = $PWD;
|
||||
Import-Module (Join-Path -Path $rootPath -ChildPath out/modules/PSDocs) -Force;
|
||||
$here = (Resolve-Path $PSScriptRoot).Path;
|
||||
$dummyObject = New-Object -TypeName PSObject;
|
||||
|
||||
# Setup tests paths
|
||||
$rootPath = $PWD;
|
||||
Import-Module (Join-Path -Path $rootPath -ChildPath out/modules/PSDocs) -Force;
|
||||
$here = (Resolve-Path $PSScriptRoot).Path;
|
||||
$dummyObject = New-Object -TypeName PSObject;
|
||||
}
|
||||
Describe 'PSDocs -- Metadata keyword' -Tag Metadata {
|
||||
$docFilePath = Join-Path -Path $here -ChildPath 'FromFile.Keyword.Doc.ps1';
|
||||
|
||||
Context 'Markdown' {
|
||||
BeforeAll{
|
||||
|
||||
$docFilePath = Join-Path -Path $here -ChildPath 'FromFile.Keyword.Doc.ps1';
|
||||
$invokeParams = @{
|
||||
Path = $docFilePath
|
||||
Path = $docFilePath
|
||||
InputObject = $dummyObject
|
||||
PassThru = $True
|
||||
PassThru = $True
|
||||
}
|
||||
}
|
||||
It 'Metadata single entry' {
|
||||
$result = Invoke-PSDocument @invokeParams -Name 'MetadataSingleEntry';
|
||||
$result | Should -Match '---(\r|\n|\r\n)title: Test(\r|\n|\r\n)---';
|
||||
|
|
|
@ -9,27 +9,30 @@
|
|||
param (
|
||||
|
||||
)
|
||||
BeforeAll {
|
||||
# Setup error handling
|
||||
$ErrorActionPreference = 'Stop';
|
||||
Set-StrictMode -Version latest;
|
||||
|
||||
# Setup error handling
|
||||
$ErrorActionPreference = 'Stop';
|
||||
Set-StrictMode -Version latest;
|
||||
|
||||
# Setup tests paths
|
||||
$rootPath = $PWD;
|
||||
Import-Module (Join-Path -Path $rootPath -ChildPath out/modules/PSDocs) -Force;
|
||||
$here = (Resolve-Path $PSScriptRoot).Path;
|
||||
|
||||
# Setup tests paths
|
||||
$rootPath = $PWD;
|
||||
Import-Module (Join-Path -Path $rootPath -ChildPath out/modules/PSDocs) -Force;
|
||||
$here = (Resolve-Path $PSScriptRoot).Path;
|
||||
}
|
||||
Describe 'PSDocs -- Note keyword' -Tag Note {
|
||||
$docFilePath = Join-Path -Path $here -ChildPath 'FromFile.Keyword.Doc.ps1';
|
||||
$testObject = [PSCustomObject]@{
|
||||
Name = 'TestObject'
|
||||
}
|
||||
|
||||
|
||||
Context 'Markdown' {
|
||||
$invokeParams = @{
|
||||
Path = $docFilePath
|
||||
InputObject = $testObject
|
||||
PassThru = $True
|
||||
BeforeAll {
|
||||
$docFilePath = Join-Path -Path $here -ChildPath 'FromFile.Keyword.Doc.ps1';
|
||||
$testObject = [PSCustomObject]@{
|
||||
Name = 'TestObject'
|
||||
}
|
||||
$invokeParams = @{
|
||||
Path = $docFilePath
|
||||
InputObject = $testObject
|
||||
PassThru = $True
|
||||
}
|
||||
}
|
||||
It 'Should handle single line input' {
|
||||
$result = Invoke-PSDocument @invokeParams -Name 'NoteSingleMarkdown';
|
||||
|
|
|
@ -8,28 +8,30 @@
|
|||
[CmdletBinding()]
|
||||
param ()
|
||||
|
||||
# Setup error handling
|
||||
$ErrorActionPreference = 'Stop';
|
||||
Set-StrictMode -Version latest;
|
||||
|
||||
# Setup tests paths
|
||||
$rootPath = $PWD;
|
||||
$here = Split-Path -Parent $MyInvocation.MyCommand.Path;
|
||||
Import-Module (Join-Path -Path $rootPath -ChildPath out/modules/PSDocs) -Force;
|
||||
$emptyOptionsFilePath = Join-Path -Path $here -ChildPath 'psdocs.yml';
|
||||
BeforeAll {
|
||||
# Setup error handling
|
||||
$ErrorActionPreference = 'Stop';
|
||||
Set-StrictMode -Version latest;
|
||||
|
||||
# Setup tests paths
|
||||
$rootPath = $PWD;
|
||||
$here = Split-Path -Parent $MyInvocation.MyCommand.Definition
|
||||
Import-Module (Join-Path -Path $rootPath -ChildPath out/modules/PSDocs) -Force;
|
||||
$emptyOptionsFilePath = Join-Path -Path $here -ChildPath 'psdocs.yml';
|
||||
}
|
||||
Describe 'New-PSDocumentOption' -Tag 'Option' {
|
||||
Context 'Read psdocs.yml' {
|
||||
|
||||
try {
|
||||
Push-Location -Path $here;
|
||||
It 'can read default YAML' {
|
||||
$option = New-PSDocumentOption;
|
||||
$option.Generator | Should -Be 'PSDocs';
|
||||
BeforeAll {
|
||||
try {
|
||||
Push-Location -Path $here;
|
||||
It 'can read default YAML' {
|
||||
$option = New-PSDocumentOption;
|
||||
$option.Generator | Should -Be 'PSDocs';
|
||||
}
|
||||
}
|
||||
finally {
|
||||
Pop-Location;
|
||||
}
|
||||
}
|
||||
finally {
|
||||
Pop-Location;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -7,25 +7,28 @@
|
|||
|
||||
[CmdletBinding()]
|
||||
param ()
|
||||
BeforeAll {
|
||||
# Setup error handling
|
||||
$ErrorActionPreference = 'Stop';
|
||||
Set-StrictMode -Version latest;
|
||||
|
||||
# Setup error handling
|
||||
$ErrorActionPreference = 'Stop';
|
||||
Set-StrictMode -Version latest;
|
||||
|
||||
# Setup tests paths
|
||||
$rootPath = $PWD;
|
||||
Import-Module (Join-Path -Path $rootPath -ChildPath out/modules/PSDocs) -Force;
|
||||
$here = (Resolve-Path $PSScriptRoot).Path;
|
||||
$dummyObject = New-Object -TypeName PSObject;
|
||||
|
||||
# Setup tests paths
|
||||
$rootPath = $PWD;
|
||||
Import-Module (Join-Path -Path $rootPath -ChildPath out/modules/PSDocs) -Force;
|
||||
$here = (Resolve-Path $PSScriptRoot).Path;
|
||||
$dummyObject = New-Object -TypeName PSObject;
|
||||
}
|
||||
Describe 'PSDocs -- Section keyword' -Tag Section {
|
||||
$docFilePath = Join-Path -Path $here -ChildPath 'FromFile.Keyword.Doc.ps1';
|
||||
|
||||
|
||||
Context 'Markdown' {
|
||||
$invokeParams = @{
|
||||
Path = $docFilePath
|
||||
InputObject = $dummyObject
|
||||
PassThru = $True
|
||||
BeforeAll {
|
||||
$docFilePath = Join-Path -Path $here -ChildPath 'FromFile.Keyword.Doc.ps1';
|
||||
$invokeParams = @{
|
||||
Path = $docFilePath
|
||||
InputObject = $dummyObject
|
||||
PassThru = $True
|
||||
}
|
||||
}
|
||||
|
||||
It 'With defaults' {
|
||||
|
|
|
@ -7,48 +7,50 @@
|
|||
|
||||
[CmdletBinding()]
|
||||
param ()
|
||||
BeforeAll {
|
||||
# Setup error handling
|
||||
$ErrorActionPreference = 'Stop';
|
||||
Set-StrictMode -Version latest;
|
||||
|
||||
# Setup error handling
|
||||
$ErrorActionPreference = 'Stop';
|
||||
Set-StrictMode -Version latest;
|
||||
# Setup tests paths
|
||||
$rootPath = $PWD;
|
||||
|
||||
# Setup tests paths
|
||||
$rootPath = $PWD;
|
||||
Import-Module (Join-Path -Path $rootPath -ChildPath out/modules/PSDocs) -Force;
|
||||
|
||||
Import-Module (Join-Path -Path $rootPath -ChildPath out/modules/PSDocs) -Force;
|
||||
$outputPath = Join-Path -Path $rootPath -ChildPath out/tests/PSDocs.Tests/Selector;
|
||||
Remove-Item -Path $outputPath -Force -Recurse -Confirm:$False -ErrorAction Ignore;
|
||||
$Null = New-Item -Path $outputPath -ItemType Directory -Force;
|
||||
$here = (Resolve-Path $PSScriptRoot).Path;
|
||||
|
||||
$outputPath = Join-Path -Path $rootPath -ChildPath out/tests/PSDocs.Tests/Selector;
|
||||
Remove-Item -Path $outputPath -Force -Recurse -Confirm:$False -ErrorAction Ignore;
|
||||
$Null = New-Item -Path $outputPath -ItemType Directory -Force;
|
||||
$here = (Resolve-Path $PSScriptRoot).Path;
|
||||
$dummyObject = @(
|
||||
[PSObject]@{
|
||||
Name = 'ObjectName'
|
||||
Value = 'ObjectValue'
|
||||
generator = 'PSDocs'
|
||||
}
|
||||
|
||||
$dummyObject = @(
|
||||
[PSObject]@{
|
||||
Name = 'ObjectName'
|
||||
Value = 'ObjectValue'
|
||||
generator = 'PSDocs'
|
||||
}
|
||||
|
||||
[PSObject]@{
|
||||
Name = 'HashName'
|
||||
Value = 'HashValue'
|
||||
generator = 'notPSDocs'
|
||||
}
|
||||
)
|
||||
|
||||
Describe 'PSDocs selectors' -Tag 'Selector' {
|
||||
[PSObject]@{
|
||||
Name = 'HashName'
|
||||
Value = 'HashValue'
|
||||
generator = 'notPSDocs'
|
||||
}
|
||||
)
|
||||
$docFilePath = Join-Path -Path $here -ChildPath 'FromFile.Selector.Doc.ps1';
|
||||
$selectorFilePath = Join-Path -Path $here -ChildPath 'Selectors.Doc.yaml';
|
||||
|
||||
}
|
||||
Describe 'PSDocs selectors' -Tag 'Selector' {
|
||||
Context 'Invoke definitions' {
|
||||
$invokeParams = @{
|
||||
Path = @($docFilePath, $selectorFilePath)
|
||||
}
|
||||
BeforeAll {
|
||||
|
||||
It 'Generates documentation for matching objects' {
|
||||
$result = @($dummyObject | Invoke-PSDocument @invokeParams -Name 'Selector.WithInputObject' -PassThru);
|
||||
$result | Should -Not -BeNullOrEmpty;
|
||||
$result | Should -Not -Be 'Name: HashName';
|
||||
$invokeParams = @{
|
||||
Path = @($docFilePath, $selectorFilePath)
|
||||
}
|
||||
|
||||
It 'Generates documentation for matching objects' {
|
||||
$result = @($dummyObject | Invoke-PSDocument @invokeParams -Name 'Selector.WithInputObject' -PassThru);
|
||||
$result | Should -Not -BeNullOrEmpty;
|
||||
$result | Should -Not -Be 'Name: HashName';
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -8,28 +8,32 @@
|
|||
[CmdletBinding()]
|
||||
param ()
|
||||
|
||||
# Setup error handling
|
||||
$ErrorActionPreference = 'Stop';
|
||||
Set-StrictMode -Version latest;
|
||||
|
||||
# Setup tests paths
|
||||
$rootPath = $PWD;
|
||||
Import-Module (Join-Path -Path $rootPath -ChildPath out/modules/PSDocs) -Force;
|
||||
$here = (Resolve-Path $PSScriptRoot).Path;
|
||||
BeforeAll {
|
||||
# Setup error handling
|
||||
$ErrorActionPreference = 'Stop';
|
||||
Set-StrictMode -Version latest;
|
||||
|
||||
# Setup tests paths
|
||||
$rootPath = $PWD;
|
||||
Import-Module (Join-Path -Path $rootPath -ChildPath out/modules/PSDocs) -Force;
|
||||
$here = (Resolve-Path $PSScriptRoot).Path;
|
||||
}
|
||||
Describe 'PSDocs -- Table keyword' -Tag Table {
|
||||
$docFilePath = Join-Path -Path $here -ChildPath 'FromFile.Keyword.Doc.ps1';
|
||||
$testObject = [PSCustomObject]@{};
|
||||
|
||||
|
||||
Context 'Markdown' {
|
||||
$invokeParams = @{
|
||||
Path = $docFilePath
|
||||
PassThru = $True
|
||||
BeforeAll {
|
||||
$docFilePath = Join-Path -Path $here -ChildPath 'FromFile.Keyword.Doc.ps1';
|
||||
$testObject = [PSCustomObject]@{};
|
||||
$invokeParams = @{
|
||||
Path = $docFilePath
|
||||
PassThru = $True
|
||||
}
|
||||
}
|
||||
It 'With defaults' {
|
||||
$result = Invoke-PSDocument @invokeParams -InputObject $rootPath -InstanceName Table -Name 'TableTests' -Option @{
|
||||
'Markdown.ColumnPadding' = 'None'
|
||||
'Markdown.UseEdgePipes' = 'Always'
|
||||
'Markdown.UseEdgePipes' = 'Always'
|
||||
};
|
||||
$result | Should -Match '(\r|\n|\r\n)|LICENSE|False|(\r|\n|\r\n)';
|
||||
$result | Should -Match '(\r|\n|\r\n)|README.md|False|(\r|\n|\r\n)';
|
||||
|
@ -53,7 +57,7 @@ Describe 'PSDocs -- Table keyword' -Tag Table {
|
|||
|
||||
It 'With multiline column' {
|
||||
$testObject = [PSCustomObject]@{
|
||||
Name = 'Test'
|
||||
Name = 'Test'
|
||||
Description = "This is a`r`ndescription`r`nsplit`r`nover`r`nmultiple`r`nlines."
|
||||
}
|
||||
|
||||
|
@ -70,7 +74,7 @@ Describe 'PSDocs -- Table keyword' -Tag Table {
|
|||
|
||||
It 'With null column' {
|
||||
$testObject = [PSCustomObject]@{
|
||||
Name = 'Test'
|
||||
Name = 'Test'
|
||||
Value = 'Value'
|
||||
}
|
||||
$result = Invoke-PSDocument @invokeParams -Name 'TableWithEmptyColumn' -InputObject $testObject -InstanceName 'TableWithEmptyColumn';
|
||||
|
|
|
@ -10,11 +10,11 @@
|
|||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Microsoft.CodeCoverage" Version="17.7.2" />
|
||||
<PackageReference Include="Microsoft.CodeCoverage" Version="17.10.0" />
|
||||
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.7.2" />
|
||||
<PackageReference Include="Microsoft.PowerShell.SDK" Version="7.3.8" />
|
||||
<PackageReference Include="xunit" Version="2.5.3" />
|
||||
<PackageReference Include="xunit.runner.visualstudio" Version="2.5.3">
|
||||
<PackageReference Include="xunit" Version="2.9.0" />
|
||||
<PackageReference Include="xunit.runner.visualstudio" Version="2.5.7">
|
||||
<PrivateAssets>all</PrivateAssets>
|
||||
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
||||
</PackageReference>
|
||||
|
|
|
@ -8,27 +8,32 @@
|
|||
[CmdletBinding()]
|
||||
param ()
|
||||
|
||||
# Setup error handling
|
||||
$ErrorActionPreference = 'Stop';
|
||||
Set-StrictMode -Version latest;
|
||||
|
||||
# Setup tests paths
|
||||
$rootPath = $PWD;
|
||||
Import-Module (Join-Path -Path $rootPath -ChildPath out/modules/PSDocs) -Force;
|
||||
$here = (Resolve-Path $PSScriptRoot).Path;
|
||||
BeforeAll {
|
||||
# Setup error handling
|
||||
$ErrorActionPreference = 'Stop';
|
||||
Set-StrictMode -Version latest;
|
||||
|
||||
# Setup tests paths
|
||||
$rootPath = $PWD;
|
||||
Import-Module (Join-Path -Path $rootPath -ChildPath out/modules/PSDocs) -Force;
|
||||
$here = (Resolve-Path $PSScriptRoot).Path;
|
||||
}
|
||||
Describe 'PSDocs -- Title keyword' -Tag Title {
|
||||
$docFilePath = Join-Path -Path $here -ChildPath 'FromFile.Keyword.Doc.ps1';
|
||||
$testObject = [PSCustomObject]@{
|
||||
Name = 'TestObject'
|
||||
}
|
||||
|
||||
|
||||
Context 'Markdown' {
|
||||
$invokeParams = @{
|
||||
Path = $docFilePath
|
||||
InputObject = $testObject
|
||||
PassThru = $True
|
||||
ErrorAction = [System.Management.Automation.ActionPreference]::Stop
|
||||
BeforeAll {
|
||||
$docFilePath = Join-Path -Path $here -ChildPath 'FromFile.Keyword.Doc.ps1';
|
||||
$testObject = [PSCustomObject]@{
|
||||
Name = 'TestObject'
|
||||
}
|
||||
|
||||
$invokeParams = @{
|
||||
Path = $docFilePath
|
||||
InputObject = $testObject
|
||||
PassThru = $True
|
||||
ErrorAction = [System.Management.Automation.ActionPreference]::Stop
|
||||
}
|
||||
}
|
||||
It 'With single title' {
|
||||
$result = Invoke-PSDocument @invokeParams -Name 'SingleTitle';
|
||||
|
|
|
@ -8,26 +8,29 @@
|
|||
[CmdletBinding()]
|
||||
param ()
|
||||
|
||||
# Setup error handling
|
||||
$ErrorActionPreference = 'Stop';
|
||||
Set-StrictMode -Version latest;
|
||||
BeforeAll {
|
||||
# Setup error handling
|
||||
$ErrorActionPreference = 'Stop';
|
||||
Set-StrictMode -Version latest;
|
||||
|
||||
# Setup tests paths
|
||||
$rootPath = $PWD;
|
||||
Import-Module (Join-Path -Path $rootPath -ChildPath out/modules/PSDocs) -Force;
|
||||
$here = (Resolve-Path $PSScriptRoot).Path;
|
||||
|
||||
Describe 'PSDocs variables' -Tag 'Variables' {
|
||||
# Setup tests paths
|
||||
$rootPath = $PWD;
|
||||
Import-Module (Join-Path -Path $rootPath -ChildPath out/modules/PSDocs) -Force;
|
||||
$here = (Resolve-Path $PSScriptRoot).Path;
|
||||
$docFilePath = Join-Path -Path $here -ChildPath 'FromFile.Variables.Doc.ps1';
|
||||
$testObject = [PSCustomObject]@{
|
||||
Name = 'TestObject'
|
||||
}
|
||||
}
|
||||
Describe 'PSDocs variables' -Tag 'Variables' {
|
||||
|
||||
Context 'PowerShell automatic variables' {
|
||||
$invokeParams = @{
|
||||
Path = $docFilePath
|
||||
InputObject = $testObject
|
||||
PassThru = $True
|
||||
BeforeAll {
|
||||
$invokeParams = @{
|
||||
Path = $docFilePath
|
||||
InputObject = $testObject
|
||||
PassThru = $True
|
||||
}
|
||||
}
|
||||
It 'Paths' {
|
||||
$result = (Invoke-PSDocument @invokeParams -Name 'PSAutomaticVariables' | Out-String).Split([System.Environment]::NewLine, [System.StringSplitOptions]::RemoveEmptyEntries);
|
||||
|
@ -38,13 +41,15 @@ Describe 'PSDocs variables' -Tag 'Variables' {
|
|||
}
|
||||
|
||||
Context 'PSDocs automatic variables' {
|
||||
$invokeParams = @{
|
||||
Path = $docFilePath
|
||||
InputObject = $testObject
|
||||
PassThru = $True
|
||||
Option = @{
|
||||
'Configuration.author' = @{ name = 'unit-tester' }
|
||||
'Configuration.enabled' = 'faLse'
|
||||
BeforeAll {
|
||||
$invokeParams = @{
|
||||
Path = $docFilePath
|
||||
InputObject = $testObject
|
||||
PassThru = $True
|
||||
Option = @{
|
||||
'Configuration.author' = @{ name = 'unit-tester' }
|
||||
'Configuration.enabled' = 'faLse'
|
||||
}
|
||||
}
|
||||
}
|
||||
It '$PSDocs' {
|
||||
|
|
|
@ -8,6 +8,7 @@
|
|||
[CmdletBinding()]
|
||||
param ()
|
||||
|
||||
BeforeAll{
|
||||
# Setup error handling
|
||||
$ErrorActionPreference = 'Stop';
|
||||
Set-StrictMode -Version latest;
|
||||
|
@ -16,19 +17,22 @@ Set-StrictMode -Version latest;
|
|||
$rootPath = $PWD;
|
||||
Import-Module (Join-Path -Path $rootPath -ChildPath out/modules/PSDocs) -Force;
|
||||
$here = (Resolve-Path $PSScriptRoot).Path;
|
||||
|
||||
}
|
||||
Describe 'PSDocs -- Warning keyword' -Tag Warning {
|
||||
$docFilePath = Join-Path -Path $here -ChildPath 'FromFile.Keyword.Doc.ps1';
|
||||
|
||||
|
||||
Context 'Markdown' {
|
||||
BeforeAll{
|
||||
$docFilePath = Join-Path -Path $here -ChildPath 'FromFile.Keyword.Doc.ps1';
|
||||
$testObject = [PSCustomObject]@{
|
||||
Name = 'TestObject'
|
||||
}
|
||||
|
||||
Context 'Markdown' {
|
||||
$invokeParams = @{
|
||||
Path = $docFilePath
|
||||
InputObject = $testObject
|
||||
PassThru = $True
|
||||
}
|
||||
}
|
||||
It 'Should handle single line input' {
|
||||
$result = Invoke-PSDocument @invokeParams -Name 'WarningSingleMarkdown';
|
||||
$result | Should -Match '\> \[\!WARNING\](\r|\n|\r\n)> This is a single line';
|
||||
|
|
Загрузка…
Ссылка в новой задаче