mirror of
https://github.com/ChrisTitusTech/winutil.git
synced 2025-06-27 16:44:46 -05:00
Test 12 2022 - Big Foundational Update (#637)
* Fix of the unit tests (#468) * fix pester tests * fix function (#467) * Cherry pick and fix helper script * remove admin check and disable * Trim Trailing Whitespace (#472) Co-authored-by: Chris Titus <contact@christitus.com> * Better .gitignore (#473) * add progress and add wait to start-process (#475) * Fixed Cloudflare Naming (#504) * Update winutil.ps1 * Update MainWindow.xaml * Update check for Chocolatey (#520) * Update winutil.ps1 * Update check for Chocolatey Let user decide if he wants to install Chocolatey * Update winutil.ps1 (#525) Migrate to Switch-Tab function * Update winutil.ps1 (#531) Changes to "DiagTrack" service. * add responsive winget installs (#540) * add responsive winget installs * Update winutil.ps1 fix typo * remove no longer used paramater * add golang, an installation option in development list (#542) * Updated winget functions (#543) * update functions * Update winutil.ps1 forgot triple quotes * Update winutil.ps1 fixed vscode using wrong double quotes * Functions and error handling (#552) * move winget install to function and exception * updated winget upgrade to new install process * add logging to update * choco to function and write-output to ensure logs * update error handling * revert write-host and add invoke-runspace * Added runspace to load configs in background * fix unit tests * update pester tests * update pester * update pester * update pester * updated tweaks config to use WPF variable name * Fix data type of MouseHoverTime (#568) Setting Computer\HKEY_CURRENT_USER\Control Panel\Mouse\MouseHoverTime needs to be REG_SZ instead of REG_DWORD. With the wrong type the Taskbar and the Start Menu become hard to use because everything pops up instantly, probably because it's then treated as a 0 ms delay. * fix restore launch to quick access & OOSU10 download (#565) * Fix grammar (#577) * Update MainWindow.xaml * Update MainWindow-runspace.xaml * fix enable numlock after startup (#580) * Update README.md (#616) Added DNS provider into readme * Fix O&O ShutUp10 disabling app notifications and hide search box (#630) * Add files via upload Added ooshutup10_winutil_settings and fix the issue where OOSU10 disable app notifications and hide search box in windows. * Update winutil.ps1 Change ooshut10.cfg to ooshutup10_winutil_settings.cfg and fix the issues in https://github.com/ChrisTitusTech/winutil/issues/629 Now when apply the tweaks by O&O ShutUp10, will keep search box and notifications will not be disabled. * Update winutil.ps1 * Update winutil.ps1 --------- Co-authored-by: Chris Titus <contact@christitus.com> * Create ooshutup10_winutil_settings.cfg * Feature/tweakstofunctions (#576) * add functions for services * Move WPFEssTweaksDVR to function * Add invoke script and moved temp files * WPFEssTweaksHiber and formatting * WPFEssTweaksHiber * WPFEssTweaksHome and service * WPFEssTweaksLoc * TPMCheck * WPFEssTweaksDiskCleanup * Add error handling for invoke script * grammer * UAC and tweaks * WPFMiscTweaksDisableNotifications * WPFMiscTweaksRightClickMenu * Added DNS configuration + Reset to DHCP * WPFEssTweaksOO * WPFEssTweaksRP * WPFEssTweaksServices * WPFEssTweaksStorage * WPFEssTweaksTele * WPFEssTweaksWifi * WPFMiscTweaksLapPower * WPFMiscTweaksLapNum * WPFMiscTweaksPower * WPFMiscTweaksNum * WPFMiscTweaksExt * WPFMiscTweaksUTC * WPFMiscTweaksDisplay * Mouse Acceleration * WPFEssTweaksRemoveCortana * WPFEssTweaksDeBloat * set teaks to get checkboxes and loop * remove isdev * add help documentation * Add Quad 9 for #532 and #416 * remove isdev * Update tweaks.json Remove-ItemProperty is no longer needed as this was a bug from a bad commit 4 months ago. --------- Co-authored-by: Chris Titus <contact@christitus.com> * Tweak bingsearch (#620) * add functions for services * Move WPFEssTweaksDVR to function * Add invoke script and moved temp files * WPFEssTweaksHiber and formatting * WPFEssTweaksHiber * WPFEssTweaksHome and service * WPFEssTweaksLoc * TPMCheck * WPFEssTweaksDiskCleanup * Add error handling for invoke script * grammer * UAC and tweaks * WPFMiscTweaksDisableNotifications * WPFMiscTweaksRightClickMenu * Added DNS configuration + Reset to DHCP * WPFEssTweaksOO * WPFEssTweaksRP * WPFEssTweaksServices * WPFEssTweaksStorage * WPFEssTweaksTele * WPFEssTweaksWifi * WPFMiscTweaksLapPower * WPFMiscTweaksLapNum * WPFMiscTweaksPower * WPFMiscTweaksNum * WPFMiscTweaksExt * WPFMiscTweaksUTC * WPFMiscTweaksDisplay * Mouse Acceleration * WPFEssTweaksRemoveCortana * WPFEssTweaksDeBloat * set teaks to get checkboxes and loop * remove isdev * add help documentation * Add Quad 9 for #532 and #416 * remove isdev * Update helper script and add tweak * update changes * Refactor/runspaces (#626) * modify runspace.ps1 to compile * update compiler to include warning * unit test * implement invoke-button and naming standard * naming standard * fix winutil tests * update functions * add version number * fix codeowners * fix import * undo tweaks now pull from config * pester test * Compile Winutil * python and oo cfg -fix python 3 to 3.11 -fix o&o shutup cfg -enable dev mode for testing * Force install missing winget Fix method for winget install on any system. * Deluge Addition * Feature/impex (#619) * add functions for services * Move WPFEssTweaksDVR to function * Add invoke script and moved temp files * WPFEssTweaksHiber and formatting * WPFEssTweaksHiber * WPFEssTweaksHome and service * WPFEssTweaksLoc * TPMCheck * WPFEssTweaksDiskCleanup * Add error handling for invoke script * grammer * UAC and tweaks * WPFMiscTweaksDisableNotifications * WPFMiscTweaksRightClickMenu * Added DNS configuration + Reset to DHCP * WPFEssTweaksOO * WPFEssTweaksRP * WPFEssTweaksServices * WPFEssTweaksStorage * WPFEssTweaksTele * WPFEssTweaksWifi * WPFMiscTweaksLapPower * WPFMiscTweaksLapNum * WPFMiscTweaksPower * WPFMiscTweaksNum * WPFMiscTweaksExt * WPFMiscTweaksUTC * WPFMiscTweaksDisplay * Mouse Acceleration * WPFEssTweaksRemoveCortana * WPFEssTweaksDeBloat * set teaks to get checkboxes and loop * remove isdev * add help documentation * Add Quad 9 for #532 and #416 * remove isdev * Working Import and Export * Add null check * Remove IsDev * sync with test * redo impex * Irm runspace fix (#635) * Update runspace.ps1 * Update start.ps1 * compiled for testing * Compile Winutil * Compile Winutil * test * disable runspace build * test * change compile to ascii * change compile to winutil * Compile Winutil * Delete MainWindow.xaml * Update release.yaml runspace merge job * remove update branch --------- Co-authored-by: DeveloperDurp <developerdurp@durp.info> Co-authored-by: Carter <60557606+Carterpersall@users.noreply.github.com> Co-authored-by: Jacobtread <33708767+jacobtread@users.noreply.github.com> Co-authored-by: jstok84 <jstok84@gmail.com> Co-authored-by: WolfBungalow <irtwit@gmail.com> Co-authored-by: Ankit Yadav <52023083+4nkitd@users.noreply.github.com> Co-authored-by: Starfiresg1 <Starfiresg1@users.noreply.github.com> Co-authored-by: Adrián Insaurralde Avalos <36372335+adrianinsaval@users.noreply.github.com> Co-authored-by: Hyperio <96462198+hyperio546@users.noreply.github.com> Co-authored-by: dennyamarojr <36896116+dennyamarojr@users.noreply.github.com> Co-authored-by: ChrisTitusTech <ChrisTitusTech@users.noreply.github.com>
This commit is contained in:
115
pester/runspace.Tests.ps1
Normal file
115
pester/runspace.Tests.ps1
Normal file
@ -0,0 +1,115 @@
|
||||
#region Configurable Variables
|
||||
|
||||
<#
|
||||
.NOTES
|
||||
Use this section to configure testing variables. IE if the number of tabs change in the GUI update that variable here.
|
||||
All variables need to be global to be passed between contexts
|
||||
|
||||
#>
|
||||
|
||||
$global:FormName = "Chris Titus Tech's Windows Utility"
|
||||
|
||||
#endregion Configurable Variables
|
||||
|
||||
#region Load Variables needed for testing
|
||||
|
||||
#Config Files
|
||||
$global:importedconfigs = @{}
|
||||
Get-ChildItem .\config | Where-Object {$_.Extension -eq ".json"} | ForEach-Object {
|
||||
$global:importedconfigs[$psitem.BaseName] = Get-Content $psitem.FullName | ConvertFrom-Json
|
||||
}
|
||||
|
||||
|
||||
#endregion Load Variables needed for testing
|
||||
|
||||
#===========================================================================
|
||||
# Tests - Application Installs
|
||||
#===========================================================================
|
||||
|
||||
Describe "Config Files" -ForEach @(
|
||||
@{
|
||||
name = "applications"
|
||||
config = $('{
|
||||
"winget": "value",
|
||||
"choco": "value"
|
||||
}' | ConvertFrom-Json)
|
||||
},
|
||||
@{
|
||||
name = "tweaks"
|
||||
undo = $true
|
||||
}
|
||||
){
|
||||
Context "$name config file" {
|
||||
It "Imports with no errors" {
|
||||
$global:importedconfigs.$name | should -Not -BeNullOrEmpty
|
||||
}
|
||||
if ($config){
|
||||
It "Imports should be the correct structure" {
|
||||
$applications = $global:importedconfigs.$name | Get-Member -MemberType NoteProperty | Select-Object -ExpandProperty name
|
||||
$template = $config | Get-Member -MemberType NoteProperty | Select-Object -ExpandProperty name
|
||||
$result = New-Object System.Collections.Generic.List[System.Object]
|
||||
Foreach ($application in $applications) {
|
||||
$compare = $global:importedconfigs.$name.$application | Get-Member -MemberType NoteProperty | Select-Object -ExpandProperty name
|
||||
if ($(Compare-Object $compare $template) -ne $null){
|
||||
$result.Add($application)
|
||||
}
|
||||
}
|
||||
|
||||
$result | Select-String "WPF*" | should -BeNullOrEmpty
|
||||
}
|
||||
}
|
||||
if($undo){
|
||||
It "Tweaks should contain original Value" {
|
||||
$tweaks = $global:importedconfigs.$name | Get-Member -MemberType NoteProperty | Select-Object -ExpandProperty name
|
||||
$result = New-Object System.Collections.Generic.List[System.Object]
|
||||
|
||||
foreach ($tweak in $tweaks){
|
||||
$Originals = @(
|
||||
@{
|
||||
name = "registry"
|
||||
value = "OriginalValue"
|
||||
},
|
||||
@{
|
||||
name = "service"
|
||||
value = "OriginalType"
|
||||
},
|
||||
@{
|
||||
name = "ScheduledTask"
|
||||
value = "OriginalState"
|
||||
}
|
||||
)
|
||||
Foreach ($original in $Originals){
|
||||
$TotalCount = ($global:importedconfigs.$name.$tweak.$($original.name)).count
|
||||
$OriginalCount = ($global:importedconfigs.$name.$tweak.$($original.name).$($original.value) | Where-Object {$_}).count
|
||||
if($TotalCount -ne $OriginalCount){
|
||||
$result.Add("$Tweak,$($original.name)")
|
||||
}
|
||||
}
|
||||
}
|
||||
$result | Select-String "WPF*" | should -BeNullOrEmpty
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
#===========================================================================
|
||||
# Tests - Functions
|
||||
#===========================================================================
|
||||
|
||||
Describe "Functions" -ForEach @(Get-ChildItem .\functions -Recurse -File){
|
||||
|
||||
BeforeEach -Scriptblock {
|
||||
. $psitem.FullName
|
||||
}
|
||||
|
||||
Context "$($psitem.BaseName)" {
|
||||
It "Imports with no errors" {
|
||||
Get-ChildItem function:\$($psitem.BaseName) | should -Not -BeNullOrEmpty
|
||||
}
|
||||
It "Contains Description" {
|
||||
get-help $($psitem.BaseName) -ErrorAction SilentlyContinue | Select-Object -ExpandProperty Description | should -Not -BeNullOrEmpty
|
||||
}
|
||||
}
|
||||
}
|
@ -17,7 +17,8 @@
|
||||
$global:configs = @{}
|
||||
|
||||
(
|
||||
"applications"
|
||||
"applications",
|
||||
"preset"
|
||||
) | ForEach-Object {
|
||||
$global:configs["$PSItem"] = Get-Content .\config\$PSItem.json | ConvertFrom-Json
|
||||
}
|
||||
@ -33,7 +34,7 @@
|
||||
|
||||
#dotsource original script to pull in all variables and ensure no errors
|
||||
$script = Get-Content .\winutil.ps1
|
||||
$output = $script[0..($script.count - 4)] | Out-File .\pester.ps1
|
||||
$output = $script[0..($script.count - 14)] | Out-File .\pester.ps1
|
||||
|
||||
|
||||
#endregion Load Variables needed for testing
|
||||
@ -49,11 +50,11 @@ Describe "Application Installs" {
|
||||
}
|
||||
}
|
||||
Context "Winget Install" {
|
||||
$global:configs.applications.install | Get-Member -MemberType NoteProperty | ForEach-Object {
|
||||
$global:configs.applications | Get-Member -MemberType NoteProperty | ForEach-Object {
|
||||
$TestCase = @{ name = $psitem.name }
|
||||
It "$($psitem.name) should include Winget Install" -TestCases $TestCase{
|
||||
param($name)
|
||||
$null -eq $global:configs.applications.install.$name.winget | should -Befalse -because "$name Did not include a Winget Install"
|
||||
$null -eq $global:configs.applications.$name.winget | should -Befalse -because "$name Did not include a Winget Install"
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -63,7 +64,7 @@ Describe "Application Installs" {
|
||||
$TestCase = @{ name = $psitem }
|
||||
It "$($psitem) should include application.json " -TestCases $TestCase{
|
||||
param($name)
|
||||
$null -eq $global:configs.applications.install.$name | should -Befalse -because "$name Does not have entry in applications.json"
|
||||
$null -eq $global:configs.applications.$name | should -Befalse -because "$name Does not have entry in applications.json"
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -105,12 +106,49 @@ Describe "GUI" {
|
||||
}
|
||||
}
|
||||
|
||||
#===========================================================================
|
||||
# Tests - Functions
|
||||
#===========================================================================
|
||||
|
||||
Describe "Functions" {
|
||||
BeforeEach -Scriptblock {
|
||||
. ./pester.ps1
|
||||
$x = 0
|
||||
while($sync.ConfigLoaded -ne $True -or $x -eq 100){
|
||||
start-sleep -Milliseconds 100
|
||||
$x ++
|
||||
}
|
||||
}
|
||||
|
||||
It "Get-InstallerProcess should return the correct values" {
|
||||
Get-InstallerProcess | should -Befalse
|
||||
$process = Start-Process powershell.exe -ArgumentList "-c start-sleep 5" -PassThru
|
||||
Get-InstallerProcess $process | should -Not -Befalse
|
||||
}
|
||||
|
||||
It "Runspace background load should have data" {
|
||||
$sync.configs.applications | should -Not -BeNullOrEmpty
|
||||
$sync.configs.tweaks | should -Not -BeNullOrEmpty
|
||||
$sync.configs.preset | should -Not -BeNullOrEmpty
|
||||
$sync.configs.feature | should -Not -BeNullOrEmpty
|
||||
$sync.ComputerInfo | should -Not -BeNullOrEmpty
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
#===========================================================================
|
||||
# Tests - GUI Functions
|
||||
#===========================================================================
|
||||
|
||||
Describe "GUI Functions" {
|
||||
BeforeEach -Scriptblock {. ./pester.ps1}
|
||||
BeforeEach -Scriptblock {
|
||||
. ./pester.ps1
|
||||
$x = 0
|
||||
while($sync.ConfigLoaded -ne $True -or $x -eq 100){
|
||||
start-sleep -Milliseconds 100
|
||||
$x ++
|
||||
}
|
||||
}
|
||||
|
||||
It "GUI should load with no errors" {
|
||||
$WPFTab1BT | should -Not -BeNullOrEmpty
|
||||
@ -123,8 +161,6 @@ Describe "GUI Functions" {
|
||||
$WPFUpdatessecurity | should -Not -BeNullOrEmpty
|
||||
$WPFFeatureInstall | should -Not -BeNullOrEmpty
|
||||
$WPFundoall | should -Not -BeNullOrEmpty
|
||||
$WPFDisableDarkMode | should -Not -BeNullOrEmpty
|
||||
$WPFEnableDarkMode | should -Not -BeNullOrEmpty
|
||||
$WPFtweaksbutton | should -Not -BeNullOrEmpty
|
||||
$WPFminimal | should -Not -BeNullOrEmpty
|
||||
$WPFlaptop | should -Not -BeNullOrEmpty
|
||||
@ -135,31 +171,30 @@ Describe "GUI Functions" {
|
||||
|
||||
Context "Get-CheckBoxes" {
|
||||
It "Get-CheckBoxes Install should return data" {
|
||||
. .\pester.ps1
|
||||
|
||||
$TestCheckBoxes = @(
|
||||
"WPFInstallvc2015_32"
|
||||
"WPFInstallvscode"
|
||||
"WPFInstallgit"
|
||||
)
|
||||
|
||||
$OutputResult = New-Object System.Collections.Generic.List[System.Object]
|
||||
$TestCheckBoxes | ForEach-Object {
|
||||
$TestCheckBoxes = @(
|
||||
"WPFInstallvc2015_32"
|
||||
"WPFInstallvscode"
|
||||
"WPFInstallgit"
|
||||
)
|
||||
|
||||
$OutputResult = New-Object System.Collections.Generic.List[System.Object]
|
||||
$TestCheckBoxes | ForEach-Object {
|
||||
|
||||
$global:configs.applications.Install.$psitem.winget -split ";" | ForEach-Object {
|
||||
$OutputResult.Add($psitem)
|
||||
$global:configs.applications.$psitem.winget -split ";" | ForEach-Object {
|
||||
$OutputResult.Add($psitem)
|
||||
}
|
||||
}
|
||||
$OutputResult = Sort-Object -InputObject $OutputResult
|
||||
|
||||
$TestCheckBoxes | ForEach-Object {(Get-Variable $PSItem).value.ischecked = $true}
|
||||
$Output = Get-CheckBoxes -Group WPFInstall | Sort-Object
|
||||
$Output | should -Not -BeNullOrEmpty -Because "Output did not contain applications to install"
|
||||
$Output | Should -Not -Be $OutputResult -Because "Output contains duplicate values"
|
||||
$Output | Should -Be $($OutputResult | Select-Object -Unique | Sort-Object) -Because "Output doesn't match"
|
||||
$TestCheckBoxes | ForEach-Object {(Get-Variable $PSItem).value.ischecked | should -be $false}
|
||||
}
|
||||
$OutputResult = Sort-Object -InputObject $OutputResult
|
||||
|
||||
$TestCheckBoxes | ForEach-Object {(Get-Variable $PSItem).value.ischecked = $true}
|
||||
$Output = Get-CheckBoxes -Group WPFInstall | Sort-Object
|
||||
$Output | should -Not -BeNullOrEmpty -Because "Output did not containe applications to install"
|
||||
$Output | Should -Not -Be $OutputResult -Because "Output contains duplicate values"
|
||||
$Output | Should -Be $($OutputResult | Select-Object -Unique | Sort-Object) -Because "Output doesn't match"
|
||||
$TestCheckBoxes | ForEach-Object {(Get-Variable $PSItem).value.ischecked | should -be $false}
|
||||
}
|
||||
|
||||
Context "Set-Presets" {
|
||||
$global:configs.preset | Get-Member -MemberType NoteProperty | ForEach-Object {
|
||||
$TestCase = @{ name = $psitem.name }
|
||||
|
Reference in New Issue
Block a user