blob: f9c2a0d7d8cad42c0adce5abe36bd7067074a5f3 [file] [log] [blame]
// 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<std::string> 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<std::string> 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<std::string> 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