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

Unified Diff: mojo/dart/dart_snapshotter/test/dart_snapshotter_test.py

Issue 1273743005: Dart: Adds a program to create snapshots of Mojo apps. (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: Fix asan build Created 5 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 | « mojo/dart/dart_snapshotter/main.cc ('k') | mojo/dart/dart_snapshotter/vm.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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())
« no previous file with comments | « mojo/dart/dart_snapshotter/main.cc ('k') | mojo/dart/dart_snapshotter/vm.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698