|  | #!/usr/bin/env python | 
|  | # | 
|  | # Copyright (c) 2011, the Dart project authors.  Please see the AUTHORS file | 
|  | # for details. All rights reserved. Use of this source code is governed by a | 
|  | # BSD-style license that can be found in the LICENSE file. | 
|  | # | 
|  |  | 
|  | """Unit tests for make_bundle.py.""" | 
|  |  | 
|  | import os | 
|  | from os import path | 
|  | import shutil | 
|  | import subprocess | 
|  | import sys | 
|  | import tempfile | 
|  | import unittest | 
|  |  | 
|  | import make_bundle | 
|  |  | 
|  |  | 
|  | class BundleMakerTest(unittest.TestCase): | 
|  | """Unit test class for BundleMaker.""" | 
|  |  | 
|  | def setUp(self): | 
|  | self._tempdir = tempfile.mkdtemp() | 
|  | self._top_dir = path.normpath(path.join(path.dirname(sys.argv[0]), | 
|  | os.pardir)) | 
|  | self._dest = path.join(self._tempdir, 'new_bundle') | 
|  |  | 
|  | def tearDown(self): | 
|  | shutil.rmtree(self._tempdir) | 
|  |  | 
|  | def testBuildOptions(self): | 
|  | op = make_bundle.BundleMaker.BuildOptions() | 
|  | op.parse_args(args=[]) | 
|  |  | 
|  | def testCheckOptions(self): | 
|  | op = make_bundle.BundleMaker.BuildOptions() | 
|  | options = make_bundle.BundleMaker.CheckOptions(op, self._top_dir, | 
|  | ['--dest', self._dest]) | 
|  | self.failUnless(path.exists(self._dest)) | 
|  | os.rmdir(self._dest) | 
|  | self.assertEquals(self._dest, options['dest']) | 
|  | self.assertEquals(self._top_dir, options['top_dir']) | 
|  | self.failIf(options['verbose']) | 
|  | self.failIf(options['skip_build']) | 
|  | options = make_bundle.BundleMaker.CheckOptions(op, self._top_dir, | 
|  | ['--dest', self._dest, '-v']) | 
|  | self.failUnless(path.exists(self._dest)) | 
|  | self.assertEquals(self._dest, options['dest']) | 
|  | self.assertEquals(self._top_dir, options['top_dir']) | 
|  | self.failUnless(options['verbose']) | 
|  | self.failIf(options['skip_build']) | 
|  |  | 
|  | def _RunCommand(self, *args): | 
|  | proc = subprocess.Popen(args, | 
|  | cwd=self._dest, | 
|  | stdout=subprocess.PIPE, | 
|  | stderr=subprocess.STDOUT) | 
|  | stdout = proc.communicate()[0] | 
|  | self.assertEqual(0, proc.wait(), msg='%s\n%s' % (' '.join(args), stdout)) | 
|  |  | 
|  | def testMakeBundle(self): | 
|  | os.mkdir(self._dest) | 
|  | maker = make_bundle.BundleMaker(dest=self._dest, top_dir=self._top_dir) | 
|  | self.assertEquals(0, maker.MakeBundle()) | 
|  | commands = [ | 
|  | './dart samples/hello.dart', | 
|  | './dart samples/deltablue.dart', | 
|  | './dart samples/mandelbrot.dart', | 
|  | './dart samples/towers.dart', | 
|  | ] | 
|  | for command in commands: | 
|  | args = command.split(' ') | 
|  | self._RunCommand(*args) | 
|  | args.append('--arch=dartc') | 
|  | self._RunCommand(*args) | 
|  |  | 
|  |  | 
|  | if __name__ == '__main__': | 
|  | unittest.main() |