Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(170)

Side by Side Diff: chrome/browser/nacl_host/test/mock_nacl_gdb.cc

Issue 9662055: Test for --nacl-gdb functionality. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: Use environment variable to pass file between test and mock_nacl_gdb Created 8 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
(Empty)
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include <cstdio>
6 #include <cstring>
7
8 #include "base/command_line.h"
9 #include "base/environment.h"
10 #include "base/file_util.h"
11 #include "base/logging.h"
12 #include "base/process_util.h"
13
14 static const char kArgs[] = "--args";
15 static const char kEvalCommand[] = "--eval-command";
16 static const char kNaClIrt[] = "nacl-irt ";
17
18 int main(int argc, char** argv) {
19 scoped_ptr<base::Environment> env(base::Environment::Create());
20 std::string mock_nacl_gdb_file;
21 env->GetVar("MOCK_NACL_GDB", &mock_nacl_gdb_file);
22 file_util::WriteFile(FilePath::FromUTF8Unsafe(mock_nacl_gdb_file),
23 NULL, 0);
24 CHECK_GE(argc, 3);
25 // First argument should be --eval-command.
26 CHECK_EQ(strcmp(argv[1], kEvalCommand), 0);
27 // Second argument should start with nacl-irt.
28 CHECK_GE(strlen(argv[2]), strlen(kNaClIrt));
29 CHECK_EQ(strncmp(argv[2], kNaClIrt, strlen(kNaClIrt)), 0);
30 char* irt_file_name = &argv[2][strlen(kNaClIrt)];
31 FILE* irt_file = fopen(irt_file_name, "r");
32 // nacl-irt parameter must be a file name.
33 PCHECK(irt_file);
34 fclose(irt_file);
35 int i = 3;
36 // Skip additional --eval-command parameters.
37 while (i < argc) {
38 if (strcmp(argv[i], kArgs) == 0) {
39 i++;
40 break;
41 }
42 if (strcmp(argv[i], kEvalCommand) == 0) {
43 i += 2;
44 // Command line shouldn't end with --eval-command switch without value.
45 CHECK_LE(i, argc);
46 continue;
47 }
48 // Unknown argument.
49 NOTREACHED() << "Invalid argument " << argv[i];
50 }
51 // --args switch must be present.
52 CHECK_LT(i, argc);
53
54 CommandLine::StringVector arguments;
55 for (; i < argc; i++) {
56 arguments.push_back(
57 CommandLine::StringType(argv[i], argv[i] + strlen(argv[i])));
58 }
59 CommandLine cmd_line(arguments);
60 // Process must be launched successfully.
61 PCHECK(base::LaunchProcess(cmd_line, base::LaunchOptions(), NULL));
62 return 0;
63 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698