Workspaceslib ut (#40007)
This pull request introduces a new unit testing framework for the
`WorkspacesLib` module, adds test coverage for various utilities, and
integrates the new test project into the build system. Key changes
include adding the `WorkspacesLibUnitTests` project, implementing tests
for `AppUtils`, `JsonUtils`, and `PwaHelper`, and updating the build
configuration to include the new test project.
### Unit Tests Added:
* **`AppUtilsTests`**:
- Added comprehensive tests for methods such as `GetCurrentFolder`,
`IsEdge`, `IsChrome`, and `IsSteamGame` to validate their behavior under
various conditions.
* **`JsonUtilsTests`**:
- Implemented tests for reading and writing workspace data, including
scenarios for invalid JSON, non-existent files, and valid workspace
lists.
* **`PwaHelperTests`**:
- Added tests to ensure the stability of `PwaHelper` methods, such as
`GetEdgeAppId`, `GetChromeAppId`, and `SearchPwaName`, even with invalid
or empty inputs.
### Build System Updates:
* **New Test Project Integration**:
- Added the `WorkspacesLibUnitTests` project to the solution file
`PowerToys.sln` with appropriate dependencies.
- Updated build configurations to include the new test project for both
Debug and Release builds across architectures.
[[1]](diffhunk://#diff-ca837ce490070b91656ffffe31cbad8865ba9174e0f020231f77baf35ff3f811R2208-R2215)
[[2]](diffhunk://#diff-ca837ce490070b91656ffffe31cbad8865ba9174e0f020231f77baf35ff3f811R2841)
### Pipeline Adjustments:
* **Test Discovery**:
- Updated the pipeline configuration in
`.pipelines/v2/templates/job-build-project.yml` to discover the new
`WorkspacesLibUnitTests.dll` during test runs.
---------
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
2025-06-13 10:51:22 +08:00
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets= "Build" ToolsVersion= "15.0" xmlns= "http://schemas.microsoft.com/developer/msbuild/2003" >
<Import Project= "..\..\..\..\packages\Microsoft.Windows.CppWinRT.2.0.240111.5\build\native\Microsoft.Windows.CppWinRT.props" Condition= "Exists('..\..\..\..\packages\Microsoft.Windows.CppWinRT.2.0.240111.5\build\native\Microsoft.Windows.CppWinRT.props')" />
<PropertyGroup Label= "Globals" >
<ProjectGuid > {A85D4D9F-9A39-4B5D-8B5A-9F2D5C9A8B4C}</ProjectGuid>
<Keyword > Win32Proj</Keyword>
<RootNamespace > WorkspacesLibUnitTests</RootNamespace>
2025-07-24 17:53:22 +02:00
<ProjectName > Workspaces.Lib.UnitTests</ProjectName>
Workspaceslib ut (#40007)
This pull request introduces a new unit testing framework for the
`WorkspacesLib` module, adds test coverage for various utilities, and
integrates the new test project into the build system. Key changes
include adding the `WorkspacesLibUnitTests` project, implementing tests
for `AppUtils`, `JsonUtils`, and `PwaHelper`, and updating the build
configuration to include the new test project.
### Unit Tests Added:
* **`AppUtilsTests`**:
- Added comprehensive tests for methods such as `GetCurrentFolder`,
`IsEdge`, `IsChrome`, and `IsSteamGame` to validate their behavior under
various conditions.
* **`JsonUtilsTests`**:
- Implemented tests for reading and writing workspace data, including
scenarios for invalid JSON, non-existent files, and valid workspace
lists.
* **`PwaHelperTests`**:
- Added tests to ensure the stability of `PwaHelper` methods, such as
`GetEdgeAppId`, `GetChromeAppId`, and `SearchPwaName`, even with invalid
or empty inputs.
### Build System Updates:
* **New Test Project Integration**:
- Added the `WorkspacesLibUnitTests` project to the solution file
`PowerToys.sln` with appropriate dependencies.
- Updated build configurations to include the new test project for both
Debug and Release builds across architectures.
[[1]](diffhunk://#diff-ca837ce490070b91656ffffe31cbad8865ba9174e0f020231f77baf35ff3f811R2208-R2215)
[[2]](diffhunk://#diff-ca837ce490070b91656ffffe31cbad8865ba9174e0f020231f77baf35ff3f811R2841)
### Pipeline Adjustments:
* **Test Discovery**:
- Updated the pipeline configuration in
`.pipelines/v2/templates/job-build-project.yml` to discover the new
`WorkspacesLibUnitTests.dll` during test runs.
---------
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
2025-06-13 10:51:22 +08:00
</PropertyGroup>
<Import Project= "$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Label= "Configuration" >
<PlatformToolset > v143</PlatformToolset>
</PropertyGroup>
<PropertyGroup >
<ConfigurationType > DynamicLibrary</ConfigurationType>
</PropertyGroup>
<Import Project= "$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label= "ExtensionSettings" >
</ImportGroup>
<ImportGroup Label= "Shared" >
</ImportGroup>
<ImportGroup Label= "PropertySheets" >
<Import Project= "$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition= "exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label= "LocalAppDataPlatform" />
</ImportGroup>
<PropertyGroup Label= "UserMacros" />
<PropertyGroup >
<OutDir > ..\..\..\..\$(Platform)\$(Configuration)\tests\Workspaces\</OutDir>
</PropertyGroup>
<ItemDefinitionGroup >
<ClCompile >
<AdditionalIncludeDirectories > ..\;..\WorkspacesLib\;$(SolutionDir)src\;$(SolutionDir)src\common;$(SolutionDir)src\common\Telemetry;..\..\;..\..\..\;$(VCInstallDir)UnitTest\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions > WIN32;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<UseFullPaths > true</UseFullPaths>
</ClCompile>
<Link >
<AdditionalLibraryDirectories > $(VCInstallDir)UnitTest\\lib;$(SolutionDir)$(Platform)\\$(Configuration)\\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<AdditionalDependencies > propsys.lib;comctl32.lib;pathcch.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;Pathcch.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link>
</ItemDefinitionGroup>
<ItemGroup >
<ClInclude Include= "pch.h" />
<ClInclude Include= "targetver.h" />
</ItemGroup>
<ItemGroup >
<ClCompile Include= "pch.cpp" >
<PrecompiledHeader > Create</PrecompiledHeader>
</ClCompile>
<ClCompile Include= "WorkspacesDataTests.cpp" />
<ClCompile Include= "StringUtilsTests.cpp" />
<ClCompile Include= "JsonUtilsTests.cpp" />
<ClCompile Include= "AppUtilsTests.cpp" />
<ClCompile Include= "PwaHelperTests.cpp" />
</ItemGroup>
<ItemGroup >
<None Include= "packages.config" />
</ItemGroup>
<ItemGroup >
<ProjectReference Include= "..\..\..\common\SettingsAPI\SettingsAPI.vcxproj" >
<Project > {6955446d-23f7-4023-9bb3-8657f904af99}</Project>
</ProjectReference>
<ProjectReference Include= "..\WorkspacesLib\WorkspacesLib.vcxproj" >
<Project > {b31fcc55-b5a4-4ea7-b414-2dceae6af332}</Project>
</ProjectReference>
</ItemGroup>
<Import Project= "$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label= "ExtensionTargets" >
<Import Project= "..\..\..\..\packages\Microsoft.Windows.CppWinRT.2.0.240111.5\build\native\Microsoft.Windows.CppWinRT.targets" Condition= "Exists('..\..\..\..\packages\Microsoft.Windows.CppWinRT.2.0.240111.5\build\native\Microsoft.Windows.CppWinRT.targets')" />
</ImportGroup>
<Target Name= "EnsureNuGetPackageBuildImports" BeforeTargets= "PrepareForBuild" >
<PropertyGroup >
<ErrorText > This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
</PropertyGroup>
<Error Condition= "!Exists('..\..\..\..\packages\Microsoft.Windows.CppWinRT.2.0.240111.5\build\native\Microsoft.Windows.CppWinRT.props')" Text= "$([System.String]::Format('$(ErrorText)', '..\..\..\..\packages\Microsoft.Windows.CppWinRT.2.0.240111.5\build\native\Microsoft.Windows.CppWinRT.props'))" />
<Error Condition= "!Exists('..\..\..\..\packages\Microsoft.Windows.CppWinRT.2.0.240111.5\build\native\Microsoft.Windows.CppWinRT.targets')" Text= "$([System.String]::Format('$(ErrorText)', '..\..\..\..\packages\Microsoft.Windows.CppWinRT.2.0.240111.5\build\native\Microsoft.Windows.CppWinRT.targets'))" />
</Target>
</Project>