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

Side by Side Diff: util/mach/exception_ports_test.cc

Issue 1291573004: Use EXPECT_STREQ(a, b) when a and b are both const char* (Closed) Base URL: https://chromium.googlesource.com/crashpad/crashpad@master
Patch Set: Created 5 years, 4 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
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 The Crashpad Authors. All rights reserved. 1 // Copyright 2014 The Crashpad Authors. All rights reserved.
2 // 2 //
3 // Licensed under the Apache License, Version 2.0 (the "License"); 3 // Licensed under the Apache License, Version 2.0 (the "License");
4 // you may not use this file except in compliance with the License. 4 // you may not use this file except in compliance with the License.
5 // You may obtain a copy of the License at 5 // You may obtain a copy of the License at
6 // 6 //
7 // http://www.apache.org/licenses/LICENSE-2.0 7 // http://www.apache.org/licenses/LICENSE-2.0
8 // 8 //
9 // Unless required by applicable law or agreed to in writing, software 9 // Unless required by applicable law or agreed to in writing, software
10 // distributed under the License is distributed on an "AS IS" BASIS, 10 // distributed under the License is distributed on an "AS IS" BASIS,
(...skipping 343 matching lines...) Expand 10 before | Expand all | Expand 10 after
354 // Wait for the child process to be ready. It needs to have all of its 354 // Wait for the child process to be ready. It needs to have all of its
355 // threads set up before proceeding if in kSetOutOfProcess mode. 355 // threads set up before proceeding if in kSetOutOfProcess mode.
356 char c; 356 char c;
357 CheckedReadFile(ReadPipeHandle(), &c, 1); 357 CheckedReadFile(ReadPipeHandle(), &c, 1);
358 EXPECT_EQ('\0', c); 358 EXPECT_EQ('\0', c);
359 359
360 mach_port_t local_port = LocalPort(); 360 mach_port_t local_port = LocalPort();
361 361
362 // Get an ExceptionPorts object for the task and each of its threads. 362 // Get an ExceptionPorts object for the task and each of its threads.
363 ExceptionPorts task_ports(ExceptionPorts::kTargetTypeTask, ChildTask()); 363 ExceptionPorts task_ports(ExceptionPorts::kTargetTypeTask, ChildTask());
364 EXPECT_EQ("task", task_ports.TargetTypeName()); 364 EXPECT_STREQ("task", task_ports.TargetTypeName());
365 365
366 // Hopefully the threads returned by task_threads() are in order, with the 366 // Hopefully the threads returned by task_threads() are in order, with the
367 // main thread first and the other thread second. This is currently always 367 // main thread first and the other thread second. This is currently always
368 // the case, although nothing guarantees that it will remain so. 368 // the case, although nothing guarantees that it will remain so.
369 thread_act_array_t threads; 369 thread_act_array_t threads;
370 mach_msg_type_number_t thread_count = 0; 370 mach_msg_type_number_t thread_count = 0;
371 kern_return_t kr = task_threads(ChildTask(), &threads, &thread_count); 371 kern_return_t kr = task_threads(ChildTask(), &threads, &thread_count);
372 ASSERT_EQ(KERN_SUCCESS, kr) << MachErrorMessage(kr, "task_threads"); 372 ASSERT_EQ(KERN_SUCCESS, kr) << MachErrorMessage(kr, "task_threads");
373 373
374 ScopedForbidReturn threads_need_owners; 374 ScopedForbidReturn threads_need_owners;
375 ASSERT_EQ(2u, thread_count); 375 ASSERT_EQ(2u, thread_count);
376 base::mac::ScopedMachSendRight main_thread(threads[0]); 376 base::mac::ScopedMachSendRight main_thread(threads[0]);
377 base::mac::ScopedMachSendRight other_thread(threads[1]); 377 base::mac::ScopedMachSendRight other_thread(threads[1]);
378 threads_need_owners.Disarm(); 378 threads_need_owners.Disarm();
379 379
380 ExceptionPorts main_thread_ports(ExceptionPorts::kTargetTypeThread, 380 ExceptionPorts main_thread_ports(ExceptionPorts::kTargetTypeThread,
381 main_thread); 381 main_thread);
382 ExceptionPorts other_thread_ports(ExceptionPorts::kTargetTypeThread, 382 ExceptionPorts other_thread_ports(ExceptionPorts::kTargetTypeThread,
383 other_thread); 383 other_thread);
384 EXPECT_EQ("thread", main_thread_ports.TargetTypeName()); 384 EXPECT_STREQ("thread", main_thread_ports.TargetTypeName());
385 EXPECT_EQ("thread", other_thread_ports.TargetTypeName()); 385 EXPECT_STREQ("thread", other_thread_ports.TargetTypeName());
386 386
387 if (set_type_ == kSetOutOfProcess) { 387 if (set_type_ == kSetOutOfProcess) {
388 // Test ExceptionPorts::SetExceptionPorts() being called from 388 // Test ExceptionPorts::SetExceptionPorts() being called from
389 // out-of-process. 389 // out-of-process.
390 // 390 //
391 // local_port is only a receive right, but a send right is needed for 391 // local_port is only a receive right, but a send right is needed for
392 // ExceptionPorts::SetExceptionPort(). Make a send right, which can be 392 // ExceptionPorts::SetExceptionPort(). Make a send right, which can be
393 // deallocated once the calls to ExceptionPorts::SetExceptionPort() are 393 // deallocated once the calls to ExceptionPorts::SetExceptionPort() are
394 // done. 394 // done.
395 kr = mach_port_insert_right( 395 kr = mach_port_insert_right(
(...skipping 184 matching lines...) Expand 10 before | Expand all | Expand 10 after
580 // ExceptionPorts isn’t expected to work as non-root. Just do a quick test to 580 // ExceptionPorts isn’t expected to work as non-root. Just do a quick test to
581 // make sure that TargetTypeName() returns the right string, and that the 581 // make sure that TargetTypeName() returns the right string, and that the
582 // underlying host_get_exception_ports() function appears to be called by 582 // underlying host_get_exception_ports() function appears to be called by
583 // looking for a KERN_INVALID_ARGUMENT return value. Or, on the off chance 583 // looking for a KERN_INVALID_ARGUMENT return value. Or, on the off chance
584 // that the test is being run as root, just look for KERN_SUCCESS. 584 // that the test is being run as root, just look for KERN_SUCCESS.
585 // host_set_exception_ports() is not tested, because if the test were running 585 // host_set_exception_ports() is not tested, because if the test were running
586 // as root and the call succeeded, it would have global effects. 586 // as root and the call succeeded, it would have global effects.
587 587
588 base::mac::ScopedMachSendRight host(mach_host_self()); 588 base::mac::ScopedMachSendRight host(mach_host_self());
589 ExceptionPorts explicit_host_ports(ExceptionPorts::kTargetTypeHost, host); 589 ExceptionPorts explicit_host_ports(ExceptionPorts::kTargetTypeHost, host);
590 EXPECT_EQ("host", explicit_host_ports.TargetTypeName()); 590 EXPECT_STREQ("host", explicit_host_ports.TargetTypeName());
591 591
592 std::vector<ExceptionPorts::ExceptionHandler> handlers; 592 std::vector<ExceptionPorts::ExceptionHandler> handlers;
593 bool rv = explicit_host_ports.GetExceptionPorts( 593 bool rv = explicit_host_ports.GetExceptionPorts(
594 ExcMaskAll() | EXC_MASK_CRASH, &handlers); 594 ExcMaskAll() | EXC_MASK_CRASH, &handlers);
595 if (geteuid() == 0) { 595 if (geteuid() == 0) {
596 EXPECT_TRUE(rv); 596 EXPECT_TRUE(rv);
597 } else { 597 } else {
598 EXPECT_FALSE(rv); 598 EXPECT_FALSE(rv);
599 } 599 }
600 600
601 ExceptionPorts implicit_host_ports(ExceptionPorts::kTargetTypeHost, 601 ExceptionPorts implicit_host_ports(ExceptionPorts::kTargetTypeHost,
602 HOST_NULL); 602 HOST_NULL);
603 EXPECT_EQ("host", implicit_host_ports.TargetTypeName()); 603 EXPECT_STREQ("host", implicit_host_ports.TargetTypeName());
604 604
605 rv = implicit_host_ports.GetExceptionPorts( 605 rv = implicit_host_ports.GetExceptionPorts(
606 ExcMaskAll() | EXC_MASK_CRASH, &handlers); 606 ExcMaskAll() | EXC_MASK_CRASH, &handlers);
607 if (geteuid() == 0) { 607 if (geteuid() == 0) {
608 EXPECT_TRUE(rv); 608 EXPECT_TRUE(rv);
609 } else { 609 } else {
610 EXPECT_FALSE(rv); 610 EXPECT_FALSE(rv);
611 } 611 }
612 } 612 }
613 613
614 } // namespace 614 } // namespace
615 } // namespace test 615 } // namespace test
616 } // namespace crashpad 616 } // namespace crashpad
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698