diff options
author | 2015-09-04 19:13:47 +0000 | |
---|---|---|
committer | 2015-09-08 09:02:28 +0000 | |
commit | 5a94e59f02833f9142bad9203acd72626b089535 (patch) | |
tree | ddfe00a54a701eff0f74af6e84e5b8cefcef1c93 /src/test/java/com/google/devtools/build/lib/testutil/TestMode.java | |
parent | ab1711b026f8a4915ee2ef2556b2a7dbff18fa63 (diff) |
Refactor Skylark Environment-s
Make Environment-s freezable: Introduce a class Mutability
as a revokable capability to mutate objects in an Environment.
For now, only Environment-s carry this capability.
Make sure that every Mutability is revoked in the same function that creates it,
so no Environment is left open for modification after being created and exported;
exceptions for tests, the shell and initialization contexts.
Unify Environment, SkylarkEnvironment and EvaluationContext into Environment.
Have a notion of Frame for the bindings + parent + mutability.
Replace the updateAndPropagate mechanism by a dynamicFrame.
Simplify ValidationEnvironment, that is now always deduced from the Environment.
--
MOS_MIGRATED_REVID=102363438
Diffstat (limited to 'src/test/java/com/google/devtools/build/lib/testutil/TestMode.java')
-rw-r--r-- | src/test/java/com/google/devtools/build/lib/testutil/TestMode.java | 45 |
1 files changed, 25 insertions, 20 deletions
diff --git a/src/test/java/com/google/devtools/build/lib/testutil/TestMode.java b/src/test/java/com/google/devtools/build/lib/testutil/TestMode.java index 5ec7ac27b2..ea887f9d68 100644 --- a/src/test/java/com/google/devtools/build/lib/testutil/TestMode.java +++ b/src/test/java/com/google/devtools/build/lib/testutil/TestMode.java @@ -14,31 +14,36 @@ package com.google.devtools.build.lib.testutil; import com.google.devtools.build.lib.events.EventHandler; -import com.google.devtools.build.lib.rules.SkylarkModules; import com.google.devtools.build.lib.syntax.Environment; -import com.google.devtools.build.lib.syntax.EvaluationContext; +import com.google.devtools.build.lib.syntax.Mutability; /** * Describes a particular testing mode by determining how the - * appropriate {@code EvaluationContext} has to be created + * appropriate {@code Environment} has to be created */ public abstract class TestMode { - public static final TestMode BUILD = new TestMode() { - @Override - public EvaluationContext createContext(EventHandler eventHandler, Environment environment) - throws Exception { - return EvaluationContext.newBuildContext(eventHandler, environment); - } - }; + public static final TestMode BUILD = + new TestMode() { + @Override + public Environment createEnvironment(EventHandler eventHandler, Environment environment) { + return Environment.builder(Mutability.create("build test")) + .setGlobals(environment == null ? Environment.BUILD : environment.getGlobals()) + .setEventHandler(eventHandler) + .build(); + } + }; - public static final TestMode SKYLARK = new TestMode() { - @Override - public EvaluationContext createContext(EventHandler eventHandler, Environment environment) - throws Exception { - return SkylarkModules.newEvaluationContext(eventHandler); - } - }; + public static final TestMode SKYLARK = + new TestMode() { + @Override + public Environment createEnvironment(EventHandler eventHandler, Environment environment) { + return Environment.builder(Mutability.create("skylark test")) + .setSkylark() + .setGlobals(environment == null ? Environment.SKYLARK : environment.getGlobals()) + .setEventHandler(eventHandler) + .build(); + } + }; - public abstract EvaluationContext createContext( - EventHandler eventHandler, Environment environment) throws Exception; -}
\ No newline at end of file + public abstract Environment createEnvironment(EventHandler eventHandler, Environment environment); +} |