Remove overlap between the blazerc and bazelrc names.

Bazel now has its own subclass of StartupOptions to specify bazel-only options. This is needed for https://github.com/bazelbuild/bazel/issues/4502.

RELNOTES(INC): No longer accepts --blazerc or --[no]master_blazerc, accepts bazelrc name only.

PiperOrigin-RevId: 193718297
diff --git a/src/test/cpp/bazel_startup_options_test.cc b/src/test/cpp/bazel_startup_options_test.cc
new file mode 100644
index 0000000..2ac4c7f
--- /dev/null
+++ b/src/test/cpp/bazel_startup_options_test.cc
@@ -0,0 +1,114 @@
+// Copyright 2018 The Bazel Authors. All rights reserved.
+//
+// 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 the License at
+//
+//    http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+#include "src/main/cpp/bazel_startup_options.h"
+
+#include <stdlib.h>
+
+#include "src/main/cpp/blaze_util_platform.h"
+#include "src/main/cpp/workspace_layout.h"
+#include "src/test/cpp/test_util.h"
+#include "googletest/include/gtest/gtest.h"
+
+namespace blaze {
+
+class BazelStartupOptionsTest : public ::testing::Test {
+ protected:
+  BazelStartupOptionsTest() : workspace_layout_(new WorkspaceLayout()) {}
+  ~BazelStartupOptionsTest() = default;
+
+  void SetUp() override {
+    // This knowingly ignores the possibility of these environment variables
+    // being unset because we expect our test runner to set them in all cases.
+    // Otherwise, we'll crash here, but this keeps our code simpler.
+    old_test_tmpdir_ = GetEnv("TEST_TMPDIR");
+
+    ReinitStartupOptions();
+  }
+
+  void TearDown() override { SetEnv("TEST_TMPDIR", old_test_tmpdir_); }
+
+  // Recreates startup_options_ after changes to the environment.
+  void ReinitStartupOptions() {
+    startup_options_.reset(new BazelStartupOptions(workspace_layout_.get()));
+  }
+
+ private:
+  std::unique_ptr<WorkspaceLayout> workspace_layout_;
+
+ protected:
+  std::unique_ptr<BazelStartupOptions> startup_options_;
+
+ private:
+  std::string old_test_tmpdir_;
+};
+
+TEST_F(BazelStartupOptionsTest, ProductName) {
+  ASSERT_EQ("Bazel", startup_options_->product_name);
+}
+
+TEST_F(BazelStartupOptionsTest, JavaLoggingOptions) {
+  ASSERT_EQ("com.google.devtools.build.lib.util.SingleLineFormatter",
+            startup_options_->java_logging_formatter);
+}
+
+TEST_F(BazelStartupOptionsTest, EmptyFlagsAreInvalid) {
+  EXPECT_FALSE(startup_options_->IsNullary(""));
+  EXPECT_FALSE(startup_options_->IsNullary("--"));
+  EXPECT_FALSE(startup_options_->IsUnary(""));
+  EXPECT_FALSE(startup_options_->IsUnary("--"));
+}
+
+// TODO(#4502 related cleanup) This test serves as a catalog of the valid
+// options - make this test check that the list is complete, that no options are
+// missing.
+TEST_F(BazelStartupOptionsTest, ValidStartupFlags) {
+  // IMPORTANT: Before modifying this test, please contact a Bazel core team
+  // member that knows the Google-internal procedure for adding/deprecating
+  // startup flags.
+  const StartupOptions* options = startup_options_.get();
+  ExpectIsNullaryOption(options, "batch");
+  ExpectIsNullaryOption(options, "batch_cpu_scheduling");
+  ExpectIsNullaryOption(options, "block_for_lock");
+  ExpectIsNullaryOption(options, "client_debug");
+  ExpectIsNullaryOption(options, "deep_execroot");
+  ExpectIsNullaryOption(options, "experimental_oom_more_eagerly");
+  ExpectIsNullaryOption(options, "fatal_event_bus_exceptions");
+  ExpectIsNullaryOption(options, "host_jvm_debug");
+  ExpectIsNullaryOption(options, "master_bazelrc");
+  ExpectIsNullaryOption(options, "watchfs");
+  ExpectIsNullaryOption(options, "write_command_log");
+  ExpectIsUnaryOption(options, "bazelrc");
+  ExpectIsUnaryOption(options, "command_port");
+  ExpectIsUnaryOption(options, "connect_timeout_secs");
+  ExpectIsUnaryOption(options, "experimental_oom_more_eagerly_threshold");
+  ExpectIsUnaryOption(options, "host_javabase");
+  ExpectIsUnaryOption(options, "host_jvm_args");
+  ExpectIsUnaryOption(options, "host_jvm_profile");
+  ExpectIsUnaryOption(options, "invocation_policy");
+  ExpectIsUnaryOption(options, "io_nice_level");
+  ExpectIsUnaryOption(options, "install_base");
+  ExpectIsUnaryOption(options, "max_idle_secs");
+  ExpectIsUnaryOption(options, "output_base");
+  ExpectIsUnaryOption(options, "output_user_root");
+}
+
+TEST_F(BazelStartupOptionsTest, BlazercFlagsAreNotAccepted) {
+  EXPECT_FALSE(startup_options_->IsNullary("--master_blazerc"));
+  EXPECT_FALSE(startup_options_->IsUnary("--master_blazerc"));
+  EXPECT_FALSE(startup_options_->IsNullary("--blazerc"));
+  EXPECT_FALSE(startup_options_->IsUnary("--blazerc"));
+}
+
+}  // namespace blaze