Commit 5b3d5a34 authored by Kevin Marshall's avatar Kevin Marshall Committed by Commit Bot

Use Chromium-built "test_child_process" for GetAppOutput tests instead of "sh".

GetAppOutput relies on a platform-supplied shell interpreter to
exercise ProcessUtil's output handling codepaths
and the GetAppOutput tests rewritten to use it.

This doesn't work for Fuchsia, as packaged executables aren't
allowed to access other binaries that aren't included
in the package.

This CL defines a trivial test executable "test_child_process",
which behaves similar to "echo", and the GetAppOutput tests
are rewritten to use it.


Bug: 836341
Change-Id: If681b62f4ecf486a6b62387be0610fec6771ae4e
Reviewed-on: https://chromium-review.googlesource.com/1026796
Commit-Queue: Kevin Marshall <kmarshall@chromium.org>
Reviewed-by: default avatarWez <wez@chromium.org>
Reviewed-by: default avatarDaniel Cheng <dcheng@chromium.org>
Reviewed-by: default avatarScott Graham <scottmg@chromium.org>
Cr-Commit-Position: refs/heads/master@{#553835}
parent 68025cac
...@@ -2418,6 +2418,7 @@ test("base_unittests") { ...@@ -2418,6 +2418,7 @@ test("base_unittests") {
] ]
data_deps = [ data_deps = [
"//base/test:test_child_process",
"//base/test:test_shared_library", "//base/test:test_shared_library",
] ]
......
This diff is collapsed.
...@@ -429,3 +429,15 @@ if (is_android) { ...@@ -429,3 +429,15 @@ if (is_android) {
] ]
} }
} }
# Trivial executable which outputs space-delimited argv to stdout,
# used for testing.
executable("test_child_process") {
testonly = true
sources = [
"test_child_process.cc",
]
deps = [
"//build/config:exe_and_shlib_deps",
]
}
// Copyright 2018 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 <stdio.h>
#include <stdlib.h>
#include <string.h>
// Simple testing command, used to exercise child process launcher calls.
//
// Usage:
// echo_test_helper [-x exit_code] arg0 arg1 arg2...
// Prints arg0..n to stdout with space delimiters between args,
// returning "exit_code" if -x is specified.
//
// echo_test_helper -e env_var
// Prints the environmental variable |env_var| to stdout.
int main(int argc, char** argv) {
if (strcmp(argv[1], "-e") == 0) {
if (argc != 3) {
return 1;
}
const char* env = getenv(argv[2]);
if (env != NULL) {
printf("%s", env);
}
} else {
int return_code = 0;
int start_idx = 1;
if (strcmp(argv[1], "-x") == 0) {
return_code = atoi(argv[2]);
start_idx = 3;
}
for (int i = start_idx; i < argc; ++i) {
printf((i < argc - 1 ? "%s " : "%s"), argv[i]);
}
return return_code;
}
}
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment