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:
Chris Titus
2023-03-07 12:28:00 -08:00
committed by GitHub
parent 5c8c2f3442
commit a1c7501b98
55 changed files with 6392 additions and 3485 deletions

115
pester/runspace.Tests.ps1 Normal file
View 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
}
}
}

View File

@ -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 }