From bd96e6fdabe761a165a04446ec16c9807a29b459 Mon Sep 17 00:00:00 2001 From: Maximus5 Date: Mon, 12 Jul 2021 22:55:09 +0200 Subject: [PATCH] Internal. use RAII in tests --- src/ConEmu/all_test.cpp | 9 ++--- src/UnitTests/test_stubs.cpp | 8 ++--- src/common/CmdLine_test.cpp | 2 +- src/common/RConStartArgsEx_test.cpp | 54 ++++++++++++++--------------- 4 files changed, 35 insertions(+), 38 deletions(-) diff --git a/src/ConEmu/all_test.cpp b/src/ConEmu/all_test.cpp index c202639a5..e39f3e7fe 100644 --- a/src/ConEmu/all_test.cpp +++ b/src/ConEmu/all_test.cpp @@ -206,13 +206,11 @@ void UnitFileNamesTest() {nullptr} }; bool bCheck; - wchar_t* pszJoin; for (size_t i = 0; Tests[i].asPath; i++) { - pszJoin = JoinPath(Tests[i].asPath, Tests[i].asPart1, Tests[i].asPart2); + CEStr pszJoin = JoinPath(Tests[i].asPath, Tests[i].asPart1, Tests[i].asPart2); bCheck = (pszJoin && (lstrcmp(pszJoin, Tests[i].asResult) == 0)); _ASSERTE(bCheck); - SafeFree(pszJoin); } bCheck = true; } @@ -338,7 +336,7 @@ void DebugStrUnitTest() // Some compilation and operators check CEStr str1; - LPCWSTR pszTest = Tests[0].szTest; + const wchar_t* pszTest = Tests[0].szTest; { str1 = lstrdup(pszTest); } @@ -346,8 +344,7 @@ void DebugStrUnitTest() _ASSERTE(iCmp == 0); { - CEStr str2(lstrdup(pszTest)); - wchar_t* pszDup = lstrdup(pszTest); + const CEStr str2(lstrdup(pszTest)); iCmp = lstrcmp(str2, pszTest); _ASSERTE(iCmp == 0 && str2.ms_Val && str2.ms_Val != pszTest); } diff --git a/src/UnitTests/test_stubs.cpp b/src/UnitTests/test_stubs.cpp index f74206bc1..60e9709ee 100644 --- a/src/UnitTests/test_stubs.cpp +++ b/src/UnitTests/test_stubs.cpp @@ -106,9 +106,9 @@ void DebugLogFile(LPCSTR asMessage) {} HWND FindProcessWindow(DWORD nPID) { return NULL; } bool GetColorRef(LPCWSTR pszText, COLORREF* pCR) { return false; } bool GetDlgItemSigned(HWND hDlg, WORD nID, int& nValue, int nMin /*= 0*/, int nMax /*= 0*/) { return false; } -wchar_t* GetDlgItemTextPtr(HWND hDlg, WORD nID) { return nullptr; } +CEStr GetDlgItemTextPtr(HWND hDlg, WORD nID) { return nullptr; } LPCWSTR GetMouseMsgName(UINT msg) { return L""; } -wchar_t* getFocusedExplorerWindowPath() { return nullptr; } +CEStr getFocusedExplorerWindowPath() { return nullptr; } HWND getForegroundWindow() { return NULL; } bool isCharAltFont(ucs32 inChar) { return false; } bool LogString(LPCWSTR asText) { return false; } @@ -118,8 +118,8 @@ size_t MyGetDlgItemText(HWND hDlg, WORD nID, size_t& cchMax, wchar_t*& pszText) void PatchMsgBoxIcon(HWND hWnd, UINT messg, WPARAM wParam, LPARAM lParam) {} bool ProcessMessage(MSG& Msg) { return false; } void RaiseTestException() {} -wchar_t* SelectFile(LPCWSTR asTitle, LPCWSTR asDefFile /*= NULL*/, LPCWSTR asDefPath /*= NULL*/, HWND hParent /*= ghWnd*/, LPCWSTR asFilter /*= NULL*/, DWORD/*CESelectFileFlags*/ nFlags /*= sff_AutoQuote*/, CRealConsole* apRCon /*= NULL*/) { return nullptr; } -wchar_t* SelectFolder(LPCWSTR asTitle, LPCWSTR asDefFolder /*= NULL*/, HWND hParent /*= ghWnd*/, DWORD/*CESelectFileFlags*/ nFlags /*= sff_AutoQuote*/, CRealConsole* apRCon /*= NULL*/) { return nullptr; } +CEStr SelectFile(LPCWSTR asTitle, LPCWSTR asDefFile /*= NULL*/, LPCWSTR asDefPath /*= NULL*/, HWND hParent /*= ghWnd*/, LPCWSTR asFilter /*= NULL*/, DWORD/*CESelectFileFlags*/ nFlags /*= sff_AutoQuote*/, CRealConsole* apRCon /*= NULL*/) { return nullptr; } +CEStr SelectFolder(LPCWSTR asTitle, LPCWSTR asDefFolder /*= NULL*/, HWND hParent /*= ghWnd*/, DWORD/*CESelectFileFlags*/ nFlags /*= sff_AutoQuote*/, CRealConsole* apRCon /*= NULL*/) { return nullptr; } void SkipOneShowWindow() {} void ShutdownGuiStep(LPCWSTR asInfo, int nParm1 /*= 0*/, int nParm2 /*= 0*/, int nParm3 /*= 0*/, int nParm4 /*= 0*/) {} bool UpdateWin7TaskList(bool bForce, bool bNoSuccMsg /*= false*/) { return false; } diff --git a/src/common/CmdLine_test.cpp b/src/common/CmdLine_test.cpp index 4d350d12e..bd89b7c03 100644 --- a/src/common/CmdLine_test.cpp +++ b/src/common/CmdLine_test.cpp @@ -134,7 +134,7 @@ TEST(CmdLine, NextArg_NeedCmd) for (const auto& test : tests) { szExe.Clear(); - RConStartArgsEx rcs; rcs.pszSpecialCmd = lstrdup(test.pszCmd); + RConStartArgsEx rcs; rcs.pszSpecialCmd = lstrdup(test.pszCmd).Detach(); rcs.ProcessNewConArg(); const bool result = IsNeedCmd(TRUE, rcs.pszSpecialCmd, szExe); EXPECT_EQ(result, test.expected) << L"cmd: " << test.pszCmd; diff --git a/src/common/RConStartArgsEx_test.cpp b/src/common/RConStartArgsEx_test.cpp index 86e4f769e..7769b38df 100644 --- a/src/common/RConStartArgsEx_test.cpp +++ b/src/common/RConStartArgsEx_test.cpp @@ -127,158 +127,158 @@ TEST(RConStartArgsEx, ArgTests) case 26: // conemu-old-issues#1710: The un-eaten double quote pszCmp = LR"(powershell -new_console:t:"PoSh":d:"%USERPROFILE%")"; - arg.pszSpecialCmd = lstrdup(pszCmp); + arg.pszSpecialCmd = lstrdup(pszCmp).Detach(); arg.ProcessNewConArg(); EXPECT_TRUE(arg.pszRenameTab && lstrcmp(arg.pszRenameTab, L"PoSh")==0); EXPECT_TRUE(arg.pszStartupDir && CEStr(ExpandEnvStr(L"%USERPROFILE%")).Compare(arg.pszStartupDir)==0); break; case 25: pszCmp = LR"(cmd -new_console:u:"john:pass^"word^"")"; - arg.pszSpecialCmd = lstrdup(pszCmp); + arg.pszSpecialCmd = lstrdup(pszCmp).Detach(); arg.ProcessNewConArg(); EXPECT_TRUE(arg.pszUserName && lstrcmp(arg.pszUserName, L"john")==0); EXPECT_TRUE(arg.szUserPassword && lstrcmp(arg.szUserPassword, L"pass\"word\"")==0); break; case 24: pszCmp = L"/C \"-new_console test.cmd bla\""; - arg.pszSpecialCmd = lstrdup(pszCmp); + arg.pszSpecialCmd = lstrdup(pszCmp).Detach(); arg.ProcessNewConArg(); EXPECT_TRUE(0==lstrcmp(arg.pszSpecialCmd, L"/C \"test.cmd bla\"") && arg.NewConsole==crb_On); break; case 23: pszCmp = L"-new_console test.cmd"; - arg.pszSpecialCmd = lstrdup(pszCmp); + arg.pszSpecialCmd = lstrdup(pszCmp).Detach(); arg.ProcessNewConArg(); EXPECT_TRUE(0==lstrcmp(arg.pszSpecialCmd, L"test.cmd") && arg.NewConsole==crb_On); break; case 22: pszCmp = L"bash -cur_console:m:\"\""; - arg.pszSpecialCmd = lstrdup(pszCmp); + arg.pszSpecialCmd = lstrdup(pszCmp).Detach(); arg.ProcessNewConArg(); EXPECT_TRUE(0==lstrcmp(arg.pszSpecialCmd, L"bash") && arg.pszMntRoot && *arg.pszMntRoot==0); break; case 21: pszCmp = L"cmd '-new_console' `-new_console` \\\"-new_console\\\""; - arg.pszSpecialCmd = lstrdup(pszCmp); + arg.pszSpecialCmd = lstrdup(pszCmp).Detach(); arg.ProcessNewConArg(); EXPECT_TRUE(0==lstrcmp(arg.pszSpecialCmd, pszCmp) && arg.NewConsole==crb_Undefined); break; case 20: - arg.pszSpecialCmd = lstrdup(L"\"c:\\cmd.exe\" \"-new_console\" \"c:\\file.txt\""); + arg.pszSpecialCmd = lstrdup(L"\"c:\\cmd.exe\" \"-new_console\" \"c:\\file.txt\"").Detach(); arg.ProcessNewConArg(); EXPECT_TRUE(0==lstrcmp(arg.pszSpecialCmd, L"\"c:\\cmd.exe\" \"c:\\file.txt\"")); break; case 19: - arg.pszSpecialCmd = lstrdup(L"\"c:\\cmd.exe\" -new_console:n \"c:\\file.txt\""); + arg.pszSpecialCmd = lstrdup(L"\"c:\\cmd.exe\" -new_console:n \"c:\\file.txt\"").Detach(); arg.ProcessNewConArg(); EXPECT_TRUE(0==lstrcmp(arg.pszSpecialCmd, L"\"c:\\cmd.exe\" \"c:\\file.txt\"")); break; case 18: - arg.pszSpecialCmd = lstrdup(L"\"c:\\cmd.exe\" \"-new_console:n\" \"c:\\file.txt\""); + arg.pszSpecialCmd = lstrdup(L"\"c:\\cmd.exe\" \"-new_console:n\" \"c:\\file.txt\"").Detach(); arg.ProcessNewConArg(); EXPECT_TRUE(0==lstrcmp(arg.pszSpecialCmd, L"\"c:\\cmd.exe\" \"c:\\file.txt\"")); break; case 17: - arg.pszSpecialCmd = lstrdup(L"c:\\cmd.exe \"-new_console:n\" \"c:\\file.txt\""); + arg.pszSpecialCmd = lstrdup(L"c:\\cmd.exe \"-new_console:n\" \"c:\\file.txt\"").Detach(); arg.ProcessNewConArg(); EXPECT_TRUE(0==lstrcmp(arg.pszSpecialCmd, L"c:\\cmd.exe \"c:\\file.txt\"")); break; case 16: - arg.pszSpecialCmd = lstrdup(L"\"c:\\cmd.exe\" \"-new_console:n\" c:\\file.txt"); + arg.pszSpecialCmd = lstrdup(L"\"c:\\cmd.exe\" \"-new_console:n\" c:\\file.txt").Detach(); arg.ProcessNewConArg(); EXPECT_TRUE(0==lstrcmp(arg.pszSpecialCmd, L"\"c:\\cmd.exe\" c:\\file.txt")); break; case 15: - arg.pszSpecialCmd = lstrdup(L"c:\\file.txt -cur_console"); + arg.pszSpecialCmd = lstrdup(L"c:\\file.txt -cur_console").Detach(); arg.ProcessNewConArg(); EXPECT_TRUE(0==lstrcmp(arg.pszSpecialCmd, L"c:\\file.txt")); break; case 14: - arg.pszSpecialCmd = lstrdup(L"\"c:\\file.txt\" -cur_console"); + arg.pszSpecialCmd = lstrdup(L"\"c:\\file.txt\" -cur_console").Detach(); arg.ProcessNewConArg(); EXPECT_TRUE(0==lstrcmp(arg.pszSpecialCmd, L"\"c:\\file.txt\"")); break; case 13: - arg.pszSpecialCmd = lstrdup(L" -cur_console \"c:\\file.txt\""); + arg.pszSpecialCmd = lstrdup(L" -cur_console \"c:\\file.txt\"").Detach(); arg.ProcessNewConArg(); EXPECT_TRUE(0==lstrcmp(arg.pszSpecialCmd, L"\"c:\\file.txt\"")); break; case 12: - arg.pszSpecialCmd = lstrdup(L"-cur_console \"c:\\file.txt\""); + arg.pszSpecialCmd = lstrdup(L"-cur_console \"c:\\file.txt\"").Detach(); arg.ProcessNewConArg(); EXPECT_TRUE(0==lstrcmp(arg.pszSpecialCmd, L"\"c:\\file.txt\"")); break; case 11: - arg.pszSpecialCmd = lstrdup(L"-cur_console c:\\file.txt"); + arg.pszSpecialCmd = lstrdup(L"-cur_console c:\\file.txt").Detach(); arg.ProcessNewConArg(); EXPECT_TRUE(0==lstrcmp(arg.pszSpecialCmd, L"c:\\file.txt")); break; case 10: pszCmp = L"reg.exe add \"HKCU\\command\" /ve /t REG_EXPAND_SZ /d \"\\\"C:\\ConEmu\\ConEmuPortable.exe\\\" /Dir \\\"%V\\\" /cmd \\\"cmd.exe\\\" \\\"-new_console:nC:cmd.exe\\\" \\\"-cur_console:d:%V\\\"\" /f"; - arg.pszSpecialCmd = lstrdup(pszCmp); + arg.pszSpecialCmd = lstrdup(pszCmp).Detach(); arg.ProcessNewConArg(); EXPECT_TRUE(lstrcmp(arg.pszSpecialCmd, pszCmp)==0 && arg.NewConsole==crb_Undefined); break; case 9: pszCmp = L"\"C:\\Windows\\system32\\cmd.exe\" /C \"\"C:\\Python27\\python.EXE\"\""; - arg.pszSpecialCmd = lstrdup(pszCmp); + arg.pszSpecialCmd = lstrdup(pszCmp).Detach(); arg.ProcessNewConArg(); EXPECT_TRUE(lstrcmp(arg.pszSpecialCmd, pszCmp)==0); break; case 8: - arg.pszSpecialCmd = lstrdup(L"cmd --new_console -cur_console:a"); + arg.pszSpecialCmd = lstrdup(L"cmd --new_console -cur_console:a").Detach(); arg.ProcessNewConArg(); EXPECT_TRUE(lstrcmp(arg.pszSpecialCmd, L"cmd --new_console")==0 && arg.NewConsole==crb_Undefined && arg.RunAsAdministrator==crb_On); break; case 7: - arg.pszSpecialCmd = lstrdup(L"cmd -cur_console:d:\"C:\\My docs\":t:\"My title\" \"-cur_console:C:C:\\my cmd.ico\" -cur_console:P:\"\":a /k ver"); + arg.pszSpecialCmd = lstrdup(L"cmd -cur_console:d:\"C:\\My docs\":t:\"My title\" \"-cur_console:C:C:\\my cmd.ico\" -cur_console:P:\"\":a /k ver").Detach(); arg.ProcessNewConArg(); pszCmp = L"cmd /k ver"; EXPECT_TRUE(lstrcmp(arg.pszSpecialCmd, pszCmp)==0); EXPECT_TRUE(arg.pszRenameTab && arg.pszPalette && arg.pszIconFile && arg.pszStartupDir && arg.NewConsole==crb_Undefined && lstrcmp(arg.pszRenameTab, L"My title")==0 && lstrcmp(arg.pszPalette, L"")==0 && lstrcmp(arg.pszStartupDir, L"C:\\My docs")==0 && lstrcmp(arg.pszIconFile, L"C:\\my cmd.ico")==0); break; case 6: - arg.pszSpecialCmd = lstrdup(L"cmd -cur_console:b:P:\"^\":t:\"My title\" /k ConEmuC.exe -Guimacro print(\"-new_console:a\")"); + arg.pszSpecialCmd = lstrdup(L"cmd -cur_console:b:P:\"^\":t:\"My title\" /k ConEmuC.exe -Guimacro print(\"-new_console:a\")").Detach(); arg.ProcessNewConArg(); pszCmp = L"cmd /k ConEmuC.exe -Guimacro print(\"-new_console:a\")"; EXPECT_TRUE(lstrcmp(arg.pszSpecialCmd, pszCmp)==0); EXPECT_TRUE(arg.pszRenameTab && arg.pszPalette && arg.BackgroundTab==crb_On && arg.NewConsole==crb_Undefined && arg.RunAsAdministrator==crb_Undefined && lstrcmp(arg.pszRenameTab, L"My title")==0 && lstrcmp(arg.pszPalette, L"")==0); break; case 5: - arg.pszSpecialCmd = lstrdup(L"cmd \"-cur_console:t:My title\" /k ver"); + arg.pszSpecialCmd = lstrdup(L"cmd \"-cur_console:t:My title\" /k ver").Detach(); arg.ProcessNewConArg(); EXPECT_TRUE(lstrcmp(arg.pszSpecialCmd, L"cmd /k ver")==0); EXPECT_TRUE(arg.pszRenameTab && lstrcmp(arg.pszRenameTab, L"My title")==0 && arg.NewConsole==crb_Undefined); break; case 4: - arg.pszSpecialCmd = lstrdup(L"cmd \"-new_console:P:^\""); + arg.pszSpecialCmd = lstrdup(L"cmd \"-new_console:P:^\"").Detach(); arg.ProcessNewConArg(); EXPECT_TRUE(lstrcmp(arg.pszSpecialCmd, L"cmd")==0); nDbg = lstrcmp(arg.pszPalette, L""); EXPECT_TRUE(nDbg==0 && arg.NewConsole==crb_On); break; case 3: - arg.pszSpecialCmd = lstrdup(L"cmd -cur_console:u:Max:"); + arg.pszSpecialCmd = lstrdup(L"cmd -cur_console:u:Max:").Detach(); arg.ProcessNewConArg(); EXPECT_TRUE(lstrcmp(arg.pszSpecialCmd, L"cmd")==0); nDbg = lstrcmp(arg.pszUserName,L"Max"); EXPECT_TRUE(nDbg==0 && arg.pszDomain==NULL && !*arg.szUserPassword && arg.ForceUserDialog==crb_Off && arg.NewConsole!=crb_On); break; case 2: - arg.pszSpecialCmd = lstrdup(L"cmd -cur_console:u:Max -new_console"); + arg.pszSpecialCmd = lstrdup(L"cmd -cur_console:u:Max -new_console").Detach(); arg.ProcessNewConArg(); EXPECT_TRUE(lstrcmp(arg.pszSpecialCmd, L"cmd")==0); nDbg = lstrcmp(arg.pszUserName,L"Max"); EXPECT_TRUE(nDbg==0 && arg.pszDomain==NULL && !*arg.szUserPassword && arg.ForceUserDialog==crb_On && arg.NewConsole==crb_On); break; case 1: - arg.pszSpecialCmd = lstrdup(L"cmd -new_console:u -cur_console:h0"); + arg.pszSpecialCmd = lstrdup(L"cmd -new_console:u -cur_console:h0").Detach(); arg.ProcessNewConArg(); EXPECT_TRUE(lstrcmp(arg.pszSpecialCmd, L"cmd")==0); EXPECT_TRUE(arg.pszUserName==NULL && arg.pszDomain==NULL && arg.ForceUserDialog==crb_On && arg.NewConsole==crb_On && arg.BufHeight==crb_On && arg.nBufHeight==0); break; case 0: - arg.pszSpecialCmd = lstrdup(L"cmd \"-new_console:d:C:\\John Doe\\Home\" "); + arg.pszSpecialCmd = lstrdup(L"cmd \"-new_console:d:C:\\John Doe\\Home\" ").Detach(); arg.ProcessNewConArg(); EXPECT_TRUE(lstrcmp(arg.pszSpecialCmd, L"cmd ")==0); nDbg = lstrcmp(arg.pszStartupDir, L"C:\\John Doe\\Home");