Commit graph

894 commits

Author SHA1 Message Date
abykov2 e5d9feb59d Adding a setup function for hot restart (#18921)
* Adding a setup function for hot restart that can be overwritten to perform any necessary initialization before a restart is started.

* Adding a test for setupHotRestart

* Removing local pubspec change

* Fixing some type annotation errors

* Responding to comments
2018-07-06 15:18:57 -07:00
Mikkel Nygaard Ravn b1c6224590
flutter attach should handle non-singular device gracefully (#19036) 2018-07-03 16:18:06 +02:00
Mark Fielbig af5d4c6882 Fix type errors in iOS simulator discovery. (#18960) 2018-06-30 17:17:35 -07:00
Danny Tuppeny abc3c4eb09
Remove flaky flutter_tester test (#18916)
This test was designed to ensure flutter_tester keeps running (previously it would quit immediately). However it's turned out ot be rather flaky and we have new tests on the way that supersede this by actually testing real things (debug stepping, reloading, expression evaluation).
2018-06-28 16:46:36 +01:00
Danny Tuppeny 108da01310
Remove the 'app' domain from flutter daemon (#18873)
* Remove the 'app' domain from flutter daemon

By default the daemon won't register the "app" domain, you need to opt-in (which the 'run' command does, as well as the tests for the app functionality).

Fixes #6658.

* Tweak text

* Put restart/callServiceExtension/stop back into daemon mode

* Add a comment about removing discoverApps
2018-06-28 16:22:02 +01:00
Sigurd Meldgaard 1e8ef602c3
Add iOS module template (#18830) (#18903)
Add iOS module template

This will enable integration of flutter-views into existing iOS project.
2018-06-28 14:35:00 +02:00
Sigurd Meldgaard 4a6558f88f
Revert "Add iOS module template (#18830)" (#18902)
This reverts commit 8be198d8a0 that broke the build.
2018-06-28 11:16:08 +02:00
Danny Tuppeny 328f9b30cb
Re-skip flutter_device_tester test (#18900)
After landing the un-skip this test failed with a timeout. It then passed on the next build (!). I think it's too flaky to leave running until we can better diagnose what's happening.
2018-06-28 10:04:02 +01:00
Sigurd Meldgaard 8be198d8a0
Add iOS module template (#18830)
Add iOS module template

This will enable integration of flutter-views into existing iOS project.
2018-06-28 10:03:16 +02:00
Danny Tuppeny 3158d8572b
Add process output for flutter_tester test and unskip (#18899)
* Add process output for flutter_tester test and unskip

* Add a comment about this potential flake
2018-06-28 08:54:02 +01:00
Danny Tuppeny cdb01187f8
Add --create option to flutter emulators command (#18235)
* Add --create option to flutter emulators

* Tweaks to error message

* Simplify emulator search logic

* Make name optional

* Add a note about this option being used with --create

* Tweaks to help information

* Switch to processManager for easier testing

* Don't crash on missing files or missing properties in Android Emulator

* Move name suffixing into emulator manager

This allows it to be tested in the EmulatorManager tests and also used by daemon later if desired.

* Pass the context's android SDK through so it can be mocked by tests

* Misc fixes

* Add tests around emulator creation

Process calls are mocked to avoid needing a real SDK (and to be fast). Full integration tests may be useful, but may require ensuring all build environments etc. are set up correctly.

* Simplify avdManagerPath

Previous changes were to emulatorPath!

* Fix lint errors

* Fix incorrect file exgtension for Windows

* Fix an issue where no system images would crash

reduce throws on an empty collection.

* Fix "null" appearing in error messages

The name we attempted to use will now always be returned, even in the case of failure.

* Add additional info to missing-system-image failure message

On Windows after installing Andriod Studio I didn't have any of these and got this message. Installing with sdkmanager fixed the issue.

* Fix thrown errors

runResult had a toString() but we moved to ProcessResult when switching to ProcessManager to this ended up throwing "Instance of ProcessResult".

* Fix package import

* Fix more package imports

* Move mock implementation into Mock class

There seemed to be issues using Lists in args with Mockito that I couldn't figure out (docs say to use typed() but I couldn't make this compile with these lists still)..

* Rename method that's ambigious now we have create

* Handle where there's no avd path

* Add another toList() :(

* Remove comment that was rewritten

* Fix forbidden import

* Make optional arg more obviously optional

* Reformat doc

* Note that we create a pixel device in help text

* Make this a named arg
2018-06-28 08:07:40 +01:00
Ian Hickson 35ad2a786d
Remove race conditions involving finding available ports (#18698)
This is an attempt to reland #18488 with less breakage on macOS.
2018-06-27 16:44:28 -07:00
Danny Tuppeny cfd26d321e
Revert "Add process output for flutter_tester test and unskip (#18868)" (#18871)
This reverts commit 5d8ea59d86.
2018-06-27 13:23:15 +01:00
Danny Tuppeny 5d8ea59d86
Add process output for flutter_tester test and unskip (#18868) 2018-06-27 12:52:32 +01:00
Danny Tuppeny e616c6cef2
Improve update checking (#18193)
* Improve update checking

This change emables pinging the server to check for updates regardless of whether the local version is "out of date". The server code already has a 7-day cache so the result is that we can now ping the server once every 7 days instead of waiting for the local install to be 4 weeks out of date before pinging.

The original 4 week period is still used for when we'll start warning the user they're out of date if we could not confirm with the server whether there's a new version.

* Improve message when we know there's a new version available

* Fix bnullable bool checks

* Switch nullable bool to enum

* Fix casing of enum values

* Remove stale comment

The names are now descriptive so doesn't need additional explanation.

* Improve name of function

* Remove note:

* Rename kPauseToLetUserReadTheMessage -> timeToPauseToLetUserReadTheMessage

* Change kVersionAgeConsideredUpToDate to 5 weeks from 4

* Inline the isNewerFrameworkVersionAvailable check

* Fix indenting (?)

* Fix more indenting

* Rename function to be clearer it's getting the commit date

* Formating tweaks

* Update stamp when connection failed, and reduce time before we'll try again

Previously we would hit the server on every command if we thought we might be out of date and we never successfully connected (eg. if you're offline). This makes the stamp update even when there's a conneciton failure so that this won't happen, but reduces the time till we check again from 7 days to 3 days to compensate a little in case it was a one-off.

https://github.com/flutter/flutter/pull/18193#issuecomment-399222269

* Fix comment

* Don't perform update checks if not on an official channel
2018-06-27 12:50:40 +01:00
Danny Tuppeny 0fb209726f
Mark flutter-tester-runs-forever test as skip (#18867)
This test is failing on mac_bot (but passing elsewhere) because flutter-tester is apparently quitting earlier than expected. Locally it fails with an even weirder error and almost all tests are failing with "Compilation failed" (this isn't happening on the builds, so something is bad on my MacBook). Marking as skip to fix build while investigating; there's no real impact of this test not running; it's testing a tool that its itself used for testing (and not currently in any way that should be affected by this failure).
2018-06-27 10:57:34 +01:00
Danny Tuppeny 3456dc6248
Add failing tests for #17833, #18441 and #18678 (#18560) 2018-06-27 08:04:55 +01:00
Florian Loitsch d248725e15
Flutter attach (#18677)
Add `flutter attach` command.

This command allows Flutter to connect to applications that haven't been launched using `flutter run`.
2018-06-25 15:33:42 +02:00
Sarah Zakarias def7634ba0
Support running apk with more than one activity (#18716) 2018-06-25 13:38:08 +02:00
Mikkel Nygaard Ravn d89a6b544e
Add module template for Android (#18697) 2018-06-22 18:19:37 +02:00
Sam Rawlins 9f8a70be4c Bump mockito to 3.0.0-beta (#18462)
* Bump mockito to 3.0.0-beta

* Few fixes

* fix test

* Bump image

* Fix

* New packages update

* With matcher pinned

* No more typed
2018-06-21 16:23:47 -07:00
Alexander Aprelev 2828a459f6
Serialize expression compilation requests (#18618)
* Serialize compilation requests.
2018-06-21 11:13:21 -07:00
Yegor 9da80217fc
make crash server URL customizable from environment (#18649) 2018-06-20 15:43:43 -07:00
Ian Hickson 6599271bf5
Revert matcher package (#18614)
The new matcher package deprecates isInstanceOf which seems eggregious.
2018-06-19 17:22:56 -07:00
Greg Spencer 08d1ec36de Roll engine to 0c119932c0d6cb30dafd75ec717d1eda76fd7651 (#18575) 2018-06-19 09:58:20 +02:00
Ian Hickson 0fa5ba43a1
Revert "Remove race conditions involving finding available ports (#18488)" (#18521)
This reverts commit 7750872251.
2018-06-15 15:37:20 -07:00
Ian Hickson 7750872251
Remove race conditions involving finding available ports (#18488) 2018-06-15 14:16:18 -07:00
Stanislav Baranov bcaf026c08
Add flutter tool support for creating app-specific VM snapshots. (#18417)
Add flutter tool support for creating app-specific VM snapshots.
2018-06-15 11:53:30 -07:00
Danny Tuppeny 48f4ff6dda
Ensure errors launching emulators are exposed to the daemon (#18446) 2018-06-14 07:59:50 +01:00
Chris Bracken 2ae48845a8
Revert elimination of Dart 1 (#18460)
fuchsia_tester.dart still assumes Dart 1. Previously, it ran tests directly
from source, flutter_platform.dart automatically runs a kernel compile when
operating in Dart 2 mode, but this assumes a functional Dart SDK is available
in the artifacts directly, and fuchsia_tester.dart mocks out the artifacts
directory with an empty temp dir.

Remaining work is:
1. Get the frontend server building as a dependency on Fuchsia.
2. Patch fuchsia_tester.dart to use a valid Dart SDK and frontend server.

This also reverts migration to Dart 2 typedef syntax.

This reverts commit 6c56bb2. (#18362)
This reverts commit 3daebd0. (#18316)
2018-06-13 12:46:39 -07:00
Greg Spencer 6c56bb2420
Update typedef syntax to use Function notation and turn on lint for old notation. (#18362)
Now that Dart 1 is turned off, reapplying my change to turn on the prefer_generic_function_type_aliases analysis option, and fix all the typedefs to Dart 2 preferred syntax.

Also eliminated the unused analysis_options_repo.yaml file and turned on public_member_api_docs in analysys_options.yaml.

No logic changes, just changing the typedef syntax for all typedefs, and updating analysis options.
2018-06-11 15:51:45 -07:00
Mehmet Fidanboylu 3019ad976d
Passing any to named params require the name of the parameter itself. (#18361) 2018-06-11 11:31:25 -07:00
Chris Bracken 4db7daf751
Handle malformed depfiles in Fingerprinter (#18321)
Fingerprinter.doesFingerprintMatch() now returns false rather than
throwing if a depfile is malformed.
2018-06-08 17:56:14 -07:00
Chris Bracken 3daebd059c
It's time to #deleteDart1 (again) (#18316)
* It's time to #deleteDart1 (#18293)

Eliminates support for Dart 1 in flutter_tools, and drops our Dart 1
benchmarks. All commands now run in Dart 1 mode only.

Eliminates --preview-dart-2 / --no-preview-dart-2 support.

* Fix indentation, remove no longer necessary .toList()

* Only push udpated kernel if >0 invalidated srcs
2018-06-08 15:49:24 -07:00
Chris Bracken 9495df4bc3
Revert "It's time to #deleteDart1 (#18293)" (#18313)
Several benchmarks started failing during kernel compile:
1. Timeouts:
   * commands_test
   * hot_mode_dev_cycle__benchmark
   * run_machine_concurrent_hot_reload
   * service_extensions_test

2. Kernel compiler crash:
   * hot_mode_dev_cycle_linux__benchmark
   * routing_test

3. Unexpected termination:
   * hot_mode_dev_cycle_win__benchmark

This reverts commit ed63e7082a.
2018-06-08 12:43:11 -07:00
Chris Bracken ed63e7082a
It's time to #deleteDart1 (#18293)
Eliminates support for Dart 1 in flutter_tools, and drops our Dart 1
benchmarks. All commands now run in Dart 1 mode only.

Eliminates --preview-dart-2 / --no-preview-dart-2 support.
2018-06-08 11:04:57 -07:00
Alexander Aprelev f11c8d967c
Add compile-expression service. (#16161)
This registers compile-expression service that is used by dart vm to evaluate expressions when debugging flutter applications.
2018-06-05 13:22:13 -07:00
Keerti Parthasarathy da7670c2ee
Fixes for test failures in Dart 2 mode (#18122) 2018-06-05 12:38:30 -07:00
Alexandre Ardhuin 09276bea25
enable lint prefer_equal_for_default_values (#18156) 2018-06-05 08:50:40 +02:00
Ian Hickson 6be81ebf9b
Be more resilient to bad data from VM (#18132)
Fixes https://github.com/flutter/flutter/issues/14517
Or at least, fixes the crash part of that.
2018-06-04 19:12:55 -07:00
Ian Hickson e3427550e9
Be less verbose in the logs. (#17401)
Now that we have thousands of tests, it doesn't make sense to display a separate line for each test. The result is just megabytes of logs that you have to scrub through to find error messages.
2018-06-04 15:22:19 -07:00
Sam Rawlins fba81d0f1d Use anyNamed when mocking named arguments (#17996) 2018-05-31 08:24:26 -07:00
Sigurd Meldgaard 758711c85d
Allow --use-application-binary using app-bundles on ios (#17691)
This makes it easier to run ios add2app apps with Flutter run.
2018-05-31 10:33:15 +02:00
Jacob Richman 62febaa140
Add support for --track-widget-creation back to ios build rules. (#18046) 2018-05-30 14:53:35 -07:00
Greg Spencer b921fdc58e
Revert "Update typedef syntax to use Function notation and turn on lint for old notation. (#18035)" (#18041)
This reverts commit 3258602073.
2018-05-30 13:51:14 -07:00
Greg Spencer 3258602073
Update typedef syntax to use Function notation and turn on lint for old notation. (#18035)
Fixes #18028

Just changes typedef declarations, no logic changes.
2018-05-30 12:13:58 -07:00
Ralph Bergmann c65e9d19a4 add version to pubspec.yaml (#16857)
Uses the `version` property from the `pubspec.yaml` file to set the corresponding fields in the `local.properties` file respectively in the `Generated.xcconfig` file.

The `--build-name` and `--build-number` options have changed. Now they trump the `version` property from the `pubspec.yaml` file.

If the `version` property is not set and the  `--build-name` and `--build-number` options are not provided, the build command will not change the `local.properties` / `Generated.xcconfig` file.
2018-05-30 07:51:25 -07:00
Danny Tuppeny 42c9719ff0
Change doctor to point at Flutter extension (#17987) 2018-05-29 17:11:34 +01:00
Danny Tuppeny 24e2b238d4
Send an event at startup with the protocol version and pid (#17873)
* Send an event at startup with the protocol version and pid

The pid will help with some of the issues of terminate the process when launched through a shell script and the version will allow clients to make decisions about supported features.

I've also bumped the protocol version number for two reasons:

1. This change
2. We didn't increase it when we added the previous emulator commands
2018-05-28 22:02:53 +01:00
Chris Bracken 7587f54b20
Build single-architecture for local iOS engines (#17919)
When running with --local-engine, build single-architecture apps, rather
than what's declared in the Xcode project.

By default, Flutter creates Xcode projects that generate universal
binaries supporting both armv7 and arm64 processors. Since local engine builds
are all single-architecture, override the Xcode project's ARCHS setting
with the appropriate value for the specific engine.

NOTE: this assumes engine paths consistent with those used in the engine
repo: 32-bit iOS engine builds end in _arm, 64-bit builds do not.
2018-05-25 14:53:10 -07:00
Tim Neumann 54899c7638 Support multi-line log messages on iOS devices (#17327) 2018-05-23 19:03:05 -07:00
Devon Carew b7a268fed2
increase the timeout for analyze_once_test tests (#17845) 2018-05-23 13:04:40 -07:00
Danny Tuppeny dfc0244e19
Add emulator.getEmulators and emulator.launch to daemon (#17466)
Related to:

#14822
Dart-Code/Dart-Code#490
#13379
2018-05-22 07:39:08 +01:00
Danny Tuppeny e2181a6ad9
First run simulator with -n to ensure it always opens a device (#17460) 2018-05-22 07:35:42 +01:00
Konstantin Scheglov eba194f776
Mark testWidgets() and testUsingContext() with @isTest. (#17772) 2018-05-21 11:11:23 -07:00
fmatosqg 197d4315a9 Scan assets from disk (#16413)
Scan folders when asset specified finishes with `/`
2018-05-20 17:52:33 -07:00
Sam Rawlins 1f76f7f9d2 Migrate to Mockito 3's anyNamed (#17632) 2018-05-16 10:19:05 -07:00
liyuqian ae8586cfa1
Show help info instead of crashing if Android SDK is not found (#17610)
Fixes #16832
2018-05-15 14:42:12 -07:00
Vyacheslav Egorov 4931b46772
Make --build-shared-library more robust. (#17420)
* Search for a suitable ARM sysroot instead of hardcoding it;
* Add facility to explain why NDK was not found;
2018-05-14 16:36:54 +02:00
Chris Bracken 1605fbb31a
Add more unit tests for AOT snapshotting (#17493)
Adds unit tests for the following AOT build configurations:
* iOS armv7 profile
* iOS armv7 release
* Android armv7 profile (AOT blob)
* Android arm64 profile (AOT blob)
* Android armv7 release (AOT blob)
* Android arm64 release (AOT blob)
2018-05-10 17:45:51 -07:00
Devon Carew 8e4b349c4f
increase test timeouts (#17477) 2018-05-10 11:33:01 -07:00
Devon Carew 09dec7f508
re-write flutter analyze to use the analysis server (#16979)
re-write flutter analyze (the single-shot and --flutter-repo) to use the analysis server
2018-05-10 09:48:40 -07:00
Chris Bracken a751678563
Allow 32-bit iOS device simulators (#17443)
Previously, Flutter did not support iOS devices with armv7 or armv7s
CPUs. We now support these devices. This eliminates the previous
hardcoded checks that prevented running on simulators of older devices.

We maintain the existing restriction on running on watchOS or tvOS
simulators.
2018-05-09 13:34:39 -07:00
Chris Bracken 1c27a458a8
Correct profile-mode AOT snapshot flags (#17435)
Previously, in non-release (i.e. profile) AOT builds, we were setting
--no-checked and --conditional_directives flags. --no-checked is the
default, and we don't make use of conditional directives in Flutter.
2018-05-09 12:31:36 -07:00
Chris Bracken e4f553324a
Add pathFilter to Fingerprinter (#17412)
Allows users of Fingerprinter to filter the set of paths collected from
the explicitly-specified paths and those collected from depfiles.

In some cases, depfiles are emitted with files that are not present on
the local disk (e.g. the frontend compiler currently emits buildbot
paths for the dart core libraries and dart:ui). These files will not
materially affect whether we need to re-run a build action for which
they are inputs, since they're not present in the filesystem and
therefore cannot change.
2018-05-09 10:55:23 -07:00
Danny Tuppeny e8f454c96f Fix signature of mock launch 2018-05-09 16:03:59 +01:00
Danny Tuppeny 3cb539fdb5 Switch streams to Future<Lists> 2018-05-09 16:03:59 +01:00
Danny Tuppeny e456330a91 Remove superflous whitespace 2018-05-09 16:03:59 +01:00
Danny Tuppeny 445273f7d5 Fix filtering of emulator list
`flutter emulators nexus` will now return only those that'd match (eg. same things that `flutter emulators --start nexus` would match).
2018-05-09 16:03:59 +01:00
Danny Tuppeny 799678f0a7 Add some tests around device+ini parsing 2018-05-09 16:03:59 +01:00
Danny Tuppeny 4c67885b8e Add support for launching emulators 2018-05-09 16:03:59 +01:00
Danny Tuppeny 4d7c3c775f Read information about AVDs from config.ini 2018-05-09 16:03:59 +01:00
Danny Tuppeny 486e9534bf Add some emulator tests 2018-05-09 16:03:59 +01:00
Chris Bracken 8b8d368d2b
Replace --prefer-shared-library with --build-shared-library (#17394)
This replaces the --prefer-shared-library flag, which falls back to
regular (non-shared-lib) compile if the NDK is not found, with the
--build-shared-library flag, which exits with an error message if the
NDK is not found.

This simplifies the set of allowed code paths through AOT compile,
resulting in better testability and easier-to-follow logic. It also
results in more predictable behaviour for continuous integration and
other scenarios.
2018-05-08 17:28:53 -07:00
Chris Bracken 231b9425d6
Block debug AOT snapshot builds (#17393)
We previously blocked iOS AOT builds, but Android debug builds are
always JIT builds.
2018-05-08 11:06:58 -07:00
Danny Tuppeny 19ad6528e8 Don't write flutter stderr to output
Add to the extension thrown if it fails instead.
2018-05-08 10:23:40 +01:00
Danny Tuppeny 83296e74a1 Pass --run-forever to flutter-tester to ensure it doesn't prematurely quit
Without this, flutter-tester quits immediately after executing main().
2018-05-08 10:23:40 +01:00
Mikkel Nygaard Ravn 61c7171872
Recommend using Cocoapods 1.5.0 (#17308) 2018-05-08 08:02:39 +02:00
Chris Bracken 849676fc7f
Support multi-arch iOS binaries (#17312)
This change adds support for armv7, arm64, and universal iOS apps.

This change eliminates iOS target architecture hardcoding (previously
arm64 only) and uses the target architecture(s) specified in Xcode's
ARCHS setting ('Architectures' in Xcode Build Settings).

For universal binaries, set ARCHS to its default value, $(ARCHS_STANDARD).

Note that after changing the architecture in Xcode, developers should
run 'pod install' from the ios subdirectory of their project. A separate
change (that will land before this one) will add support for
automatically detecting project file and Podfile changes and re-running
pod install if necessary.

This change also adds an --ios-arch option to flutter build aot. In iOS
AOT builds (in profile and release mode), this dictates which
architectures are built into App.framework. This flag should generally
be unnecessary to set manually since flutter build aot is typically only
invoked internally by flutter itself.
2018-05-06 18:43:07 -07:00
Mikkel Nygaard Ravn 43c74341b2
Revert "Recommend upgrading to Cocoapods 1.5.0 (#17210)" (#17300)
This reverts commit c64ace84d5.
2018-05-04 20:50:01 +02:00
Mikkel Nygaard Ravn c64ace84d5
Recommend upgrading to Cocoapods 1.5.0 (#17210) 2018-05-04 20:31:09 +02:00
Todd Volkert d820e5f3b1
Use deprecated io constants (#17278)
The new values are not ready for use yet inside Google
2018-05-03 22:27:29 -07:00
Chris Bracken cdbdafa8f3
Rerun pod install on changed Xcode project, Podfile (#17274)
If the developer changes their Xcode build settings and their project
has plugins, pod install is required, (e.g. to pick up changes to the
target architecture).

Similarly, manual edits to the Podfile should trigger a pod install.
2018-05-03 19:40:16 -07:00
Yegor b2c98f9a4e
Roll engine to e976be13c51448f89107d082ec81e2b6731671fa (#17266)
* Roll engine to e976be13c51448f89107d082ec81e2b6731671fa

* move away from deprecated constants
2018-05-03 19:24:48 -07:00
Chris Bracken 66c7b6a935
Add Fingerprinter class (#17255)
Adds a Fingerprinter utility class that can be used to compute unique
fingerprints for a set of input paths and build options, compare to the
output of a previous run, and skip the build action if no inputs or
options have changed. The existing Fingerprint class still does all the
heavy lifting. Fingerprinter adds common operations such as
reading/writing/comparing fingerprints and parsing depfiles.

This migrates existing uses of Fingerprint over to Fingerprinter.

This also adds better fingerprinting to AOT snapshotting, which
previously failed to include several options in its fingerprint
(--preview-dart-2, --prefer-shared-library).
2018-05-03 17:31:37 -07:00
Chris Bracken 802301e16f
Extract shared library build from AOT snapshotting (#17166) 2018-05-01 15:14:20 -07:00
Chris Bracken c77ceb01be
Eliminate unnecessary params in assembly AOT (#17164)
Previously, we were incorrectly passing --vm_snapshot_data and
--isolate_snapshot_data options to gen_snapshot in assembly AOT builds.
These only make sense in AOT blob snapshot mode (alongside
--vm_snapshot_instructions and --isolate_snapshot_instructions).
2018-05-01 13:20:02 -07:00
Chris Bracken 42ed01522d
Split Snapshotter into AOT and Script classes (#17159)
There's very little code-sharing between the two, and what little there
is is concentrated in the GenSnapshotClass and the fingerprint
reading/writing utility methods.
2018-05-01 12:42:05 -07:00
Chris Bracken 68a1e2f7aa
Simplify iOS debug build (#17145)
iOS debug builds always run in interpreted mode whether on device or on
simulator. In both cases, we can skip snapshotting and link against an
empty App.framework. Previously, we did this for iOS simulator builds.
This does the same for device builds.

Previously, debug iOS builds used gen_snapshot to generate a core
snapshot, then used 'xxd' to generate C files containing the snapshot
data in buffers named kDartVmSnapshotData and kDartIsolateSnapshotData,
which are then compiled/linked into App.framework. This is unnecessary
since the VM compiled into Flutter.framework already contains this data.
2018-04-30 19:51:30 -07:00
Chris Bracken c3d43ef4a7
Improve AOT snapshot input verification + cleanup (#17144)
Bugfix: Moves AOT snapshot input verification past where the last input
is added to the inputs list.

Cleanup:
* Extracts _isValidAotPlatform method.
* Moves non-platform-specific logic to the top.
* Moves variable declaration closer to first use, and inlines to a
  narrower scope where possible.

This relands #17136, which was reverted in #17142 due to breakage in
on-device iOS debug builds.
2018-04-30 19:15:09 -07:00
Chris Bracken d19bdc4339
Revert "Improve AOT snapshot input verification + cleanup (#17136)" (#17142)
This reverts commit 100be23a34.
2018-04-30 17:34:36 -07:00
Chris Bracken 100be23a34
Improve AOT snapshot input verification + cleanup (#17136)
Bugfix: Moves AOT snapshot input verification past where the last input
is added to the inputs list.

Cleanup:
* Extracts _isValidAotPlatform method.
* Moves non-platform-specific logic to the top.
* Moves variable declaration closer to first use, and inlines to a
  narrower scope where possible.
2018-04-30 16:47:03 -07:00
Mikkel Nygaard Ravn 7a0ebad092
Revert "Flutter tools recommend using Cocoapods 1.5.0 (#16971)" (#17110)
This reverts commit 6e26cc28ba.
2018-04-30 11:45:58 +02:00
Mikkel Nygaard Ravn 6e26cc28ba
Flutter tools recommend using Cocoapods 1.5.0 (#16971) 2018-04-30 11:24:09 +02:00
Chris Bracken cdbb2385f1
Extract kernel compile from buildAotSnapshot (#17062)
Moves the kernel compile step to the beginning of the AOT build in a
separate method. This is pre-factoring for iOS universal builds where
the kernel build happens once, but we then snapshot twice: once for
armv7 and once for arm64.

This also writes dependencies to build/kernel_compile.d rather than
build/aot/snapshot.d, since that is immediately overwritten by
gen_snapshot.
2018-04-29 10:47:34 -07:00
Chris Bracken fe0de001d9
Eliminate unnecessary buildAotSnapshot parameter (#17056)
This isn't user-specifiable through a flag, so no need to pass it as a
parameter.
2018-04-27 15:51:07 -07:00
Chris Bracken ebcd08c6ef
Eliminate build aot --interpreter flag (#17025) (#17033)
This is required for iOS debug builds, but unused otherwise. In theory,
Android debug builds could be run in this mode, but this is historically
untested and adds unnecessary complexity to the code. If ad-hoc testing
is required, it can be patched in when necessary.

This re-lands 8c4f0c0d21 with a fix to
xcode_backend.sh to eliminate the use of --interpreter.
2018-04-26 17:25:23 -07:00
Chris Bracken e3247a3629
Revert "Eliminate build aot --interpreter flag (#17025)" (#17032)
Requires a fix to xcode_backend.sh. Will followup momentarily with that
fix.

This reverts commit 8c4f0c0d21.
2018-04-26 16:30:16 -07:00
Chris Bracken 8c4f0c0d21
Eliminate build aot --interpreter flag (#17025)
This is required for iOS debug builds, but unused otherwise. In theory,
Android debug builds could be run in this mode, but this is historically
untested and adds unnecessary complexity to the code. If ad-hoc testing
is required, it can be patched in when necessary.
2018-04-26 16:07:10 -07:00
Chris Bracken 82f969ff05
Move AOT snapshotting to Snapshotter class (#17015)
This moves AOT snapshotting out of build_aot.dart and into the
Snapshotter class. It also adds unit tests for iOS debug, profile, and
release builds.
2018-04-26 14:37:39 -07:00
Chris Bracken b45a260534
Make FakeGenSnapshot's outputs mutable for tests (#16976)
This simplifies tests by allowing the test author to express the outputs
they'd like the snapshotter to generate without creating a whole new
instance and context with the additional overrides.

Also sets the default set of outputs to none, setting them instead in
the setUp function for script snapshotting.
2018-04-25 20:50:33 -07:00
josephmr 7f9bf5ade9 Introduce DoctorValidatorsProvider to improve extensibility of flutter_tools (#16918)
DoctorValidatorsProvider is injected into Doctor to allow
overriding of DoctorValidators without needing to override
the whole Doctor instance.
2018-04-24 19:01:53 -07:00
Chris Bracken f570e046c9
Inline buildScriptSnapshot calls (#16940) 2018-04-24 16:07:14 -07:00
Chris Bracken 993f3947da
Generalise FakeGenSnapshot output generation (#16938)
Pre-factoring for addition of AOT snapshotting unit tests, which emit a
different set of expected outputs.
2018-04-24 15:51:10 -07:00
Chris Bracken 7ffcd3d22d
Extract KernelCompiler class (#16937)
Wraps the compile function in a class injected via the global context,
which makes it easier to mock in unit tests -- specifically tests for
AOT snapshotting, which already require pretty significant amounts of
mock inputs.
2018-04-24 14:03:41 -07:00
Chris Bracken de8a53c55b
Rename buildSnapshot to buildScriptSnapshot (#16905)
Renames buildSnapshot to build buildScriptSnapshot in preparation for
AOT snapshot tests.
2018-04-23 16:51:34 -07:00
PJ Essien fd7222eea8 Fix error with 'flutter packages get' in package projects (#16861)
Package projects were erroneously being treated as apps
2018-04-22 18:03:46 -07:00
Devon Carew 36cf1158ec
add the full path to a flutter command (#16720)
* add the full path to a flutter command

* remove an unused import

* review comments
2018-04-20 17:39:32 -07:00
Todd Volkert 12bbaba9ae
Do exponential backoff for all exceptions in VMService::defaultOpenChannel. (#16785)
We were trying to only catch WebSocketException, but in fact
SocketException can be thrown as well.
2018-04-19 23:36:15 -07:00
Yegor 85473d0941 retry VMService connection; expect missing PRODUCT_BUNDLE_IDENTIFIER (#16770)
Fixes #13655
2018-04-19 18:29:49 -07:00
Chris Bracken cf5778810b
Move script snapshot argumtents to Snapshotter (#16722)
This moves --vm_snapshot_data and --isolate_snapshot_data argument
hardcoding from GenSnapshot (a minimal wrapper around gen_snapshot
invocations) to Snapshotter.buildScriptSnapshot(). These arguments are
present in both AOT and script snapshots, but differ semantically: for
script snapshots they're inputs from the host engine artifacts
directory, for AOT snapshots they're outputs to the build directory.
2018-04-19 16:03:07 -07:00
Todd Volkert c83d24d547
Always add a DevFS asset entry for the font manifest (#16650)
The engine expects it to always be there.
2018-04-16 21:48:21 -07:00
jcollins-g 85be28d36b
Add catch for SocketException and tests for exception handling on fetchUrl. (#16569) 2018-04-16 14:02:07 -07:00
Alexander Aprelev e0cd42e4ad Roll engine to 76cb311d9c33720dcd19274228b39ecdbad8d9af (with rolled dart) (#16518)
* Handle error count reported by frontend.

Extend compilation result from single string to a structure(string filename and integer error count).

* Use ?.

* Include engine roll with dart sdk roll.

* parse(onError) -> tryParse

* Make '?? throw' more readable and avoid issue with analyzer

* Fix test so it mocks compiler output including errors count
2018-04-12 16:28:01 -07:00
Devon Carew a561722b2b
fix a test flake on appveyor (#16479)
* fix a test flake on appveyor

* only catch FileSystemExceptions
2018-04-12 15:07:51 -07:00
Devon Carew 071485258f
Revert "re-write flutter analyze (the single-shot and --flutter-repo) to use the analysis server (#16281)" (#16482)
This reverts commit 2f41ea546f.
2018-04-11 16:49:38 -07:00
Devon Carew 2f41ea546f
re-write flutter analyze (the single-shot and --flutter-repo) to use the analysis server (#16281)
re-write flutter analyze (the single-shot and --flutter-repo) to use the analysis server
2018-04-11 14:50:36 -07:00
Konstantin Scheglov cf500bf6cd
Integration test for FlutterTesterDevice. (#16424) 2018-04-11 08:52:17 -07:00
Todd Volkert f408bb06f9
Update dependencies (#16442) 2018-04-10 14:27:53 -07:00
Konstantin Scheglov 38970f5f75
Add a new Device backed by flutter_tester. (#16405) 2018-04-10 09:37:16 -07:00
Sam Rawlins 2329cb7ec8 Bump mockito to 3.0.0-alpha+3 (#16306)
* Bump mockito to 3.0.0-alpha+3

* Type annotation
2018-04-09 12:43:31 -07:00
Todd Volkert d9a3ced9db
Check whether we can run sdkmanager in AndroidWorkflow.licensesAccepted (#16343)
Fixes https://github.com/flutter/flutter/issues/16332
2018-04-09 08:57:11 -07:00
Konstantin Scheglov d121cbc80d
Make IntelliJPlugins tests use MemoryFileSystem. (#16341) 2018-04-08 09:46:11 -07:00
xster bdc06194fb
Prompt a solution message when flutter tools network fail in China (#16244) 2018-04-06 18:44:05 -07:00
Jason Simmons 24bfbeb246
Handle whitespace in entry values in the AAPT badging parser (#16245)
Fixes https://github.com/flutter/flutter/issues/16200
2018-04-05 10:24:05 -07:00
Konstantin Scheglov 4658ec0f9c
Extract checking IntelliJ packages into a helper and use for Android Studio. (#16198) 2018-04-04 10:48:46 -07:00
xster 48478b5952
Remove DevToolsSecurity check from initial flutter doctor (#16007) 2018-04-04 10:35:38 -07:00
Jonah Williams 0c89920069
Update logic for parsing sdk version number (#15918)
* add logic to parse 11.3 sim runtime major version

* add null aware and bump group number

* add comment describing version
2018-04-01 17:35:05 -07:00
Jason Simmons b4274ef685
URL encode asset paths to support reserved characters in paths (#16046)
Fixes https://github.com/flutter/flutter/issues/14864
2018-03-29 13:47:35 -07:00
Todd Volkert f69d125954
Move Cache.flutterRoot initialization up sooner (#16057)
It's required to be set before we detect local engine.

Was broken by #15984
2018-03-29 09:16:34 -07:00
Todd Volkert 2c898f6813
Remove writelnStderr (#16058)
Paying off technical debt...
2018-03-29 05:55:32 -07:00
xster 4565395693
Let iOS auto-signing tool handle Googler scenario (#16010)
* Let iOS auto-signing tool handle Googler scenario

* Forgot to update tests
2018-03-28 18:58:06 -07:00
Todd Volkert f8058d7fb2
Make AppContext API not be prone to Future oddities (#16034)
Follow-up comments to #15984
2018-03-28 15:17:29 -07:00
Alexander Aprelev bffae21571
Again move mockito to 300plus2 (#15981)
* Revert "Revert "Move mockito to 3.0.0-alpha. (#15949)" (#15979)"

This reverts commit e59651f925.

* More thenReturn to thenAnswer when mocking Futures

* Revert "More thenReturn to thenAnswer when mocking Futures"

This reverts commit 194d2cf417 as we are reverting engine roll.

* Revert "Revert "More thenReturn to thenAnswer when mocking Futures""

This reverts commit 52c9e96b30.

* Add dependency override

* Fix issue
2018-03-28 12:07:12 -07:00
Todd Volkert 8d11f5c763
Make AppContext immutable and race-free (#15984)
This updates AppContext per the recommendations in #15352

Fixes #15352
2018-03-28 10:58:28 -07:00
Alexander Aprelev e59651f925
Revert "Move mockito to 3.0.0-alpha. (#15949)" (#15979)
This reverts commit a7e6225820 as there are failing tests.
2018-03-27 10:38:20 -07:00
Alexander Aprelev a7e6225820
Move mockito to 3.0.0-alpha. (#15949)
* Move mockito to 3.0.0-alpha.

This is needed so it matches mockito version used internally.

* Pick up +2 for the fixes

* Fix whenReturn in fuchsia_remote_debug_protocol

* more thenReturn becomes thenAnswer

* more thenReturn becomes thenAnswer

* more thenReturn becomes thenAnswer
2018-03-27 10:05:16 -07:00
Alexandre Ardhuin 217b2bdaa1
add new lints of linter-0.1.44 and enable unnecessary_parenthesis (#15585) 2018-03-21 07:10:14 +01:00
Jonah Williams ad9506d25a
Traverse dependencies and dev dependencies separately (#15581)
* traverse dependencies and dev dependencies separately

* separate dev and reg deps

* update pubspecs

* add checksum string and update transitive dep string.  Add additional verify command to check checksum

* cleanup comments

* add missing space, quote, run verify-onlu from bot script

* rerun tool with fixed string

* ensure correct working directory and bump versions

* flutter not flutterRoot
2018-03-20 20:03:32 -07:00
Victor Choueiri 7edd5c8d6c Allow null flutter schema in pubspec (#15690) 2018-03-19 14:55:54 -07:00
Matan Lurey 81070893be
Fix Dart2 compatibility with flutter_tools' tests. (#15699) 2018-03-19 11:45:44 -07:00
Jason Simmons 1c04f951c8
Warn about missing host build binaries when compiling with a local engine (#15626)
Fixes https://github.com/flutter/flutter/issues/15361
2018-03-19 11:29:20 -07:00
Alexander Aprelev 43284d70d9
Reland filesystem options support with fix for Windows test. (#15655)
* Revert "Revert "Reland pass filesystem options (#15622)" (#15651)"

This reverts commit 0f3eada066.

* Fix for windows failing test

* !isEmpty -> isNotEmpty
2018-03-17 12:47:40 -07:00
Jonah Williams 298f4efc54
Fail ios workflow when simctl does not work (#15628)
* fail ios workflow when simctl does not work

* missed rename commit

* address comments
2018-03-17 10:57:51 -07:00
Alexander Aprelev 0f3eada066
Revert "Reland pass filesystem options (#15622)" (#15651)
This reverts commit bbcf55a5b0 as it breaks hot reload on Windows.
2018-03-17 08:11:52 -07:00
Alexander Aprelev bbcf55a5b0
Reland pass filesystem options (#15622)
* Revert "Revert "Pass filesystem-root, filesystem-scheme options through `flutter run, build` and gradle. (#15592)" (#15621)"

This reverts commit c663e3367d.

* Check whether filesystem-root is emtpy.

* Restore broken merge

* Fix windows test

* Adjust regex in test. Invalidate files by file path.
2018-03-17 06:49:15 -07:00
Vyacheslav Egorov 71b2cfb2a0
Turn Dart 2 mode by default. (#15565) 2018-03-16 20:29:38 +01:00
Alexander Aprelev c663e3367d
Revert "Pass filesystem-root, filesystem-scheme options through flutter run, build and gradle. (#15592)" (#15621)
This reverts commit 0f659fb10b as it
breaks bin/tasks/gradle_plugin_test.dart.
2018-03-16 12:28:30 -07:00
Alexander Aprelev 0f659fb10b
Pass filesystem-root, filesystem-scheme options through flutter run, build and gradle. (#15592)
* Pass filesystem-root, filesystem-scheme options through flutter run/build/gradle.
2018-03-16 11:16:54 -07:00
Alexandre Ardhuin 7667db6362
apply upcomming prefer_const_declarations (#15498) 2018-03-14 06:24:49 +01:00
Jonah Williams d682259eab
Use a set to remove duplicate channel names (#15392)
* Use a set to remove duplicate channel names

* Add test for git command
2018-03-12 17:04:02 -07:00
Jason Simmons 466d15433f
Use Dart 2 camel case constants (#15360) 2018-03-12 11:06:32 -07:00
Jonah Williams 4ace88bfc0
fix spacing issue and add test for supportsHardwareRendering (#15305)
* fix spacing issue and add test for supportsHardwareRendering

* remove extra async tag

* move spacing to prev line
2018-03-09 09:30:13 -08:00
Todd Volkert fffb7630c1
Give file system recording serialization a timeout. (#15217)
Some file I/O is piped from OS processes and never completes,
so without havign a timeout on the recording serialzation, we
end up waiting forever on that I/O to complete.
2018-03-07 11:39:59 -08:00
Mikkel Nygaard Ravn 0d59679624
Make Flutter tooling work on Android without Xcode being installed (#15161) 2018-03-07 08:41:23 +01:00
Josh Soref c5a5945e92 Spelling (#15229)
* spelling: accommodate

* spelling: allotted

* spelling: anonymous

* spelling: artificial

* spelling: associated

* spelling: asset

* spelling: button

* spelling: canvas

* spelling: compatibility

* spelling: coverage

* spelling: condition

* spelling: decoration

* spelling: deferring

* spelling: diameter

* spelling: direction

* spelling: displacement

* spelling: dropdown

* spelling: needing

* spelling: environment

* spelling: exited

* spelling: expansion

* spelling: explore

* spelling: families

* spelling: horizontal

* spelling: increment

* spelling: indices

* spelling: internationalization

* spelling: labrador

* spelling: localizations

* spelling: midflight

* spelling: milliseconds

* spelling: minimum

* spelling: multiple

* spelling: multiplication

* spelling: navigator

* spelling: overridden

* spelling: package

* spelling: performance

* spelling: platform

* spelling: porsche

* spelling: position

* spelling: preceded

* spelling: precede

* spelling: precedence

* spelling: print

* spelling: property

* spelling: readily

* spelling: reproducibility

* spelling: rounded

* spelling: scroll

* spelling: separate

* spelling: separator

* spelling: services

* spelling: specific

* spelling: specify

* spelling: synchronously

* spelling: through

* spelling: timeout

* spelling: triangle

* spelling: trivial

* spelling: unusual

* spelling: then

* spelling: vertically

* spelling: visible

* spelling: visited

* spelling: voice
2018-03-06 21:36:03 -08:00
Alexander Markov 602e6d74b5
Pass entry points JSON files to front-end server, take 2 (#15227)
* Pass entry points JSON files to front-end server (#15180)

* Fix ios/debug build which uses 'flutter build aot': do not require entry points files and disable AOT transformations in this mode
2018-03-06 18:45:45 -08:00
Alexander Markov 01d8e0a143
Revert "Pass entry points JSON files to front-end server" (#15223)
* Revert "Pass entry points JSON files to front-end server (#15180)"

This reverts commit 0edea88745.

Reason: buildbot failures on Mac.
2018-03-06 16:08:37 -08:00
Alexander Markov 0edea88745
Pass entry points JSON files to front-end server (#15180) 2018-03-06 14:50:22 -08:00
jcollins-g 050ee9d180
Improve robustness of --version parsing for sdkmanager (#15029) 2018-03-01 14:25:03 -08:00
Danny Tuppeny db1a942479
Show 32/64bit in VS Code headings on Windows (#15018)
* Show 32/64bit in VS Code headings on Windows

Fixes #14949.
2018-03-01 17:19:06 +00:00
Jacob Richman 7dbe9e7bcd
Fix cases where previewDart2 and trackWidgetCreation were (#14994)
accidentally missed due to named parameters being omitted.
2018-03-01 07:19:21 -08:00
jcollins-g 614df6949c
Android license detector in doctor, take two (#14783)
* Revert "Revert "Add android license verification to doctor and some refactoring" (#14727)"

This reverts commit d260294752.

* Add tests, fix sdkManagerEnv and use it consistently, and rearrange Status object model

* AnsiSpinner needs to leave the cursor where it found it.

* fix tests

* Const constructor warning only shows up on windows...?

* Avoid crash if we can't find the home directory

* Make pathVarSeparator return a string in the mock

* Implement review comments

* Fix out-of-order problem on stop
2018-02-28 12:09:52 -08:00
Victor Choueiri 9c895fabf2 Add intelliJ path to doctor output (#14795) 2018-02-27 15:19:32 -08:00
Ryan Macnak a0ffe87bc3
Use fx get-build-dir and fx netaddr --fuchsia to make fuchsia_reload more convenient. (#14854) 2018-02-26 15:14:09 -08:00
Devon Carew 761cb82c6d
update the IntelliJ metadata templates (#14867)
* update the IntelliJ metedata templates

* fix test expectation
2018-02-26 07:38:22 -08:00
Alexander Aprelev c3bbcb6f91
Add --preview-dart-2 to 'flutter drive' (#14858)
* Add --preview-dart-2 to 'flutter drive'

* Run driver side in --preview-dart-2 mode.

* Fix test
2018-02-24 09:28:58 -08:00
Mikkel Nygaard Ravn 681192a042
Fix test that makes assumptions about the impl of async method (#14804) 2018-02-21 20:47:26 +01:00
jcollins-g ca677011f8
Fix flutter tools packages_test when run off bots (#14692)
* Fix packages tests when run off bots

* Tweak dependencies to make bots happy

* Review comment
2018-02-21 09:54:07 -08:00
Mikkel Nygaard Ravn f526805e20
Fix of flutter packages get in plugin project (#14757) 2018-02-17 21:25:13 +01:00
xster f7f1685cac
Make sure broken pod install runs triggers pod install on next flutter build (#14753) 2018-02-16 16:05:16 -08:00
Todd Volkert 1686b6d56d
Remove fixed asset bundles - they're no longer used. (#14729) 2018-02-16 10:22:52 -08:00
Alexander Aprelev fe00598ab3
Reintroduce engineDartSdkPath artifact. (#14742)
This is needed to support running with local engine's dart sdk.

This is follow-up to https://github.com/flutter/flutter/pull/14702.
2018-02-16 09:20:23 -08:00
Mikkel Nygaard Ravn 57779e7e01
Skip new failing test while investigating (#14746)
Merging on red tree to get back to green.
2018-02-16 12:05:37 +01:00
Mikkel Nygaard Ravn 2000435728
Move plugin injection to just after pub get (#14743) 2018-02-16 10:17:28 +01:00
Mikkel Nygaard Ravn c2e1bc0322
Revert "Move plugin injection to just after pub get (#14560)" (#14734)
This reverts commit b3e4976ca2.
2018-02-15 22:55:36 +01:00
Mikkel Nygaard Ravn b3e4976ca2
Move plugin injection to just after pub get (#14560) 2018-02-15 22:17:12 +01:00
Todd Volkert d260294752
Revert "Add android license verification to doctor and some refactoring" (#14727)
Reports from that commit included:

* Doctor hanging
* Doctor prompting to install JDK
* AnsiStatus.cancel() printing elapsed time and extra newline
* Printing extra spinner character at the end of each line
2018-02-15 09:13:56 -08:00
Alexander Aprelev c0c6c60b8f
Use already downloaded dart sdk for frontend_server. (#14702)
* Use already downloaded dart sdk for frontend_server.

This is follow-up to https://github.com/flutter/flutter/pull/14610

* Remove reference to engine dart-sdk from artifacts

* Remove unused imports

* WIP to switch back to solution where dart sdk is downloaded into bin/cache/dart-sdk, but it is 'flutter precache -a' that can download all dart sdks for other platforms under bin/cache/artifacts/engine/<platform>/dart-sdk

* Download all dart sdks when 'flutter precache -a'
2018-02-15 07:29:42 -08:00
Devon Carew 53b348a50d
have flutter analyze support --preview-dart-2 (#14582)
* have flutter analyze support --preview-dart-2

* review comments
2018-02-14 16:00:29 -08:00
jcollins-g 59fe5d0f46
Add android license verification to doctor and some refactoring (#14535)
* Initial version, seems to work

* Unit test for android license checker

* Cleanups

* Windows analyzer wants const.

* Refinements to timeout

* review comments

* Forgot a nit
2018-02-14 15:25:12 -08:00
Alexander Aprelev a448994543
Use the Dart SDK built from Flutter engine rather than from dartlang.org (#14610)
* Use engine-built dart sdk

* Download dart-sdk from engine

* Move up deps to fix dart sdk constraint problem

* Update update_dart_sdk.ps1 for Windows

* Fix tests so they pass analysis

* More types for tests

* Roll engine

* Update dart sdk stamp location in flutter.bat

* Add newline
2018-02-14 07:18:25 -08:00
xster d401bd78ae
Reduce Xcode noise #3 (#14663)
* Revert "Revert "Reduce xcodebuild noise #2" (#14641)"

This reverts commit 2d47481f1e.

* Stop scrapping xcodebuild output, get the right build settings

* clone the command params first
2018-02-13 01:56:13 -08:00
Jacob Richman 2c05ecab9f
Flutter tools support for kernel transformer tracking Widget creation locations. (#13997) 2018-02-12 10:44:31 -08:00
Chris Bracken 2fe364fb0b
flutter_tools: URI-decode data: URI content (#14627)
In getFlutterRoot(), scripts loaded via data: URIs are URI encoded.
getFlutterRoot() scans the contents of the data for the file:// URI path
of the Flutter SDK, which itself is URI-encoded. The end result is that
if the SDK path contains a space, the embedded file:// URI will contain
a %20. When this is encoded in a data: URI, the contents are
URI-encoded, resulting in %2520, since the % is encoded to %25.

This patch decodes the data: URI before extracting the SDK file:// URI.
2018-02-10 12:51:33 -08:00
Chris Bracken fd6baba137
Allow spaces in SDK path in flutter_tools tests (#14617)
The Flutter engine now supports package: and file: imports that resolve
to paths on disk that include spaces and other URI-escaped characters.
This patch eliminates the restriction that Dart source paths not include
%20 (or other URI-escaped characters) in their paths in flutter_tool
tests.
2018-02-09 21:43:08 -08:00
jcollins-g 7982694a0c
Hide the NDK warning that should never happen with a regexp (#14503) 2018-02-08 12:16:04 -08:00
Danny Tuppeny 8ccc9a45c9 Add flutter doctor support for VS Code (#14463)
Looks in default install locations on Mac, Linux and Windows for VS Code. If found, looks in default extension location to see if Dart Code is installed.

If VS Code is not installed, nothing is reported. If VS Code is installed without Dart Code, a warning is shown.
2018-02-07 10:49:54 -08:00
Alexandre Ardhuin c02b6a8bcf
some whitespace cleanup (#14443) 2018-02-02 23:27:29 +01:00
jcollins-g 26102c9120
Condense and summarize doctor output without --verbose (#14173)
* Flatten change out from lots of merges and temporary hacks for #7224

* Expand fakes to cover cases where doctor passes

* -v != --verbose

* Cosmetic touchups

* delint

* Clean up summary line, add a switch for review comments

* Review comments

* nit

* review comment

* review comments
2018-02-01 10:27:55 -08:00
jcollins-g c81a5ed09a
fix rare flutter_tools logging crash in daemon mode (#14401)
* Populate AnsiTerminal in context for daemon launches

* Strip out AnsiTerminal additions to context since they are no longer needed
2018-02-01 09:30:53 -08:00
Alexandre Ardhuin 841d5d7bd5
prefer_const_declarations on local variables (#14358) 2018-02-01 07:51:26 +01:00
Todd Volkert 1859e82a3d
Extensibility improvements to flutter_tools (#14299)
* Make the current command injected into the AppContext, allowing
  other classes to inject the current command.
* Introduce `AssetBundleFactory`, an injected factory class for
  spawning instances of `AssetBundle`. This allows other run contexts
  to use custom asset bundling logic.
* Clean up RunCommand by removing a 'packages' argument that duplicated
  a global argument by the same name (and for the same purpose).
  Duplicate arguments are confusing and error-prone.
2018-01-29 09:40:28 -08:00
Vyacheslav Egorov c23509e9fd
Unpin test and upgrade packages (#14282)
* Unpin package:test and upgrade packages

* Update packages/flutter/test/foundation/stack_trace_test.dart

* Also add packages/flutter_tools/test/data/asset_test/font/.dartignore to ensure that update-packages --force-upgrade does not crash.
2018-01-26 10:40:03 -08:00
Alexandre Ardhuin 10f721c8a5
use const instead of final with const declarations (#14253) 2018-01-25 19:28:22 +01:00
Ian Hickson 97b9579e55
Random cleanup across the tree (#14221) 2018-01-25 09:46:48 -08:00
Jason Simmons e0e291011e
Delete test/data/asset_test/main/.packages (#14252)
(this will be generated by flutter update-packages)
2018-01-25 09:39:54 -08:00
Chris Bracken d3705f3ea9
Add android workflow test (#14260)
Adds unit tests for AndroidWorkflow.runLicenseManager().
2018-01-24 22:27:24 -08:00
Chris Bracken 74478d186c
Extract MockAndroidSdk and static utility method (#14258)
AndroidSdk and AndroidStudio depends relatively heavily on filesystem
access to locate installed tools. Testing code that relies on either of
these classes benefits from a utility method to generate a
legitimate-looking Android SDK directory layout for testing.
2018-01-24 20:40:25 -08:00
Chris Bracken 538ba522ee
Move common process/IO-related mocks to mocks.dart (#14255)
Moves MockProcess, MockStdio and a few other useful mocks from
packages_test.dart to common/mocks.dart. These are useful for testing
code with interactive IO.

This adds a new constructor to MockProcess to provide additional flexibility.
2018-01-24 17:16:30 -08:00
Michael Goderbauer 84580b545a
Make Assets more robust across platforms (#14246) 2018-01-24 13:16:23 -08:00
Chris Bracken 9654659c72
Add AndroidSdk.sdkManagerPath, sdkManagerVersion (#14247)
Convenience getters for the the path to the Android SDK manager and the
currently installed version of the tool.

Pre-factoring to support better checks around the --android-licenses
command, which uses a feature of the SDK manager that is unsupported in
older versions of the tool.
2018-01-24 12:38:08 -08:00
Michael Goderbauer 733bd04904
Fix custom fonts on Windows (#14191)
Fixes https://github.com/flutter/flutter/issues/13870.
2018-01-22 10:00:27 -08:00
jcollins-g 460dd00b72
Make automated_tests mostly ignore extraneous error messages (#14170)
* Ignore extraneous error messages outside of one skipped test

* Fix analysis error
2018-01-18 14:06:35 -08:00
Mikkel Nygaard Ravn 4353297079
Change default organization name to example.com in project templates (#14116) 2018-01-18 09:21:24 +01:00
Michael Goderbauer a67df9e1d1
Fix crash during artifact download (#14147) 2018-01-17 16:08:19 -08:00
Michael Goderbauer bf7cc09625
Moar tests on Windows (#14148) 2018-01-17 16:08:07 -08:00
Chris Bracken 6a42ed3f55
Decode syslog-encoded iOS logs (#14075)
Apple encodes syslog entries using a 7-bit encoding where input UTF-8 bytes
are encoded as follows:
1. 0x00 to 0x19: non-printing range. Some ignored, some encoded as <...>.
2. 0x20 to 0x7f: as-is, with the exception of 0x5c (backslash).
3. 0x5c (backslash): octal representation \134.
4. 0x80 to 0x9f: \M^x (using control-character notation for range 0x00 to 0x40).
5. 0xa0: octal representation \240.
6. 0xa1 to 0xf7: \M-x (where x is the input byte stripped of its high-order bit).
7. 0xf8 to 0xff: unused in 4-byte UTF-8.

As there doesn't appear to be a system tool to decode these strings, we
implement here in Dart. If we're unable to decode a string (e.g.
decoding results in an invalid UTF-8 string), we fall back to emitting
the log line as-is.
2018-01-12 15:12:26 -08:00
Alexander Aprelev e2e3c5df05
Reland 9534082fc0 with fix for incremen… (#14040)
* Reland 9534082fc0 with fix for incremental compilation.

When in incremental mode, awaiting exitCode won't work because compiler is not expected to exit after compilation.
Instead listen for stdout stream closing and report error if outputFilename has not been received.

* Fix lints
2018-01-11 14:33:50 -08:00
Devon Carew ccc0d29454
send 'reloadRecommended' info to IDEs (#13996)
* send 'reloadRecommended' info to IDEs

* rename hint ==> hintMessage
2018-01-11 12:55:00 -08:00
Alexander Aprelev 5dc4ce85d9
Revert "Handle abnormal termination of frontend compiler. (#13982)" (#14037)
This reverts commit 9534082fc0.

Causes hot_mode_dev_cycle__preview_dart_2_benchmark test timeout.
2018-01-10 19:54:08 -08:00
Alexander Aprelev 9534082fc0
Handle abnormal termination of frontend compiler. (#13982)
* Check frontend_server exit code.

When frontend_server completes abnormally, flutter tools has to stop and let user know.

* Add tests
2018-01-10 17:51:08 -08:00
Alexander Aprelev 27c61eeb50
Explicitly report CFE output(when using --preview-dart-2) (#13936)
* Explicitly report CFE output(when using --preview-dart-2)

* Fix test so it looks at errorText

* Fix expected text
2018-01-05 18:51:35 -08:00
xster e6e4406de8
Fix simulator not printing to console lines with ) (#13920)
* it's fixed

* Add test for simulator log reader
2018-01-05 11:34:05 -08:00
jcollins-g e25d881046
Reduce the chances of bots reporting analytics (#13915)
* First version

* Prevent modification of .flutter during analytics test

* Pass in directory and override analyzer warning due to conditional import

* Review comments
2018-01-05 09:38:13 -08:00
xster 4d2c2aaaa1
Revert pod install skip revert (#13774)
* Revert "Revert "Enable developers to run pod from terminal directly and skip pod install if possible. (#13374)" (#13770)"

This reverts commit 0759043e47.

* some nits on cocoapods code

* put back the FLUTTER_FRAMEWORK_DIR env variable
2017-12-27 07:30:31 -08:00
xster 0759043e47
Revert "Enable developers to run pod from terminal directly and skip pod install if possible. (#13374)" (#13770)
This reverts commit c6a17525e8.
2017-12-27 02:51:44 -08:00
KyleWong c6a17525e8 Enable developers to run pod from terminal directly and skip pod install if possible. (#13374)
Avoids running pod install if .flutter-plugins and its flutter framework pod dependency didn't change
2017-12-27 01:27:15 -08:00
Alan Russian 30720bd148 Change async stubbing to use thenAnswer. (#13521)
* Change async stubbing to use thenAnswer.

Mockito now prohibits calling thenReturn with Futures and Streams. dart-lang/mockito#79

* Update all Mockito deps to 3.0.0.

* Revert "Update all Mockito deps to 3.0.0."

This reverts commit e8ab9d37c3.

I did not correctly update the mockito dep, and there's no easy way to update to 3.0 alpha right now.

* Change thenAnswer((_) => to thenAnswer((invocation) =>

* Add Invocation type to thenAnswer lambdas
2017-12-19 13:13:57 -08:00
Mikkel Nygaard Ravn d2d86e35c5
Bump test timeout threshold (#13661) 2017-12-18 23:04:07 +01:00
Chris Bracken 7fb78523e9
Require Xcode 9.0 or later for iOS builds (#13608) (#13622)
We now require Xcode 9.0, which ships with the iOS 11 SDK, for iOS
builds. This change does not affect the minimum supported iOS deployment
target, which remains iOS 8.

The iOS 11 SDK adds support for safe area insets, which model the status
bar, iPhone X home indicator, and symmetric horizontal insets to avoid
the iPhone X sensor housing when in landscape mode.

This re-lands flutter/flutter#13608 now that the devicelab Macs have
been updated to Xcode 9.
2017-12-15 18:13:10 -08:00
amirh 05dba60c63
keep recursing past directories with pubspec.yaml when gathering packages (#13573) 2017-12-15 12:21:03 -08:00
Chris Bracken 6728d4845d
Revert "Require Xcode 9.0 or later for iOS builds (#13608)" (#13612)
Our devicelab machines have not yet been upgraded to Xcode 9. Once this
has been done, I'll re-land this.

This reverts commit 0fac5f01a2.
2017-12-15 11:59:42 -08:00
Chris Bracken 0fac5f01a2
Require Xcode 9.0 or later for iOS builds (#13608)
We now require Xcode 9.0, which ships with the iOS 11 SDK, for iOS
builds. This change does not affect the minimum supported iOS deployment
target, which remains iOS 8.

The iOS 11 SDK adds support for safe area insets, which model the status
bar, iPhone X home indicator, and symmetric horizontal insets to avoid
the iPhone X sensor housing when in landscape mode.
2017-12-15 11:44:01 -08:00
Phil Quitslund 3346c5c736
Update plugin test template. (#13516)
* Update plugin test template.

* Add flutter test run verification.

* Tweak and test runs for package projects.
2017-12-14 08:51:33 -08:00
Greg Spencer 6b8ceb9472
Make the create command call pub get online instead of offline. (#13505)
We thought it would be OK to call the create command offline-only, but it turns out that isn't a great idea because not all of the create template dependencies are cached by running flutter_tool.

This PR makes it go online by default when running pub get after creating a project, and adds an "--offline" flag to the create command so that offline users can use it offline if their cache is warm.
2017-12-11 21:21:41 -08:00
Ian Hickson 186d1e9b0d
Have the framework in charge of scheduling frames. (#13344)
...instead of the engine.
2017-12-08 16:51:59 -08:00
Greg Spencer aedee0df3d
Make create command use pub in offline mode. (#13462)
In order to allow offline usage of the create command we need to be able to tell pub not to try and contact the server to see if new versions are available. Since all the versions that create could want are pinned, it shouldn't need to check for new versions.
2017-12-08 15:32:10 -08:00
Devon Carew 0350c9ecff
route device issue diagnostics to flutter doctor (#13346)
* route device issue diagnostics to flutter doctor

* review comments

* review comments
2017-12-07 09:32:23 -08:00
Greg Spencer 389e13f8b9
Fixing the pub get test so that it doesn't care what the flutter root looks like. (#13385) 2017-12-06 13:27:29 -08:00
Kevin Moore 13a6d40f90
flutter_tools: ensure the context value passed to pub is consistent (#13366)
Adds a class `PubContext` with a fixed set of allowed values
Make it clear these values should not be changed casually

Fixed one inconsistency already: update_packages vs update_pkgs
Provide more information for verify calls
Eliminate `ctx_` prefix.
2017-12-06 08:10:56 -08:00
Greg Spencer f29ecba6de
Use .pub-cache from Flutter root, if it exists. (#13358)
The purpose of this PR is to make it so that when the user runs 'flutter', if they have a .pub-cache directory in their flutter root, we use that instead of the default location for the pub cache. Otherwise, it should act as before.

The eventual goal is to support a pre-populated flutter .zip/.tar.gz file that has everything the developer needs in one bundle. In order for that to actually work, we need to have the pub cache be self-contained, and not in the user's home dir.

Another advantage of this is that if you have multiple flutter repos that you're switching between, then the versions in the pub cache will remain static when you switch between them.

This is an attempt to re-land: #13248. Includes a fix for the test that makes it work on bots in the presence of PUB_CACHE being set, and no other changes.
2017-12-05 14:46:39 -08:00
Greg Spencer c89cf6ccc6
Reverting my .pub-cache change to figure out why it's still failing. (#13355)
* Revert "Add tests."

This reverts commit 31bad961ff.

* Revert "Use .pub-cache from Flutter root, if it exists. (#13248)"

This reverts commit 72d6bcc3f7.
2017-12-05 12:51:18 -08:00
Greg Spencer 3174443e0e
Fix a problem with the flutter_tools/test/dart/pub_get_test.dart test. (#13354)
It turns out that when a PR build clones the flutter repo, it puts it into a directory called "flutter", and when the "real" build clones the flutter repo, it puts it into a directory called "build". This allowed the tests to succeed in my PR, but fail when I committed it.

This fixes the test so it doesn't depend on the cloned directory name.
2017-12-05 12:30:13 -08:00
Greg Spencer 72d6bcc3f7
Use .pub-cache from Flutter root, if it exists. (#13248)
The purpose of this PR is to make it so that when the user runs 'flutter', if they have a .pub-cache directory in their flutter root, we use that instead of the default location for the pub cache. Otherwise, it should act as before.

The eventual goal is to support a pre-populated flutter .zip/.tar.gz file that has everything the developer needs in one bundle. In order for that to actually work, we need to have the pub cache be self-contained, and not in the user's home dir.

Another advantage of this is that if you have multiple flutter repos that you're switching between, then the versions in the pub cache will remain static when you switch between them.
2017-12-05 12:02:14 -08:00
Kevin Moore c25608d83b
Provide more information in PUB_ENVIRONMENT for pub get/upgrade (#13307)
* Provide more information in PUB_ENVIRONMENT for `pub get/upgrade`

Should help diagnose and fix https://github.com/dart-lang/pub-dartlang-dart/issues/636
2017-12-01 16:20:06 -08:00
Mehmet Fidanboylu b61cbc735e
Add capability to print engine dart sdk to flutter doctor (#13085)
* Add capability to print engine dart sdk to flutter doctor

* First round of review comments

* second round of comments

* Final review comments
2017-11-29 11:03:50 -08:00
Todd Volkert 137f0751b2
Add support for IOS_SIMULATOR_HOME environment variable in IOSSimulat… (#13236)
Add support for IOS_SIMULATOR_HOME environment variable in IOSSimulator.logFilePath

flutter_tools can be run on environments where the user's HOME directory
is not the root of the iOS simulators' configs. This change adds support
for such environments by allowing the caller to set the simulator root
directory via an environment variable.
2017-11-29 08:22:05 -08:00
Greg Spencer 909406ba25
Consolidating .gitignore files. (#13002)
This consolidates all of the non-template .gitignore rules into the top level .gitignore, to ignore common things more broadly, with less maintenance needed for the .gitignore files. Does not touch the templates, so that they still produce needed .gitignores as part of flutter create.
2017-11-28 17:06:57 -08:00
Todd Volkert e792c6bb5b
Add support for binding to IPv6 localhost in flutter run (#13136)
This allows `flutter run` to work on hosts that are IPv6-only.
2017-11-21 20:12:21 -08:00
Martin Kustermann 545ec9efb7
Add support for NDK discovery and add --prefer-shared-library option (#12788)
* Add support for NDK discovery and add --prefer-shared-library option

We would like to be able to use native tools (e.g. simpleperf, gdb) with
precompiled flutter apps.  The native tools work much better with *.so
files instead of the custom formats the Dart VM uses by default.

The reason for using blobs / instruction snapshots is that we do not
want to force flutter users to install the Android NDK.

This CL adds a `--prefer-shared-library` flag to e.g. `flutter build
apk` which will use the NDK compiler (if available) to turn the
precompiled app assembly file to an `*.so` file.  If the NDK compiler is
not available it will default to the default behavior.

* Rebase, add test for NDK detection, augment flutter.gradle with @Input for flag

* Use InMemoryFileSystem for test

* Remove unused import

* Address some analyzer warnings
2017-11-21 15:44:03 +01:00
xster d5d2cdfeef
A bunch of onboarding error detections (#12977) 2017-11-16 22:53:22 -08:00
Todd Volkert f0e8819886
Extract Android SDK version from named platform dirs. (#13056)
Previously, we were mapping certain named platforms
(e.g. `android-stable`) to their corresponding version.
this had two problems:

1. The version could become out of date. For instance, we had
   mapped `android-stable` to version 24, but the stable version
   is now 27.
2. The list of possible named versions wasn't comprehensive.
   Some Android SDKs just list the platform as `stable`, or
   `experimental`, etc.

This change updates the platform version detection to use
the `build.prop` file that exists in the platform directory
(only for cases where the version number is not encoded into
the directory name).
2017-11-16 17:38:53 -08:00
xster 9a0d4cf75b
Add a Flutter version comparison function (#12959)
* add git version comparison function

* use [] in dartdoc

* Make method instance method
2017-11-14 18:50:15 -08:00
Greg Spencer 7adb720dcc
Fixed a typo that I forgot to push before committing ide-config change. (#12998) 2017-11-13 15:27:16 -08:00
Greg Spencer 797b39e9b2
Creates a new flutter command 'ide-config' and removes *.iml and .idea from tree. (#12958)
Creates a new (hidden) flutter command 'ide-config' that will create and/or update
existing .iml files and some files under the .idea directory, as well as
removing existing *.iml files and the .idea directory.

It also:

 * Adds *.iml to the .gitignore
 * Removes existing .iml files from the repo, and moves them to the
   packages/flutter_tools/ide_templates/intellij directory.
 * Adds a flag to ide-config ('--update-templates') that will take any new .iml
   files in the flutter tree and add them to the existing templates.
     - If --overwrite is also specified, then all existing templates will also
       be overwritten with the contents from the flutter tree, and any that have
       been deleted from the flutter tree will also be removed from the
       templates.
 * Added new run configurations for all existing app targets that will now also
   be automatically added to IntelliJ.
 * Setting up the environment also includes setting the coding style guidelines
   and the git VCS.
 * Note that after this PR lands, Flutter developers will need to run it once to
   re-create the .iml files and configuration files that have been removed.

After this PR lands, .iml files will no longer appear in the untracked files
section for git.
2017-11-13 10:55:22 -08:00
Mehmet Fidanboylu 96942bc797
Get rid of static version methods which ignore the AppContext (#12971)
* Get rid of static version methods which ignore the AppContext

* Review comments

* Review Comments

* Make branch behave the same as original implementation

* Fix tests
2017-11-10 17:31:18 -08:00
xster e94038154b
Print a warning when cocoapods specs repo is out of date (#12915) 2017-11-10 12:41:58 -08:00
Mikkel Nygaard Ravn c936aa8cd4
One more timeout. Centralize definitions. (#12970) 2017-11-10 15:56:17 +01:00
Mikkel Nygaard Ravn e3d5cbc929
Make timeout more robust (#12969) 2017-11-10 13:51:52 +01:00