reworked class importing, passing pester tests skip ci
This commit is contained in:
@@ -23,12 +23,20 @@ class Chronometer
|
|||||||
|
|
||||||
[void]ClearBreakpoint()
|
[void]ClearBreakpoint()
|
||||||
{
|
{
|
||||||
Remove-PSBreakpoint $this.Breakpointbreakpoint
|
if($this.Breakpoint -ne $null -and $this.Breakpoint.count -gt 0)
|
||||||
|
{
|
||||||
|
Remove-PSBreakpoint -Breakpoint $this.Breakpoint
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
[void] AddExecution([hashtable]$Execution)
|
[void] AddExecution([hashtable]$Execution)
|
||||||
{
|
{
|
||||||
$this.FileMap[$Execution.Breakpoint.Script].AddExecution($Execution)
|
$script = $Execution.Breakpoint.Script
|
||||||
|
if($this.FileMap.ContainsKey($script))
|
||||||
|
{
|
||||||
|
$this.FileMap[$script].AddExecution($Execution)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -48,7 +56,7 @@ class MonitoredScript
|
|||||||
[int] SetScript([string]$Path)
|
[int] SetScript([string]$Path)
|
||||||
{
|
{
|
||||||
Get-Content -Path $Path | %{ $this.Line.Add( [ScriptLine]@{text=$_})}
|
Get-Content -Path $Path | %{ $this.Line.Add( [ScriptLine]@{text=$_})}
|
||||||
return $this.Line.Count()
|
return $this.Line.Count
|
||||||
}
|
}
|
||||||
|
|
||||||
[void] AddExecution([hashtable]$node)
|
[void] AddExecution([hashtable]$node)
|
||||||
|
|||||||
@@ -1,9 +1,23 @@
|
|||||||
#Requires -Version 5.0
|
#Requires -Version 5.0
|
||||||
|
[cmdletbinding()]
|
||||||
|
param()
|
||||||
|
|
||||||
Write-Verbose "Importing Functions"
|
Write-Verbose $PSScriptRoot
|
||||||
|
Write-Verbose 'Import Classes in order because of dependencies'
|
||||||
|
$classList = @(
|
||||||
|
'ScriptLine',
|
||||||
|
'ScriptProfiler',
|
||||||
|
'Chronometer'
|
||||||
|
)
|
||||||
|
|
||||||
# Import everything in sub folders folder
|
foreach($class in $classList)
|
||||||
foreach($folder in @('classes', 'private', 'public','includes'))
|
{
|
||||||
|
Write-Verbose " Class: $class"
|
||||||
|
. "$psscriptroot\classes\$class.ps1"
|
||||||
|
}
|
||||||
|
|
||||||
|
Write-Verbose 'Import everything in sub folders folder'
|
||||||
|
foreach($folder in @('private', 'public','includes'))
|
||||||
{
|
{
|
||||||
$root = Join-Path -Path $PSScriptRoot -ChildPath $folder
|
$root = Join-Path -Path $PSScriptRoot -ChildPath $folder
|
||||||
if(Test-Path -Path $root)
|
if(Test-Path -Path $root)
|
||||||
@@ -13,12 +27,9 @@ foreach($folder in @('classes', 'private', 'public','includes'))
|
|||||||
|
|
||||||
# dot source each file
|
# dot source each file
|
||||||
$files | where-Object{ $_.name -NotLike '*.Tests.ps1'} |
|
$files | where-Object{ $_.name -NotLike '*.Tests.ps1'} |
|
||||||
ForEach-Object{Write-Verbose $_.name; . $_.FullName}
|
ForEach-Object{Write-Verbose $_.basename; . $_.FullName}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Export-ModuleMember -function (Get-ChildItem -Path "$PSScriptRoot\public\*.ps1").basename
|
Export-ModuleMember -function (Get-ChildItem -Path "$PSScriptRoot\public\*.ps1").basename
|
||||||
|
|
||||||
# Hack for my build system that had a conflit with the keyword node
|
|
||||||
New-Alias -Name 'DiGraph' -Value 'Graph' -ErrorAction SilentlyContinue
|
|
||||||
Export-ModuleMember -Alias 'DiGraph'
|
|
||||||
|
|||||||
@@ -2,9 +2,10 @@ $projectRoot = Resolve-Path "$PSScriptRoot\.."
|
|||||||
$moduleRoot = Split-Path (Resolve-Path "$projectRoot\*\*.psm1")
|
$moduleRoot = Split-Path (Resolve-Path "$projectRoot\*\*.psm1")
|
||||||
$moduleName = Split-Path $moduleRoot -Leaf
|
$moduleName = Split-Path $moduleRoot -Leaf
|
||||||
|
|
||||||
Import-Module (Join-Path $moduleRoot "$moduleName.psm1") -force
|
|
||||||
|
|
||||||
Describe "Help tests for $moduleName" -Tags Build {
|
Describe "Help tests for $moduleName" -Tags Build {
|
||||||
|
|
||||||
|
Import-Module (Join-Path $moduleRoot "$moduleName.psm1") -force
|
||||||
|
|
||||||
$functions = Get-Command -Module $moduleName
|
$functions = Get-Command -Module $moduleName
|
||||||
$help = $functions | %{Get-Help $_.name}
|
$help = $functions | %{Get-Help $_.name}
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ $moduleName = Split-Path $moduleRoot -Leaf
|
|||||||
|
|
||||||
Describe "General project validation: $moduleName" -Tags Build {
|
Describe "General project validation: $moduleName" -Tags Build {
|
||||||
|
|
||||||
$scripts = Get-ChildItem $projectRoot -Include *.ps1,*.psm1,*.psd1 -Recurse
|
$scripts = Get-ChildItem $projectRoot -Include *.ps1,*.psm1,*.psd1 -Recurse | where fullname -notmatch 'classes'
|
||||||
|
|
||||||
# TestCases are splatted to the script so we need hashtables
|
# TestCases are splatted to the script so we need hashtables
|
||||||
$testCase = $scripts | Foreach-Object{@{file=$_}}
|
$testCase = $scripts | Foreach-Object{@{file=$_}}
|
||||||
@@ -19,6 +19,18 @@ Describe "General project validation: $moduleName" -Tags Build {
|
|||||||
$errors.Count | Should Be 0
|
$errors.Count | Should Be 0
|
||||||
}
|
}
|
||||||
|
|
||||||
|
It "Classes are valid" {
|
||||||
|
$classes = Get-ChildItem $projectRoot -Include *.ps1,*.psm1,*.psd1 -Recurse | where fullname -match 'classes'
|
||||||
|
|
||||||
|
# Must be imported togehter incase they depend on each other
|
||||||
|
$contents = Get-Content -Path $classes.FullName | Out-String
|
||||||
|
|
||||||
|
$errors = $null
|
||||||
|
$null = [System.Management.Automation.PSParser]::Tokenize($contents, [ref]$errors)
|
||||||
|
$errors.Count | Should Be 0
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
It "Module '$moduleName' can import cleanly" {
|
It "Module '$moduleName' can import cleanly" {
|
||||||
{Import-Module (Join-Path $moduleRoot "$moduleName.psm1") -force } | Should Not Throw
|
{Import-Module (Join-Path $moduleRoot "$moduleName.psm1") -force } | Should Not Throw
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,12 +2,13 @@ $projectRoot = Resolve-Path "$PSScriptRoot\.."
|
|||||||
$moduleRoot = Split-Path (Resolve-Path "$projectRoot\*\*.psd1")
|
$moduleRoot = Split-Path (Resolve-Path "$projectRoot\*\*.psd1")
|
||||||
$moduleName = Split-Path $moduleRoot -Leaf
|
$moduleName = Split-Path $moduleRoot -Leaf
|
||||||
|
|
||||||
Import-Module (Join-Path $moduleRoot "$moduleName.psm1") -force
|
|
||||||
|
|
||||||
Describe "Basic unit tests" -Tags Build {
|
Describe "Basic unit tests" -Tags Build {
|
||||||
|
|
||||||
|
Import-Module (Join-Path $moduleRoot "$moduleName.psm1") -force
|
||||||
|
|
||||||
Context "Function: Get-Chronometer" {
|
Context "Function: Get-Chronometer" {
|
||||||
it "Does not throw" {
|
it "Does not throw" {
|
||||||
|
# Get-Chronometer -Path ScratchFiles\example.ps1 -Script {"Test"}
|
||||||
{Get-Chronometer -Path $PSScriptRoot\..\ScratchFiles\example.ps1 -Script {"Test"} } | Should Not Throw
|
{Get-Chronometer -Path $PSScriptRoot\..\ScratchFiles\example.ps1 -Script {"Test"} } | Should Not Throw
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user