| // Copyright 2019 The Fuchsia Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #include "command_line_options.h" |
| |
| #include <stdlib.h> |
| #include <unistd.h> |
| |
| #include <filesystem> |
| #include <fstream> |
| |
| #include <gtest/gtest.h> |
| |
| namespace shell { |
| |
| // Test to ensure that ParseCommandLine works. |
| TEST(CommandLineOptions, SimpleParseCommandLineTest) { |
| std::string fidl_ir_path = "blah.fidl.json"; |
| std::string boot_js_lib_path = "path/to/js/lib"; |
| std::string command_line = "\"Once upon a midnight dreary\""; |
| |
| std::vector<const char*> argv = {"fakebinary", "--fidl-ir-path", fidl_ir_path.c_str(), |
| "-l", "--boot-js-lib-path", boot_js_lib_path.c_str(), |
| "-c", command_line.c_str(), "leftover", |
| "args"}; |
| CommandLineOptions options; |
| std::vector<std::string> params; |
| auto status = ParseCommandLine(argv.size(), argv.data(), &options, ¶ms); |
| ASSERT_TRUE(status.ok()); |
| ASSERT_EQ(2U, params.size()) << "Expected 0 params, got (at least) " << params[0]; |
| ASSERT_EQ(fidl_ir_path, options.fidl_ir_path[0]); |
| ASSERT_EQ(boot_js_lib_path, options.boot_js_lib_path[0]); |
| ASSERT_EQ(command_line, options.command_string); |
| |
| ASSERT_TRUE(std::find(params.begin(), params.end(), "leftover") != params.end()); |
| ASSERT_TRUE(std::find(params.begin(), params.end(), "args") != params.end()); |
| } |
| |
| } // namespace shell |