diff --git a/.travis.yml b/.travis.yml index 169eacda8d..6d38aa0d41 100644 --- a/.travis.yml +++ b/.travis.yml @@ -2,6 +2,13 @@ language: dart sudo: false dart: - stable +addons: + apt: + sources: + - ubuntu-toolchain-r-test + packages: + - gcc-4.8 + - g++-4.8 before_script: - ./travis/setup.sh script: diff --git a/dev/run_tests b/dev/run_tests new file mode 100755 index 0000000000..9c5f729538 --- /dev/null +++ b/dev/run_tests @@ -0,0 +1,43 @@ +#!/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 os +import sys +import subprocess +import argparse + +FLUTTER_ROOT = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) +FLUTTER = os.path.join(FLUTTER_ROOT, 'bin', 'flutter') + +UNIT_DIR = os.path.join(FLUTTER_ROOT, 'packages', 'unit') +TESTS_DIR = os.path.join(UNIT_DIR, 'test') +DEFAULT_ENGINE_DIR = os.path.abspath(os.path.join(FLUTTER_ROOT, '..', 'engine', 'src')) + +def main(): + parser = argparse.ArgumentParser(description='Runs Flutter unit tests') + parser.add_argument('--engine-dir', default=DEFAULT_ENGINE_DIR) + parser.add_argument('--config', default='Debug') + parser.add_argument('--debug', dest='config', action='store_const', const='Debug') + parser.add_argument('--release', dest='config', action='store_const', const='Release') + args, remaining = parser.parse_known_args() + + build_dir = os.path.join(os.path.abspath(args.engine_dir), 'out', args.config) + + if not remaining: + for root, dirs, files in os.walk(TESTS_DIR): + remaining.extend(os.path.join(root, f) + for f in files if f.endswith("_test.dart")) + + if os.environ['TERM'] == 'dumb': + remaining = [ '--no-color' ] + remaining + + return subprocess.call([ + FLUTTER, + 'test', + '--build-dir=%s' % build_dir + ] + remaining, cwd=UNIT_DIR) + +if __name__ == '__main__': + sys.exit(main()) diff --git a/dev/update_packages.py b/dev/update_packages.py new file mode 100755 index 0000000000..41938591d8 --- /dev/null +++ b/dev/update_packages.py @@ -0,0 +1,20 @@ +#!/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 os +import subprocess + +FLUTTER_ROOT = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) + +def update(directory): + packages = sorted(os.listdir(directory)) + for package in packages: + package_dir = os.path.join(directory, package) + if os.path.isdir(package_dir): + print 'Updating', package, '...' + subprocess.check_call(['pub', 'get'], cwd=package_dir) + +update(os.path.join(FLUTTER_ROOT, 'packages')) +update(os.path.join(FLUTTER_ROOT, 'examples')) diff --git a/examples/.gitignore b/examples/.gitignore new file mode 100644 index 0000000000..5dfbd5b4b5 --- /dev/null +++ b/examples/.gitignore @@ -0,0 +1,8 @@ +.DS_Store +.buildlog +.idea +.packages +.pub/ +build/ +packages +pubspec.lock diff --git a/examples/address_book/pubspec.yaml b/examples/address_book/pubspec.yaml index 46f0b6d3c1..b00179d688 100644 --- a/examples/address_book/pubspec.yaml +++ b/examples/address_book/pubspec.yaml @@ -1,10 +1,4 @@ name: address_book dependencies: - flutter: - '0.0.16' - sky_tools: any -dependency_overrides: - material_design_icons: - path: ../../sky/packages/material_design_icons flutter: - path: ../../sky/packages/sky + path: ../../packages/flutter diff --git a/examples/fitness/pubspec.yaml b/examples/fitness/pubspec.yaml index e9c3ad6635..434a310f65 100644 --- a/examples/fitness/pubspec.yaml +++ b/examples/fitness/pubspec.yaml @@ -1,12 +1,8 @@ name: fitness dependencies: - flutter: - '0.0.16' - playfair: ^0.0.10 + # TODO(abarth): Move playfair into flutter.git + # playfair: ^0.0.10 path: ^1.3.6 - sky_tools: any -dependency_overrides: - material_design_icons: - path: ../../sky/packages/material_design_icons + flutter: - path: ../../sky/packages/sky + path: ../../packages/flutter diff --git a/examples/game/pubspec.yaml b/examples/game/pubspec.yaml index dccb772732..673046d8d0 100644 --- a/examples/game/pubspec.yaml +++ b/examples/game/pubspec.yaml @@ -1,15 +1,6 @@ name: asteroids dependencies: - flutter: - '0.0.16' - sky_tools: any - flutter_sprites: - '0.0.13' - box2d: any -dependency_overrides: - material_design_icons: - path: ../../sky/packages/material_design_icons flutter: - path: ../../sky/packages/sky + path: ../../packages/flutter flutter_sprites: - path: ../../skysprites + path: ../../packages/flutter_sprites diff --git a/examples/hello_world/pubspec.yaml b/examples/hello_world/pubspec.yaml index f823464c00..a61659d2b3 100644 --- a/examples/hello_world/pubspec.yaml +++ b/examples/hello_world/pubspec.yaml @@ -1,10 +1,4 @@ name: hello_world dependencies: - flutter: - '0.0.16' - sky_tools: any -dependency_overrides: - material_design_icons: - path: ../../sky/packages/material_design_icons flutter: - path: ../../sky/packages/sky + path: ../../packages/flutter diff --git a/examples/mine_digger/pubspec.yaml b/examples/mine_digger/pubspec.yaml index 6f5d79a19b..6d88929db9 100644 --- a/examples/mine_digger/pubspec.yaml +++ b/examples/mine_digger/pubspec.yaml @@ -1,10 +1,4 @@ name: mine_digger dependencies: - flutter: - '0.0.16' - sky_tools: any -dependency_overrides: - material_design_icons: - path: ../../sky/packages/material_design_icons flutter: - path: ../../sky/packages/sky + path: ../../packages/flutter diff --git a/examples/raw/pubspec.yaml b/examples/raw/pubspec.yaml index a7b21bc224..758aa8b51a 100644 --- a/examples/raw/pubspec.yaml +++ b/examples/raw/pubspec.yaml @@ -1,10 +1,4 @@ name: sky_raw_examples dependencies: - flutter: - '0.0.16' - sky_tools: any -dependency_overrides: - material_design_icons: - path: ../../sky/packages/material_design_icons flutter: - path: ../../sky/packages/sky + path: ../../packages/flutter diff --git a/examples/rendering/pubspec.yaml b/examples/rendering/pubspec.yaml index b16bbd4949..0cf2e84db4 100644 --- a/examples/rendering/pubspec.yaml +++ b/examples/rendering/pubspec.yaml @@ -1,10 +1,4 @@ name: flutter_rendering_examples dependencies: - flutter: - '0.0.16' - sky_tools: any -dependency_overrides: - material_design_icons: - path: ../../sky/packages/material_design_icons flutter: - path: ../../sky/packages/sky + path: ../../packages/flutter diff --git a/examples/stocks/pubspec.yaml b/examples/stocks/pubspec.yaml index df2eddda98..a48c3431e8 100644 --- a/examples/stocks/pubspec.yaml +++ b/examples/stocks/pubspec.yaml @@ -1,10 +1,4 @@ name: stocks dependencies: - flutter: - '0.0.16' - sky_tools: any -dependency_overrides: - material_design_icons: - path: ../../sky/packages/material_design_icons flutter: - path: ../../sky/packages/sky + path: ../../packages/flutter diff --git a/examples/widgets/pubspec.yaml b/examples/widgets/pubspec.yaml index 05b85568ca..9ae300e3c2 100644 --- a/examples/widgets/pubspec.yaml +++ b/examples/widgets/pubspec.yaml @@ -1,13 +1,6 @@ name: sky_widgets_examples dependencies: - flutter: - '0.0.16' - sky_tools: any - flutter_rendering_examples: any -dependency_overrides: - material_design_icons: - path: ../../sky/packages/material_design_icons flutter: - path: ../../sky/packages/sky + path: ../../packages/flutter flutter_rendering_examples: path: ../rendering diff --git a/packages/flutter/bin/flutter.dart b/packages/flutter/bin/flutter.dart deleted file mode 100644 index 99338de253..0000000000 --- a/packages/flutter/bin/flutter.dart +++ /dev/null @@ -1,7 +0,0 @@ -// 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 'package:sky_tools/executable.dart' as executable; - -main(List args) => executable.main(args); diff --git a/packages/flutter/pubspec.yaml b/packages/flutter/pubspec.yaml index e334c217d1..907ecde8dd 100644 --- a/packages/flutter/pubspec.yaml +++ b/packages/flutter/pubspec.yaml @@ -4,18 +4,16 @@ author: Flutter Authors description: A framework for writing Flutter applications homepage: http://flutter.io dependencies: - cassowary: '>=0.1.7 <0.2.0' intl: '>=0.12.4+2 <0.13.0' material_design_icons: '>=0.0.3 <0.1.0' - newton: '>=0.1.4 <0.2.0' - sky_engine: - '0.0.49' - sky_services: - '0.0.50' - sky_tools: '>=0.0.37 <0.1.0' + sky_engine: 0.0.49 + sky_services: 0.0.50 vector_math: '>=1.4.3 <2.0.0' + + cassowary: + path: ../cassowary + newton: + path: ../newton + environment: sdk: '>=1.12.0 <2.0.0' - -executables: - flutter: diff --git a/packages/flutter_sprites/pubspec.yaml b/packages/flutter_sprites/pubspec.yaml index 137113cb60..5fc7039405 100644 --- a/packages/flutter_sprites/pubspec.yaml +++ b/packages/flutter_sprites/pubspec.yaml @@ -4,6 +4,6 @@ version: 0.0.15 author: Flutter Authors homepage: http://flutter.io dependencies: - flutter: - '0.0.18' - box2d: ">=0.2.0 <0.3.0" + box2d: '>=0.2.0 <0.3.0' + flutter: + path: ../flutter diff --git a/packages/flutter_tools/lib/src/commands/test.dart b/packages/flutter_tools/lib/src/commands/test.dart index 3d70ec38eb..ac10a12b09 100644 --- a/packages/flutter_tools/lib/src/commands/test.dart +++ b/packages/flutter_tools/lib/src/commands/test.dart @@ -19,7 +19,7 @@ class TestCommand extends FlutterCommand { final String description = 'Runs Flutter unit tests for the current project (requires a local build of the engine).'; TestCommand() { - argParser.addOption('build-dir', defaultsTo: '../../../engine/src/out/Debug'); + argParser.addOption('build-dir', help: 'The directory in which to find a prebuilt engine'); } String get _shellPath { diff --git a/packages/flutter_tools/pubspec.yaml b/packages/flutter_tools/pubspec.yaml index 23fa0e7045..6232d603fb 100644 --- a/packages/flutter_tools/pubspec.yaml +++ b/packages/flutter_tools/pubspec.yaml @@ -8,10 +8,9 @@ environment: sdk: '>=1.12.0 <2.0.0' dependencies: - analyzer: ">=0.26.1+17" # see note below + analyzer: '>=0.26.1+17' # see note below archive: ^1.0.20 args: ^0.13.0 - flx: ">=0.0.7 <0.1.0" crypto: ^0.9.1 mustache4dart: ^1.0.0 path: ^1.3.0 @@ -19,6 +18,9 @@ dependencies: test: ^0.12.5 yaml: ^2.1.3 + flx: + path: ../flx + # A note about 'analyzer': # We don't actually depend on 'analyzer', but 'test' does. We aren't # compatible with some older versions of 'analyzer'. We lie here, diff --git a/packages/flx/pubspec.yaml b/packages/flx/pubspec.yaml index 56e9fc0950..3b8517a8cb 100644 --- a/packages/flx/pubspec.yaml +++ b/packages/flx/pubspec.yaml @@ -2,14 +2,14 @@ name: flx version: 0.0.10 author: Flutter Authors description: Library for dealing with Flutter bundle (.flx) files -homepage: http://flutter.io +homepage: https://github.com/flutter/flutter/tree/master/packages/flx dependencies: - sky_services: - '0.0.50' - yaml: ^2.1.3 asn1lib: ^0.4.1 cipher: ^0.7.1 crypto: ^0.9.1 path: ^1.3.0 + sky_services: 0.0.50 + yaml: ^2.1.3 + environment: sdk: '>=1.12.0 <2.0.0' diff --git a/packages/unit/pubspec.yaml b/packages/unit/pubspec.yaml index 71e5c8878a..e0856f5e56 100644 --- a/packages/unit/pubspec.yaml +++ b/packages/unit/pubspec.yaml @@ -1,15 +1,10 @@ -name: sky_unit_tests +name: flutter_unit_tests dependencies: - flutter: - '0.0.16' - sky_tools: any - test: any - quiver: any - flx: ^0.0.2 -dependency_overrides: - material_design_icons: - path: ../packages/material_design_icons - flutter: - path: ../packages/sky + test: ^0.12.5 + quiver: ^0.21.4 flx: - path: ../packages/flx + path: ../flx + flutter: + path: ../flutter + sky_tools: + path: ../flutter_tools diff --git a/packages/updater/pubspec.yaml b/packages/updater/pubspec.yaml index b8a3bd6919..192dd01afb 100644 --- a/packages/updater/pubspec.yaml +++ b/packages/updater/pubspec.yaml @@ -1,16 +1,16 @@ name: updater author: Flutter Authors -description: The autoupdater for flutter +description: An autoupdater for Flutter homepage: http://flutter.io dependencies: - flutter: '0.0.18' - yaml: ^2.1.3 path: ^1.3.0 - flx: 0.0.1 -dependency_overrides: + yaml: ^2.1.3 + + # TODO(abarth): Updater should not depend on flutter flutter: - path: ../sky + path: ../flutter flx: path: ../flx + environment: sdk: '>=1.12.0 <2.0.0' diff --git a/travis/download_tester.py b/travis/download_tester.py new file mode 100755 index 0000000000..3ec5db5692 --- /dev/null +++ b/travis/download_tester.py @@ -0,0 +1,40 @@ +#!/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 os +import subprocess +import sys + +def download(base_url, out_dir, name): + url = '%s/%s' % (base_url, name) + dst = os.path.join(out_dir, name) + print 'Downloading', url + subprocess.call([ 'curl', '-o', dst, url ]) + +def main(): + parser = argparse.ArgumentParser(description='Downloads test artifacts from Google storage') + parser.add_argument('revision_file') + parser.add_argument('out_dir') + args = parser.parse_args() + + out_dir = args.out_dir + if not os.path.exists(out_dir): + os.makedirs(out_dir) + + revision = None + with open(args.revision_file, 'r') as f: + revision = f.read() + + base_url = 'https://storage.googleapis.com/mojo/sky/shell/linux-x64/%s' % revision + download(base_url, out_dir, 'sky_shell') + download(base_url, out_dir, 'icudtl.dat') + download(base_url, out_dir, 'sky_snapshot') + + subprocess.call([ 'chmod', 'a+x', os.path.join(out_dir, 'sky_shell' )]) + subprocess.call([ 'chmod', 'a+x', os.path.join(out_dir, 'sky_snapshot' )]) + +if __name__ == '__main__': + sys.exit(main()) diff --git a/travis/setup.sh b/travis/setup.sh index 840196f80c..59e2192561 100755 --- a/travis/setup.sh +++ b/travis/setup.sh @@ -1,8 +1,11 @@ #!/bin/bash set -ex +pub global activate tuneup + (cd packages/cassowary; pub get) (cd packages/newton; pub get) (cd packages/flutter_tools; pub get) +(cd packages/unit; pub get) -pub global activate tuneup +./travis/download_tester.py packages/unit/packages/sky_engine/REVISION bin/cache/travis/out/Debug diff --git a/travis/test.sh b/travis/test.sh index d819706b35..9684171da1 100755 --- a/travis/test.sh +++ b/travis/test.sh @@ -4,3 +4,4 @@ set -ex (cd packages/cassowary; pub global run tuneup check; pub run test -j1) (cd packages/newton; pub global run tuneup check; pub run test -j1) (cd packages/flutter_tools; pub global run tuneup check; pub run test -j1) +./dev/run_tests --engine-dir bin/cache/travis