mirror of
https://github.com/ChrisTitusTech/winutil.git
synced 2024-11-24 11:55:31 +00:00
a1c7501b98
* 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>
209 lines
7.8 KiB
PowerShell
209 lines
7.8 KiB
PowerShell
#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:configs = @{}
|
|
|
|
(
|
|
"applications",
|
|
"preset"
|
|
) | ForEach-Object {
|
|
$global:configs["$PSItem"] = Get-Content .\config\$PSItem.json | ConvertFrom-Json
|
|
}
|
|
|
|
#GUI
|
|
$global:inputXML = get-content MainWindow.xaml
|
|
$global:inputXML = $global:inputXML -replace 'mc:Ignorable="d"', '' -replace "x:N", 'N' -replace '^<Win.*', '<Window'
|
|
[xml]$global:XAML = $global:inputXML
|
|
[void][System.Reflection.Assembly]::LoadWithPartialName('presentationframework')
|
|
$global:reader = (New-Object System.Xml.XmlNodeReader $global:xaml)
|
|
$global:Form = [Windows.Markup.XamlReader]::Load( $global:reader )
|
|
$global:xaml.SelectNodes("//*[@Name]") | ForEach-Object { Set-Variable -Name "Global:WPF$($_.Name)" -Value $global:Form.FindName($_.Name) -Scope global }
|
|
|
|
#dotsource original script to pull in all variables and ensure no errors
|
|
$script = Get-Content .\winutil.ps1
|
|
$output = $script[0..($script.count - 14)] | Out-File .\pester.ps1
|
|
|
|
|
|
#endregion Load Variables needed for testing
|
|
|
|
#===========================================================================
|
|
# Tests - Application Installs
|
|
#===========================================================================
|
|
|
|
Describe "Application Installs" {
|
|
Context "Application installs" {
|
|
It "Imports with no errors" {
|
|
$global:configs.Applications | should -Not -BeNullOrEmpty
|
|
}
|
|
}
|
|
Context "Winget Install" {
|
|
$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.$name.winget | should -Befalse -because "$name Did not include a Winget Install"
|
|
}
|
|
}
|
|
}
|
|
Context "GUI Applications Checkbox" {
|
|
(get-variable | Where-Object {$psitem.name -like "*install*" -and $psitem.value.GetType().name -eq "CheckBox"}).name -replace 'Global:','' | ForEach-Object {
|
|
|
|
$TestCase = @{ name = $psitem }
|
|
It "$($psitem) should include application.json " -TestCases $TestCase{
|
|
param($name)
|
|
$null -eq $global:configs.applications.$name | should -Befalse -because "$name Does not have entry in applications.json"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
#===========================================================================
|
|
# Tests - Tweak Presets
|
|
#===========================================================================
|
|
|
|
Describe "Tweak Presets" {
|
|
Context "Json Import" {
|
|
It "Imports with no errors" {
|
|
$global:configs.preset | should -Not -BeNullOrEmpty
|
|
}
|
|
}
|
|
}
|
|
|
|
#===========================================================================
|
|
# Tests - GUI
|
|
#===========================================================================
|
|
|
|
Describe "GUI" {
|
|
Context "XML" {
|
|
It "Imports with no errors" {
|
|
$global:XAML | should -Not -BeNullOrEmpty
|
|
}
|
|
It "Title should be $global:FormName" {
|
|
$global:XAML.window.Title | should -Be $global:FormName
|
|
}
|
|
}
|
|
|
|
Context "Form" {
|
|
It "Imports with no errors" {
|
|
$global:Form | should -Not -BeNullOrEmpty
|
|
}
|
|
It "Title should match XML" {
|
|
$global:Form.title | should -Be $global:XAML.window.Title
|
|
}
|
|
}
|
|
}
|
|
|
|
#===========================================================================
|
|
# 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
|
|
$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
|
|
$WPFundoall | should -Not -BeNullOrEmpty
|
|
$WPFPanelDISM | should -Not -BeNullOrEmpty
|
|
$WPFPanelAutologin | should -Not -BeNullOrEmpty
|
|
$WPFUpdatesdefault | should -Not -BeNullOrEmpty
|
|
$WPFFixesUpdate | should -Not -BeNullOrEmpty
|
|
$WPFUpdatesdisable | should -Not -BeNullOrEmpty
|
|
$WPFUpdatessecurity | should -Not -BeNullOrEmpty
|
|
$WPFFeatureInstall | should -Not -BeNullOrEmpty
|
|
$WPFundoall | should -Not -BeNullOrEmpty
|
|
$WPFtweaksbutton | should -Not -BeNullOrEmpty
|
|
$WPFminimal | should -Not -BeNullOrEmpty
|
|
$WPFlaptop | should -Not -BeNullOrEmpty
|
|
$WPFdesktop | should -Not -BeNullOrEmpty
|
|
$WPFInstallUpgrade | should -Not -BeNullOrEmpty
|
|
$WPFinstall | should -Not -BeNullOrEmpty
|
|
}
|
|
|
|
Context "Get-CheckBoxes" {
|
|
It "Get-CheckBoxes Install should return data" {
|
|
|
|
$TestCheckBoxes = @(
|
|
"WPFInstallvc2015_32"
|
|
"WPFInstallvscode"
|
|
"WPFInstallgit"
|
|
)
|
|
|
|
$OutputResult = New-Object System.Collections.Generic.List[System.Object]
|
|
$TestCheckBoxes | ForEach-Object {
|
|
|
|
$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}
|
|
}
|
|
}
|
|
Context "Set-Presets" {
|
|
$global:configs.preset | Get-Member -MemberType NoteProperty | ForEach-Object {
|
|
$TestCase = @{ name = $psitem.name }
|
|
It "preset $($psitem.name) should modify the correct values" -TestCases $TestCase {
|
|
param($name)
|
|
Set-Presets $name
|
|
get-variable $global:configs.preset.$name | Select-Object -ExpandProperty value | Select-Object -ExpandProperty ischecked | Where-Object {$psitem -eq $false} | should -BeNullOrEmpty
|
|
}
|
|
}
|
|
}
|
|
}
|