Index: base/commands_unittest.cc |
diff --git a/base/commands_unittest.cc b/base/commands_unittest.cc |
deleted file mode 100644 |
index 8ecf2ef23c89b01b2e7b61f83c9a60339b3ce182..0000000000000000000000000000000000000000 |
--- a/base/commands_unittest.cc |
+++ /dev/null |
@@ -1,430 +0,0 @@ |
-// Copyright 2006-2009 Google Inc. |
-// |
-// Licensed under the Apache License, Version 2.0 (the "License"); |
-// you may not use this file except in compliance with the License. |
-// You may obtain a copy of the License at |
-// |
-// http://www.apache.org/licenses/LICENSE-2.0 |
-// |
-// Unless required by applicable law or agreed to in writing, software |
-// distributed under the License is distributed on an "AS IS" BASIS, |
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
-// See the License for the specific language governing permissions and |
-// limitations under the License. |
-// ======================================================================== |
-// |
-// Unit tests of command line options parsing |
- |
-#include <cstdio> |
-#include "omaha/base/commands.h" |
-#include "omaha/base/file.h" |
-#include "omaha/testing/unit_test.h" |
- |
-namespace omaha { |
- |
-#define kDash _T("-") |
-#define kBoolOption _T("bool") |
-#define kThreeOption _T("three") |
-#define kIntOption _T("int") |
-#define kUintOption _T("uint") |
-#define kStrOption _T("str") |
- |
-#define kIEBrowserExe \ |
- _T("C:\\PROGRAM FILES\\Internet Explorer\\iexplore.exe") |
- |
-#define kIEBrowserQuotedExe \ |
- _T("\"") kIEBrowserExe _T("\"") |
- |
-#define kIEBrowserQuotedArgs _T("-h \"%1\"") |
-#define kIEBrowserQuotedCommandLine \ |
- kIEBrowserQuotedExe _T(" ") kIEBrowserQuotedArgs |
- |
-#define kIEBrowserQuotedExeResult \ |
- _T("C:\\PROGRAM FILES\\Internet Explorer\\iexplore.exe") |
-#define kIEBrowserQuotedArgsResult _T("-h %1") |
- |
-#define kIEBrowserUnquotedCommandLine \ |
- _T("C:\\Program Files\\Internet Explorer\\iexplore.exe -nohome") |
-#define kIEBrowserUnquotedExe \ |
- _T("C:\\Program Files\\Internet Explorer\\iexplore.exe") |
-#define kIEBrowserUnquotedArgs _T("-nohome") |
- |
-#define kGEUninstallCommandLine _T("RunDll32 C:\\PROGRA~1\\COMMON~1\\INSTAL~1\\PROFES~1\\RunTime\\10\\01\\Intel32\\Ctor.dll,LaunchSetup \"C:\\Program Files\\InstallShield Installation Information\\{3DE5E7D4-7B88-403C-A3FD-2017A8240C5B}\\setup.exe\" -l0x9 -removeonly") // NOLINT |
-#define kGEUninstallExe _T("RunDll32") |
-#define kGEUninstallArgs _T("C:\\PROGRA~1\\COMMON~1\\INSTAL~1\\PROFES~1\\RunTime\\10\\01\\Intel32\\Ctor.dll,LaunchSetup \"C:\\Program Files\\InstallShield Installation Information\\{3DE5E7D4-7B88-403C-A3FD-2017A8240C5B}\\setup.exe\" -l0x9 -removeonly") // NOLINT |
- |
- |
-struct TestData { |
- TestData() { |
- Clear(); |
- } |
- |
- void Clear() { |
- bool_value = false; |
- three_value = VALUE_NOT_SET; |
- int_value = 0; |
- uint_value = 0; |
- str_value.Empty(); |
- } |
- |
- bool bool_value; |
- ThreeValue three_value; |
- int int_value; |
- uint32 uint_value; |
- CString str_value; |
-}; |
- |
-void FillTestData(TestData* data) { |
- data->bool_value = true; |
- data->three_value = FALSE_VALUE; |
- data->int_value = -128; |
- data->uint_value = 256; |
- data->str_value = _T("Foo"); |
-} |
- |
-void CheckTestData(const TestData& d1, const TestData& d2) { |
- EXPECT_EQ(d1.bool_value, d2.bool_value); |
- EXPECT_EQ(d1.three_value, d2.three_value); |
- EXPECT_EQ(d1.int_value, d2.int_value); |
- EXPECT_EQ(d1.uint_value, d2.uint_value); |
- EXPECT_STREQ(d1.str_value, d2.str_value); |
-} |
- |
-TEST(CommandsTest, TraditionalCommandLineOptionsParsingTest) { |
- TestData data; |
- FillTestData(&data); |
- CString cmd_line; |
- cmd_line.Format(_T("%s%s %s ") |
- _T("%s%s %d ") |
- _T("%s%s %u ") |
- _T("%s%s %s "), |
- kDash, kThreeOption, (data.three_value == TRUE_VALUE) ? _T("on") : _T("off"), // NOLINT |
- kDash, kIntOption, data.int_value, |
- kDash, kUintOption, data.uint_value, |
- kDash, kStrOption, data.str_value); |
- if (data.bool_value) { |
- cmd_line.AppendFormat(_T("%s%s"), kDash, kBoolOption); |
- } |
- |
- TestData option_data; |
- CommandOption cmd_options[] = { |
- { kDash kBoolOption, COMMAND_OPTION_BOOL, &option_data.bool_value, -1 }, |
- { kDash kThreeOption, COMMAND_OPTION_THREE, &option_data.three_value, -1 }, |
- { kDash kIntOption, COMMAND_OPTION_INT, &option_data.int_value, -1 }, |
- { kDash kUintOption, COMMAND_OPTION_UINT, &option_data.uint_value, -1 }, |
- { kDash kStrOption, COMMAND_OPTION_STRING, &option_data.str_value, -1 } |
- }; |
- |
- option_data.Clear(); |
- CommandParsing cmd_parsing(cmd_options, arraysize(cmd_options)); |
- ASSERT_SUCCEEDED(cmd_parsing.Parse(cmd_line, false)); |
- |
- CheckTestData(option_data, data); |
-} |
- |
-TEST(CommandsTest, TraditionalIgnoreUnknownArgsParsingTest) { |
- TestData data; |
- FillTestData(&data); |
- CString cmd_line; |
- cmd_line.Format(_T("%s%s %s ") |
- _T("%s%s %d ") |
- _T("%s%s %u ") |
- _T("%s%s %s "), |
- kDash, kThreeOption, (data.three_value == TRUE_VALUE) ? _T("on") : _T("off"), // NOLINT |
- kDash, kIntOption, data.int_value, |
- kDash, kUintOption, data.uint_value, |
- kDash, kStrOption, data.str_value); |
- if (data.bool_value) { |
- cmd_line.AppendFormat(_T("%s%s"), kDash, kBoolOption); |
- } |
- |
- TestData option_data; |
- CommandOption cmd_options[] = { |
- { kDash kThreeOption, COMMAND_OPTION_THREE, &option_data.three_value, -1 }, |
- { kDash kIntOption, COMMAND_OPTION_INT, &option_data.int_value, -1 }, |
- { kDash kUintOption, COMMAND_OPTION_UINT, &option_data.uint_value, -1 }, |
- { kDash kStrOption, COMMAND_OPTION_STRING, &option_data.str_value, -1 } |
- }; |
- |
- option_data.Clear(); |
- CommandParsing cmd_parsing(cmd_options, arraysize(cmd_options)); |
- ASSERT_FAILED(cmd_parsing.Parse(cmd_line, false)); |
- ASSERT_SUCCEEDED(cmd_parsing.Parse(cmd_line, true)); |
- |
- option_data.bool_value = data.bool_value; |
- CheckTestData(option_data, data); |
-} |
- |
-TEST(CommandsTest, NameValuePairCommandLineOptionsParsingTest) { |
- TestData data; |
- FillTestData(&data); |
- CString cmd_line; |
- cmd_line.Format( |
- _T("%s=%s&") |
- _T("%s=%d&") |
- _T("%s=%u&") |
- _T("%s=%s"), |
- kThreeOption, (data.three_value == TRUE_VALUE) ? _T("on") : _T("off"), |
- kIntOption, data.int_value, |
- kUintOption, data.uint_value, |
- kStrOption, data.str_value); |
- if (data.bool_value) { |
- cmd_line.AppendFormat(_T("&%s="), kBoolOption); |
- } |
- |
- TestData option_data; |
- CommandOption cmd_options[] = { |
- { kBoolOption, COMMAND_OPTION_BOOL, &option_data.bool_value, -1 }, |
- { kThreeOption, COMMAND_OPTION_THREE, &option_data.three_value, -1 }, |
- { kIntOption, COMMAND_OPTION_INT, &option_data.int_value, -1 }, |
- { kUintOption, COMMAND_OPTION_UINT, &option_data.uint_value, -1 }, |
- { kStrOption, COMMAND_OPTION_STRING, &option_data.str_value, -1 } |
- }; |
- |
- option_data.Clear(); |
- CommandParsing cmd_parsing(cmd_options, |
- arraysize(cmd_options), |
- _T('&'), |
- true); |
- ASSERT_SUCCEEDED(cmd_parsing.Parse(cmd_line, false)); |
- |
- CheckTestData(option_data, data); |
-} |
- |
-TEST(CommandsTest, NameValuePairIgnoreUnknownArgsParsingTest) { |
- TestData data; |
- FillTestData(&data); |
- CString cmd_line; |
- cmd_line.Format( |
- _T("%s=%s&") |
- _T("%s=%d&") |
- _T("%s=%u&") |
- _T("%s=%s"), |
- kThreeOption, (data.three_value == TRUE_VALUE) ? _T("on") : _T("off"), |
- kIntOption, data.int_value, |
- kUintOption, data.uint_value, |
- kStrOption, data.str_value); |
- if (data.bool_value) { |
- cmd_line.AppendFormat(_T("&%s="), kBoolOption); |
- } |
- |
- TestData option_data; |
- CommandOption cmd_options[] = { |
- { kBoolOption, COMMAND_OPTION_BOOL, &option_data.bool_value, -1 }, |
- { kThreeOption, COMMAND_OPTION_THREE, &option_data.three_value, -1 }, |
- { kUintOption, COMMAND_OPTION_UINT, &option_data.uint_value, -1 }, |
- { kStrOption, COMMAND_OPTION_STRING, &option_data.str_value, -1 } |
- }; |
- |
- option_data.Clear(); |
- CommandParsing cmd_parsing(cmd_options, |
- arraysize(cmd_options), |
- _T('&'), |
- true); |
- ASSERT_FAILED(cmd_parsing.Parse(cmd_line, false)); |
- ASSERT_SUCCEEDED(cmd_parsing.Parse(cmd_line, true)); |
- |
- option_data.int_value = data.int_value; |
- CheckTestData(option_data, data); |
-} |
- |
-TEST(CommandsTest, CommandParsingSimpleSplitTest) { |
- CString exe; |
- CString args; |
- |
- // Test to make sure SplitExeAndArgs correctly splits |
- // a properly constructed command line |
- ASSERT_SUCCEEDED( |
- CommandParsingSimple::SplitExeAndArgs(kIEBrowserQuotedCommandLine, |
- &exe, |
- &args)); |
- |
- EXPECT_STREQ(kIEBrowserQuotedExeResult, exe); |
- EXPECT_STREQ(kIEBrowserQuotedArgsResult, args); |
-} |
- |
-TEST(CommandsTest, CommandParsingGuessSplitTest) { |
- CString exe; |
- CString args; |
- |
- // Test to make sure SplitExeAndArgsGuess correctly splits |
- // a properly constructed command line |
- ASSERT_SUCCEEDED( |
- CommandParsingSimple::SplitExeAndArgsGuess(kIEBrowserQuotedCommandLine, |
- &exe, |
- &args)); |
- |
- EXPECT_STREQ(kIEBrowserQuotedExeResult, exe); |
- EXPECT_STREQ(kIEBrowserQuotedArgsResult, args); |
- |
- // Test to make sure SplitExeAndArgsGuess correctly splits |
- // an improperly constructed "Uninstall" command line |
- ASSERT_SUCCEEDED( |
- CommandParsingSimple::SplitExeAndArgsGuess(kIEBrowserUnquotedCommandLine, |
- &exe, |
- &args)); |
- |
- EXPECT_STREQ(kIEBrowserUnquotedExe, exe); |
- EXPECT_STREQ(kIEBrowserUnquotedArgs, args); |
- |
- // Test to make sure SplitExeAndArgsGuess correctly splits |
- // a properly constructed "Uninstall" command line, where |
- // the executable does not have a ".EXE" extension, and |
- // where there happens to be an argument which happens to |
- // be an executable |
- ASSERT_SUCCEEDED( |
- CommandParsingSimple::SplitExeAndArgsGuess(kGEUninstallCommandLine, |
- &exe, |
- &args)); |
- |
- EXPECT_STREQ(kGEUninstallExe, exe); |
- EXPECT_STREQ(kGEUninstallArgs, args); |
-} |
- |
-TEST(CommandsTest, CommandParsingGuessSplit_ExtraWhiteSpace) { |
- CString exe; |
- CString args; |
- |
- EXPECT_SUCCEEDED(CommandParsingSimple::SplitExeAndArgsGuess( |
- kIEBrowserUnquotedCommandLine _T(" "), |
- &exe, |
- &args)); |
- EXPECT_STREQ(kIEBrowserUnquotedExe, exe); |
- EXPECT_STREQ(kIEBrowserUnquotedArgs, args); |
- |
- EXPECT_SUCCEEDED(CommandParsingSimple::SplitExeAndArgsGuess( |
- kIEBrowserUnquotedCommandLine _T("\t"), |
- &exe, |
- &args)); |
- EXPECT_STREQ(kIEBrowserUnquotedExe, exe); |
- EXPECT_STREQ(kIEBrowserUnquotedArgs, args); |
- |
- EXPECT_SUCCEEDED(CommandParsingSimple::SplitExeAndArgsGuess( |
- _T(" ") kIEBrowserUnquotedCommandLine, |
- &exe, |
- &args)); |
- EXPECT_STREQ(kIEBrowserUnquotedExe, exe); |
- EXPECT_STREQ(kIEBrowserUnquotedArgs, args); |
- |
- // The following cases have unexpected results. |
- // Quoting a command line with args is not handled correctly. |
- // The entire thing is interpreted as an EXE. |
- |
- EXPECT_SUCCEEDED(CommandParsingSimple::SplitExeAndArgsGuess( |
- _T("\" ") kIEBrowserUnquotedCommandLine _T("\""), |
- &exe, |
- &args)); |
- EXPECT_STREQ(kIEBrowserUnquotedCommandLine, exe); |
- EXPECT_TRUE(args.IsEmpty()); |
- |
- EXPECT_SUCCEEDED(CommandParsingSimple::SplitExeAndArgsGuess( |
- _T("\"") kIEBrowserUnquotedCommandLine _T(" \""), |
- &exe, |
- &args)); |
- EXPECT_STREQ(kIEBrowserUnquotedCommandLine, exe); |
- EXPECT_TRUE(args.IsEmpty()); |
- |
- EXPECT_SUCCEEDED(CommandParsingSimple::SplitExeAndArgsGuess( |
- _T("\"") kIEBrowserUnquotedCommandLine _T("\t\""), |
- &exe, |
- &args)); |
- EXPECT_STREQ(kIEBrowserUnquotedCommandLine, exe); |
- EXPECT_TRUE(args.IsEmpty()); |
-} |
- |
-TEST(CommandsTest, CommandParsingGuessSplit_CommandLineIsExistingFile) { |
- CString exe; |
- CString args; |
- |
- EXPECT_TRUE(File::Exists(kIEBrowserExe)); |
- EXPECT_SUCCEEDED( |
- CommandParsingSimple::SplitExeAndArgsGuess(kIEBrowserExe, &exe, &args)); |
- EXPECT_STREQ(kIEBrowserExe, exe); |
- EXPECT_TRUE(args.IsEmpty()); |
- |
- // File::Exists does not handle enclosed paths. |
- EXPECT_FALSE(File::Exists(kIEBrowserQuotedExe)); |
- EXPECT_SUCCEEDED( |
- CommandParsingSimple::SplitExeAndArgsGuess(kIEBrowserQuotedExe, |
- &exe, |
- &args)); |
- EXPECT_STREQ(kIEBrowserExe, exe); |
- EXPECT_TRUE(args.IsEmpty()); |
-} |
- |
-TEST(CommandsTest, |
- CommandParsingGuessSplit_CommandLineIsExistingFileWithExtraWhiteSpace) { |
- CString exe; |
- CString args; |
- |
- EXPECT_TRUE(File::Exists(kIEBrowserExe)); |
- // File::Exists does not handle enclosed paths. |
- EXPECT_FALSE(File::Exists(kIEBrowserQuotedExe)); |
- |
- EXPECT_SUCCEEDED( |
- CommandParsingSimple::SplitExeAndArgsGuess(kIEBrowserExe _T(" "), |
- &exe, |
- &args)); |
- EXPECT_STREQ(kIEBrowserExe, exe); |
- EXPECT_TRUE(args.IsEmpty()); |
- |
- EXPECT_SUCCEEDED( |
- CommandParsingSimple::SplitExeAndArgsGuess(kIEBrowserQuotedExe _T(" "), |
- &exe, |
- &args)); |
- EXPECT_STREQ(kIEBrowserExe, exe); |
- EXPECT_TRUE(args.IsEmpty()); |
- |
- EXPECT_SUCCEEDED( |
- CommandParsingSimple::SplitExeAndArgsGuess(kIEBrowserExe _T("\t"), |
- &exe, |
- &args)); |
- EXPECT_STREQ(kIEBrowserExe, exe); |
- EXPECT_TRUE(args.IsEmpty()); |
- |
- EXPECT_SUCCEEDED( |
- CommandParsingSimple::SplitExeAndArgsGuess(kIEBrowserQuotedExe _T("\t"), |
- &exe, |
- &args)); |
- EXPECT_STREQ(kIEBrowserExe, exe); |
- // SplitExeAndArgs does not treat tab like whitespace and args aren't trimmed. |
- EXPECT_STREQ(_T("\t"), args); |
- |
- EXPECT_SUCCEEDED( |
- CommandParsingSimple::SplitExeAndArgsGuess(_T(" ") kIEBrowserExe, |
- &exe, |
- &args)); |
- EXPECT_STREQ(kIEBrowserExe, exe); |
- EXPECT_TRUE(args.IsEmpty()); |
- |
- EXPECT_SUCCEEDED( |
- CommandParsingSimple::SplitExeAndArgsGuess(_T(" ") kIEBrowserQuotedExe, |
- &exe, |
- &args)); |
- EXPECT_STREQ(kIEBrowserExe, exe); |
- EXPECT_TRUE(args.IsEmpty()); |
- |
- EXPECT_SUCCEEDED(CommandParsingSimple::SplitExeAndArgsGuess( |
- _T("\" ") kIEBrowserExe _T("\""), |
- &exe, |
- &args)); |
- EXPECT_STREQ(kIEBrowserExe, exe); |
- EXPECT_TRUE(args.IsEmpty()); |
- |
- EXPECT_SUCCEEDED(CommandParsingSimple::SplitExeAndArgsGuess( |
- _T("\"") kIEBrowserExe _T(" \""), |
- &exe, |
- &args)); |
- EXPECT_STREQ(kIEBrowserExe, exe); |
- EXPECT_TRUE(args.IsEmpty()); |
- |
- EXPECT_SUCCEEDED(CommandParsingSimple::SplitExeAndArgsGuess( |
- _T("\"") kIEBrowserExe _T("\t\""), |
- &exe, |
- &args)); |
- EXPECT_STREQ(kIEBrowserExe, exe); |
- EXPECT_TRUE(args.IsEmpty()); |
-} |
- |
-} // namespace omaha |
- |