Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
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
2 changes: 1 addition & 1 deletion GitHubCustomersHelper.psd1
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ Copyright = '(c) rulasg. All rights reserved.'
# ProcessorArchitecture = ''

# Modules that must be imported into the global environment prior to importing this module
# RequiredModules = @()
RequiredModules = @(@{ModuleName="InvokeHelper"; ModuleVersion="1.2.4"})

# Assemblies that must be loaded prior to importing this module
# RequiredAssemblies = @()
Expand Down
190 changes: 190 additions & 0 deletions Test/helper/module.helper.ps1
Original file line number Diff line number Diff line change
@@ -0,0 +1,190 @@
# Helper for module variables

function Find-ModuleRootPath{
[CmdletBinding()]
param(
[Parameter(Mandatory,ValueFromPipeline,Position = 0)]
[string]$Path

Check warning

Code scanning / PSScriptAnalyzer

Command accepts pipeline input but has not defined a process block. Warning

Command accepts pipeline input but has not defined a process block.
)

$path = Convert-Path -Path $Path

while (-not [string]::IsNullOrWhiteSpace($Path)){
$psd1 = Get-ChildItem -Path $Path -Filter *.psd1 | Select-Object -First 1

if ($psd1 | Test-Path) {

if($psd1.BaseName -eq "Test"){
#foudn testing module. Continue
$path = $path | Split-Path -Parent
continue
}

# foudn module
return $path
}
# folder without psd1 file
$path = $path | Split-Path -Parent
}

# Path is null. Reached driver root. Module not found
return $null
}

$MODULE_ROOT_PATH = $PSScriptRoot | Find-ModuleRootPath
$MODULE_NAME = (Get-ChildItem -Path $MODULE_ROOT_PATH -Filter *.psd1 | Select-Object -First 1).BaseName

# Helper for module variables

# Folders names that IncludeHelper may add content to
$VALID_INCLUDE_FOLDER_NAMES = @(
'Root',
'Include',
'DevContainer',
'WorkFlows',
'GitHub',
# 'Config',
'Helper',
# 'Private',
# 'Public',
'Tools',

'TestRoot',
# 'TestConfig'
'TestInclude',
'TestHelper',
# 'TestPrivate',
# 'TestPublic',

"TestHelperRoot",
"TestHelperPrivate",
"TestHelperPublic"

"VsCode"
)

# Folders names that IncludeHelper should not add content to.
# In this folders is the module code itself
$VALID_MODULE_FOLDER_NAMES = @(
'Config',
'Private',
'Public',
'TestConfig'
'TestPrivate',
'TestPublic'
)

$VALID_FOLDER_NAMES = $VALID_INCLUDE_FOLDER_NAMES + $VALID_MODULE_FOLDER_NAMES

class ValidFolderNames : System.Management.Automation.IValidateSetValuesGenerator {
[String[]] GetValidValues() {
return $script:VALID_FOLDER_NAMES
}
}

function Get-Ps1FullPath{
[CmdletBinding()]
param(
[Parameter(Mandatory,Position = 0)][string]$Name,
[Parameter(Position = 1)][ValidateSet([ValidFolderNames])][string]$FolderName,
[Parameter(Position = 0)][string]$ModuleRootPath
)

# If folderName is not empty
if($FolderName -ne $null){

Check warning

Code scanning / PSScriptAnalyzer

$null should be on the left side of equality comparisons. Warning

$null should be on the left side of equality comparisons.
$folder = Get-ModuleFolder -FolderName $FolderName -ModuleRootPath $ModuleRootPath
$path = $folder | Join-Path -ChildPath $Name
} else {
$path = $Name
}

# Check if file exists
if(-Not (Test-Path $path)){
throw "File $path not found"
}

# Get Path item
$item = Get-item -Path $path

return $item
}
function Get-ModuleRootPath{
[CmdletBinding()]
param(
[Parameter(Position = 0)][string]$ModuleRootPath
)

# if ModuleRootPath is not provided, default to local module path
if([string]::IsNullOrWhiteSpace($ModuleRootPath)){
$ModuleRootPath = $MODULE_ROOT_PATH
}

# Convert to full path
$ModuleRootPath = Convert-Path -Path $ModuleRootPath

return $ModuleRootPath
}

function Get-ModuleName{
[CmdletBinding()]
param(
[Parameter(Position = 0)] [string]$ModuleRootPath
)

$ModuleRootPath = Get-ModuleRootPath -ModuleRootPath $ModuleRootPath

$MODULE_NAME = (Get-ChildItem -Path $MODULE_ROOT_PATH -Filter *.psd1 | Select-Object -First 1).BaseName


return $MODULE_NAME
}

function Get-ModuleFolder{

Check notice

Code scanning / PSScriptAnalyzer

The cmdlet 'Get-ModuleFolder' does not have a help comment. Note

The cmdlet 'Get-ModuleFolder' does not have a help comment.
[CmdletBinding()]
param(
[Parameter(Mandatory,Position = 0)][ValidateSet([ValidFolderNames])][string]$FolderName,
[Parameter(Position = 1)][string]$ModuleRootPath
)

$ModuleRootPath = Get-ModuleRootPath -ModuleRootPath $ModuleRootPath

# TestRootPath
$testRootPath = $ModuleRootPath | Join-Path -ChildPath "Test"
$testHelperRootPath = $ModuleRootPath | Join-Path -ChildPath "tools/Test_Helper"

switch ($FolderName){

# VALID_INCLUDE_FOLDER_NAMES
'Root' { $moduleFolder = $ModuleRootPath }
'Include' { $moduleFolder = $ModuleRootPath | Join-Path -ChildPath "include" }
'DevContainer'{ $moduleFolder = $ModuleRootPath | Join-Path -ChildPath ".devcontainer" }
'WorkFlows' { $moduleFolder = $ModuleRootPath | Join-Path -ChildPath ".github/workflows" }
'GitHub' { $moduleFolder = $ModuleRootPath | Join-Path -ChildPath ".github" }
'Helper' { $moduleFolder = $ModuleRootPath | Join-Path -ChildPath "helper" }
'Tools' { $moduleFolder = $ModuleRootPath | Join-Path -ChildPath "tools" }

'TestRoot' { $moduleFolder = $testRootPath }
'TestInclude' { $moduleFolder = $testRootPath | Join-Path -ChildPath "include" }
'TestHelper' { $moduleFolder = $testRootPath | Join-Path -ChildPath "helper" }

'TestHelperRoot' { $moduleFolder = $testHelperRootPath }
'TestHelperPrivate' { $moduleFolder = $testHelperRootPath | Join-Path -ChildPath "private" }
'TestHelperPublic' { $moduleFolder = $testHelperRootPath | Join-Path -ChildPath "public" }

"VsCode" { $moduleFolder = $ModuleRootPath | Join-Path -ChildPath ".vscode" }

# VALID_MODULE_FOLDER_NAMES
'Config' { $moduleFolder = $ModuleRootPath | Join-Path -ChildPath "config" }
'Private' { $moduleFolder = $ModuleRootPath | Join-Path -ChildPath "private" }
'Public' { $moduleFolder = $ModuleRootPath | Join-Path -ChildPath "public" }
'TestConfig' { $moduleFolder = $testRootPath | Join-Path -ChildPath "config" }
'TestPrivate' { $moduleFolder = $testRootPath | Join-Path -ChildPath "private" }
'TestPublic' { $moduleFolder = $testRootPath | Join-Path -ChildPath "public" }


default{
throw "Folder [$FolderName] is unknown"
}
}
return $moduleFolder
} Export-ModuleMember -Function Get-ModuleFolder
54 changes: 54 additions & 0 deletions Test/include/InvokeMockList.ps1
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@

# $MockCommandFile = $testRootPath | Join-Path -ChildPath "mockfiles.log"

# function Trace-MockCommandFile{
# [CmdletBinding()]
# param(
# [string] $Command,
# [string] $FileName
# )

# # read content
# $content = readMockCommandFile

# # Check that the entry is already there
# $result = $content | Where-Object{$_.command -eq $command}
# if($null -ne $result) {return}

# # add entry
# $new = @{
# Command = $command
# FileName = $fileName
# }

# $ret = @()
# $ret += $content
# $ret += $new

# # Save list
# writeMockCommandFile -Content $ret
# }

# function readMockCommandFile{

# # Return empty list if the file does not exist
# if(-not (Test-Path -Path $MockCommandFile)){
# return @()
# }

# $ret = Get-Content -Path $MockCommandFile | ConvertFrom-Json

# # return an empty aray if content does not exists
# $ret = $ret ?? @()

# return $ret
# }

# function writeMockCommandFile($Content){

# $list = $Content | ConvertTo-Json

# $sorted = $list | Sort-Object fileName

# $sorted | Out-File -FilePath $MockCommandFile
# }
Loading
Loading