Index: mojo/dart/dart_snapshotter/test/dart_snapshotter_test.py |
diff --git a/mojo/dart/dart_snapshotter/test/dart_snapshotter_test.py b/mojo/dart/dart_snapshotter/test/dart_snapshotter_test.py |
new file mode 100755 |
index 0000000000000000000000000000000000000000..f72f0185e2cb37621cb4856291747203e6c65fe5 |
--- /dev/null |
+++ b/mojo/dart/dart_snapshotter/test/dart_snapshotter_test.py |
@@ -0,0 +1,83 @@ |
+#!/usr/bin/env python |
+# Copyright 2015 The Chromium Authors. All rights reserved. |
+# Use of this source code is governed by a BSD-style license that can be |
+# found in the LICENSE file. |
+ |
+import argparse |
+import hashlib |
+import os |
+import subprocess |
+import sys |
+import tempfile |
+ |
+SNAPSHOT_TEST_DIR = os.path.dirname(os.path.abspath(__file__)) |
+SRC_ROOT = os.path.dirname(os.path.dirname(os.path.dirname(os.path.dirname( |
+ SNAPSHOT_TEST_DIR)))) |
+DART_DIR = os.path.join(SRC_ROOT, 'dart') |
+ |
+VM_SNAPSHOT_FILES=[ |
+ # Header files. |
+ 'datastream.h', |
+ 'object.h', |
+ 'raw_object.h', |
+ 'snapshot.h', |
+ 'snapshot_ids.h', |
+ 'symbols.h', |
+ # Source files. |
+ 'dart.cc', |
+ 'dart_api_impl.cc', |
+ 'object.cc', |
+ 'raw_object.cc', |
+ 'raw_object_snapshot.cc', |
+ 'snapshot.cc', |
+ 'symbols.cc', |
+] |
+ |
+def makeSnapshotHashString(): |
+ vmhash = hashlib.md5() |
+ for vmfilename in VM_SNAPSHOT_FILES: |
+ vmfilepath = os.path.join(DART_DIR, 'runtime', 'vm', vmfilename) |
+ with open(vmfilepath) as vmfile: |
+ vmhash.update(vmfile.read()) |
+ return vmhash.hexdigest() |
+ |
+def main(): |
+ parser = argparse.ArgumentParser(description='Tests Dart snapshotting') |
+ parser.add_argument("--build-dir", |
+ dest="build_dir", |
+ metavar="<build-directory>", |
+ type=str, |
+ required=True, |
+ help="The directory containing the Mojo build.") |
+ args = parser.parse_args() |
+ dart_snapshotter = os.path.join(args.build_dir, 'dart_snapshotter') |
+ package_root = os.path.join(args.build_dir, 'gen', 'dart-pkg', 'packages') |
+ main_dart = os.path.join( |
+ args.build_dir, 'gen', 'dart-pkg', 'mojo_dart_hello', 'main.dart') |
+ snapshot = tempfile.mktemp() |
+ |
+ if not os.path.isfile(dart_snapshotter): |
+ print "file not found: " + dart_snapshotter |
+ return 1 |
+ subprocess.check_call([ |
+ dart_snapshotter, |
+ main_dart, |
+ '--package-root=%s' % package_root, |
+ '--snapshot=%s' % snapshot, |
+ ]) |
+ if not os.path.isfile(snapshot): |
+ return 1 |
+ |
+ expected_hash = makeSnapshotHashString() |
+ actual_hash = "" |
+ with open(snapshot) as snapshot_file: |
+ snapshot_file.seek(16) |
+ actual_hash = snapshot_file.read(32) |
+ if not actual_hash == expected_hash: |
+ print ('wrong hash: actual = %s, expected = %s' |
+ % (actual_hash, expected_hash)) |
+ return 1 |
+ return 0 |
+ |
+if __name__ == '__main__': |
+ sys.exit(main()) |