summaryrefslogtreecommitdiffstats
path: root/chromecast/base/process_utils_unittest.cc
blob: f9c2a0d7d8cad42c0adce5abe36bd7067074a5f3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
// 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