From 8810aa8908ed7887616d86dd5fb821fcfa92f444 Mon Sep 17 00:00:00 2001 From: Sean Hall Date: Fri, 3 Jun 2022 17:50:22 -0500 Subject: Update Burn algorithm for picking elevated temp path to use SystemTemp. --- src/libs/dutil/test/DUtilUnitTest/EnvUtilTests.cpp | 45 ++++++++++++++++++++++ 1 file changed, 45 insertions(+) (limited to 'src/libs/dutil/test/DUtilUnitTest/EnvUtilTests.cpp') diff --git a/src/libs/dutil/test/DUtilUnitTest/EnvUtilTests.cpp b/src/libs/dutil/test/DUtilUnitTest/EnvUtilTests.cpp index 76dfa774..94b9ab8e 100644 --- a/src/libs/dutil/test/DUtilUnitTest/EnvUtilTests.cpp +++ b/src/libs/dutil/test/DUtilUnitTest/EnvUtilTests.cpp @@ -3,8 +3,10 @@ #include "precomp.h" using namespace System; +using namespace System::Collections; using namespace Xunit; using namespace WixBuildTools::TestSupport; +using namespace WixBuildTools::TestSupport::XunitExtensions; namespace DutilTests { @@ -46,5 +48,48 @@ namespace DutilTests ReleaseStr(sczExpanded); } } + + [SkippableFact] + void EnvExpandEnvironmentStringsForUserTest() + { + HRESULT hr = S_OK; + LPWSTR sczExpanded = NULL; + SIZE_T cchExpanded = 0; + String^ variableName = nullptr; + String^ variableValue = nullptr; + + // Find a system environment variable that doesn't have variables in its value; + for each (DictionaryEntry^ entry in Environment::GetEnvironmentVariables(EnvironmentVariableTarget::Machine)) + { + variableValue = (String^)entry->Value; + if (variableValue->Contains("%")) + { + continue; + } + + variableName = (String^)entry->Key; + break; + } + + if (nullptr == variableName) + { + WixAssert::Skip("No suitable system environment variables"); + } + + pin_ptr wzUnexpanded = PtrToStringChars("%" + variableName + "%_%USERNAME%"); + String^ expandedValue = variableValue + "_SYSTEM"; + + try + { + hr = EnvExpandEnvironmentStringsForUser(NULL, wzUnexpanded, &sczExpanded, &cchExpanded); + NativeAssert::Succeeded(hr, "Failed to expand %ls.", wzUnexpanded); + WixAssert::StringEqual(expandedValue, gcnew String(sczExpanded), false); + NativeAssert::Equal(expandedValue->Length + 1, cchExpanded); + } + finally + { + ReleaseStr(sczExpanded); + } + } }; } -- cgit v1.2.3-55-g6feb