Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1222)

Unified Diff: runtime/vm/service_test.cc

Issue 2223913002: Add an API for setting the sticky error (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: asiva review Created 4 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « runtime/vm/isolate.cc ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: runtime/vm/service_test.cc
diff --git a/runtime/vm/service_test.cc b/runtime/vm/service_test.cc
index c272b4c1951c66fce40c1c4f2fceb3d0ee1388c2..4ec886de87f853660ced8c210d57ad0e4c28015d 100644
--- a/runtime/vm/service_test.cc
+++ b/runtime/vm/service_test.cc
@@ -115,6 +115,50 @@ static RawClass* GetClass(const Library& lib, const char* name) {
}
+TEST_CASE(Service_IsolateStickyError) {
+ const char* kScript =
+ "main() => throw 'HI THERE STICKY';\n";
+
+ Isolate* isolate = thread->isolate();
+ isolate->set_is_runnable(true);
+ Dart_Handle lib = TestCase::LoadTestScript(kScript, NULL);
+ EXPECT_VALID(lib);
+ Library& vmlib = Library::Handle();
+ vmlib ^= Api::UnwrapHandle(lib);
+ EXPECT(!vmlib.IsNull());
+ Dart_Handle result = Dart_Invoke(lib, NewString("main"), 0, NULL);
+ EXPECT(Dart_IsUnhandledExceptionError(result));
+ EXPECT(!Dart_HasStickyError());
+ EXPECT(Thread::Current()->sticky_error() == Error::null());
+
+ {
+ TransitionNativeToVM transition(thread);
+
+ JSONStream js;
+ isolate->PrintJSON(&js, false);
+ // No error property and no PauseExit state.
+ EXPECT_NOTSUBSTRING("\"error\":", js.ToCString());
+ EXPECT_NOTSUBSTRING("HI THERE STICKY", js.ToCString());
+ EXPECT_NOTSUBSTRING("PauseExit", js.ToCString());
+ }
+
+ // Set the sticky error.
+ Dart_SetStickyError(result);
+ EXPECT(Dart_HasStickyError());
+
+ {
+ TransitionNativeToVM transition(thread);
+
+ JSONStream js;
+ isolate->PrintJSON(&js, false);
+ // Error and PauseExit set.
+ EXPECT_SUBSTRING("\"error\":", js.ToCString());
+ EXPECT_SUBSTRING("HI THERE STICKY", js.ToCString());
+ EXPECT_SUBSTRING("PauseExit", js.ToCString());
+ }
+}
+
+
TEST_CASE(Service_IdZones) {
Zone* zone = thread->zone();
Isolate* isolate = thread->isolate();
« no previous file with comments | « runtime/vm/isolate.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698