From c00516901e6b67e398396b14fe7682d0376f8643 Mon Sep 17 00:00:00 2001
From: Rob Mensching <rob@firegiant.com>
Date: Thu, 22 Apr 2021 05:46:03 -0700
Subject: Move balutil into API/burn

---
 .../test/BalUtilUnitTest/BalUtilUnitTest.vcxproj   | 76 ++++++++++++++++++++++
 .../BalUtilUnitTest.vcxproj.filters                | 33 ++++++++++
 .../burn/test/BalUtilUnitTest/TestBAFunctions.cpp  | 41 ++++++++++++
 .../TestBootstrapperApplication.cpp                | 39 +++++++++++
 src/api/burn/test/BalUtilUnitTest/packages.config  | 15 +++++
 src/api/burn/test/BalUtilUnitTest/precomp.cpp      |  3 +
 src/api/burn/test/BalUtilUnitTest/precomp.h        | 23 +++++++
 7 files changed, 230 insertions(+)
 create mode 100644 src/api/burn/test/BalUtilUnitTest/BalUtilUnitTest.vcxproj
 create mode 100644 src/api/burn/test/BalUtilUnitTest/BalUtilUnitTest.vcxproj.filters
 create mode 100644 src/api/burn/test/BalUtilUnitTest/TestBAFunctions.cpp
 create mode 100644 src/api/burn/test/BalUtilUnitTest/TestBootstrapperApplication.cpp
 create mode 100644 src/api/burn/test/BalUtilUnitTest/packages.config
 create mode 100644 src/api/burn/test/BalUtilUnitTest/precomp.cpp
 create mode 100644 src/api/burn/test/BalUtilUnitTest/precomp.h

(limited to 'src/api/burn/test/BalUtilUnitTest')

diff --git a/src/api/burn/test/BalUtilUnitTest/BalUtilUnitTest.vcxproj b/src/api/burn/test/BalUtilUnitTest/BalUtilUnitTest.vcxproj
new file mode 100644
index 00000000..d3a81e2a
--- /dev/null
+++ b/src/api/burn/test/BalUtilUnitTest/BalUtilUnitTest.vcxproj
@@ -0,0 +1,76 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. -->
+
+
+<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <Import Project="..\..\..\packages\WixToolset.BootstrapperCore.Native.4.0.141\build\WixToolset.BootstrapperCore.Native.props" Condition="Exists('..\..\..\packages\WixToolset.BootstrapperCore.Native.4.0.141\build\WixToolset.BootstrapperCore.Native.props')" />
+  <Import Project="..\..\..\packages\WixBuildTools.TestSupport.Native.4.0.50\build\WixBuildTools.TestSupport.Native.props" Condition="Exists('..\..\..\packages\WixBuildTools.TestSupport.Native.4.0.50\build\WixBuildTools.TestSupport.Native.props')" />
+  <Import Project="..\..\..\packages\WixToolset.DUtil.4.0.72\build\WixToolset.DUtil.props" Condition="Exists('..\..\..\packages\WixToolset.DUtil.4.0.72\build\WixToolset.DUtil.props')" />
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectTypes>{3AC096D0-A1C2-E12C-1390-A8335801FDAB};{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}</ProjectTypes>
+    <ProjectGuid>{9B507AF9-035E-4DB6-8C0C-5DCC3FEF2631}</ProjectGuid>
+    <RootNamespace>UnitTest</RootNamespace>
+    <Keyword>ManagedCProj</Keyword>
+    <ConfigurationType>DynamicLibrary</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+    <CLRSupport>true</CLRSupport>
+    <SignOutput>false</SignOutput>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <PropertyGroup>
+    <ProjectAdditionalIncludeDirectories>..\..\balutil\inc</ProjectAdditionalIncludeDirectories>
+    <ProjectAdditionalLinkLibraries>comctl32.lib;gdiplus.lib;msimg32.lib;shlwapi.lib;wininet.lib</ProjectAdditionalLinkLibraries>
+  </PropertyGroup>
+  <ItemGroup>
+    <ClCompile Include="precomp.cpp">
+      <PrecompiledHeader>Create</PrecompiledHeader>
+      <!-- Warnings from referencing netstandard dlls -->
+      <DisableSpecificWarnings>4564;4691</DisableSpecificWarnings>
+    </ClCompile>
+    <ClCompile Include="TestBAFunctions.cpp" />
+    <ClCompile Include="TestBootstrapperApplication.cpp" />
+  </ItemGroup>
+  <ItemGroup>
+    <ClInclude Include="precomp.h" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="packages.config" />
+  </ItemGroup>
+  <ItemGroup>
+    <Reference Include="System" />
+    <Reference Include="System.Core" />
+    <Reference Include="WixBuildTools.TestSupport">
+      <HintPath>..\..\..\packages\WixBuildTools.TestSupport.4.0.50\lib\net472\WixBuildTools.TestSupport.dll</HintPath>
+    </Reference>
+    <Reference Include="WixBuildTools.TestSupport.Native">
+      <HintPath>..\..\..\packages\WixBuildTools.TestSupport.Native.4.0.50\lib\net472\WixBuildTools.TestSupport.Native.dll</HintPath>
+    </Reference>
+  </ItemGroup>
+  <ItemGroup>
+    <ProjectReference Include="..\..\balutil\balutil.vcxproj">
+      <Project>{EDCB8095-0E6A-43E0-BC33-C4F762FC5CDB}</Project>
+    </ProjectReference>
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <Import Project="..\..\..\packages\WixBuildTools.TestSupport.Native.4.0.50\build\WixBuildTools.TestSupport.Native.targets" Condition="Exists('..\..\..\packages\WixBuildTools.TestSupport.Native.4.0.50\build\WixBuildTools.TestSupport.Native.targets')" />
+  <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\WixBuildTools.TestSupport.Native.4.0.50\build\WixBuildTools.TestSupport.Native.props')" Text="$([System.String]::Format('$(ErrorText)', '..\..\..\packages\WixBuildTools.TestSupport.Native.4.0.50\build\WixBuildTools.TestSupport.Native.props'))" />
+    <Error Condition="!Exists('..\..\..\packages\WixBuildTools.TestSupport.Native.4.0.50\build\WixBuildTools.TestSupport.Native.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\..\packages\WixBuildTools.TestSupport.Native.4.0.50\build\WixBuildTools.TestSupport.Native.targets'))" />
+    <Error Condition="!Exists('..\..\..\packages\WixToolset.DUtil.4.0.72\build\WixToolset.DUtil.props')" Text="$([System.String]::Format('$(ErrorText)', '..\..\..\packages\WixToolset.DUtil.4.0.72\build\WixToolset.DUtil.props'))" />
+    <Error Condition="!Exists('..\..\..\packages\WixToolset.BootstrapperCore.Native.4.0.141\build\WixToolset.BootstrapperCore.Native.props')" Text="$([System.String]::Format('$(ErrorText)', '..\..\..\packages\WixToolset.BootstrapperCore.Native.4.0.141\build\WixToolset.BootstrapperCore.Native.props'))" />
+  </Target>
+</Project>
\ No newline at end of file
diff --git a/src/api/burn/test/BalUtilUnitTest/BalUtilUnitTest.vcxproj.filters b/src/api/burn/test/BalUtilUnitTest/BalUtilUnitTest.vcxproj.filters
new file mode 100644
index 00000000..85f31076
--- /dev/null
+++ b/src/api/burn/test/BalUtilUnitTest/BalUtilUnitTest.vcxproj.filters
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup>
+    <Filter Include="Source Files">
+      <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+      <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+    </Filter>
+    <Filter Include="Header Files">
+      <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
+      <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
+    </Filter>
+    <Filter Include="Resource Files">
+      <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
+      <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav</Extensions>
+    </Filter>
+  </ItemGroup>
+  <ItemGroup>
+    <ClCompile Include="precomp.cpp">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="TestBAFunctions.cpp">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="TestBootstrapperApplication.cpp">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+  </ItemGroup>
+  <ItemGroup>
+    <ClInclude Include="precomp.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+  </ItemGroup>
+</Project>
\ No newline at end of file
diff --git a/src/api/burn/test/BalUtilUnitTest/TestBAFunctions.cpp b/src/api/burn/test/BalUtilUnitTest/TestBAFunctions.cpp
new file mode 100644
index 00000000..927a8d10
--- /dev/null
+++ b/src/api/burn/test/BalUtilUnitTest/TestBAFunctions.cpp
@@ -0,0 +1,41 @@
+// Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information.
+
+#include "precomp.h"
+#include "BalBaseBAFunctions.h"
+#include "BalBaseBAFunctionsProc.h"
+
+class CTestBAFunctions : public CBalBaseBAFunctions
+{
+public:
+    CTestBAFunctions(
+        __in HMODULE hModule,
+        __in IBootstrapperEngine* pEngine,
+        __in const BA_FUNCTIONS_CREATE_ARGS* pArgs
+        ) : CBalBaseBAFunctions(hModule, pEngine, pArgs)
+    {
+    }
+};
+
+HRESULT CreateBAFunctions(
+    __in HMODULE hModule,
+    __in IBootstrapperEngine* pEngine,
+    __in const BA_FUNCTIONS_CREATE_ARGS* pArgs,
+    __in BA_FUNCTIONS_CREATE_RESULTS* pResults,
+    __out IBAFunctions** ppApplication
+    )
+{
+    HRESULT hr = S_OK;
+    CTestBAFunctions* pApplication = NULL;
+
+    pApplication = new CTestBAFunctions(hModule, pEngine, pArgs);
+    ExitOnNull(pApplication, hr, E_OUTOFMEMORY, "Failed to create new test bafunctions object.");
+
+    pResults->pfnBAFunctionsProc = BalBaseBAFunctionsProc;
+    pResults->pvBAFunctionsProcContext = pApplication;
+    *ppApplication = pApplication;
+    pApplication = NULL;
+
+LExit:
+    ReleaseObject(pApplication);
+    return hr;
+}
diff --git a/src/api/burn/test/BalUtilUnitTest/TestBootstrapperApplication.cpp b/src/api/burn/test/BalUtilUnitTest/TestBootstrapperApplication.cpp
new file mode 100644
index 00000000..13d22e72
--- /dev/null
+++ b/src/api/burn/test/BalUtilUnitTest/TestBootstrapperApplication.cpp
@@ -0,0 +1,39 @@
+// Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information.
+
+#include "precomp.h"
+#include "BalBaseBootstrapperApplication.h"
+#include "BalBaseBootstrapperApplicationProc.h"
+
+class CTestBootstrapperApplication : public CBalBaseBootstrapperApplication
+{
+public:
+    CTestBootstrapperApplication(
+        __in IBootstrapperEngine* pEngine,
+        __in const BOOTSTRAPPER_CREATE_ARGS* pArgs
+        ) : CBalBaseBootstrapperApplication(pEngine, pArgs)
+    {
+    }
+};
+
+HRESULT CreateBootstrapperApplication(
+    __in IBootstrapperEngine* pEngine,
+    __in const BOOTSTRAPPER_CREATE_ARGS* pArgs,
+    __inout BOOTSTRAPPER_CREATE_RESULTS* pResults,
+    __out IBootstrapperApplication** ppApplication
+    )
+{
+    HRESULT hr = S_OK;
+    CTestBootstrapperApplication* pApplication = NULL;
+
+    pApplication = new CTestBootstrapperApplication(pEngine, pArgs);
+    ExitOnNull(pApplication, hr, E_OUTOFMEMORY, "Failed to create new test bootstrapper application object.");
+
+    pResults->pfnBootstrapperApplicationProc = BalBaseBootstrapperApplicationProc;
+    pResults->pvBootstrapperApplicationProcContext = pApplication;
+    *ppApplication = pApplication;
+    pApplication = NULL;
+
+LExit:
+    ReleaseObject(pApplication);
+    return hr;
+}
diff --git a/src/api/burn/test/BalUtilUnitTest/packages.config b/src/api/burn/test/BalUtilUnitTest/packages.config
new file mode 100644
index 00000000..6d381fbe
--- /dev/null
+++ b/src/api/burn/test/BalUtilUnitTest/packages.config
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. -->
+<packages>
+  <package id="WixBuildTools.TestSupport" version="4.0.50" />
+  <package id="WixBuildTools.TestSupport.Native" version="4.0.50" />
+  <package id="WixToolset.BootstrapperCore.Native" version="4.0.141" targetFramework="native" />
+  <package id="WixToolset.DUtil" version="4.0.72" targetFramework="native" />
+  <package id="xunit.abstractions" version="2.0.3" />
+  <package id="xunit.assert" version="2.4.1" />
+  <package id="xunit.core" version="2.4.1" />
+  <package id="xunit.extensibility.core" version="2.4.1" />
+  <package id="xunit.extensibility.execution" version="2.4.1" />
+  <package id="xunit.runner.msbuild" version="2.4.1" />
+  <package id="xunit.runner.visualstudio" version="2.4.1" />
+</packages>
\ No newline at end of file
diff --git a/src/api/burn/test/BalUtilUnitTest/precomp.cpp b/src/api/burn/test/BalUtilUnitTest/precomp.cpp
new file mode 100644
index 00000000..37664a1c
--- /dev/null
+++ b/src/api/burn/test/BalUtilUnitTest/precomp.cpp
@@ -0,0 +1,3 @@
+// Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information.
+
+#include "precomp.h"
diff --git a/src/api/burn/test/BalUtilUnitTest/precomp.h b/src/api/burn/test/BalUtilUnitTest/precomp.h
new file mode 100644
index 00000000..a84391f9
--- /dev/null
+++ b/src/api/burn/test/BalUtilUnitTest/precomp.h
@@ -0,0 +1,23 @@
+#pragma once
+// Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information.
+
+
+#include <windows.h>
+#include <msiquery.h>
+#include <CommCtrl.h>
+
+#include <dutil.h>
+#include <locutil.h>
+#include <thmutil.h>
+
+#include <BootstrapperEngine.h>
+#include <BootstrapperApplication.h>
+
+#include "IBootstrapperEngine.h"
+#include "IBootstrapperApplication.h"
+#include "balutil.h"
+#include "balretry.h"
+#include "BAFunctions.h"
+
+#pragma managed
+#include <vcclr.h>
-- 
cgit v1.2.3-55-g6feb