From 21ea5adcc788bbecd81e475277aba927ec66c860 Mon Sep 17 00:00:00 2001
From: Rob Mensching <rob@firegiant.com>
Date: Mon, 3 Oct 2022 15:55:20 -0700
Subject: Run tests in bulk to improve performance

The fewer executions of "dotnet test" the better so batch up calls
by referencing multiple assembly DLLs.
---
 src/api/api.cmd             | 15 +++++++--------
 src/burn/burn.cmd           | 24 ++++++++++++++++++++++--
 src/libs/libs.cmd           | 11 ++++++-----
 src/test/burn/test_burn.cmd |  2 +-
 src/test/msi/test_msi.cmd   |  2 +-
 src/testresultfilelist.txt  | 24 ++++++------------------
 src/tools/tools.cmd         |  8 ++++++--
 src/wix/wix.cmd             | 20 +++++++++++++-------
 8 files changed, 62 insertions(+), 44 deletions(-)

diff --git a/src/api/api.cmd b/src/api/api.cmd
index d1f87f54..0c3bb31b 100644
--- a/src/api/api.cmd
+++ b/src/api/api.cmd
@@ -26,10 +26,12 @@
 msbuild api_t.proj -p:Configuration=%_C% -nologo -m -warnaserror -bl:%_L%\api_build.binlog || exit /b
 
 :: Test
-dotnet test burn\test\WixToolsetTest.Mba.Core -c %_C% --nologo --no-build -l "trx;LogFileName=%_L%\TestResults\WixToolsetTest.Mba.Core.trx" || exit /b
-dotnet test %_B%\x86\BalUtilUnitTest.dll --nologo -l "trx;LogFileName=%_L%\TestResults\BalUtilUnitTest.trx" || exit /b
-dotnet test %_B%\x86\BextUtilUnitTest.dll --nologo -l "trx;LogFileName=%_L%\TestResults\BextUtilUnitTest.trx" || exit /b
-dotnet test wix\api_wix.sln -c %_C% --nologo --no-build -l "trx;LogFileName=%_L%\TestResults\api_wix.trx" || exit /b
+dotnet test ^
+ %_B%\net6.0\WixToolsetTest.Data.dll ^
+ %_B%\net6.0\win-x86\WixToolsetTest.Mba.Core.dll ^
+ %_B%\x86\BalUtilUnitTest.dll ^
+ %_B%\x86\BextUtilUnitTest.dll ^
+ --nologo -l "trx;LogFileName=%_L%\TestResults\api.trx" || exit /b
 
 @goto :end
 
@@ -41,10 +43,7 @@ dotnet test wix\api_wix.sln -c %_C% --nologo --no-build -l "trx;LogFileName=%_L%
 @del "..\..\build\artifacts\WixToolset.Data.*.nupkg" 2> nul
 @del "..\..\build\artifacts\WixToolset.Extensibility.*.nupkg" 2> nul
 @del "..\..\build\artifacts\WixToolset.Mba.Core.*.nupkg" 2> nul
-@del "%_L%\TestResults\WixToolsetTest.Mba.Core.trx" 2> nul
-@del "%_L%\TestResults\BalUtilUnitTest.trx" 2> nul
-@del "%_L%\TestResults\BextUtilUnitTest.trx" 2> nul
-@del "%_L%\TestResults\api_wix.trx" 2> nul
+@del "%_L%\TestResults\api.trx" 2> nul
 @rd /s/q "%USERPROFILE%\.nuget\packages\wixtoolset.balutil" 2> nul
 @rd /s/q "%USERPROFILE%\.nuget\packages\wixtoolset.bextutil" 2> nul
 @rd /s/q "%USERPROFILE%\.nuget\packages\wixtoolset.bootstrappercore.native" 2> nul
diff --git a/src/burn/burn.cmd b/src/burn/burn.cmd
index 127f9253..f1753106 100644
--- a/src/burn/burn.cmd
+++ b/src/burn/burn.cmd
@@ -3,12 +3,20 @@
 
 @set _C=Debug
 @set _L=%~dp0..\..\build\logs
+
 :parse_args
 @if /i "%1"=="release" set _C=Release
+@if /i "%1"=="inc" set _INC=1
+@if /i "%1"=="clean" set _CLEAN=1
 @if not "%1"=="" shift & goto parse_args
 
 @set _B=%~dp0..\..\build\burn\%_C%
 
+:: Clean
+
+@if "%_INC%"=="" call :clean
+@if NOT "%_CLEAN%"=="" goto :end
+
 @echo Building burn %_C%
 
 :: burn
@@ -17,8 +25,20 @@ nuget restore || exit /b
 
 msbuild burn_t.proj -p:Configuration=%_C% -nologo -m -warnaserror -bl:%_L%\burn_build.binlog || exit /b
 
-dotnet test %_B%\x86\BurnUnitTest.dll --nologo -l "trx;LogFileName=%_L%\TestResults\BurnUnitTest32.trx" || exit /b
-dotnet test %_B%\x64\BurnUnitTest.dll --nologo -l "trx;LogFileName=%_L%\TestResults\BurnUnitTest64.trx" || exit /b
+dotnet test ^
+ %_B%\x86\BurnUnitTest.dll ^
+ %_B%\x64\BurnUnitTest.dll ^
+ --nologo -l "trx;LogFileName=%_L%\TestResults\burn.trx" || exit /b
+
+@goto :end
+
+:clean
+@rd /s/q "..\..\build\burn" 2> nul
+@del "..\..\build\artifacts\WixToolset.Burn.*.nupkg" 2> nul
+@del "%_L%\TestResults\burn.trx" 2> nul
+@rd /s/q "%USERPROFILE%\.nuget\packages\wixtoolset.burn" 2> nul
+@exit /b
 
+:end
 @popd
 @endlocal
diff --git a/src/libs/libs.cmd b/src/libs/libs.cmd
index e9402701..51331459 100644
--- a/src/libs/libs.cmd
+++ b/src/libs/libs.cmd
@@ -21,9 +21,11 @@
 
 msbuild -Restore libs_t.proj -p:Configuration=%_C% -nologo -m -warnaserror -bl:%_L%\libs_build.binlog || exit /b
 
-dotnet test %_B%\net6.0\WixToolsetTest.Versioning.dll --nologo -l "trx;LogFileName=%_L%\TestResults\WixToolsetTest.Versioning.trx" || exit /b
-dotnet test %_B%\x86\DUtilUnitTest.dll --nologo -l "trx;LogFileName=%_L%\TestResults\DutilUnitTest32.trx" || exit /b
-dotnet test %_B%\x64\DUtilUnitTest.dll --nologo -l "trx;LogFileName=%_L%\TestResults\DutilUnitTest64.trx" || exit /b
+dotnet test ^
+ %_B%\net6.0\WixToolsetTest.Versioning.dll ^
+ %_B%\x86\DUtilUnitTest.dll ^
+ %_B%\x64\DUtilUnitTest.dll ^
+ --nologo -l "trx;LogFileName=%_L%\TestResults\libs.trx" || exit /b
 
 @goto :end
 
@@ -32,8 +34,7 @@ dotnet test %_B%\x64\DUtilUnitTest.dll --nologo -l "trx;LogFileName=%_L%\TestRes
 @del "..\..\build\artifacts\WixToolset.DUtil.*.nupkg" 2> nul
 @del "..\..\build\artifacts\WixToolset.Versioning.*.nupkg" 2> nul
 @del "..\..\build\artifacts\WixToolset.WcaUtil.*.nupkg" 2> nul
-@del "%_L%\TestResults\WixToolsetTest.Versioning.trx" 2> nul
-@del "%_L%\TestResults\DutilUnitTest*.trx" 2> nul
+@del "%_L%\TestResults\libs.trx" 2> nul
 @rd /s/q "%USERPROFILE%\.nuget\packages\wixtoolset.dutil" 2> nul
 @rd /s/q "%USERPROFILE%\.nuget\packages\wixtoolset.versioning" 2> nul
 @rd /s/q "%USERPROFILE%\.nuget\packages\wixtoolset.wcautil" 2> nul
diff --git a/src/test/burn/test_burn.cmd b/src/test/burn/test_burn.cmd
index 72ffd448..311a6b32 100644
--- a/src/test/burn/test_burn.cmd
+++ b/src/test/burn/test_burn.cmd
@@ -21,7 +21,7 @@ mt.exe -manifest "WixToolsetTest.BurnE2E\testhost.longpathaware.manifest" -updat
 
 @if not "%RuntimeTestsEnabled%"=="true" goto :LExit
 
-dotnet test -c %_C% --no-build WixToolsetTest.BurnE2E -l "trx;LogFileName=%_L%\TestResults\WixToolsetTest.BurnE2E.trx" || exit /b
+dotnet test -c %_C% WixToolsetTest.BurnE2E --nologo --no-build -l "trx;LogFileName=%_L%\TestResults\WixToolsetTest.BurnE2E.trx" || exit /b
 
 :LExit
 @popd
diff --git a/src/test/msi/test_msi.cmd b/src/test/msi/test_msi.cmd
index bb9d0162..2a6f5831 100644
--- a/src/test/msi/test_msi.cmd
+++ b/src/test/msi/test_msi.cmd
@@ -16,7 +16,7 @@ msbuild -t:Build -Restore TestData\TestData.proj -p:Configuration=%_C% -m -bl:%_
 
 @if not "%RuntimeTestsEnabled%"=="true" goto :LExit
 
-dotnet test -c %_C% --no-build WixToolsetTest.MsiE2E -l "trx;LogFileName=%_L%\TestResults\WixToolsetTest.MsiE2E.trx" || exit /b
+dotnet test -c %_C% WixToolsetTest.MsiE2E --nologo --no-build -l "trx;LogFileName=%_L%\TestResults\WixToolsetTest.MsiE2E.trx" || exit /b
 
 :LExit
 @popd
diff --git a/src/testresultfilelist.txt b/src/testresultfilelist.txt
index 59584e64..d3981c6e 100644
--- a/src/testresultfilelist.txt
+++ b/src/testresultfilelist.txt
@@ -1,24 +1,12 @@
-build/logs/TestResults/api_wix.trx
-build/logs/TestResults/BalUtilUnitTest.trx
-build/logs/TestResults/BextUtilUnitTest.trx
-build/logs/TestResults/BurnUnitTest32.trx
-build/logs/TestResults/BurnUnitTest64.trx
-build/logs/TestResults/DutilUnitTest32.trx
-build/logs/TestResults/DutilUnitTest64.trx
+build/logs/TestResults/api.trx
+build/logs/TestResults/burn.trx
+build/logs/TestResults/libs.trx
+build/logs/TestResults/tools.trx
+build/logs/TestResults/wix_prepublish.trx
+build/logs/TestResults/wix_postpublish.trx
 build/logs/TestResults/WixToolsetTest.Bal.trx
-build/logs/TestResults/WixToolsetTest.BuildTasks.trx
 build/logs/TestResults/WixToolsetTest.BurnE2E.trx
-build/logs/TestResults/WixToolsetTest.Converters.trx
-build/logs/TestResults/WixToolsetTest.Converters.Symbolizer.trx
-build/logs/TestResults/WixToolsetTest.Core.trx
-build/logs/TestResults/WixToolsetTest.Core.Native.trx
-build/logs/TestResults/WixToolsetTest.CoreIntegration.trx
 build/logs/TestResults/WixToolsetTest.Dnc.HostGenerator.trx
-build/logs/TestResults/WixToolsetTest.Heat.trx
-build/logs/TestResults/WixToolsetTest.HeatTasks.trx
 build/logs/TestResults/WixToolsetTest.ManagedHost.trx
-build/logs/TestResults/WixToolsetTest.Mba.Core.trx
 build/logs/TestResults/WixToolsetTest.MsiE2E.trx
-build/logs/TestResults/WixToolsetTest.Sdk.trx
-build/logs/TestResults/WixToolsetTest.Versioning.trx
 build/logs/TestResults/WixToolsetTest.WixE2ETests.trx
\ No newline at end of file
diff --git a/src/tools/tools.cmd b/src/tools/tools.cmd
index 90c10af0..2ec67f46 100644
--- a/src/tools/tools.cmd
+++ b/src/tools/tools.cmd
@@ -10,6 +10,8 @@
 @if /i "%1"=="clean" set _CLEAN=1
 @if not "%1"=="" shift & goto parse_args
 
+@set _B=%~dp0..\..\build\tools\%_C%
+
 :: Clean
 
 @if "%_INC%"=="" call :clean
@@ -24,8 +26,10 @@ msbuild -Restore tools.sln -p:Configuration=%_C% -nologo -m -warnaserror -bl:%_L
 msbuild publish_t.proj -p:Configuration=%_C% -nologo -m -warnaserror -bl:%_L%\tools_publish.binlog || exit /b
 
 :: Test
-dotnet test -c %_C% --no-build --nologo test\WixToolsetTest.Heat -l "trx;LogFileName=%_L%\TestResults\WixToolsetTest.Heat.trx" || exit /b
-dotnet test -c %_C% --no-build --nologo test\WixToolsetTest.HeatTasks -l "trx;LogFileName=%_L%\TestResults\WixToolsetTest.HeatTasks.trx" || exit /b
+dotnet test ^
+ %_B%\test\WixToolsetTest.Heat\net472\WixToolsetTest.Heat.dll ^
+ %_B%\test\WixToolsetTest.HeatTasks\net472\WixToolsetTest.HeatTasks.dll ^
+ --nologo -l "trx;LogFileName=%_L%\TestResults\tools.trx" || exit /b
 
 :: Pack
 msbuild -t:Pack WixToolset.Heat -p:Configuration=%_C% -p:NoBuild=true -nologo -m -warnaserror -bl:%_L%\tools_pack.binlog || exit /b
diff --git a/src/wix/wix.cmd b/src/wix/wix.cmd
index ff2043eb..e1bfe384 100644
--- a/src/wix/wix.cmd
+++ b/src/wix/wix.cmd
@@ -7,6 +7,7 @@
 @if /i "%1"=="release" set _C=Release
 @if not "%1"=="" shift & goto parse_args
 
+@set _B=%~dp0..\..\build\wix\%_C%
 @set _P_OBJ=%~dp0..\..\build\wix\obj\publish_t\%_C%\
 @set _P=%~dp0..\..\build\wix\%_C%\publish\
 @set _RCO=/S /R:1 /W:1 /NP /XO  /NS /NC /NFL /NDL /NJH /NJS
@@ -24,11 +25,13 @@ msbuild wix.sln -p:Configuration=%_C% -nologo -m -warnaserror -bl:%_L%\wix_build
 
 
 :: Pre-Publish Test
-dotnet test -c %_C% --no-build --nologo test\WixToolsetTest.Converters -l "trx;LogFileName=%_L%\TestResults\WixToolsetTest.Converters.trx" || exit /b
-dotnet test -c %_C% --no-build --nologo test\WixToolsetTest.Converters.Symbolizer -l "trx;LogFileName=%_L%\TestResults\WixToolsetTest.Converters.Symbolizer.trx" || exit /b
-dotnet test -c %_C% --no-build --nologo test\WixToolsetTest.Core -l "trx;LogFileName=%_L%\TestResults\WixToolsetTest.Core.trx" || exit /b
-dotnet test -c %_C% --no-build --nologo test\WixToolsetTest.Core.Native -l "trx;LogFileName=%_L%\TestResults\WixToolsetTest.Core.Native.trx" || exit /b
-dotnet test -c %_C% --no-build --nologo test\WixToolsetTest.CoreIntegration -l "trx;LogFileName=%_L%\TestResults\WixToolsetTest.CoreIntegration.trx" || exit /b
+dotnet test ^
+ %_B%\test\WixToolsetTest.Converters\net6.0\WixToolsetTest.Converters.dll ^
+ %_B%\test\WixToolsetTest.Converters.Symbolizer\net472\WixToolsetTest.Converters.Symbolizer.dll ^
+ %_B%\test\WixToolsetTest.Core\net6.0\WixToolsetTest.Core.dll ^
+ %_B%\test\WixToolsetTest.Core.Native\net6.0\win-x64\WixToolsetTest.Core.Native.dll ^
+ %_B%\test\WixToolsetTest.CoreIntegration\net6.0\WixToolsetTest.CoreIntegration.dll ^
+ --nologo -l "trx;LogFileName=%_L%\TestResults\wix_prepublish.trx" || exit /b
 
 
 :: Publish
@@ -50,8 +53,11 @@ msbuild -t:Publish -p:Configuration=%_C% -nologo -warnaserror WixToolset.Sdk\Wix
 
 
 :: Test
-dotnet test -c %_C% --no-build --nologo test\WixToolsetTest.BuildTasks -l "trx;LogFileName=%_L%\TestResults\WixToolsetTest.BuildTasks.trx" || exit /b
-dotnet test -c %_C% --no-build --nologo test\WixToolsetTest.Sdk -l "trx;LogFileName=%_L%\TestResults\WixToolsetTest.Sdk.trx" || exit /b
+dotnet test ^
+ %_B%\test\WixToolsetTest.BuildTasks\net472\win-x64\WixToolsetTest.BuildTasks.dll ^
+ %_B%\test\WixToolsetTest.Sdk\net472\WixToolsetTest.Sdk.dll ^
+ --nologo -l "trx;LogFileName=%_L%\TestResults\wix_postpublish.trx" || exit /b
+
 
 :: Pack
 msbuild pack_t.proj -p:Configuration=%_C% -nologo -m -warnaserror -bl:%_L%\wix_pack.binlog || exit /b
-- 
cgit v1.2.3-55-g6feb