Embedder samples tests

TEST=new test for ci

Change-Id: I982583ef21c5907bde1dcbc1c34e57c2c0fae770
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/398902
Reviewed-by: Slava Egorov <vegorov@google.com>
Commit-Queue: Ivan Inozemtsev <iinozemtsev@google.com>
diff --git a/BUILD.gn b/BUILD.gn
index b3a28c4..e3833e7 100644
--- a/BUILD.gn
+++ b/BUILD.gn
@@ -52,6 +52,7 @@
     "runtime/bin:process_test",
     "runtime/bin:run_vm_tests",
     "runtime/vm:kernel_platform_files($host_toolchain)",
+    "samples/embedder:all",
     "samples/ffi/http:fake_http",
     "utils/dartdev:dartdev",
     "utils/kernel-service:kernel-service",
diff --git a/runtime/bin/BUILD.gn b/runtime/bin/BUILD.gn
index 447400f..d3c4e8d 100644
--- a/runtime/bin/BUILD.gn
+++ b/runtime/bin/BUILD.gn
@@ -1203,6 +1203,20 @@
     ":libdart_builtin",
     "..:libdart_jit",
   ]
+
+  if (is_win) {
+    libs = [
+      # ole32.dll contains CoTaskMemAlloc. Here so that package:ffi can look
+      # CoTaskMemAlloc up with `DynamicLibrary.process()`.
+      "ole32.lib",
+      "iphlpapi.lib",
+      "psapi.lib",
+      "ws2_32.lib",
+      "Rpcrt4.lib",
+      "shlwapi.lib",
+      "winmm.lib",
+    ]
+  }
 }
 
 static_library("dart_embedder_runtime_jit") {
diff --git a/runtime/tools/entitlements/run_kernel.plist b/runtime/tools/entitlements/run_kernel.plist
new file mode 100644
index 0000000..eeda4be
--- /dev/null
+++ b/runtime/tools/entitlements/run_kernel.plist
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+    <dict>
+        <key>com.apple.security.cs.allow-jit</key>
+        <true/>
+        <key>com.apple.security.cs.disable-library-validation</key>
+        <true/>
+    </dict>
+</plist>
\ No newline at end of file
diff --git a/tests/standalone/embedder_samples_test.dart b/tests/standalone/embedder_samples_test.dart
new file mode 100644
index 0000000..f7a396d
--- /dev/null
+++ b/tests/standalone/embedder_samples_test.dart
@@ -0,0 +1,23 @@
+import 'dart:io';
+
+import 'package:expect/expect.dart';
+
+void main() {
+  final executable = Platform.executable;
+  final outDir = executable.substring(0, executable.lastIndexOf('dart'));
+
+  final runKernelExecutable = outDir + 'run_kernel';
+
+  final result = Process.runSync(runKernelExecutable, []);
+  Expect.equals(
+    0,
+    result.exitCode,
+    'process failed:\n'
+    '  exit code: ${result.exitCode}\n'
+    '  -- stdout --\n'
+    '${result.stdout}'
+    '  -- stderr --\n'
+    '${result.stderr}\n'
+    '  ------------',
+  );
+}