56 import jdk.jshell.MethodSnippet;
57 import jdk.jshell.PersistentSnippet;
58 import jdk.jshell.Snippet.Status;
59 import jdk.jshell.Snippet.SubKind;
60 import jdk.jshell.TypeDeclSnippet;
61 import jdk.jshell.VarSnippet;
62 import jdk.jshell.SnippetEvent;
63 import jdk.jshell.SourceCodeAnalysis;
64 import jdk.jshell.SourceCodeAnalysis.CompletionInfo;
65 import jdk.jshell.SourceCodeAnalysis.Completeness;
66 import jdk.jshell.SourceCodeAnalysis.QualifiedNames;
67 import jdk.jshell.SourceCodeAnalysis.Suggestion;
68 import jdk.jshell.UnresolvedReferenceException;
69 import org.testng.annotations.AfterMethod;
70 import org.testng.annotations.BeforeMethod;
71
72 import jdk.jshell.Diag;
73 import static jdk.jshell.Snippet.Status.*;
74 import static org.testng.Assert.*;
75 import static jdk.jshell.Snippet.SubKind.METHOD_SUBKIND;
76 import jdk.jshell.spi.ExecutionControl;
77
78 public class KullaTesting {
79
80 public static final String IGNORE_VALUE = "<ignore-value>";
81 public static final Class<? extends Throwable> IGNORE_EXCEPTION = (new Throwable() {}).getClass();
82 public static final Snippet MAIN_SNIPPET;
83
84 private SourceCodeAnalysis analysis = null;
85 private JShell state = null;
86 private TestingInputStream inStream = null;
87 private ByteArrayOutputStream outStream = null;
88 private ByteArrayOutputStream errStream = null;
89
90 private Map<String, Snippet> idToSnippet = new LinkedHashMap<>();
91 private Set<Snippet> allSnippets = new LinkedHashSet<>();
92 private List<String> classpath;
93
94 static {
95 JShell js = JShell.create();
96 MAIN_SNIPPET = js.eval("MAIN_SNIPPET").get(0).snippet();
139 }
140
141 public List<Snippet> getActiveKeys() {
142 return allSnippets.stream()
143 .filter(k -> getState().status(k).isActive())
144 .collect(Collectors.toList());
145 }
146
147 public void addToClasspath(String path) {
148 classpath.add(path);
149 getState().addToClasspath(path);
150 }
151
152 public void addToClasspath(Path path) {
153 addToClasspath(path.toString());
154 }
155
156 @BeforeMethod
157 public void setUp() {
158 setUp(b -> {});
159 }
160
161 public void setUp(ExecutionControl ec) {
162 setUp(b -> b.executionEngine(ec));
163 }
164
165 public void setUp(Consumer<JShell.Builder> bc) {
166 inStream = new TestingInputStream();
167 outStream = new ByteArrayOutputStream();
168 errStream = new ByteArrayOutputStream();
169 JShell.Builder builder = JShell.builder()
170 .in(inStream)
171 .out(new PrintStream(outStream))
172 .err(new PrintStream(errStream));
173 bc.accept(builder);
174 state = builder.build();
175 allSnippets = new LinkedHashSet<>();
176 idToSnippet = new LinkedHashMap<>();
177 classpath = new ArrayList<>();
178 }
179
180 @AfterMethod
181 public void tearDown() {
182 if (state != null) state.close();
|
56 import jdk.jshell.MethodSnippet;
57 import jdk.jshell.PersistentSnippet;
58 import jdk.jshell.Snippet.Status;
59 import jdk.jshell.Snippet.SubKind;
60 import jdk.jshell.TypeDeclSnippet;
61 import jdk.jshell.VarSnippet;
62 import jdk.jshell.SnippetEvent;
63 import jdk.jshell.SourceCodeAnalysis;
64 import jdk.jshell.SourceCodeAnalysis.CompletionInfo;
65 import jdk.jshell.SourceCodeAnalysis.Completeness;
66 import jdk.jshell.SourceCodeAnalysis.QualifiedNames;
67 import jdk.jshell.SourceCodeAnalysis.Suggestion;
68 import jdk.jshell.UnresolvedReferenceException;
69 import org.testng.annotations.AfterMethod;
70 import org.testng.annotations.BeforeMethod;
71
72 import jdk.jshell.Diag;
73 import static jdk.jshell.Snippet.Status.*;
74 import static org.testng.Assert.*;
75 import static jdk.jshell.Snippet.SubKind.METHOD_SUBKIND;
76
77 public class KullaTesting {
78
79 public static final String IGNORE_VALUE = "<ignore-value>";
80 public static final Class<? extends Throwable> IGNORE_EXCEPTION = (new Throwable() {}).getClass();
81 public static final Snippet MAIN_SNIPPET;
82
83 private SourceCodeAnalysis analysis = null;
84 private JShell state = null;
85 private TestingInputStream inStream = null;
86 private ByteArrayOutputStream outStream = null;
87 private ByteArrayOutputStream errStream = null;
88
89 private Map<String, Snippet> idToSnippet = new LinkedHashMap<>();
90 private Set<Snippet> allSnippets = new LinkedHashSet<>();
91 private List<String> classpath;
92
93 static {
94 JShell js = JShell.create();
95 MAIN_SNIPPET = js.eval("MAIN_SNIPPET").get(0).snippet();
138 }
139
140 public List<Snippet> getActiveKeys() {
141 return allSnippets.stream()
142 .filter(k -> getState().status(k).isActive())
143 .collect(Collectors.toList());
144 }
145
146 public void addToClasspath(String path) {
147 classpath.add(path);
148 getState().addToClasspath(path);
149 }
150
151 public void addToClasspath(Path path) {
152 addToClasspath(path.toString());
153 }
154
155 @BeforeMethod
156 public void setUp() {
157 setUp(b -> {});
158 }
159
160 public void setUp(Consumer<JShell.Builder> bc) {
161 inStream = new TestingInputStream();
162 outStream = new ByteArrayOutputStream();
163 errStream = new ByteArrayOutputStream();
164 JShell.Builder builder = JShell.builder()
165 .in(inStream)
166 .out(new PrintStream(outStream))
167 .err(new PrintStream(errStream));
168 bc.accept(builder);
169 state = builder.build();
170 allSnippets = new LinkedHashSet<>();
171 idToSnippet = new LinkedHashMap<>();
172 classpath = new ArrayList<>();
173 }
174
175 @AfterMethod
176 public void tearDown() {
177 if (state != null) state.close();
|