Update pwsh style to latest community standards (#52)
* update pwsh style in store files * update pwsh style in item files * update pwsh style in connection files * update pwsh style in certificate files * update pwsh style in private files * update pwsh style in drone helper * update meta * fix pwsh style * fix output type * fix typo in OutputType * update appveyor build mode * debugging build mode * wip * test windows pipeline * fix typo * simplify drone setup * update readme * remove deprecated cicd setup * update pwsh style
This commit is contained in:
@ -1,249 +0,0 @@
|
||||
<#
|
||||
Define the callsign of you PowerShell Module.
|
||||
Callsign is used to identity:
|
||||
- Module Manifest file name
|
||||
- Artifact File
|
||||
- Git repository name
|
||||
- Module name
|
||||
#>
|
||||
$CALLSIGN = 'PSCredentialStore'
|
||||
Write-Host ("Callsign is: {0}" -f $CALLSIGN) -ForegroundColor Black -BackgroundColor Yellow
|
||||
|
||||
|
||||
Function Invoke-InstallDependencies() {
|
||||
[CmdletBinding()]
|
||||
Param()
|
||||
|
||||
Process {
|
||||
Try {
|
||||
Write-Host 'Available PS modules are:' -ForegroundColor Green -BackgroundColor Black
|
||||
Get-Module -ListAvailable -Name Pester | Format-Table | Out-String
|
||||
Get-PackageProvider -ListAvailable
|
||||
Install-PackageProvider -Name NuGet -RequiredVersion '2.8.5.208' -Force -Verbose
|
||||
Import-PackageProvider -Name NuGet -RequiredVersion '2.8.5.208' -Force
|
||||
Write-Host 'Installing build deps...' -ForegroundColor Red -BackgroundColor Black
|
||||
Install-Module -Name 'Pester' -Scope CurrentUser -RequiredVersion '4.10.1' -Force -SkipPublisherCheck -AllowClobber -Verbose
|
||||
Install-Module -Name 'posh-git' -Scope CurrentUser -RequiredVersion '0.7.3' -Force -SkipPublisherCheck -AllowClobber
|
||||
Install-Module -Name 'PSCoverage' -Scope CurrentUser -Force -SkipPublisherCheck -AllowClobber -RequiredVersion '1.2.108' -Verbose
|
||||
Import-Module -Name 'posh-git'
|
||||
Remove-Module -Name 'Pester' -Force -ErrorAction SilentlyContinue
|
||||
Import-Module -Name 'Pester' -RequiredVersion '4.10.1' -Verbose -Force
|
||||
Import-Module -Name 'PSCoverage' -RequiredVersion '1.2.108' -Verbose -Force
|
||||
}
|
||||
Catch {
|
||||
$MsgParams = @{
|
||||
Message = 'Could not install the required dependencies!'
|
||||
Category = 'Error'
|
||||
Details = $_.Exception.Message
|
||||
}
|
||||
Add-AppveyorMessage @MsgParams
|
||||
Throw $MsgParams.Message
|
||||
}
|
||||
Write-Host 'Loaded PS modules are:' -ForegroundColor Green -BackgroundColor Black
|
||||
Get-Module -Name Pester | Format-Table | Out-String
|
||||
}
|
||||
}
|
||||
Function Invoke-AppVeyorBumpVersion() {
|
||||
[CmdletBinding()]
|
||||
Param()
|
||||
|
||||
Write-Host "Listing Env Vars for debugging:" -ForegroundColor Black -BackgroundColor Yellow
|
||||
# Filter Results to prevent exposing secure vars.
|
||||
Get-ChildItem -Path "Env:*" | Where-Object { $_.name -notmatch "(NuGetToken|CoverallsToken|CodeCovToken)" } | Sort-Object -Property Name | Format-Table
|
||||
|
||||
Try {
|
||||
$ModManifest = Get-Content -Path (".\src\{0}.psd1" -f $CALLSIGN)
|
||||
$BumpedManifest = $ModManifest -replace '0.0.9999', $Env:APPVEYOR_BUILD_VERSION
|
||||
Remove-Item -Path (".\src\{0}.psd1" -f $CALLSIGN)
|
||||
Out-File -FilePath (".\src\{0}.psd1" -f $CALLSIGN) -InputObject $BumpedManifest -NoClobber -Encoding utf8 -Force
|
||||
}
|
||||
Catch {
|
||||
$MsgParams = @{
|
||||
Message = 'Could not bump current version into module manifest.'
|
||||
Category = 'Error'
|
||||
Details = $_.Exception.Message
|
||||
}
|
||||
Add-AppveyorMessage @MsgParams
|
||||
Throw $MsgParams.Message
|
||||
}
|
||||
}
|
||||
|
||||
Function Invoke-AppVeyorBuild() {
|
||||
[CmdletBinding()]
|
||||
[OutputType([PsCustomObject])]
|
||||
Param()
|
||||
$MsgParams = @{
|
||||
Message = 'Creating build artifacts'
|
||||
Category = 'Information'
|
||||
Details = 'Extracting source files and compressing them into zip file.'
|
||||
}
|
||||
Add-AppveyorMessage @MsgParams
|
||||
$CompParams = @{
|
||||
Path = "{0}\src\*" -f $env:APPVEYOR_BUILD_FOLDER
|
||||
DestinationPath = "{0}\bin\{1}.zip" -f $env:APPVEYOR_BUILD_FOLDER, $CALLSIGN
|
||||
Update = $True
|
||||
Verbose = $True
|
||||
}
|
||||
Compress-Archive @CompParams
|
||||
$MsgParams = @{
|
||||
Message = 'Pushing artifacts'
|
||||
Category = 'Information'
|
||||
Details = 'Pushing artifacts to AppVeyor store.'
|
||||
}
|
||||
Add-AppveyorMessage @MsgParams
|
||||
$ArtifactPath = Join-Path -Path '.' -ChildPath ('bin/{0}.zip' -f $CALLSIGN)
|
||||
Push-AppveyorArtifact $ArtifactPath
|
||||
}
|
||||
|
||||
Function Invoke-AppVeyorTests() {
|
||||
[CmdletBinding()]
|
||||
Param()
|
||||
|
||||
$MsgParams = @{
|
||||
Message = 'Starting Pester tests'
|
||||
Category = 'Information'
|
||||
Details = 'Now running all test found in .\tests\ dir.'
|
||||
}
|
||||
Add-AppveyorMessage @MsgParams
|
||||
|
||||
try {
|
||||
Write-Host '===== Preload internal private functions =====' -ForegroundColor Black -BackgroundColor Yellow
|
||||
|
||||
$Privates = Get-ChildItem -Path (Join-Path -Path $Env:APPVEYOR_BUILD_FOLDER -ChildPath '/src/Private/*') -Include "*.ps1" -Recurse
|
||||
foreach ($File in $Privates) {
|
||||
if (Test-Path -Path $File.FullName) {
|
||||
. $File.FullName
|
||||
Write-Verbose -Message ('Private function dot-sourced: {0}' -f $File.FullName) -Verbose
|
||||
}
|
||||
else {
|
||||
Write-Warning -Message ('Could not find file: {0} !' -f $File.FullName)
|
||||
}
|
||||
}
|
||||
Write-Host '===== Preload done. =====' -ForegroundColor Black -BackgroundColor Yellow
|
||||
}
|
||||
catch {
|
||||
$_.Exception.Message | Write-Error
|
||||
throw 'Could not load required private functions!'
|
||||
}
|
||||
|
||||
#$testresults = Invoke-Pester -Path ( Get-ChildItem -Path ".\tests\*.Tests.ps1" -Recurse | Sort-Object -Property Name ) -ExcludeTag 'Disabled' -PassThru
|
||||
$srcFiles = Get-ChildItem -Path ".\src\*.ps1" -Recurse | Sort-Object -Property 'Name' | Select-Object -ExpandProperty 'FullName'
|
||||
$testFiles = Get-ChildItem -Path ".\tests\*.Tests.ps1" -Recurse | Sort-Object -Property 'Name' | Select-Object -ExpandProperty 'FullName'
|
||||
$TestResults = Invoke-Pester -Path $testFiles -CodeCoverage $srcFiles -PassThru -CodeCoverageOutputFile ".\coverage.xml" -CodeCoverageOutputFileEncoding ascii -CodeCoverageOutputFileFormat JaCoCo
|
||||
ForEach ($Item in $TestResults.TestResult) {
|
||||
Switch ($Item.Result) {
|
||||
"Passed" {
|
||||
$TestParams = @{
|
||||
Name = "{0}: {1}" -f $Item.Context, $Item.Name
|
||||
Framework = "NUnit"
|
||||
Filename = $Item.Describe
|
||||
Outcome = "Passed"
|
||||
Duration = $Item.Time.Milliseconds
|
||||
}
|
||||
Add-AppveyorTest @TestParams
|
||||
}
|
||||
"Failed" {
|
||||
$TestParams = @{
|
||||
Name = "{0}: {1}" -f $Item.Context, $Item.Name
|
||||
Framework = "NUnit"
|
||||
Filename = $Item.Describe
|
||||
Outcome = "Failed"
|
||||
Duration = $Item.Time.Milliseconds
|
||||
ErrorMessage = $Item.FailureMessage
|
||||
ErrorStackTrace = $Item.StackTrace
|
||||
}
|
||||
Add-AppveyorTest @TestParams
|
||||
}
|
||||
Default {
|
||||
$TestParams = @{
|
||||
Name = "{0}: {1}" -f $Item.Context, $Item.Name
|
||||
Framework = "NUnit"
|
||||
Filename = $Item.Describe
|
||||
Outcome = "None"
|
||||
Duration = $Item.Time.Milliseconds
|
||||
ErrorMessage = $Item.FailureMessage
|
||||
ErrorStackTrace = $Item.StackTrace
|
||||
}
|
||||
Add-AppveyorTest @TestParams
|
||||
}
|
||||
}
|
||||
}
|
||||
If ($TestResults.FailedCount -gt 0) {
|
||||
$MsgParams = @{
|
||||
Message = 'Pester Tests failed.'
|
||||
Category = 'Error'
|
||||
Details = "$($TestResults.FailedCount) tests failed."
|
||||
}
|
||||
Add-AppveyorMessage @MsgParams
|
||||
Throw $MsgParams.Message
|
||||
}
|
||||
|
||||
return $TestResults.CodeCoverage
|
||||
|
||||
}
|
||||
|
||||
Function Invoke-CoverageReport() {
|
||||
[CmdletBinding()]
|
||||
Param(
|
||||
[Parameter(Mandatory = $False)]
|
||||
[ValidateNotNullOrEmpty()]
|
||||
[String]$RepoToken = $Env:CoverallsToken,
|
||||
|
||||
[Parameter(Mandatory = $True)]
|
||||
[ValidateNotNullOrEmpty()]
|
||||
[PSCustomObject]$PesterCoverageReport
|
||||
)
|
||||
|
||||
#$CoverageReport | Format-Custom -Depth 5 | Out-String | Write-Verbose
|
||||
$CoverageReport = New-CoverageReport -CodeCoverage $PesterCoverageReport -RepoToken $RepoToken
|
||||
Write-Host "CoverageReport JSON:" -ForegroundColor Yellow
|
||||
#$CoverageReport | ConvertTo-Json -Depth 5 | Out-String | Write-Verbose
|
||||
Publish-CoverageReport -CoverageReport $CoverageReport
|
||||
}
|
||||
|
||||
|
||||
Function Invoke-AppVeyorPSGallery() {
|
||||
[CmdletBinding()]
|
||||
Param(
|
||||
[Parameter(Mandatory = $true)]
|
||||
[ValidateNotNullOrEmpty()]
|
||||
[String]$OnBranch
|
||||
)
|
||||
Expand-Archive -Path (".\bin\{0}.zip" -f $CALLSIGN) -DestinationPath ("C:\Users\appveyor\Documents\WindowsPowerShell\Modules\{0}\" -f $CALLSIGN) -Verbose
|
||||
Import-Module -Name $CALLSIGN -Verbose -Force
|
||||
Write-Host "Available Package Provider:" -ForegroundColor Black -BackgroundColor Yellow
|
||||
Get-PackageProvider -ListAvailable
|
||||
Write-Host "Available Package Sources:" -ForegroundColor Black -BackgroundColor Yellow
|
||||
Get-PackageSource
|
||||
Try {
|
||||
Write-Host "Try to get NuGet Provider:" -ForegroundColor Black -BackgroundColor Yellow
|
||||
Get-PackageProvider -Name NuGet -ErrorAction Stop
|
||||
}
|
||||
Catch {
|
||||
Write-Host "Installing NuGet..." -ForegroundColor Black -BackgroundColor Yellow
|
||||
Install-PackageProvider -Name NuGet -MinimumVersion '2.8.5.201' -Force -Verbose
|
||||
Import-PackageProvider NuGet -MinimumVersion '2.8.5.201' -Force
|
||||
}
|
||||
Try {
|
||||
If ($env:APPVEYOR_REPO_BRANCH -eq 'master') {
|
||||
Write-Host "try to publish module" -ForegroundColor Black -BackgroundColor Yellow
|
||||
Write-Host ("Callsign is: {0}" -f $CALLSIGN) -ForegroundColor Black -BackgroundColor Yellow
|
||||
Publish-Module -Name $CALLSIGN -NuGetApiKey $env:NuGetToken -Verbose -Force -AllowPrerelease
|
||||
}
|
||||
Else {
|
||||
Write-Host "Skip publishing to PS Gallery because we are on $($env:APPVEYOR_REPO_BRANCH) branch." -ForegroundColor Black -BackgroundColor Yellow
|
||||
# had to remove the publish-Module statement because it would publish although the -WhatIf is given.
|
||||
# Publish-Module -Name $CALLSIGN -NuGetApiKey $env:NuGetToken -Verbose -WhatIf
|
||||
}
|
||||
}
|
||||
Catch {
|
||||
$MsgParams = @{
|
||||
Message = 'Could not deploy module to PSGallery.'
|
||||
Category = 'Error'
|
||||
Details = $_.Exception.Message
|
||||
}
|
||||
$_.Exception.Message | Write-Error
|
||||
Add-AppveyorMessage @MsgParams
|
||||
Throw $MsgParams.Message
|
||||
}
|
||||
}
|
@ -1,25 +1,70 @@
|
||||
$Global:ProgressPreference = 'SilentlyContinue'
|
||||
$ErrorActionPreference = 'Stop'
|
||||
|
||||
function Invoke-ShowEnv() {
|
||||
function Invoke-ShowEnv {
|
||||
[CmdletBinding()]
|
||||
param()
|
||||
[Diagnostics.CodeAnalysis.SuppressMessageAttribute(
|
||||
'PSProvideCommentHelp',
|
||||
'',
|
||||
Justification = 'internal function'
|
||||
)]
|
||||
param ()
|
||||
|
||||
process {
|
||||
Get-ChildItem -Path 'Env:' | Format-Table | Out-String
|
||||
}
|
||||
}
|
||||
|
||||
function Invoke-InstallDependencies() {
|
||||
function Invoke-InstallDependencies {
|
||||
[CmdletBinding()]
|
||||
[OutputType()]
|
||||
param()
|
||||
[Diagnostics.CodeAnalysis.SuppressMessageAttribute(
|
||||
'PSProvideCommentHelp',
|
||||
'',
|
||||
Justification = 'internal function'
|
||||
)]
|
||||
[Diagnostics.CodeAnalysis.SuppressMessageAttribute(
|
||||
'PSUseSingularNouns',
|
||||
'',
|
||||
Justification = 'internal function'
|
||||
)]
|
||||
param ()
|
||||
|
||||
process {
|
||||
$ErrorActionPreference = 'Stop'
|
||||
try {
|
||||
Install-Module -Name 'PSScriptAnalyzer' -Scope CurrentUser -RequiredVersion '1.19.1' -Force -SkipPublisherCheck -AllowClobber -Verbose:$VerbosePreference -ErrorAction 'Stop'
|
||||
Install-Module -Name 'Pester' -Scope CurrentUser -RequiredVersion '4.10.1' -Force -SkipPublisherCheck -AllowClobber -Verbose:$VerbosePreference -ErrorAction 'Stop'
|
||||
Install-Module -Name 'posh-git' -Scope CurrentUser -RequiredVersion '0.7.3' -Force -SkipPublisherCheck -AllowClobber -Verbose:$VerbosePreference -ErrorAction 'Stop'
|
||||
Install-Module -Name 'PSCoverage' -Scope CurrentUser -Force -SkipPublisherCheck -AllowClobber -RequiredVersion '1.2.108' -Verbose:$VerbosePreference -ErrorAction 'Stop'
|
||||
$ParamsPSScript = @{
|
||||
Name = 'PSScriptAnalyzer'
|
||||
Scope = 'CurrentUser'
|
||||
RequiredVersion = '1.20.0'
|
||||
Force = $true
|
||||
SkipPublisherCheck = $true
|
||||
AllowClobber = $true
|
||||
Verbose = $VerbosePreference
|
||||
}
|
||||
Install-Module @ParamsPSScript
|
||||
|
||||
$ParamsPester = @{
|
||||
Name = 'Pester'
|
||||
Scope = 'CurrentUser'
|
||||
RequiredVersion = '5.3.3'
|
||||
Force = $true
|
||||
SkipPublisherCheck = $true
|
||||
AllowClobber = $true
|
||||
Verbose = $VerbosePreference
|
||||
}
|
||||
Install-Module @ParamsPester
|
||||
|
||||
$ParamsPosh = @{
|
||||
Name = 'posh-git'
|
||||
Scope = 'CurrentUser'
|
||||
RequiredVersion = '1.1.0'
|
||||
Force = $true
|
||||
SkipPublisherCheck = $true
|
||||
AllowClobber = $true
|
||||
Verbose = $VerbosePreference
|
||||
#ErrorAction = 'Stop'
|
||||
}
|
||||
Install-Module @ParamsPosh
|
||||
}
|
||||
catch {
|
||||
$ExceParams = @{
|
||||
@ -35,47 +80,80 @@ function Invoke-InstallDependencies() {
|
||||
}
|
||||
}
|
||||
|
||||
function Invoke-Linter () {
|
||||
function Invoke-Linter {
|
||||
[CmdletBinding()]
|
||||
param()
|
||||
[Diagnostics.CodeAnalysis.SuppressMessageAttribute(
|
||||
'PSProvideCommentHelp',
|
||||
'',
|
||||
Justification = 'internal function'
|
||||
)]
|
||||
param ()
|
||||
|
||||
process {
|
||||
Invoke-ScriptAnalyzer -Path './src/' -Recurse
|
||||
Import-Module -Name PSScriptAnalyzer
|
||||
$AnalyzerSettings = @{
|
||||
Path = './src/'
|
||||
Recurse = $true
|
||||
Settings = './tools/PSScriptAnalyzerSettings.psd1'
|
||||
ReportSummary = $true
|
||||
}
|
||||
Invoke-ScriptAnalyzer @AnalyzerSettings
|
||||
}
|
||||
}
|
||||
|
||||
function Invoke-UnitTests {
|
||||
function Invoke-UnitTest {
|
||||
[CmdletBinding()]
|
||||
Param()
|
||||
[Diagnostics.CodeAnalysis.SuppressMessageAttribute(
|
||||
'PSProvideCommentHelp',
|
||||
'',
|
||||
Justification = 'internal function'
|
||||
)]
|
||||
|
||||
param (
|
||||
[Parameter( Mandatory = $false )]
|
||||
[ValidateSet('JaCoCo', 'CoverageGutters')]
|
||||
[string]$CoverageFormat = 'JaCoCo',
|
||||
|
||||
[Parameter(Mandatory = $false)]
|
||||
[ValidateSet('None', 'Normal', 'Detailed', 'Diagnostic')]
|
||||
[string]$Verbosity = 'Normal',
|
||||
|
||||
[Parameter(Mandatory = $false)]
|
||||
[switch]$PassThru,
|
||||
|
||||
[Parameter(Mandatory = $false)]
|
||||
[ValidateNotNullOrEmpty()]
|
||||
[string[]]$Tag,
|
||||
|
||||
[Parameter(Mandatory = $false)]
|
||||
[ValidateNotNullOrEmpty()]
|
||||
[string[]]$ExcludeTag
|
||||
)
|
||||
|
||||
process {
|
||||
|
||||
try {
|
||||
Write-Host '===== Preload internal private functions =====' -ForegroundColor Black -BackgroundColor Yellow
|
||||
|
||||
$Privates = Get-ChildItem -Path (Join-Path -Path $Env:DRONE_WORKSPACE -ChildPath '/src/Private/*') -Include "*.ps1" -Recurse -ErrorAction Stop
|
||||
foreach ($File in $Privates) {
|
||||
if (Test-Path -Path $File.FullName) {
|
||||
. $File.FullName
|
||||
Write-Verbose -Message ('Private function dot-sourced: {0}' -f $File.FullName) -Verbose
|
||||
}
|
||||
else {
|
||||
Write-Warning -Message ('Could not find file: {0} !' -f $File.FullName)
|
||||
}
|
||||
}
|
||||
Write-Verbose -Message '===== Running Pester =====' -Verbose:$VerbosePreference
|
||||
$PesterConf = New-PesterConfiguration
|
||||
$PesterConf.Run.Path = (Resolve-Path -Path './src').Path
|
||||
$PesterConf.Run.Exit = $false
|
||||
$PesterConf.Run.PassThru = $true
|
||||
$PesterConf.CodeCoverage.Enabled = $true
|
||||
$PesterConf.CodeCoverage.OutputFormat = $CoverageFormat
|
||||
$PesterConf.TestResult.Enabled = $true
|
||||
$CovFiles = Get-ChildItem -Path "./src/*.ps1" -Recurse | Where-Object {
|
||||
$_.BaseName -notmatch '.Tests'
|
||||
} | Select-Object -ExpandProperty 'FullName'
|
||||
$PesterConf.CodeCoverage.Path = $CovFiles
|
||||
$PesterConf.Output.Verbosity = $Verbosity
|
||||
# Set Tags if given
|
||||
if ($Tag) {
|
||||
$PesterConf.Filter.Tag = $Tag
|
||||
}
|
||||
catch {
|
||||
$_.Exception.Message | Write-Error
|
||||
throw 'Could not load required private functions!'
|
||||
if ($ExcludeTag) {
|
||||
$PesterConf.Filter.ExcludeTag = $ExcludeTag
|
||||
}
|
||||
|
||||
Write-Host '===== Running Pester =====' -ForegroundColor Black -BackgroundColor Yellow
|
||||
$srcFiles = Get-ChildItem -Path "./src/*.ps1" -Recurse | Sort-Object -Property 'Name' | Select-Object -ExpandProperty 'FullName'
|
||||
$TestFiles = Get-ChildItem -Path (Join-Path -Path '.' -ChildPath './tests/*.Tests.ps1') -Recurse | Sort-Object -Property Name
|
||||
$TestResults = Invoke-Pester -Path $testFiles -CodeCoverage $srcFiles -PassThru -CodeCoverageOutputFile "./coverage.xml" -CodeCoverageOutputFileEncoding ascii -CodeCoverageOutputFileFormat JaCoCo
|
||||
|
||||
if ($TestResults.FailedCount -gt 0) {
|
||||
throw ('{0} tests failed!' -f $TestResults.FailedCount)
|
||||
$TestResults = Invoke-Pester -Configuration $PesterConf -ErrorAction 'Stop'
|
||||
if ($PassThru.IsPresent) {
|
||||
Write-Output -InputObject $TestResults
|
||||
}
|
||||
}
|
||||
}
|
||||
|
141
tools/PSScriptAnalyzerSettings.psd1
Normal file
141
tools/PSScriptAnalyzerSettings.psd1
Normal file
@ -0,0 +1,141 @@
|
||||
@{
|
||||
Severity = 'Error', 'Warning', 'Information'
|
||||
|
||||
IncludeRules = @(
|
||||
'PSAlignAssignmentStatement',
|
||||
'PSAvoidAssignmentToAutomaticVariable',
|
||||
'PSAvoidDefaultValueForMandatoryParameter',
|
||||
'PSAvoidDefaultValueSwitchParameter',
|
||||
'PSAvoidGlobalAliases',
|
||||
'PSAvoidGlobalFunctions',
|
||||
'PSAvoidGlobalVars',
|
||||
'PSAvoidInvokingEmptyMembers',
|
||||
'PSAvoidLongLines',
|
||||
'PSAvoidNullOrEmptyHelpMessageAttribute',
|
||||
'PSAvoidOverwritingBuiltInCmdlets',
|
||||
'PSAvoidShouldContinueWithoutForce',
|
||||
'PSAvoidTrailingWhitespace',
|
||||
'PSAvoidUsingCmdletAliases',
|
||||
'PSAvoidUsingComputerNameHardcoded',
|
||||
'PSAvoidUsingConvertToSecureStringWithPlainText',
|
||||
'PSAvoidUsingDeprecatedManifestFields',
|
||||
'PSAvoidUsingDoubleQuotesForConstantString',
|
||||
'PSAvoidUsingEmptyCatchBlock',
|
||||
'PSAvoidUsingInvokeExpression',
|
||||
'PSAvoidUsingPlainTextForPassword',
|
||||
'PSAvoidUsingPositionalParameters',
|
||||
'PSAvoidUsingUsernameAndPasswordParams',
|
||||
'PSAvoidUsingWMICmdlet',
|
||||
'PSAvoidUsingWriteHost',
|
||||
'PSMisleadingBacktick',
|
||||
'PSMissingModuleManifestField',
|
||||
'PSPlaceCloseBrace',
|
||||
'PSPlaceOpenBrace',
|
||||
'PSPossibleIncorrectComparisonWithNull',
|
||||
'PSPossibleIncorrectUsageOfAssignmentOperator',
|
||||
'PSPossibleIncorrectUsageOfRedirectionOperator',
|
||||
'PSProvideCommentHelp',
|
||||
'PSReservedCmdletChar',
|
||||
'PSReservedParams',
|
||||
'PSReviewUnusedParameter',
|
||||
'PSShouldProcess',
|
||||
'PSUseApprovedVerbs',
|
||||
'PSUseBOMForUnicodeEncodedFile',
|
||||
'PSUseCmdletCorrectly',
|
||||
# There is no predefined set for Pwsh7 Cmdlets
|
||||
'PSUseCompatibleCmdlets',
|
||||
#'PSUseCompatibleCommands',
|
||||
'PSUseCompatibleSyntax',
|
||||
#'PSUseCompatibleTypes',
|
||||
'PSUseConsistentIndentation',
|
||||
# Disable if bug in 1.19.1 version occurs.
|
||||
'PSUseConsistentWhitespace',
|
||||
'PSUseCorrectCasing',
|
||||
'PSUseDeclaredVarsMoreThanAssignments',
|
||||
'PSUseLiteralInitializerForHashtable',
|
||||
'PSUseOutputTypeCorrectly',
|
||||
'PSUsePSCredentialType',
|
||||
'PSUseProcessBlockForPipelineCommand',
|
||||
'PSUseShouldProcessForStateChangingFunctions',
|
||||
'PSUseSingularNouns',
|
||||
'PSUseSupportsShouldProcess',
|
||||
'PSUseToExportFieldsInManifest',
|
||||
'PSUseUTF8EncodingForHelpFile',
|
||||
'PSUseUsingScopeModifierInNewRunspaces'
|
||||
)
|
||||
|
||||
Rules = @{
|
||||
|
||||
PSAvoidLongLines = @{
|
||||
Enable = $true
|
||||
MaximumLineLength = 116
|
||||
}
|
||||
|
||||
PSPlaceOpenBrace = @{
|
||||
Enable = $true
|
||||
OnSameLine = $true
|
||||
NewLineAfter = $true
|
||||
IgnoreOneLineBlock = $true
|
||||
}
|
||||
|
||||
PSPlaceCloseBrace = @{
|
||||
Enable = $true
|
||||
NewLineAfter = $true
|
||||
IgnoreOneLineBlock = $true
|
||||
NoEmptyLineBefore = $false
|
||||
}
|
||||
|
||||
PSProvideCommentHelp = @{
|
||||
Enable = $true
|
||||
ExportedOnly = $false
|
||||
BlockComment = $true
|
||||
VSCodeSnippetCorrection = $false
|
||||
Placement = "begin"
|
||||
}
|
||||
|
||||
PSUseCompatibleCmdlets = @{
|
||||
compatibility = @(
|
||||
"desktop-5.1.14393.206-windows",
|
||||
"core-6.1.0-windows"
|
||||
)
|
||||
}
|
||||
|
||||
PSUseCompatibleSyntax = @{
|
||||
Enable = $true
|
||||
TargetVersions = @(
|
||||
"7.0",
|
||||
"5.1"
|
||||
)
|
||||
}
|
||||
|
||||
PSUseConsistentIndentation = @{
|
||||
Enable = $true
|
||||
Kind = 'space'
|
||||
PipelineIndentation = 'IncreaseIndentationForFirstPipeline'
|
||||
IndentationSize = 4
|
||||
}
|
||||
|
||||
PSUseConsistentWhitespace = @{
|
||||
Enable = $true
|
||||
CheckInnerBrace = $true
|
||||
CheckOpenBrace = $true
|
||||
CheckOpenParen = $true
|
||||
CheckOperator = $true
|
||||
CheckPipe = $true
|
||||
CheckPipeForRedundantWhitespace = $false
|
||||
CheckSeparator = $true
|
||||
CheckParameter = $false
|
||||
IgnoreAssignmentOperatorInsideHashTable = $true
|
||||
}
|
||||
|
||||
PSAlignAssignmentStatement = @{
|
||||
Enable = $true
|
||||
CheckHashtable = $false
|
||||
}
|
||||
|
||||
PSUseCorrectCasing = @{
|
||||
Enable = $true
|
||||
}
|
||||
}
|
||||
|
||||
}
|
@ -1,66 +0,0 @@
|
||||
$Global:ProgressPreference = 'SilentlyContinue'
|
||||
|
||||
$CALLSIGN = 'PSCredentialStore'
|
||||
Write-Host ("Callsign is: {0}" -f $CALLSIGN) -ForegroundColor Black -BackgroundColor Yellow
|
||||
|
||||
function Invoke-InstallDependencies {
|
||||
[CmdletBinding()]
|
||||
Param()
|
||||
|
||||
process {
|
||||
try {
|
||||
Write-Host '===== Environment Vars: =====' -ForegroundColor Black -BackgroundColor Yellow
|
||||
Get-ChildItem -Path Env:
|
||||
|
||||
Write-Host -Message '===== Existing Variables: =====' -ForegroundColor Black -BackgroundColor Yellow
|
||||
Get-Variable -Name * | Format-Table -AutoSize
|
||||
|
||||
Get-PackageProvider -ListAvailable
|
||||
Import-PackageProvider -Name 'NuGet' -MinimumVersion '2.8.5.208' -Verbose -Force
|
||||
|
||||
Install-Module -Name 'Pester' -Scope CurrentUser -RequiredVersion '4.4.2' -Force -SkipPublisherCheck -AllowClobber -Verbose
|
||||
Install-Module -Name 'posh-git' -Scope CurrentUser -RequiredVersion '1.0.0-beta2' -Force -SkipPublisherCheck -AllowClobber -AllowPrerelease -Verbose
|
||||
|
||||
Import-Module -Name 'Pester', 'posh-git' -Verbose
|
||||
}
|
||||
catch {
|
||||
$_.Exception.Message | Write-Error
|
||||
throw 'Could not install the required dependencies!'
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function Invoke-UnitTests {
|
||||
[CmdletBinding()]
|
||||
Param()
|
||||
|
||||
process {
|
||||
|
||||
try {
|
||||
Write-Host '===== Preload internal private functions =====' -ForegroundColor Black -BackgroundColor Yellow
|
||||
|
||||
$Privates = Get-ChildItem -Path (Join-Path -Path $Env:TRAVIS_BUILD_DIR -ChildPath '/src/Private/*') -Include "*.ps1" -Recurse -ErrorAction Stop
|
||||
foreach ($File in $Privates) {
|
||||
if (Test-Path -Path $File.FullName) {
|
||||
. $File.FullName
|
||||
Write-Verbose -Message ('Private function dot-sourced: {0}' -f $File.FullName) -Verbose
|
||||
}
|
||||
else {
|
||||
Write-Warning -Message ('Could not find file: {0} !' -f $File.FullName)
|
||||
}
|
||||
}
|
||||
}
|
||||
catch {
|
||||
$_.Exception.Message | Write-Error
|
||||
throw 'Could not load required private functions!'
|
||||
}
|
||||
|
||||
Write-Host '===== Running Pester =====' -ForegroundColor Black -BackgroundColor Yellow
|
||||
$TestFiles = Get-ChildItem -Path (Join-Path -Path '.' -ChildPath './tests/*.Tests.ps1') -Recurse| Sort-Object -Property Name
|
||||
$TestResults = Invoke-Pester -Script $TestFiles -ExcludeTag 'Disabled' -PassThru
|
||||
|
||||
if ($TestResults.FailedCount -gt 0) {
|
||||
throw ('{0} tests failed!' -f $TestResults.FailedCount)
|
||||
}
|
||||
}
|
||||
}
|
@ -1,14 +0,0 @@
|
||||
set -x
|
||||
ulimit -n 4096
|
||||
|
||||
echo "TRAVIS_EVENT_TYPE value $TRAVIS_EVENT_TYPE"
|
||||
|
||||
if [ $TRAVIS_EVENT_TYPE = cron ] || [ $TRAVIS_EVENT_TYPE = api ]; then
|
||||
sudo pwsh -NoProfile -NonInteractive -c "Import-Module ./tools/Travis.psm1;
|
||||
Invoke-InstallDependencies;
|
||||
Invoke-UnitTests;"
|
||||
else
|
||||
sudo pwsh -NoProfile -NonInteractive -c "Import-Module ./tools/Travis.psm1;
|
||||
Invoke-InstallDependencies;
|
||||
Invoke-UnitTests;"
|
||||
fi
|
Reference in New Issue
Block a user