bazel packages: simplify WorkspaceFactory.execute

- remove parseForTesting method
- remove unnecessary StoredEventHandler and call
  to handler.clear(). It is now local.

In WFTestHelper: ("helper" is OOP jargon for "junk")
- skip writing WORKSPACE to file system
- remove unused methods and fields.

PiperOrigin-RevId: 331595501
diff --git a/src/main/java/com/google/devtools/build/lib/packages/WorkspaceFactory.java b/src/main/java/com/google/devtools/build/lib/packages/WorkspaceFactory.java
index dadcacd..fcb462f 100644
--- a/src/main/java/com/google/devtools/build/lib/packages/WorkspaceFactory.java
+++ b/src/main/java/com/google/devtools/build/lib/packages/WorkspaceFactory.java
@@ -14,12 +14,9 @@
 
 package com.google.devtools.build.lib.packages;
 
-import com.google.common.annotations.VisibleForTesting;
-import com.google.common.base.Preconditions;
 import com.google.common.collect.ImmutableList;
 import com.google.common.collect.ImmutableMap;
 import com.google.common.collect.ImmutableSortedSet;
-import com.google.devtools.build.lib.cmdline.LabelConstants;
 import com.google.devtools.build.lib.cmdline.LabelSyntaxException;
 import com.google.devtools.build.lib.cmdline.RepositoryName;
 import com.google.devtools.build.lib.events.Event;
@@ -32,7 +29,6 @@
 import com.google.devtools.build.lib.syntax.EvalException;
 import com.google.devtools.build.lib.syntax.Module;
 import com.google.devtools.build.lib.syntax.Mutability;
-import com.google.devtools.build.lib.syntax.ParserInput;
 import com.google.devtools.build.lib.syntax.Printer;
 import com.google.devtools.build.lib.syntax.Program;
 import com.google.devtools.build.lib.syntax.Starlark;
@@ -44,8 +40,6 @@
 import com.google.devtools.build.lib.syntax.Tuple;
 import com.google.devtools.build.lib.vfs.Path;
 import com.google.devtools.build.lib.vfs.PathFragment;
-import com.google.devtools.build.lib.vfs.Root;
-import com.google.devtools.build.lib.vfs.RootedPath;
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
@@ -109,50 +103,13 @@
             allowOverride, ruleFactory, this.workspaceGlobals, starlarkSemantics);
   }
 
-  // TODO(adonovan): move this into the test. It doesn't need privileged access,
-  // and it's called exactly once (!).
-  @VisibleForTesting
-  void parseForTesting(ParserInput source, @Nullable StoredEventHandler localReporter)
-      throws BuildFileContainsErrorsException, InterruptedException {
-    if (localReporter == null) {
-      localReporter = new StoredEventHandler();
-    }
-
-    StarlarkFile file = StarlarkFile.parse(source); // use default options in tests
-    if (!file.ok()) {
-      Event.replayEventsOn(localReporter, file.errors());
-      throw new BuildFileContainsErrorsException(
-          LabelConstants.EXTERNAL_PACKAGE_IDENTIFIER, "Failed to parse " + source.getFile());
-    }
-    execute(
-        file,
-        /* additionalLoadedModules= */ ImmutableMap.of(),
-        localReporter,
-        WorkspaceFileValue.key(
-            RootedPath.toRootedPath(
-                Root.fromPath(workspaceDir), PathFragment.create(source.getFile()))));
-  }
-
   /**
    * Actually runs through the AST, calling the functions in the WORKSPACE file and adding rules to
    * the //external package.
    */
   public void execute(
       StarlarkFile file, // becomes resolved as a side effect
-      Map<String, Module> loadedModules,
-      WorkspaceFileValue.WorkspaceFileKey workspaceFileKey)
-      throws InterruptedException {
-    Preconditions.checkNotNull(file);
-    Preconditions.checkNotNull(loadedModules);
-    // TODO(adonovan): What's up with the transient StoredEventHandler?
-    // Doesn't this discard events, including print statements?
-    execute(file, loadedModules, new StoredEventHandler(), workspaceFileKey);
-  }
-
-  private void execute(
-      StarlarkFile file, // becomes resolved as a side effect
       Map<String, Module> additionalLoadedModules,
-      StoredEventHandler localReporter,
       WorkspaceFileValue.WorkspaceFileKey workspaceFileKey)
       throws InterruptedException {
     loadedModules.putAll(additionalLoadedModules);
@@ -163,6 +120,7 @@
     predeclared.putAll(bindings); // (may shadow bindings in default environment)
     Module module = Module.withPredeclared(starlarkSemantics, predeclared);
 
+    StoredEventHandler localReporter = new StoredEventHandler();
     try {
       // compile
       Program prog = Program.compileFile(file, module);
@@ -215,7 +173,6 @@
     if (localReporter.hasErrors()) {
       builder.setContainsErrors();
     }
-    localReporter.clear();
   }
 
   /**
diff --git a/src/test/java/com/google/devtools/build/lib/packages/BUILD b/src/test/java/com/google/devtools/build/lib/packages/BUILD
index fa3605c..ae38003 100644
--- a/src/test/java/com/google/devtools/build/lib/packages/BUILD
+++ b/src/test/java/com/google/devtools/build/lib/packages/BUILD
@@ -23,9 +23,7 @@
         "//src/main/java/com/google/devtools/build/lib:syntax",
         "//src/main/java/com/google/devtools/build/lib/events",
         "//src/main/java/com/google/devtools/build/lib/packages",
-        "//src/main/java/com/google/devtools/build/lib/packages/semantics",
         "//src/main/java/com/google/devtools/build/lib/vfs",
-        "//src/main/java/com/google/devtools/common/options",
         "//src/test/java/com/google/devtools/build/lib/testutil",
         "//third_party:guava",
         "//third_party:junit4",
diff --git a/src/test/java/com/google/devtools/build/lib/packages/WorkspaceFactoryTestHelper.java b/src/test/java/com/google/devtools/build/lib/packages/WorkspaceFactoryTestHelper.java
index 6a80fd3..5a862d6 100644
--- a/src/test/java/com/google/devtools/build/lib/packages/WorkspaceFactoryTestHelper.java
+++ b/src/test/java/com/google/devtools/build/lib/packages/WorkspaceFactoryTestHelper.java
@@ -17,29 +17,26 @@
 import static com.google.common.truth.Truth.assertThat;
 import static org.junit.Assert.fail;
 
+import com.google.common.base.Joiner;
 import com.google.common.collect.ImmutableList;
+import com.google.common.collect.ImmutableMap;
 import com.google.devtools.build.lib.events.Event;
-import com.google.devtools.build.lib.events.StoredEventHandler;
 import com.google.devtools.build.lib.packages.Package.Builder.DefaultPackageSettings;
-import com.google.devtools.build.lib.packages.semantics.BuildLanguageOptions;
 import com.google.devtools.build.lib.syntax.Mutability;
 import com.google.devtools.build.lib.syntax.ParserInput;
+import com.google.devtools.build.lib.syntax.StarlarkFile;
 import com.google.devtools.build.lib.syntax.StarlarkSemantics;
 import com.google.devtools.build.lib.testutil.TestRuleClassProvider;
-import com.google.devtools.build.lib.vfs.FileSystemUtils;
 import com.google.devtools.build.lib.vfs.Path;
 import com.google.devtools.build.lib.vfs.Root;
 import com.google.devtools.build.lib.vfs.RootedPath;
-import com.google.devtools.common.options.OptionsParser;
-import java.io.IOException;
 import java.util.List;
 
 /** Parses a WORKSPACE file with the given content. */
-class WorkspaceFactoryTestHelper {
+// TODO(adonovan): delete this junk class.
+final class WorkspaceFactoryTestHelper {
   private final Root root;
   private Package.Builder builder;
-  private Exception exception;
-  private ImmutableList<Event> events;
   private StarlarkSemantics starlarkSemantics;
 
   private final boolean allowOverride;
@@ -50,20 +47,21 @@
 
   WorkspaceFactoryTestHelper(boolean allowOverride, Root root) {
     this.root = root;
-    this.exception = null;
-    this.events = null;
     this.allowOverride = allowOverride;
     this.starlarkSemantics = StarlarkSemantics.DEFAULT;
   }
 
   void parse(String... args) {
+    // parse
     Path workspaceFilePath = root.getRelative("WORKSPACE");
-    try {
-      FileSystemUtils.writeIsoLatin1(workspaceFilePath, args);
-    } catch (IOException e) {
-      fail("Shouldn't happen: " + e.getMessage());
+    StarlarkFile file =
+        StarlarkFile.parse(ParserInput.fromString(Joiner.on("\n").join(args), "WORKSPACE"));
+    if (!file.ok()) {
+      fail("parse failed: " + file.errors());
+      return;
     }
-    StoredEventHandler eventHandler = new StoredEventHandler();
+
+    // execute
     builder =
         Package.newExternalPackageBuilder(
             DefaultPackageSettings.INSTANCE,
@@ -81,50 +79,23 @@
             root.asPath(),
             /* defaultSystemJavabaseDir= */ null,
             starlarkSemantics);
-    Exception exception = null;
     try {
-      byte[] bytes =
-          FileSystemUtils.readWithKnownFileSize(workspaceFilePath, workspaceFilePath.getFileSize());
-      factory.parseForTesting(
-          ParserInput.fromLatin1(bytes, workspaceFilePath.toString()), eventHandler);
-    } catch (BuildFileContainsErrorsException e) {
-      exception = e;
-    } catch (IOException | InterruptedException e) {
+      factory.execute(
+          file,
+          /* additionalLoadedModules= */ ImmutableMap.of(),
+          WorkspaceFileValue.key(RootedPath.toRootedPath(root, workspaceFilePath)));
+    } catch (InterruptedException e) {
       fail("Shouldn't happen: " + e.getMessage());
     }
-    this.events = eventHandler.getEvents();
-    this.exception = exception;
   }
 
-  public Package getPackage() throws InterruptedException, NoSuchPackageException {
+  Package getPackage() throws InterruptedException, NoSuchPackageException {
     return builder.build();
   }
 
-  public void assertLexingExceptionThrown() {
-    assertThat(exception).isNotNull();
-    assertThat(exception).hasMessageThat().contains("Failed to parse /WORKSPACE");
-  }
-
-  public String getLexerError() {
-    assertThat(events).hasSize(1);
-    return events.get(0).getMessage();
-  }
-
-  public String getParserError() {
+  String getParserError() {
     List<Event> events = builder.getEvents();
     assertThat(events.size()).isGreaterThan(0);
     return events.get(0).getMessage();
   }
-
-  protected void setStarlarkSemantics(String... options) throws Exception {
-    starlarkSemantics = parseBuildLanguageOptions(options);
-  }
-
-  private static StarlarkSemantics parseBuildLanguageOptions(String... options) throws Exception {
-    OptionsParser parser =
-        OptionsParser.builder().optionsClasses(BuildLanguageOptions.class).build();
-    parser.parse(options);
-    return parser.getOptions(BuildLanguageOptions.class).toStarlarkSemantics();
-  }
-
 }