Move flutter tests from packages/unit to packages/flutter/test
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index 67924b5..6b159581 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -76,7 +76,7 @@
 Running the tests
 -----------------
 
-To automatically find all files named `_test.dart` inside a package and run them inside the flutter shell as a test use the `flutter test` command, e.g:
+To automatically find all files named `_test.dart` inside a package's `test/` subdirectory, and run them inside the flutter shell as a test, use the `flutter test` command, e.g:
 
  * `cd examples/stocks`
  * `flutter test`
@@ -90,9 +90,11 @@
  * `cd packages/newton`
  * `pub run test`
 
-`flutter test --flutter-repo` is a shortcut for those working on the flutter repository itself which finds and runs all tests inside the flutter repository regardless of the current working directory.
+`flutter test --flutter-repo` is a shortcut for those working on the flutter repository itself which runs all tests inside the `flutter` package regardless of the current working directory.
+To run all the tests for the entire Flutter repository, the same way that Travis runs them, run `travis/test.sh`.
 
 If you've built [your own flutter engine](#working-on-the-engine-and-the-framework-at-the-same-time), you can pass `--debug` or `--release` to change what flutter shell `flutter test` uses.
+To do this with the `travis/test.sh` script, you can use the `FLUTTER_ENGINE` environment variable.
 
 Note: Flutter tests are headless, you won't see any UI. You can use
 `print` to generate console output or you can interact with the DartVM
@@ -101,9 +103,9 @@
 Adding a test
 -------------
 
-To add a test, simply create a file whose name ends with `_test.dart`
-in the `packages/unit/test` directory. The test should have a `main`
-function and use the `test` package.
+To add a test to the Flutter package, simply create a file whose name
+ends with `_test.dart` in the `packages/flutter/test` directory. The
+test should have a `main` function and use the `test` package.
 
 Contributing code
 -----------------
diff --git a/examples/stocks/pubspec.yaml b/examples/stocks/pubspec.yaml
index 146dac1..5c4516c 100644
--- a/examples/stocks/pubspec.yaml
+++ b/examples/stocks/pubspec.yaml
@@ -2,8 +2,8 @@
 dependencies:
   flutter:
     path: ../../packages/flutter
-
   intl: '>=0.12.4+2 <0.13.0'
+
 dev_dependencies:
   flutter_test:
     path: ../../packages/flutter_test
diff --git a/packages/cassowary/pubspec.yaml b/packages/cassowary/pubspec.yaml
index 69a3784..865b5ac 100644
--- a/packages/cassowary/pubspec.yaml
+++ b/packages/cassowary/pubspec.yaml
@@ -6,6 +6,6 @@
 environment:
   sdk: '>=1.0.0 <2.0.0'
 dev_dependencies:
-  test: 0.12.6+1
-  test_runner: '<=0.2.16'
-  dart_coveralls: '<=0.3.0'
+  flutter_tools:
+    path: ../flutter_tools
+  test: any # constrained by the dependency in flutter_tools
diff --git a/packages/unit/benchmark/README.md b/packages/flutter/benchmark/README.md
similarity index 100%
rename from packages/unit/benchmark/README.md
rename to packages/flutter/benchmark/README.md
diff --git a/packages/unit/benchmark/gestures/velocity_tracker_bench.dart b/packages/flutter/benchmark/gestures/velocity_tracker_bench.dart
similarity index 100%
rename from packages/unit/benchmark/gestures/velocity_tracker_bench.dart
rename to packages/flutter/benchmark/gestures/velocity_tracker_bench.dart
diff --git a/packages/unit/benchmark/gestures/velocity_tracker_data.dart b/packages/flutter/benchmark/gestures/velocity_tracker_data.dart
similarity index 100%
rename from packages/unit/benchmark/gestures/velocity_tracker_data.dart
rename to packages/flutter/benchmark/gestures/velocity_tracker_data.dart
diff --git a/packages/unit/benchmark/stocks/animation_bench.dart b/packages/flutter/benchmark/stocks/animation_bench.dart
similarity index 100%
rename from packages/unit/benchmark/stocks/animation_bench.dart
rename to packages/flutter/benchmark/stocks/animation_bench.dart
diff --git a/packages/unit/benchmark/stocks/build_bench.dart b/packages/flutter/benchmark/stocks/build_bench.dart
similarity index 100%
rename from packages/unit/benchmark/stocks/build_bench.dart
rename to packages/flutter/benchmark/stocks/build_bench.dart
diff --git a/packages/unit/benchmark/stocks/layout_bench.dart b/packages/flutter/benchmark/stocks/layout_bench.dart
similarity index 100%
rename from packages/unit/benchmark/stocks/layout_bench.dart
rename to packages/flutter/benchmark/stocks/layout_bench.dart
diff --git a/packages/flutter/pubspec.yaml b/packages/flutter/pubspec.yaml
index 92b3196..805ed9f 100644
--- a/packages/flutter/pubspec.yaml
+++ b/packages/flutter/pubspec.yaml
@@ -3,6 +3,7 @@
 author: Flutter Authors <flutter-dev@googlegroups.com>
 description: A framework for writing Flutter applications
 homepage: http://flutter.io
+
 dependencies:
   collection: '>=1.1.3 <2.0.0'
   intl: '>=0.12.4+2 <0.13.0'
@@ -11,7 +12,9 @@
   sky_services: 0.0.73
   vector_math: '>=1.4.3 <2.0.0'
 
-  # To pin the transitive dependency through mojo_sdk.
+  # See the comment in flutter_tools' pubspec.yaml. We have to pin it
+  # here also because sky_services depends on mojo_sdk which depends
+  # on test.
   test: 0.12.6+1
 
   cassowary:
@@ -19,5 +22,9 @@
   newton:
     path: ../newton
 
+dev_dependencies:
+  flutter_test:
+    path: ../flutter_test
+
 environment:
   sdk: '>=1.12.0 <2.0.0'
diff --git a/packages/unit/test/engine/canvas_test_disabled.dart b/packages/flutter/test/engine/canvas_test_disabled.dart
similarity index 100%
rename from packages/unit/test/engine/canvas_test_disabled.dart
rename to packages/flutter/test/engine/canvas_test_disabled.dart
diff --git a/packages/unit/test/engine/color_test.dart b/packages/flutter/test/engine/color_test.dart
similarity index 100%
rename from packages/unit/test/engine/color_test.dart
rename to packages/flutter/test/engine/color_test.dart
diff --git a/packages/unit/test/engine/paragraph_builder_test.dart b/packages/flutter/test/engine/paragraph_builder_test.dart
similarity index 100%
rename from packages/unit/test/engine/paragraph_builder_test.dart
rename to packages/flutter/test/engine/paragraph_builder_test.dart
diff --git a/packages/unit/test/engine/rect_test.dart b/packages/flutter/test/engine/rect_test.dart
similarity index 100%
rename from packages/unit/test/engine/rect_test.dart
rename to packages/flutter/test/engine/rect_test.dart
diff --git a/packages/unit/test/examples/sector_layout_test.dart b/packages/flutter/test/examples/sector_layout_test.dart
similarity index 100%
rename from packages/unit/test/examples/sector_layout_test.dart
rename to packages/flutter/test/examples/sector_layout_test.dart
diff --git a/packages/unit/test/gestures/arena_test.dart b/packages/flutter/test/gestures/arena_test.dart
similarity index 100%
rename from packages/unit/test/gestures/arena_test.dart
rename to packages/flutter/test/gestures/arena_test.dart
diff --git a/packages/unit/test/gestures/double_tap_test.dart b/packages/flutter/test/gestures/double_tap_test.dart
similarity index 100%
rename from packages/unit/test/gestures/double_tap_test.dart
rename to packages/flutter/test/gestures/double_tap_test.dart
diff --git a/packages/unit/test/gestures/long_press_test.dart b/packages/flutter/test/gestures/long_press_test.dart
similarity index 100%
rename from packages/unit/test/gestures/long_press_test.dart
rename to packages/flutter/test/gestures/long_press_test.dart
diff --git a/packages/unit/test/gestures/lsq_solver_test.dart b/packages/flutter/test/gestures/lsq_solver_test.dart
similarity index 100%
rename from packages/unit/test/gestures/lsq_solver_test.dart
rename to packages/flutter/test/gestures/lsq_solver_test.dart
diff --git a/packages/unit/test/gestures/pointer_router_test.dart b/packages/flutter/test/gestures/pointer_router_test.dart
similarity index 100%
rename from packages/unit/test/gestures/pointer_router_test.dart
rename to packages/flutter/test/gestures/pointer_router_test.dart
diff --git a/packages/unit/test/gestures/scale_test.dart b/packages/flutter/test/gestures/scale_test.dart
similarity index 100%
rename from packages/unit/test/gestures/scale_test.dart
rename to packages/flutter/test/gestures/scale_test.dart
diff --git a/packages/unit/test/gestures/scroll_test.dart b/packages/flutter/test/gestures/scroll_test.dart
similarity index 100%
rename from packages/unit/test/gestures/scroll_test.dart
rename to packages/flutter/test/gestures/scroll_test.dart
diff --git a/packages/unit/test/gestures/tap_test.dart b/packages/flutter/test/gestures/tap_test.dart
similarity index 100%
rename from packages/unit/test/gestures/tap_test.dart
rename to packages/flutter/test/gestures/tap_test.dart
diff --git a/packages/unit/test/gestures/velocity_tracker_data.dart b/packages/flutter/test/gestures/velocity_tracker_data.dart
similarity index 100%
rename from packages/unit/test/gestures/velocity_tracker_data.dart
rename to packages/flutter/test/gestures/velocity_tracker_data.dart
diff --git a/packages/unit/test/gestures/velocity_tracker_test.dart b/packages/flutter/test/gestures/velocity_tracker_test.dart
similarity index 100%
rename from packages/unit/test/gestures/velocity_tracker_test.dart
rename to packages/flutter/test/gestures/velocity_tracker_test.dart
diff --git a/packages/unit/test/harness/trivial_test.dart b/packages/flutter/test/harness/trivial_test.dart
similarity index 100%
rename from packages/unit/test/harness/trivial_test.dart
rename to packages/flutter/test/harness/trivial_test.dart
diff --git a/packages/unit/test/painting/edge_dims_test.dart b/packages/flutter/test/painting/edge_dims_test.dart
similarity index 100%
rename from packages/unit/test/painting/edge_dims_test.dart
rename to packages/flutter/test/painting/edge_dims_test.dart
diff --git a/packages/unit/test/painting/transform_utilities_test.dart b/packages/flutter/test/painting/transform_utilities_test.dart
similarity index 100%
rename from packages/unit/test/painting/transform_utilities_test.dart
rename to packages/flutter/test/painting/transform_utilities_test.dart
diff --git a/packages/unit/test/rendering/box_test.dart b/packages/flutter/test/rendering/box_test.dart
similarity index 100%
rename from packages/unit/test/rendering/box_test.dart
rename to packages/flutter/test/rendering/box_test.dart
diff --git a/packages/unit/test/rendering/flex_test.dart b/packages/flutter/test/rendering/flex_test.dart
similarity index 100%
rename from packages/unit/test/rendering/flex_test.dart
rename to packages/flutter/test/rendering/flex_test.dart
diff --git a/packages/unit/test/rendering/grid_test.dart b/packages/flutter/test/rendering/grid_test.dart
similarity index 100%
rename from packages/unit/test/rendering/grid_test.dart
rename to packages/flutter/test/rendering/grid_test.dart
diff --git a/packages/unit/test/rendering/image_test.dart b/packages/flutter/test/rendering/image_test.dart
similarity index 100%
rename from packages/unit/test/rendering/image_test.dart
rename to packages/flutter/test/rendering/image_test.dart
diff --git a/packages/unit/test/rendering/intrinsic_width_test.dart b/packages/flutter/test/rendering/intrinsic_width_test.dart
similarity index 100%
rename from packages/unit/test/rendering/intrinsic_width_test.dart
rename to packages/flutter/test/rendering/intrinsic_width_test.dart
diff --git a/packages/unit/test/rendering/offstage_test.dart b/packages/flutter/test/rendering/offstage_test.dart
similarity index 100%
rename from packages/unit/test/rendering/offstage_test.dart
rename to packages/flutter/test/rendering/offstage_test.dart
diff --git a/packages/unit/test/rendering/overflow_test.dart b/packages/flutter/test/rendering/overflow_test.dart
similarity index 100%
rename from packages/unit/test/rendering/overflow_test.dart
rename to packages/flutter/test/rendering/overflow_test.dart
diff --git a/packages/unit/test/rendering/positioned_box_test.dart b/packages/flutter/test/rendering/positioned_box_test.dart
similarity index 100%
rename from packages/unit/test/rendering/positioned_box_test.dart
rename to packages/flutter/test/rendering/positioned_box_test.dart
diff --git a/packages/unit/test/rendering/rendering_tester.dart b/packages/flutter/test/rendering/rendering_tester.dart
similarity index 100%
rename from packages/unit/test/rendering/rendering_tester.dart
rename to packages/flutter/test/rendering/rendering_tester.dart
diff --git a/packages/unit/test/rendering/size_test.dart b/packages/flutter/test/rendering/size_test.dart
similarity index 100%
rename from packages/unit/test/rendering/size_test.dart
rename to packages/flutter/test/rendering/size_test.dart
diff --git a/packages/unit/test/rendering/stack_test.dart b/packages/flutter/test/rendering/stack_test.dart
similarity index 100%
rename from packages/unit/test/rendering/stack_test.dart
rename to packages/flutter/test/rendering/stack_test.dart
diff --git a/packages/unit/test/rendering/viewport_test.dart b/packages/flutter/test/rendering/viewport_test.dart
similarity index 100%
rename from packages/unit/test/rendering/viewport_test.dart
rename to packages/flutter/test/rendering/viewport_test.dart
diff --git a/packages/unit/test/scheduler/animation_test.dart b/packages/flutter/test/scheduler/animation_test.dart
similarity index 100%
rename from packages/unit/test/scheduler/animation_test.dart
rename to packages/flutter/test/scheduler/animation_test.dart
diff --git a/packages/unit/test/scheduler/scheduler_test.dart b/packages/flutter/test/scheduler/scheduler_test.dart
similarity index 100%
rename from packages/unit/test/scheduler/scheduler_test.dart
rename to packages/flutter/test/scheduler/scheduler_test.dart
diff --git a/packages/unit/test/services/mock_services.dart b/packages/flutter/test/services/mock_services.dart
similarity index 100%
rename from packages/unit/test/services/mock_services.dart
rename to packages/flutter/test/services/mock_services.dart
diff --git a/packages/unit/test/widget/align_test.dart b/packages/flutter/test/widget/align_test.dart
similarity index 100%
rename from packages/unit/test/widget/align_test.dart
rename to packages/flutter/test/widget/align_test.dart
diff --git a/packages/unit/test/widget/animated_container_test.dart b/packages/flutter/test/widget/animated_container_test.dart
similarity index 100%
rename from packages/unit/test/widget/animated_container_test.dart
rename to packages/flutter/test/widget/animated_container_test.dart
diff --git a/packages/unit/test/widget/block_test.dart b/packages/flutter/test/widget/block_test.dart
similarity index 100%
rename from packages/unit/test/widget/block_test.dart
rename to packages/flutter/test/widget/block_test.dart
diff --git a/packages/unit/test/widget/bottom_sheet_test.dart b/packages/flutter/test/widget/bottom_sheet_test.dart
similarity index 100%
rename from packages/unit/test/widget/bottom_sheet_test.dart
rename to packages/flutter/test/widget/bottom_sheet_test.dart
diff --git a/packages/unit/test/widget/box_decoration_test.dart b/packages/flutter/test/widget/box_decoration_test.dart
similarity index 100%
rename from packages/unit/test/widget/box_decoration_test.dart
rename to packages/flutter/test/widget/box_decoration_test.dart
diff --git a/packages/unit/test/widget/build_scope_test.dart b/packages/flutter/test/widget/build_scope_test.dart
similarity index 100%
rename from packages/unit/test/widget/build_scope_test.dart
rename to packages/flutter/test/widget/build_scope_test.dart
diff --git a/packages/unit/test/widget/center_test.dart b/packages/flutter/test/widget/center_test.dart
similarity index 100%
rename from packages/unit/test/widget/center_test.dart
rename to packages/flutter/test/widget/center_test.dart
diff --git a/packages/unit/test/widget/coordinates_test.dart b/packages/flutter/test/widget/coordinates_test.dart
similarity index 100%
rename from packages/unit/test/widget/coordinates_test.dart
rename to packages/flutter/test/widget/coordinates_test.dart
diff --git a/packages/unit/test/widget/custom_multi_child_layout_test.dart b/packages/flutter/test/widget/custom_multi_child_layout_test.dart
similarity index 100%
rename from packages/unit/test/widget/custom_multi_child_layout_test.dart
rename to packages/flutter/test/widget/custom_multi_child_layout_test.dart
diff --git a/packages/unit/test/widget/custom_one_child_layout_test.dart b/packages/flutter/test/widget/custom_one_child_layout_test.dart
similarity index 100%
rename from packages/unit/test/widget/custom_one_child_layout_test.dart
rename to packages/flutter/test/widget/custom_one_child_layout_test.dart
diff --git a/packages/unit/test/widget/custom_paint_test.dart b/packages/flutter/test/widget/custom_paint_test.dart
similarity index 100%
rename from packages/unit/test/widget/custom_paint_test.dart
rename to packages/flutter/test/widget/custom_paint_test.dart
diff --git a/packages/unit/test/widget/date_picker_test.dart b/packages/flutter/test/widget/date_picker_test.dart
similarity index 100%
rename from packages/unit/test/widget/date_picker_test.dart
rename to packages/flutter/test/widget/date_picker_test.dart
diff --git a/packages/unit/test/widget/dismissable_test.dart b/packages/flutter/test/widget/dismissable_test.dart
similarity index 100%
rename from packages/unit/test/widget/dismissable_test.dart
rename to packages/flutter/test/widget/dismissable_test.dart
diff --git a/packages/unit/test/widget/draggable_test.dart b/packages/flutter/test/widget/draggable_test.dart
similarity index 100%
rename from packages/unit/test/widget/draggable_test.dart
rename to packages/flutter/test/widget/draggable_test.dart
diff --git a/packages/unit/test/widget/drawer_test.dart b/packages/flutter/test/widget/drawer_test.dart
similarity index 100%
rename from packages/unit/test/widget/drawer_test.dart
rename to packages/flutter/test/widget/drawer_test.dart
diff --git a/packages/unit/test/widget/duplicate_key_test.dart b/packages/flutter/test/widget/duplicate_key_test.dart
similarity index 100%
rename from packages/unit/test/widget/duplicate_key_test.dart
rename to packages/flutter/test/widget/duplicate_key_test.dart
diff --git a/packages/unit/test/widget/flex_test.dart b/packages/flutter/test/widget/flex_test.dart
similarity index 100%
rename from packages/unit/test/widget/flex_test.dart
rename to packages/flutter/test/widget/flex_test.dart
diff --git a/packages/unit/test/widget/focus_test.dart b/packages/flutter/test/widget/focus_test.dart
similarity index 100%
rename from packages/unit/test/widget/focus_test.dart
rename to packages/flutter/test/widget/focus_test.dart
diff --git a/packages/unit/test/widget/fractionally_sized_box_test.dart b/packages/flutter/test/widget/fractionally_sized_box_test.dart
similarity index 100%
rename from packages/unit/test/widget/fractionally_sized_box_test.dart
rename to packages/flutter/test/widget/fractionally_sized_box_test.dart
diff --git a/packages/unit/test/widget/gesture_detector_test.dart b/packages/flutter/test/widget/gesture_detector_test.dart
similarity index 100%
rename from packages/unit/test/widget/gesture_detector_test.dart
rename to packages/flutter/test/widget/gesture_detector_test.dart
diff --git a/packages/unit/test/widget/heroes_test.dart b/packages/flutter/test/widget/heroes_test.dart
similarity index 100%
rename from packages/unit/test/widget/heroes_test.dart
rename to packages/flutter/test/widget/heroes_test.dart
diff --git a/packages/unit/test/widget/homogeneous_viewport_test.dart b/packages/flutter/test/widget/homogeneous_viewport_test.dart
similarity index 100%
rename from packages/unit/test/widget/homogeneous_viewport_test.dart
rename to packages/flutter/test/widget/homogeneous_viewport_test.dart
diff --git a/packages/unit/test/widget/init_state_test.dart b/packages/flutter/test/widget/init_state_test.dart
similarity index 100%
rename from packages/unit/test/widget/init_state_test.dart
rename to packages/flutter/test/widget/init_state_test.dart
diff --git a/packages/unit/test/widget/input_test.dart b/packages/flutter/test/widget/input_test.dart
similarity index 100%
rename from packages/unit/test/widget/input_test.dart
rename to packages/flutter/test/widget/input_test.dart
diff --git a/packages/unit/test/widget/listener_test.dart b/packages/flutter/test/widget/listener_test.dart
similarity index 100%
rename from packages/unit/test/widget/listener_test.dart
rename to packages/flutter/test/widget/listener_test.dart
diff --git a/packages/unit/test/widget/mixed_viewport_test.dart b/packages/flutter/test/widget/mixed_viewport_test.dart
similarity index 100%
rename from packages/unit/test/widget/mixed_viewport_test.dart
rename to packages/flutter/test/widget/mixed_viewport_test.dart
diff --git a/packages/unit/test/widget/multichild_test.dart b/packages/flutter/test/widget/multichild_test.dart
similarity index 100%
rename from packages/unit/test/widget/multichild_test.dart
rename to packages/flutter/test/widget/multichild_test.dart
diff --git a/packages/unit/test/widget/navigator_test.dart b/packages/flutter/test/widget/navigator_test.dart
similarity index 100%
rename from packages/unit/test/widget/navigator_test.dart
rename to packages/flutter/test/widget/navigator_test.dart
diff --git a/packages/unit/test/widget/page_forward_transitions_test.dart b/packages/flutter/test/widget/page_forward_transitions_test.dart
similarity index 100%
rename from packages/unit/test/widget/page_forward_transitions_test.dart
rename to packages/flutter/test/widget/page_forward_transitions_test.dart
diff --git a/packages/unit/test/widget/page_transitions_test.dart b/packages/flutter/test/widget/page_transitions_test.dart
similarity index 100%
rename from packages/unit/test/widget/page_transitions_test.dart
rename to packages/flutter/test/widget/page_transitions_test.dart
diff --git a/packages/unit/test/widget/pageable_list_test.dart b/packages/flutter/test/widget/pageable_list_test.dart
similarity index 100%
rename from packages/unit/test/widget/pageable_list_test.dart
rename to packages/flutter/test/widget/pageable_list_test.dart
diff --git a/packages/unit/test/widget/parent_data_test.dart b/packages/flutter/test/widget/parent_data_test.dart
similarity index 100%
rename from packages/unit/test/widget/parent_data_test.dart
rename to packages/flutter/test/widget/parent_data_test.dart
diff --git a/packages/unit/test/widget/positioned_test.dart b/packages/flutter/test/widget/positioned_test.dart
similarity index 100%
rename from packages/unit/test/widget/positioned_test.dart
rename to packages/flutter/test/widget/positioned_test.dart
diff --git a/packages/unit/test/widget/progress_indicator_test.dart b/packages/flutter/test/widget/progress_indicator_test.dart
similarity index 100%
rename from packages/unit/test/widget/progress_indicator_test.dart
rename to packages/flutter/test/widget/progress_indicator_test.dart
diff --git a/packages/unit/test/widget/remember_scroll_position_test.dart b/packages/flutter/test/widget/remember_scroll_position_test.dart
similarity index 100%
rename from packages/unit/test/widget/remember_scroll_position_test.dart
rename to packages/flutter/test/widget/remember_scroll_position_test.dart
diff --git a/packages/unit/test/widget/render_object_widget_test.dart b/packages/flutter/test/widget/render_object_widget_test.dart
similarity index 100%
rename from packages/unit/test/widget/render_object_widget_test.dart
rename to packages/flutter/test/widget/render_object_widget_test.dart
diff --git a/packages/unit/test/widget/reparent_state_test.dart b/packages/flutter/test/widget/reparent_state_test.dart
similarity index 100%
rename from packages/unit/test/widget/reparent_state_test.dart
rename to packages/flutter/test/widget/reparent_state_test.dart
diff --git a/packages/unit/test/widget/routes_test.dart b/packages/flutter/test/widget/routes_test.dart
similarity index 100%
rename from packages/unit/test/widget/routes_test.dart
rename to packages/flutter/test/widget/routes_test.dart
diff --git a/packages/unit/test/widget/scrollable_list_hit_testing_test.dart b/packages/flutter/test/widget/scrollable_list_hit_testing_test.dart
similarity index 100%
rename from packages/unit/test/widget/scrollable_list_hit_testing_test.dart
rename to packages/flutter/test/widget/scrollable_list_hit_testing_test.dart
diff --git a/packages/unit/test/widget/scrollable_list_horizontal_test.dart b/packages/flutter/test/widget/scrollable_list_horizontal_test.dart
similarity index 100%
rename from packages/unit/test/widget/scrollable_list_horizontal_test.dart
rename to packages/flutter/test/widget/scrollable_list_horizontal_test.dart
diff --git a/packages/unit/test/widget/scrollable_list_vertical_test.dart b/packages/flutter/test/widget/scrollable_list_vertical_test.dart
similarity index 100%
rename from packages/unit/test/widget/scrollable_list_vertical_test.dart
rename to packages/flutter/test/widget/scrollable_list_vertical_test.dart
diff --git a/packages/unit/test/widget/scrollable_list_with_inherited_test.dart b/packages/flutter/test/widget/scrollable_list_with_inherited_test.dart
similarity index 100%
rename from packages/unit/test/widget/scrollable_list_with_inherited_test.dart
rename to packages/flutter/test/widget/scrollable_list_with_inherited_test.dart
diff --git a/packages/unit/test/widget/set_state_2_test.dart b/packages/flutter/test/widget/set_state_2_test.dart
similarity index 100%
rename from packages/unit/test/widget/set_state_2_test.dart
rename to packages/flutter/test/widget/set_state_2_test.dart
diff --git a/packages/unit/test/widget/set_state_3_test.dart b/packages/flutter/test/widget/set_state_3_test.dart
similarity index 100%
rename from packages/unit/test/widget/set_state_3_test.dart
rename to packages/flutter/test/widget/set_state_3_test.dart
diff --git a/packages/unit/test/widget/set_state_test.dart b/packages/flutter/test/widget/set_state_test.dart
similarity index 100%
rename from packages/unit/test/widget/set_state_test.dart
rename to packages/flutter/test/widget/set_state_test.dart
diff --git a/packages/unit/test/widget/shader_mask_test.dart b/packages/flutter/test/widget/shader_mask_test.dart
similarity index 100%
rename from packages/unit/test/widget/shader_mask_test.dart
rename to packages/flutter/test/widget/shader_mask_test.dart
diff --git a/packages/unit/test/widget/size_observer_test.dart b/packages/flutter/test/widget/size_observer_test.dart
similarity index 100%
rename from packages/unit/test/widget/size_observer_test.dart
rename to packages/flutter/test/widget/size_observer_test.dart
diff --git a/packages/unit/test/widget/snack_bar_test.dart b/packages/flutter/test/widget/snack_bar_test.dart
similarity index 100%
rename from packages/unit/test/widget/snack_bar_test.dart
rename to packages/flutter/test/widget/snack_bar_test.dart
diff --git a/packages/unit/test/widget/snap_scrolling_test.dart b/packages/flutter/test/widget/snap_scrolling_test.dart
similarity index 100%
rename from packages/unit/test/widget/snap_scrolling_test.dart
rename to packages/flutter/test/widget/snap_scrolling_test.dart
diff --git a/packages/unit/test/widget/stack_test.dart b/packages/flutter/test/widget/stack_test.dart
similarity index 100%
rename from packages/unit/test/widget/stack_test.dart
rename to packages/flutter/test/widget/stack_test.dart
diff --git a/packages/unit/test/widget/stateful_component_test.dart b/packages/flutter/test/widget/stateful_component_test.dart
similarity index 100%
rename from packages/unit/test/widget/stateful_component_test.dart
rename to packages/flutter/test/widget/stateful_component_test.dart
diff --git a/packages/unit/test/widget/stateful_components_test.dart b/packages/flutter/test/widget/stateful_components_test.dart
similarity index 100%
rename from packages/unit/test/widget/stateful_components_test.dart
rename to packages/flutter/test/widget/stateful_components_test.dart
diff --git a/packages/unit/test/widget/syncing_test.dart b/packages/flutter/test/widget/syncing_test.dart
similarity index 100%
rename from packages/unit/test/widget/syncing_test.dart
rename to packages/flutter/test/widget/syncing_test.dart
diff --git a/packages/unit/test/widget/tabs_test.dart b/packages/flutter/test/widget/tabs_test.dart
similarity index 100%
rename from packages/unit/test/widget/tabs_test.dart
rename to packages/flutter/test/widget/tabs_test.dart
diff --git a/packages/unit/test/widget/test_matchers.dart b/packages/flutter/test/widget/test_matchers.dart
similarity index 100%
rename from packages/unit/test/widget/test_matchers.dart
rename to packages/flutter/test/widget/test_matchers.dart
diff --git a/packages/unit/test/widget/test_widgets.dart b/packages/flutter/test/widget/test_widgets.dart
similarity index 100%
rename from packages/unit/test/widget/test_widgets.dart
rename to packages/flutter/test/widget/test_widgets.dart
diff --git a/packages/unit/test/widget/transform_test.dart b/packages/flutter/test/widget/transform_test.dart
similarity index 100%
rename from packages/unit/test/widget/transform_test.dart
rename to packages/flutter/test/widget/transform_test.dart
diff --git a/packages/flutter_tools/lib/src/commands/analyze.dart b/packages/flutter_tools/lib/src/commands/analyze.dart
index bba032c..fe03421 100644
--- a/packages/flutter_tools/lib/src/commands/analyze.dart
+++ b/packages/flutter_tools/lib/src/commands/analyze.dart
@@ -62,42 +62,11 @@
         }
       }
 
-      bool foundTest = false;
-      Directory flutterDir = new Directory(path.join(ArtifactStore.flutterRoot, 'packages/unit')); // See https://github.com/flutter/flutter/issues/50
-
-      // .../packages/unit/test/*/*_test.dart
-      Directory tests = new Directory(path.join(flutterDir.path, 'test'));
-      for (FileSystemEntity entry in tests.listSync()) {
-        if (entry is Directory) {
-          for (FileSystemEntity subentry in entry.listSync()) {
-            if (subentry is File && subentry.path.endsWith('_test.dart')) {
-              dartFiles.add(subentry.path);
-              foundTest = true;
-            }
-          }
-        }
-      }
-
-      // .../packages/unit/benchmark/*/*_bench.dart
-      Directory benchmarks = new Directory(path.join(flutterDir.path, 'benchmark'));
-      for (FileSystemEntity entry in benchmarks.listSync()) {
-        if (entry is Directory) {
-          for (FileSystemEntity subentry in entry.listSync()) {
-            if (subentry is File && subentry.path.endsWith('_bench.dart')) {
-              dartFiles.add(subentry.path);
-              foundTest = true;
-            }
-          }
-        }
-      }
-
-      if (foundTest)
-        pubSpecDirectories.add(flutterDir.path);
-
       // .../packages/*/bin/*.dart
       // .../packages/*/lib/main.dart
       // .../packages/*/test/*_test.dart
       // .../packages/*/test/*/*_test.dart
+      // .../packages/*/benchmark/*/*_bench.dart
       Directory packages = new Directory(path.join(ArtifactStore.flutterRoot, 'packages'));
       for (FileSystemEntity entry in packages.listSync()) {
         if (entry is Directory) {
@@ -126,12 +95,29 @@
                 for (FileSystemEntity subentry in entry.listSync()) {
                   if (subentry is File && subentry.path.endsWith('_test.dart')) {
                     dartFiles.add(subentry.path);
-                    foundTest = true;
+                    foundOne = true;
                   }
                 }
               } else if (entry is File && entry.path.endsWith('_test.dart')) {
                 dartFiles.add(entry.path);
-                foundTest = true;
+                foundOne = true;
+              }
+            }
+          }
+
+          Directory benchmarkDirectory = new Directory(path.join(entry.path, 'benchmark'));
+          if (benchmarkDirectory.existsSync()) {
+            for (FileSystemEntity entry in benchmarkDirectory.listSync()) {
+              if (entry is Directory) {
+                for (FileSystemEntity subentry in entry.listSync()) {
+                  if (subentry is File && subentry.path.endsWith('_bench.dart')) {
+                    dartFiles.add(subentry.path);
+                    foundOne = true;
+                  }
+                }
+              } else if (entry is File && entry.path.endsWith('_bench.dart')) {
+                dartFiles.add(entry.path);
+                foundOne = true;
               }
             }
           }
diff --git a/packages/flutter_tools/lib/src/commands/test.dart b/packages/flutter_tools/lib/src/commands/test.dart
index 4a905fb..d06797d 100644
--- a/packages/flutter_tools/lib/src/commands/test.dart
+++ b/packages/flutter_tools/lib/src/commands/test.dart
@@ -16,14 +16,16 @@
 
 class TestCommand extends FlutterCommand {
   String get name => 'test';
-  String get description => 'Runs Flutter unit tests for the current project. At least one of --debug and --release must be set.';
+  String get description => 'Runs Flutter unit tests for the current project.';
 
   bool get requiresProjectRoot => false;
 
   String get projectRootValidationErrorMessage {
     return 'Error: No pubspec.yaml file found.\n'
-      'If you wish to run the tests in the flutter repo, pass --flutter-repo before\n'
-      'any test paths. Otherwise, run this command from the root of your project.';
+      'If you wish to run the tests in the Flutter repository\'s \'flutter\' package,\n'
+      'pass --flutter-repo before any test paths. Otherwise, run this command from the\n'
+      'root of your project. Test files must be called *_test.dart and must reside in\n'
+      'the package\'s \'test\' directory (or one of its subdirectories).';
   }
 
   Future<String> _getShellPath(BuildConfiguration config) async {
@@ -44,7 +46,7 @@
   }
 
   TestCommand() {
-    argParser.addFlag('flutter-repo', help: 'Run tests from the Flutter repository instead of the current directory.', defaultsTo: false);
+    argParser.addFlag('flutter-repo', help: 'Run tests from the \'flutter\' package in the Flutter repository instead of the current directory.', defaultsTo: false);
   }
 
   Iterable<String> _findTests(Directory directory) {
@@ -54,7 +56,13 @@
   }
 
   Directory get _flutterUnitTestDir {
-    return new Directory(path.join(ArtifactStore.flutterRoot, 'packages', 'unit', 'test'));
+    return new Directory(path.join(ArtifactStore.flutterRoot, 'packages', 'flutter', 'test'));
+  }
+
+  Directory get _currentPackageTestDir {
+    // We don't scan the entire package, only the test/ subdirectory, so that
+    // files with names like like "hit_test.dart" don't get run.
+    return new Directory('test');
   }
 
   Future<int> _runTests(List<String> testArgs, Directory testDirectory) async {
@@ -76,11 +84,11 @@
       return 1;
 
     // If we're running the flutter tests, we want to use the packages directory
-    // from the unit package in order to find the proper shell binary.
+    // from the flutter package in order to find the proper shell binary.
     if (runFlutterTests && ArtifactStore.packageRoot == 'packages')
-      ArtifactStore.packageRoot = path.join(ArtifactStore.flutterRoot, 'packages', 'unit', 'packages');
+      ArtifactStore.packageRoot = path.join(ArtifactStore.flutterRoot, 'packages', 'flutter', 'packages');
 
-    Directory testDir = runFlutterTests ? _flutterUnitTestDir : Directory.current;
+    Directory testDir = runFlutterTests ? _flutterUnitTestDir : _currentPackageTestDir;
 
     if (testArgs.isEmpty)
       testArgs.addAll(_findTests(testDir));
diff --git a/packages/flutter_tools/pubspec.yaml b/packages/flutter_tools/pubspec.yaml
index eac634a..df7f52d 100644
--- a/packages/flutter_tools/pubspec.yaml
+++ b/packages/flutter_tools/pubspec.yaml
@@ -16,12 +16,18 @@
   mustache4dart: ^1.0.0
   path: ^1.3.0
   stack_trace: ^1.4.0
-  test: 0.12.6+1
+  test: 0.12.6+1 # see note below
   yaml: ^2.1.3
 
   flx:
     path: ../flx
 
+# A note about 'test':
+# We depend on very specific internal implementation details of the
+# 'test' package, which change between versions, so here we pin it
+# precisely. This is also pinned in the 'flutter' package.
+# See also https://github.com/dart-lang/test/pull/320
+
 # 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 1f6fbba..11a2deb 100644
--- a/packages/flx/pubspec.yaml
+++ b/packages/flx/pubspec.yaml
@@ -13,4 +13,6 @@
   sdk: '>=1.12.0 <2.0.0'
 
 dev_dependencies:
-  test: 0.12.6
+  flutter_tools:
+    path: ../flutter_tools
+  test: any # constrained by the dependency in flutter_tools
diff --git a/packages/newton/pubspec.yaml b/packages/newton/pubspec.yaml
index 09f496e..de85874 100644
--- a/packages/newton/pubspec.yaml
+++ b/packages/newton/pubspec.yaml
@@ -6,6 +6,6 @@
 environment:
   sdk: '>=1.0.0 <2.0.0'
 dev_dependencies:
-  test: 0.12.6+1
-  test_runner: '<=0.2.16'
-  dart_coveralls: '<=0.3.0'
+  flutter_tools:
+    path: ../flutter_tools
+  test: any # constrained by the dependency in flutter_tools
diff --git a/packages/playfair/pubspec.yaml b/packages/playfair/pubspec.yaml
index 4dc5224..58c7311 100644
--- a/packages/playfair/pubspec.yaml
+++ b/packages/playfair/pubspec.yaml
@@ -9,7 +9,9 @@
     path: ../flutter
 
 dev_dependencies:
-  test: 0.12.6+1
+  flutter_tools:
+    path: ../flutter_tools
+  test: any # constrained by the dependency in flutter_tools
 
 environment:
   sdk: '>=1.12.0 <2.0.0'
diff --git a/packages/unit/pubspec.yaml b/packages/unit/pubspec.yaml
deleted file mode 100644
index 6b5440b..0000000
--- a/packages/unit/pubspec.yaml
+++ /dev/null
@@ -1,10 +0,0 @@
-name: flutter_unit_tests
-dependencies:
-  flx:
-    path: ../flx
-  flutter:
-    path: ../flutter
-  flutter_test:
-    path: ../flutter_test
-  stocks:
-    path: ../../examples/stocks
diff --git a/travis/setup.sh b/travis/setup.sh
index 0afc979..2bf2d06 100755
--- a/travis/setup.sh
+++ b/travis/setup.sh
@@ -8,7 +8,7 @@
 set -x
 
 dart dev/update_packages.dart
-(cd packages/unit; ../../bin/flutter cache populate)
+(cd packages/flutter; ../../bin/flutter cache populate)
 
 if [ $TRAVIS_PULL_REQUEST = "false" ]; then
   export CLOUDSDK_CORE_DISABLE_PROMPTS=1
diff --git a/travis/test.sh b/travis/test.sh
index 4065139..0842b0d 100755
--- a/travis/test.sh
+++ b/travis/test.sh
@@ -6,12 +6,11 @@
 # analyze all the Dart code in the repo
 flutter analyze --flutter-repo --no-current-directory --no-current-package --congratulate
 
-# flutter package tests
-flutter test --flutter-repo
-
 (cd packages/cassowary; pub run test -j1)
+(cd packages/flutter; flutter test)
 # (cd packages/flutter_sprites; ) # No tests to run.
 (cd packages/flutter_tools; pub run test -j1)
+# (cd packages/flutter_test; ) # No tests to run.
 (cd packages/flx; pub run test -j1)
 (cd packages/newton; pub run test -j1)
 # (cd packages/playfair; ) # No tests to run.