// Copyright 2015 The Chromium 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 "chromecast/base/process_utils.h" #include "testing/gtest/include/gtest/gtest.h" namespace chromecast { // Verify that a simple process works as expected. TEST(ProcessUtilsTest, SimpleProcess) { // Create a simple command. std::vector args; args.push_back("echo"); args.push_back("Hello World"); // Execute the command and collect the output. std::string stdout_result; ASSERT_TRUE(GetAppOutput(args, &stdout_result)); // Echo will append a newline to the stdout. EXPECT_EQ("Hello World\n", stdout_result); } // Verify that false is returned for an invalid command. TEST(ProcessUtilsTest, InvalidCommand) { // Create a command which is not valid. std::vector args; args.push_back("invalid_command"); // The command should not run. std::string stdout_result; ASSERT_FALSE(GetAppOutput(args, &stdout_result)); ASSERT_TRUE(stdout_result.empty()); } // Verify that false is returned when a command an error code. TEST(ProcessUtilsTest, ProcessReturnsError) { // Create a simple command. std::vector args; args.push_back("cd"); args.push_back("path/to/invalid/directory"); args.push_back("2>&1"); // Pipe the stderr into stdout. // Execute the command and collect the output. Verify that the output of the // process is collected, even when the process returns an error code. std::string stderr_result; ASSERT_FALSE(GetAppOutput(args, &stderr_result)); ASSERT_FALSE(stderr_result.empty()); } } // namespace chromecast