mirror of
https://github.com/tw93/Mole.git
synced 2026-03-23 22:05:07 +00:00
fix(windows): initialize visual defaults safely
This commit is contained in:
@@ -6,6 +6,7 @@ BeforeAll {
|
||||
$script:WindowsDir = Split-Path -Parent $PSScriptRoot
|
||||
$script:BinDir = Join-Path $script:WindowsDir "bin"
|
||||
$script:InstallScript = Join-Path $script:WindowsDir "install.ps1"
|
||||
$script:VisualDefaultsErrorPattern = 'property ''Solid'' cannot be found|找不到属性.?Solid|VariableIsUndefined|\$script:Colors'
|
||||
}
|
||||
|
||||
Describe "Clean Command" {
|
||||
@@ -49,7 +50,7 @@ Describe "Clean Command" {
|
||||
Stop-Job $job -ErrorAction SilentlyContinue
|
||||
Remove-Job $job -Force -ErrorAction SilentlyContinue
|
||||
|
||||
$output | Should -Not -Match "property 'Solid' cannot be found|找不到属性.?Solid"
|
||||
$output | Should -Not -Match $script:VisualDefaultsErrorPattern
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -175,7 +176,9 @@ Describe "Main Entry Point" {
|
||||
It "Should show version without error" {
|
||||
$result = & powershell -ExecutionPolicy Bypass -File $script:MolePath -Version 2>&1
|
||||
$result | Should -Not -BeNullOrEmpty
|
||||
$result -join "`n" | Should -Match "Mole|v\d+\.\d+"
|
||||
$output = $result -join "`n"
|
||||
$output | Should -Not -Match $script:VisualDefaultsErrorPattern
|
||||
$output | Should -Match "Mole|v\d+\.\d+"
|
||||
}
|
||||
|
||||
It "Should not throw missing Solid property errors during menu startup" {
|
||||
@@ -189,7 +192,7 @@ Describe "Main Entry Point" {
|
||||
Stop-Job $job -ErrorAction SilentlyContinue
|
||||
Remove-Job $job -Force -ErrorAction SilentlyContinue
|
||||
|
||||
$output | Should -Not -Match "property 'Solid' cannot be found|找不到属性.?Solid"
|
||||
$output | Should -Not -Match $script:VisualDefaultsErrorPattern
|
||||
}
|
||||
|
||||
It "Should list available commands in help" {
|
||||
|
||||
@@ -37,6 +37,41 @@ Describe "Base Module" {
|
||||
}
|
||||
}
|
||||
|
||||
Context "Visual Defaults Initialization" {
|
||||
BeforeEach {
|
||||
$script:OriginalColors = $script:Colors.Clone()
|
||||
$script:OriginalIcons = $script:Icons.Clone()
|
||||
}
|
||||
|
||||
AfterEach {
|
||||
$script:Colors = $script:OriginalColors.Clone()
|
||||
$script:Icons = $script:OriginalIcons.Clone()
|
||||
}
|
||||
|
||||
It "Should initialize missing visual tables under strict mode" {
|
||||
Remove-Variable -Name Colors -Scope Script -ErrorAction SilentlyContinue
|
||||
Remove-Variable -Name Icons -Scope Script -ErrorAction SilentlyContinue
|
||||
|
||||
{ Initialize-MoleVisualDefaults } | Should -Not -Throw
|
||||
$script:Colors.Cyan | Should -Not -BeNullOrEmpty
|
||||
$script:Colors.Green | Should -Not -BeNullOrEmpty
|
||||
$script:Icons.Solid | Should -Not -BeNullOrEmpty
|
||||
$script:Icons.Trash | Should -Not -BeNullOrEmpty
|
||||
}
|
||||
|
||||
It "Should preserve existing values while filling missing defaults" {
|
||||
$script:Colors = @{ Cyan = "custom-cyan" }
|
||||
$script:Icons = @{ Solid = "*" }
|
||||
|
||||
Initialize-MoleVisualDefaults
|
||||
|
||||
$script:Colors.Cyan | Should -Be "custom-cyan"
|
||||
$script:Colors.Green | Should -Not -BeNullOrEmpty
|
||||
$script:Icons.Solid | Should -Be "*"
|
||||
$script:Icons.Admin | Should -Not -BeNullOrEmpty
|
||||
}
|
||||
}
|
||||
|
||||
Context "Test-IsAdmin" {
|
||||
It "Should return a boolean" {
|
||||
$result = Test-IsAdmin
|
||||
|
||||
Reference in New Issue
Block a user