Fix bazel test -c opt ...:all

Move all side-effectful operations outside of EMBOSS_CHECK and related macros.

Add EMBOSS_CHECK_ABORTS and EMBOSS_DCHECK_ABORTS macros, so that tests can enable/disable EXPECT_DEATH.
diff --git a/compiler/back_end/cpp/testcode/auto_array_size_test.cc b/compiler/back_end/cpp/testcode/auto_array_size_test.cc
index b220649..8e03d40 100644
--- a/compiler/back_end/cpp/testcode/auto_array_size_test.cc
+++ b/compiler/back_end/cpp/testcode/auto_array_size_test.cc
@@ -205,7 +205,9 @@
   EXPECT_EQ(0x30U, view.four_byte_array()[2].Read());
   EXPECT_EQ(0x40U, view.four_byte_array()[3].Read());
   EXPECT_EQ(4U, view.four_byte_array().SizeInBytes());
+#if EMBOSS_CHECK_ABORTS
   EXPECT_DEATH(view.four_byte_array()[4].Read(), "");
+#endif  // EMBOSS_CHECK_ABORTS
   EXPECT_EQ(0x11U, view.four_struct_array()[0].a().Read());
   EXPECT_EQ(0x12U, view.four_struct_array()[0].b().Read());
   EXPECT_EQ(0x21U, view.four_struct_array()[1].a().Read());
@@ -215,7 +217,9 @@
   EXPECT_EQ(0x41U, view.four_struct_array()[3].a().Read());
   EXPECT_EQ(0x42U, view.four_struct_array()[3].b().Read());
   EXPECT_EQ(8U, view.four_struct_array().SizeInBytes());
+#if EMBOSS_CHECK_ABORTS
   EXPECT_DEATH(view.four_struct_array()[4].a().Read(), "");
+#endif  // EMBOSS_CHECK_ABORTS
   EXPECT_EQ(0x50U, view.dynamic_byte_array()[0].Read());
   EXPECT_EQ(0x60U, view.dynamic_byte_array()[1].Read());
   EXPECT_EQ(0x70U, view.dynamic_byte_array()[2].Read());
@@ -236,14 +240,18 @@
   auto writer = MakeAutoSizeView(&buffer);
   writer.array_size().Write(0);
   EXPECT_EQ(13U, writer.SizeInBytes());
+#if EMBOSS_CHECK_ABORTS
   EXPECT_DEATH(writer.dynamic_byte_array()[0].Read(), "");
+#endif  // EMBOSS_CHECK_ABORTS
   writer.array_size().Write(3);
   EXPECT_EQ(22U, writer.SizeInBytes());
   writer.four_byte_array()[0].Write(0x10);
   writer.four_byte_array()[1].Write(0x20);
   writer.four_byte_array()[2].Write(0x30);
   writer.four_byte_array()[3].Write(0x40);
+#if EMBOSS_CHECK_ABORTS
   EXPECT_DEATH(writer.four_byte_array()[4].Write(0), "");
+#endif  // EMBOSS_CHECK_ABORTS
   writer.four_struct_array()[0].a().Write(0x11);
   writer.four_struct_array()[0].b().Write(0x12);
   writer.four_struct_array()[1].a().Write(0x21);
diff --git a/compiler/back_end/cpp/testcode/bcd_test.cc b/compiler/back_end/cpp/testcode/bcd_test.cc
index da51e8e..fa3cc13 100644
--- a/compiler/back_end/cpp/testcode/bcd_test.cc
+++ b/compiler/back_end/cpp/testcode/bcd_test.cc
@@ -95,9 +95,11 @@
   EXPECT_EQ(::std::vector</**/ ::std::uint8_t>(kBcd, kBcd + sizeof kBcd),
             ::std::vector</**/ ::std::uint8_t>(buffer, buffer + sizeof buffer));
 
+#if EMBOSS_CHECK_ABORTS
   EXPECT_DEATH(writer.one_byte().Write(100), "");
   EXPECT_DEATH(writer.three_byte().Write(1445566), "");
   EXPECT_DEATH(writer.ten_bit().Write(400), "");
+#endif  // EMBOSS_CHECK_ABORTS
 }
 
 TEST(BcdSizesView, OkIsTrueForGoodBcd) {
@@ -146,6 +148,7 @@
   view.twelve_bit().UncheckedRead();
 }
 
+#if EMBOSS_CHECK_ABORTS
 TEST(BcdSizesView, ReadingInvalidBcdCrashes) {
   auto view = BcdSizesView(kBadBcd, sizeof kBadBcd);
   EXPECT_DEATH(view.one_byte().Read(), "");
@@ -161,6 +164,7 @@
   EXPECT_DEATH(view.ten_bit().Read(), "");
   EXPECT_DEATH(view.twelve_bit().Read(), "");
 }
+#endif  // EMBOSS_CHECK_ABORTS
 
 TEST(BcdSizesView, OkIsFalseForBadBcd) {
   auto view = BcdSizesView(kBadBcd, sizeof kBadBcd);
@@ -270,30 +274,40 @@
   auto y = BcdSizesView(&buf_y);
 
   EXPECT_TRUE(x.UncheckedEquals(x));
-  EXPECT_DEATH(x.Equals(x), "");
   EXPECT_TRUE(y.UncheckedEquals(y));
+#if EMBOSS_CHECK_ABORTS
+  EXPECT_DEATH(x.Equals(x), "");
   EXPECT_DEATH(y.Equals(y), "");
+#endif  // EMBOSS_CHECK_ABORTS
 
   EXPECT_TRUE(x.UncheckedEquals(y));
-  EXPECT_DEATH(x.Equals(y), "");
   EXPECT_TRUE(y.UncheckedEquals(x));
+#if EMBOSS_CHECK_ABORTS
+  EXPECT_DEATH(x.Equals(y), "");
   EXPECT_DEATH(y.Equals(x), "");
+#endif  // EMBOSS_CHECK_ABORTS
 
   EXPECT_TRUE(x_const.UncheckedEquals(y));
-  EXPECT_DEATH(x_const.Equals(y), "");
   EXPECT_TRUE(y.UncheckedEquals(x_const));
+#if EMBOSS_CHECK_ABORTS
+  EXPECT_DEATH(x_const.Equals(y), "");
   EXPECT_DEATH(y.Equals(x_const), "");
+#endif  // EMBOSS_CHECK_ABORTS
 
   ++buf_y[1];
   EXPECT_FALSE(x.UncheckedEquals(y));
-  EXPECT_DEATH(x.Equals(y), "");
   EXPECT_FALSE(y.UncheckedEquals(x));
+#if EMBOSS_CHECK_ABORTS
+  EXPECT_DEATH(x.Equals(y), "");
   EXPECT_DEATH(y.Equals(x), "");
+#endif  // EMBOSS_CHECK_ABORTS
 
   EXPECT_FALSE(x_const.UncheckedEquals(y));
-  EXPECT_DEATH(x_const.Equals(y), "");
   EXPECT_FALSE(y.UncheckedEquals(x_const));
+#if EMBOSS_CHECK_ABORTS
+  EXPECT_DEATH(x_const.Equals(y), "");
   EXPECT_DEATH(y.Equals(x_const), "");
+#endif  // EMBOSS_CHECK_ABORTS
 }
 
 }  // namespace
diff --git a/compiler/back_end/cpp/testcode/bits_test.cc b/compiler/back_end/cpp/testcode/bits_test.cc
index 28e6397..d7591ea 100644
--- a/compiler/back_end/cpp/testcode/bits_test.cc
+++ b/compiler/back_end/cpp/testcode/bits_test.cc
@@ -65,7 +65,9 @@
   struct_of_bits.four_byte().low_nibble().Write(115);
   EXPECT_EQ(0xff, data[3]);
   // Out-of-[range] write.
+#if EMBOSS_CHECK_ABORTS
   EXPECT_DEATH(struct_of_bits.four_byte().low_nibble().Write(100), "");
+#endif  // EMBOSS_CHECK_ABORTS
 }
 
 TEST(Bits, StructOfBitsFromText) {
diff --git a/compiler/back_end/cpp/testcode/condition_test.cc b/compiler/back_end/cpp/testcode/condition_test.cc
index 2615dc3..029abae 100644
--- a/compiler/back_end/cpp/testcode/condition_test.cc
+++ b/compiler/back_end/cpp/testcode/condition_test.cc
@@ -61,6 +61,7 @@
   EXPECT_FALSE(writer.xc().Ok());
 }
 
+#if EMBOSS_CHECK_ABORTS
 TEST(Conditional, BasicConditionFalseReadCrashes) {
   ::std::uint8_t buffer[2] = {1, 2};
   auto writer = BasicConditionalWriter(buffer, sizeof buffer);
@@ -72,6 +73,7 @@
   auto writer = BasicConditionalWriter(buffer, sizeof buffer);
   EXPECT_DEATH(writer.xc().Write(3), "");
 }
+#endif  // EMBOSS_CHECK_ABORTS
 
 TEST(Conditional, BasicConditionTrueSizeIncludesConditionalField) {
   ::std::uint8_t buffer[2] = {0, 2};
@@ -150,7 +152,9 @@
 TEST(Conditional, NegativeConditionFalseReadCrashes) {
   ::std::uint8_t buffer1[2] = {0, 2};
   auto writer1 = NegativeConditionalWriter(buffer1, sizeof buffer1);
+#if EMBOSS_CHECK_ABORTS
   EXPECT_DEATH(writer1.xc().Read(), "");
+#endif  // EMBOSS_CHECK_ABORTS
 
   ::std::uint8_t buffer2[2] = {0, 0};
   auto writer2 = BasicConditionalWriter(buffer2, sizeof buffer2);
@@ -163,7 +167,9 @@
 TEST(Conditional, NegativeConditionFalseWriteCrashes) {
   ::std::uint8_t buffer1[2] = {0, 2};
   auto writer1 = NegativeConditionalWriter(buffer1, sizeof buffer1);
+#if EMBOSS_CHECK_ABORTS
   EXPECT_DEATH(writer1.xc().Write(3), "");
+#endif  // EMBOSS_CHECK_ABORTS
 
   ::std::uint8_t buffer2[2] = {0, 2};
   auto writer2 = NegativeConditionalWriter(buffer2, sizeof buffer2);
diff --git a/compiler/back_end/cpp/testcode/dynamic_size_test.cc b/compiler/back_end/cpp/testcode/dynamic_size_test.cc
index 7147212..a1d5ebf 100644
--- a/compiler/back_end/cpp/testcode/dynamic_size_test.cc
+++ b/compiler/back_end/cpp/testcode/dynamic_size_test.cc
@@ -50,7 +50,9 @@
   EXPECT_EQ(5U, view.message()[4].Read());
   EXPECT_EQ(6U, view.message()[5].Read());
   EXPECT_EQ(6U, view.message().SizeInBytes());
+#if EMBOSS_CHECK_ABORTS
   EXPECT_DEATH(view.message()[6].Read(), "");
+#endif  // EMBOSS_CHECK_ABORTS
   EXPECT_EQ(0x0a090807U, view.crc32().Read());
 }
 
@@ -58,7 +60,9 @@
 TEST(MessageView, PaddingFieldWorks) {
   auto view = MessageView(&kMessage);
   EXPECT_EQ(0U, view.padding().SizeInBytes());
+#if EMBOSS_CHECK_ABORTS
   EXPECT_DEATH(view.padding()[0].Read(), "");
+#endif  // EMBOSS_CHECK_ABORTS
 }
 
 static constexpr ::std::array</**/ ::std::uint8_t, 16> kPaddedMessage = {{
@@ -80,13 +84,17 @@
   EXPECT_EQ(3U, view.padding()[2].Read());
   EXPECT_EQ(4U, view.padding()[3].Read());
   EXPECT_EQ(4U, view.padding().SizeInBytes());
+#if EMBOSS_CHECK_ABORTS
   EXPECT_DEATH(view.padding()[4].Read(), "");
+#endif  // EMBOSS_CHECK_ABORTS
   EXPECT_EQ(5U, view.message()[0].Read());
   EXPECT_EQ(6U, view.message()[1].Read());
   EXPECT_EQ(7U, view.message()[2].Read());
   EXPECT_EQ(8U, view.message()[3].Read());
   EXPECT_EQ(4U, view.message().SizeInBytes());
+#if EMBOSS_CHECK_ABORTS
   EXPECT_DEATH(view.message()[4].Read(), "");
+#endif  // EMBOSS_CHECK_ABORTS
   EXPECT_EQ(0x0c0b0a09U, view.crc32().Read());
 }
 
@@ -103,8 +111,10 @@
     writer.message()[i].Write(i + 1);
   }
   EXPECT_EQ(12U, writer.SizeInBytes());
+#if EMBOSS_CHECK_ABORTS
   EXPECT_DEATH(writer.message()[writer.message_length().Read()].Read(), "");
   EXPECT_DEATH(writer.padding()[0].Read(), "");
+#endif  // EMBOSS_CHECK_ABORTS
   writer.crc32().Write(0x0a090807);
   EXPECT_EQ(
       ::std::vector</**/ ::std::uint8_t>(kMessage.begin(), kMessage.end()),
diff --git a/compiler/back_end/cpp/testcode/enum_test.cc b/compiler/back_end/cpp/testcode/enum_test.cc
index 7b5ca4d..4f9f1e4 100644
--- a/compiler/back_end/cpp/testcode/enum_test.cc
+++ b/compiler/back_end/cpp/testcode/enum_test.cc
@@ -126,7 +126,9 @@
                 kManifestEntry, kManifestEntry + sizeof kManifestEntry),
             ::std::vector</**/ ::std::uint8_t>(buffer, buffer + sizeof buffer));
 
+#if EMBOSS_CHECK_ABORTS
   EXPECT_DEATH(writer.kind().Write(Kind::LARGE_VALUE), "");
+#endif  // EMBOSS_CHECK_ABORTS
   writer.kind().Write(static_cast<Kind>(0xff));
   EXPECT_EQ(static_cast<Kind>(0xff), writer.kind().Read());
   EXPECT_EQ(0xff, buffer[0]);
diff --git a/compiler/back_end/cpp/testcode/requires_test.cc b/compiler/back_end/cpp/testcode/requires_test.cc
index 66fbe7f..661fe6a 100644
--- a/compiler/back_end/cpp/testcode/requires_test.cc
+++ b/compiler/back_end/cpp/testcode/requires_test.cc
@@ -118,7 +118,9 @@
   EXPECT_TRUE(view.must_be_false().CouldWriteValue(false));
   EXPECT_TRUE(view.alias_of_a_must_be_true().CouldWriteValue(true));
   EXPECT_FALSE(view.alias_of_a_must_be_true().CouldWriteValue(false));
+#if EMBOSS_CHECK_ABORTS
   EXPECT_DEATH(view.alias_of_a_must_be_true().Write(false), "");
+#endif  // EMBOSS_CHECK_ABORTS
 }
 
 TEST(RequiresEnums, Ok) {
diff --git a/compiler/back_end/cpp/testcode/virtual_field_test.cc b/compiler/back_end/cpp/testcode/virtual_field_test.cc
index 1c5de41..fbedf6a 100644
--- a/compiler/back_end/cpp/testcode/virtual_field_test.cc
+++ b/compiler/back_end/cpp/testcode/virtual_field_test.cc
@@ -90,12 +90,14 @@
   EXPECT_EQ(-250, view.product().Read());
 }
 
+#if EMBOSS_CHECK_ABORTS
 TEST(Computed, ReadFailsWhenUnderlyingFieldIsNotOk) {
   ::std::array<char, 0> values = {};
   const auto view = MakeStructureWithComputedValuesView(&values);
   EXPECT_DEATH(view.value().Read(), "");
   EXPECT_DEATH(view.doubled().Read(), "");
 }
+#endif  // EMBOSS_CHECK_ABORTS
 
 // Check the return types of nonstatic Read methods.
 static_assert(
@@ -189,7 +191,9 @@
   EXPECT_EQ(6, view.x_plus_one().UncheckedRead());
   view.x().Write(0x80000000U);
   EXPECT_FALSE(view.has_two_x().Value());
+#if EMBOSS_CHECK_ABORTS
   EXPECT_DEATH(view.two_x().Read(), "");
+#endif  // EMBOSS_CHECK_ABORTS
   EXPECT_TRUE(view.has_x_plus_one().Value());
   EXPECT_EQ(0x80000001U, view.x_plus_one().Read());
 }
@@ -199,7 +203,9 @@
   const auto view = MakeStructureWithConditionalValueView(&values[0], 1);
   EXPECT_FALSE(view.Ok());
   EXPECT_FALSE(view.x().Ok());
+#if EMBOSS_CHECK_ABORTS
   EXPECT_DEATH(view.two_x().Read(), "");
+#endif  // EMBOSS_CHECK_ABORTS
   EXPECT_EQ(0, view.two_x().UncheckedRead());
 }