OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 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 | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "base/command_line.h" | 5 #include "base/command_line.h" |
6 #include "base/environment.h" | 6 #include "base/environment.h" |
7 #include "base/file_util.h" | 7 #include "base/file_util.h" |
8 #include "base/path_service.h" | 8 #include "base/path_service.h" |
9 #include "base/win/windows_version.h" | 9 #include "base/win/windows_version.h" |
10 #include "chrome/common/chrome_switches.h" | 10 #include "chrome/common/chrome_switches.h" |
(...skipping 12 matching lines...) Expand all Loading... |
23 NaClGdbTest() { | 23 NaClGdbTest() { |
24 } | 24 } |
25 | 25 |
26 virtual void SetUpCommandLine(CommandLine* command_line) OVERRIDE { | 26 virtual void SetUpCommandLine(CommandLine* command_line) OVERRIDE { |
27 PPAPINaClNewlibTest::SetUpCommandLine(command_line); | 27 PPAPINaClNewlibTest::SetUpCommandLine(command_line); |
28 | 28 |
29 base::FilePath mock_nacl_gdb; | 29 base::FilePath mock_nacl_gdb; |
30 EXPECT_TRUE(PathService::Get(base::DIR_EXE, &mock_nacl_gdb)); | 30 EXPECT_TRUE(PathService::Get(base::DIR_EXE, &mock_nacl_gdb)); |
31 mock_nacl_gdb = mock_nacl_gdb.Append(kMockNaClGdb); | 31 mock_nacl_gdb = mock_nacl_gdb.Append(kMockNaClGdb); |
32 command_line->AppendSwitchPath(switches::kNaClGdb, mock_nacl_gdb); | 32 command_line->AppendSwitchPath(switches::kNaClGdb, mock_nacl_gdb); |
33 EXPECT_TRUE(file_util::CreateTemporaryFile(&script_)); | 33 EXPECT_TRUE(base::CreateTemporaryFile(&script_)); |
34 command_line->AppendSwitchPath(switches::kNaClGdbScript, script_); | 34 command_line->AppendSwitchPath(switches::kNaClGdbScript, script_); |
35 } | 35 } |
36 | 36 |
37 void RunWithNaClGdb(std::string test_name) { | 37 void RunWithNaClGdb(std::string test_name) { |
38 base::FilePath mock_nacl_gdb_file; | 38 base::FilePath mock_nacl_gdb_file; |
39 scoped_ptr<base::Environment> env(base::Environment::Create()); | 39 scoped_ptr<base::Environment> env(base::Environment::Create()); |
40 std::string content; | 40 std::string content; |
41 // TODO(halyavin): Make this test work on Windows 32-bit. Currently this | 41 // TODO(halyavin): Make this test work on Windows 32-bit. Currently this |
42 // is not possible because NaCl doesn't work without sandbox since 1Gb of | 42 // is not possible because NaCl doesn't work without sandbox since 1Gb of |
43 // space is not reserved. We can't reserve 1Gb of space because | 43 // space is not reserved. We can't reserve 1Gb of space because |
44 // base::LaunchProcess doesn't support creating suspended processes. We need | 44 // base::LaunchProcess doesn't support creating suspended processes. We need |
45 // to either add suspended process support to base::LaunchProcess or use | 45 // to either add suspended process support to base::LaunchProcess or use |
46 // Win API. | 46 // Win API. |
47 #if defined(OS_WIN) | 47 #if defined(OS_WIN) |
48 if (base::win::OSInfo::GetInstance()->wow64_status() == | 48 if (base::win::OSInfo::GetInstance()->wow64_status() == |
49 base::win::OSInfo::WOW64_DISABLED) { | 49 base::win::OSInfo::WOW64_DISABLED) { |
50 return; | 50 return; |
51 } | 51 } |
52 #endif | 52 #endif |
53 EXPECT_TRUE(file_util::CreateTemporaryFile(&mock_nacl_gdb_file)); | 53 EXPECT_TRUE(base::CreateTemporaryFile(&mock_nacl_gdb_file)); |
54 env->SetVar("MOCK_NACL_GDB", mock_nacl_gdb_file.AsUTF8Unsafe()); | 54 env->SetVar("MOCK_NACL_GDB", mock_nacl_gdb_file.AsUTF8Unsafe()); |
55 RunTestViaHTTP(test_name); | 55 RunTestViaHTTP(test_name); |
56 env->UnSetVar("MOCK_NACL_GDB"); | 56 env->UnSetVar("MOCK_NACL_GDB"); |
57 | 57 |
58 EXPECT_TRUE(base::ReadFileToString(mock_nacl_gdb_file, &content)); | 58 EXPECT_TRUE(base::ReadFileToString(mock_nacl_gdb_file, &content)); |
59 EXPECT_STREQ("PASS", content.c_str()); | 59 EXPECT_STREQ("PASS", content.c_str()); |
60 EXPECT_TRUE(base::DeleteFile(mock_nacl_gdb_file, false)); | 60 EXPECT_TRUE(base::DeleteFile(mock_nacl_gdb_file, false)); |
61 | 61 |
62 content.clear(); | 62 content.clear(); |
63 EXPECT_TRUE(base::ReadFileToString(script_, &content)); | 63 EXPECT_TRUE(base::ReadFileToString(script_, &content)); |
64 EXPECT_STREQ("PASS", content.c_str()); | 64 EXPECT_STREQ("PASS", content.c_str()); |
65 EXPECT_TRUE(base::DeleteFile(script_, false)); | 65 EXPECT_TRUE(base::DeleteFile(script_, false)); |
66 } | 66 } |
67 | 67 |
68 private: | 68 private: |
69 base::FilePath script_; | 69 base::FilePath script_; |
70 }; | 70 }; |
71 | 71 |
72 // Fails on the ASAN test bot. See http://crbug.com/122219 | 72 // Fails on the ASAN test bot. See http://crbug.com/122219 |
73 #if defined(ADDRESS_SANITIZER) | 73 #if defined(ADDRESS_SANITIZER) |
74 #define MAYBE_Empty DISABLED_Empty | 74 #define MAYBE_Empty DISABLED_Empty |
75 #else | 75 #else |
76 #define MAYBE_Empty Empty | 76 #define MAYBE_Empty Empty |
77 #endif | 77 #endif |
78 IN_PROC_BROWSER_TEST_F(NaClGdbTest, MAYBE_Empty) { | 78 IN_PROC_BROWSER_TEST_F(NaClGdbTest, MAYBE_Empty) { |
79 RunWithNaClGdb("Empty"); | 79 RunWithNaClGdb("Empty"); |
80 } | 80 } |
OLD | NEW |