pw_assert_basic: Fix build and minor bugfix

This commit fixes the bazel build files. This fix also addresses a bug
where an interaction between @io_bazel//src/main/tools:process-wrapper
and pw_assert_basic caused the output from `bazel test
//some_test_target` to be completely empty on assertion. This occured
because pw_assert_basic was 'aborting' causing the core to dump without
calling the destructors. Under normal circumstances this is fine as
stdout is synchronised. However as bazel's process wrapper binds
stdout, it results in stdout buffering, meaning that when
pw_assert_basic 'aborts' the buffered stdout is lost. The replacement
of 'abort' to 'exit' allows destructors for the stdout handles to be
called thus flushing the buffer out to bazels process-wrapper.
This is not a critical bug and is more of a nuisance as the message that
prints the line number that caused the assertion is lost when the
program aborts.

Change-Id: Ia1599db78c5caa878f3d7496e2b3009e3c44dcea
Reviewed-on: https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/34621
Reviewed-by: Keir Mierle <keir@google.com>
Reviewed-by: Wyatt Hepler <hepler@google.com>
Commit-Queue: Keir Mierle <keir@google.com>
diff --git a/pw_assert_basic/BUILD b/pw_assert_basic/BUILD
index a22a266..9992d77 100644
--- a/pw_assert_basic/BUILD
+++ b/pw_assert_basic/BUILD
@@ -43,6 +43,7 @@
     ],
     deps = [
         ":headers",
+        ":pw_assert_basic_handler",
         "//pw_assert:facade",
         "//pw_preprocessor",
     ],
@@ -64,11 +65,11 @@
         "basic_handler.cc",
     ],
     deps = [
+        ":handler_facade",
         ":headers",
         "//pw_assert:facade",
         "//pw_preprocessor",
         "//pw_string",
         "//pw_sys_io",
-				":handler_facade",
     ],
 )
diff --git a/pw_assert_basic/basic_handler.cc b/pw_assert_basic/basic_handler.cc
index db2ed8c..29d44e3 100644
--- a/pw_assert_basic/basic_handler.cc
+++ b/pw_assert_basic/basic_handler.cc
@@ -1,4 +1,4 @@
-// Copyright 2020 The Pigweed Authors
+// Copyright 2021 The Pigweed Authors
 //
 // Licensed under the Apache License, Version 2.0 (the "License"); you may not
 // use this file except in compliance with the License. You may obtain a copy of
@@ -138,7 +138,16 @@
   // now this is acceptable since no one is using this basic backend.
   if (!PW_ASSERT_BASIC_DISABLE_NORETURN) {
     if (PW_ASSERT_BASIC_ABORT) {
-      abort();
+      // Using exit() instead of abort() here because exit() allows for the
+      // destructors for the stdout buffers to be called. This addresses an
+      // issue that occurs when Bazel's execution wrapper binds stdout. This
+      // results in stdout going from a synchronized to a buffered file
+      // descriptor. In this case when abort() is called in a Bazel test the
+      // program exits before the stdout buffer can be synchronized with Bazel's
+      // execution wrapper, the resulting output from a test is an empty output
+      // buffer. Using exit() here allows the destructors to synchronized the
+      // stdout buffer before exiting.
+      exit(1);
     } else {
       WriteLine("");
       WriteLine(MAGENTA "  HANG TIME" RESET);