* setup wireless debugging to use device IP
* fix tests
* fix unused var and missing annotation
* remove unneeded try catch
* remove commented out line, change null to package id
* better way to get package id
* update mDNS lookup to continously check for server, add messaging if takes too long to find observatory url, update flutter drive to enable publish-port if using network device
* Refactor mDNS Discovery to poll for observatories and better handle multiple instances of the same app. Update drive command to make publish-port more stable. Update attach for iOS to only use Protocol Discovery if applicable, run mDNS and Protocol Discovery simultaneously, handle --debug-port/--debug-url/--device-vmservice-port, continously poll for obseravtories with mDNS, include port in error message when mutliple available
* add and update comments, use logger spinner intead of timer in flutter attach, other small improvements
* add newline to message so next log won't be on same line
* fix install/waiting for permission status progress so it doens't double print the time it took.
* only print backtrace if observatory times out on a physical usb connected device
* fix test
* Update related references from Observatory to Dart VM Service
* fix test
Update test expectations from application/javascript -> text/javascript
`package:mime` now uses `text/javascript` and not `application/javascript`.
See https://github.com/dart-lang/mime/pull/76.
See https://datatracker.ietf.org/doc/html/rfc9239.
> This document defines equivalent processing requirements for the various script media types. The most widely supported media type in use is `text/javascript`; all others are considered historical and obsolete aliases of `text/javascript`.
* Add Info.plist from build directory as input path to Thin Binary build phase
* fix directive ordering
* migrate benchmark, integration, and example tests
* Use correct API doc link in create --sample help message
* Verify Flutter and Dart website links in tool help messages use https
* Adjust test failure reasoning message
* Align `flutter pub get/upgrade/add/remove/downgrade`
* Add final . to command description
* Remove trailing whitespace
* Don't print message that command is being run
* Update expectations
* Use relative path
* Remove duplicated line
* Improve function dartdoc
* Make pub get runner respect printProgress and retry parameters
* Fix typo
* Add regression test
* Improve test
* Fix implementation and test
* Test to fix flutter_drone tests
* Revert test
* Attempt #2 to fix flutter_drone tests
* Revert attempt
* Hack: Force printProgress to debug Windows tests
* Use ProcessUtils.run to avoid dangling stdout and stderr
* Update documentation
* Clean up retry argument
* Work in progress.
* Some fixes to the command line.
* Bootstrapping works.
* Change kickoff order to maximize concurrency.
* Fix analyzer errors and formatting issues.
* Fix doc comment.
* Added unit tests for some of the web targets.
* Format issue.
* Add an integration test that builds an app to wasm.
* Add a todo for depfiles.
* Formatting.
* Apparently the license header needs to say 2014.
* `file://` URIs confuse dart2wasm on Windows. Just use absolute paths.
* Update unit tests to match new path passing.
* Have a distinct build directory for wasm, and fixes for some upstream changes.
* [tools]some ui polish for build ipa validation
* do not print out a few success validations
* rename installed type to success for more general usage
* forgot nit after reverting custom validation types and re-use doctor types
* wip
* remove temp text file
* fix tests
* add test
* default to off
* restore gitignore
* update
* apply annotation to cupertino icons as well
* update reference to library in icon_tree_shaker.dart
* update tests
* fix tests
* remove hack to skip non-const check on web
* add hint about how much reduction and test
* Add an integration test to plugin template example
Dart unit tests don't exercise host-side plugin code at all, so the
example tests in the plugin template currently have very little
meaningful coverage. This adds an integration test to the example app
when creating a plugin, so that there's an example of how to actually
test that a complete round-trip plugin call works.
This is done as a separate template that's currently only used by the
plugin template because I don't know what a good example for a
non-plugin case would be that isn't largely just a duplicate of the
widget tests. However, the integration test pre-includes conditionals
around the parts that are plugin-specific so that it can more easily be
expanded to other use cases later (e.g., in
https://github.com/flutter/flutter/issues/68818).
Part of https://github.com/flutter/flutter/issues/82458
* Add integration test to expected dependencies of a plugin app
* Test fixes
* Make an explicit test case
* Roll Flutter Engine from 67254d6e4b03 to 8d83b98c55b3
* Roll Dart SDK from 35a9facce191 to e517487c5679 (Dart 3.0) (#38105)
* Bump SDK versions.
* Bump Dart SDK version constraints
* Update shrine package to 2.0.1 (null safe version)
* Fix more tests.
* Include patches from Jason for min android sdk version
* Fix analyzer warning
* Use file:/// style uris when passing platform to the compiler.
* License header.
* Use BufferLogger.
* Don't unadvertently convert strings to regexes for matching purposes.
* Fix formatting.
* More formatting.
You can now specify a --local-web-sdk flag to point to a wasm_release folder. This will make it so that only artifacts that pertain to the web sdk are overridden to point to the wasm_release folder. Other artifacts (such as impellerc) will pull from the cache, or from the --local-engine path if that is specified.
This also uses precompiled platform kernel files for both ddc and dart2js
* [gen_l10n] keys can contain dollar sign
Fixes#112250
* Update packages/flutter_tools/lib/src/localizations/gen_l10n.dart
Co-authored-by: Christopher Fujino <fujino@google.com>
* Removes retries from "pub get" and proxies its stdout output
* Fix issue where ErrorHandlingProcessManager does not forward "mode" parameter to backing ProcessManager's "start" method
* Make "pub get" use ProcessStartMode.inheritStdio instead of forwarding bytes to stdout and stderr
* Fix tests
* Remove unused env var
* Add back 'Running "flutter pub get"...' status log
* Fix indent
* Add Pub.test() constructor which lets tests mock stdio
* [flutter_tools] Forward app.webLaunchUrl event from Flutter to DAP clients
Fixes https://github.com/Dart-Code/Dart-Code/issues/4292.
* Update packages/flutter_tools/lib/src/debug_adapters/flutter_adapter.dart
Co-authored-by: Christopher Fujino <fujino@google.com>
* Another static const instead of final
Co-authored-by: Christopher Fujino <fujino@google.com>
* normalize windows file path cases in flutter validator
* fix
* make comparison more accurate by checking .startsWith() rather than .contains()
* fix method name
* call path.canonicalize
* fix
* [tools]build ipa validate icon size
* add more checks in case apple change the format, and also add device lab tests
* do not depend on collection package
* [flutter_tools] Add --dump-info, --no-frequency-based-minification flags
Also some cleanup to named arguments to the buildWeb function
Fixes https://github.com/flutter/flutter/issues/115854
* fix tests
* [tools]build ipa validate template icon files
* use the same box for both validations, and added some unit test, and some nits
* add unit test for templateImageDirectory
* use fs.path.join intead of raw path
* use the correct filesystem
* lint
* use absolute path for flutter_template_images
* fix rebase
* update indentation
* removing default values for [reporter] and [timeout]]
* passing reporter arg to see tests pass
* added test to confirm TestCommand is not passing defaults
* add'l helper message for [reporter] arg
* default behavior for github actions + fixed tests
* removing github conditional for reporter + related test
* removing unused import
* Create a main alias for master channel.
To slowly migrate away from master branch in the flutter repository we
created a main branch that is mirroring master branch. This PR is also
adding a channel alias that will allow to use master/main interchangeably.
Bug: https://github.com/flutter/flutter/issues/95041
* Fix channel tests.
* Remove additional space.
* Dart2JS build step looks for compiled platform binaries.
* Use new locations of platform binaries.
* Added --local-web-sdk command line flag.
* Need to use the matching frontend server when doing ddc stuff.
* Update packages/flutter_tools/lib/src/test/web_test_compiler.dart
Co-authored-by: Mouad Debbar <mouad.debbar@gmail.com>
* Update packages/flutter_tools/lib/src/runner/flutter_command_runner.dart
Co-authored-by: Mouad Debbar <mouad.debbar@gmail.com>
* Formatting issues.
* Need to use URI format for platform dill.
* Fix resident runner tests.
* Fix analysis issue.
* Fix and add unit tests.
* Add some useful comments.
* Refine doc comments for flags.
Co-authored-by: Mouad Debbar <mouad.debbar@gmail.com>
The recent survey suggests that some people are not finding documentation after they get started with Flutter, so let's just give them links right away. It might not help everyone but there's not really any downside so...
2022-11-10 22:13:52 +00:00
The one with the braid (she/her) | Dфҿ mit dem Zopf (sie/ihr)
- removes invalid arch check on Android workflow in order to enable Android development on any device supported
Signed-off-by: TheOneWithTheBraid <the-one@with-the-braid.cf>
Signed-off-by: TheOneWithTheBraid <the-one@with-the-braid.cf>
* [flutter_tools/dap] Add support for forwarding `flutter run --machine` requests to the DAP client
Currently the only request that Flutter sends to the client is `app.exposeUrl` though most of this code is generic to support other requests that may be added in future.
* Improve comment
* Fix thrown strings
* StateError -> DebugAdapterException
* Add a non-null assertion and assert
* Use DebugAdapterException to handle restartRequests sent before process starts
* Fix typo + use local var
* Don't try to actually send Flutter messages in tests because there's no process
* add debugging options to simulator, test more debugging flags, add tests for other launch arguements
* refactor iOS launch arguments to use one function for both simulator and physical devices
* treat dart flags differently between physical and simulator
* Simplify some flags between devices.
Change --disable-service-auth-codes to not always be included for physical devices, only if disableServiceAuthCodes is true.
Change --disable-observatory-publication to be used for simulator devices too.
Change --enable-checked-mode & --verify-entry-points to be used if debuggingEnabled is true regardless of device type.
Chnage --trace-startup to be used for simulator devices too.
* fix ios release mode with buildable app startApp test
* determine observatory-port from deviceVmServicePort and hostVmServicePort
* add comments and remove hasObservatoryPort
* Alphabetize setup calls
* Add --flavor as an option for install
* Add verbose logging in install command
* Test that flavors build succeeds with proper flavor and fails with bogus one.
* Remove unused import
* The import was used...
* SQUASH
* Add flavor install test
* Rename test
* Add flavors install integration tests
* correct error message
* remove unused imports
* Delete copy test
* update test target
* Refactor mechanism to read buildInfo
* Remove unused import
* Set affected test targets to bringup: true
Co-authored-by: a-wallen <stephenwallen@google.com>
* exclude xcworkspace that begins with a period
* fix if spacing, add comment
* add unit test for when no xcworkspace found
* update to use xcodeWorkspace, make it nullable and refactor
* check if hostAppRoot exists before trying to get xcworkspace
* use local variables to take advantage of type promotion
* only check if not null, don't need to check if exists
* readd exist check for migrate
* readd missing line at end of file
Increases the minimum macOS deployment target from macOS 10.13 (High Sierra) to 10.14 (Mojave) in the macOS app templates.
Includes:
* Update migration for macOS 10.11 apps to upgrade to 10.14
* Adds migration for macOS 10.13 apps to upgrade to 10.14
* Apply migration to all examples, and integration tests
This does not increase version in the plugin templates since those will need to wait until the 10.14 framework rolls to stable channel, so new plugins can build with apps created with `flutter create` on stable channel.
Issue: https://github.com/flutter/flutter/issues/114445
See RFC: http://flutter.dev/go/flutter-drop-macOS-10.13-2022-q4
See previous patch: https://github.com/flutter/flutter/pull/107689
When testing whether a macOS deployment target version migration is
unnecessary due to already being at the target version, we were
previously checking the iOS deployment target version rather than the
macOS version. This updates it to test MACOSX_DEPLOYMENT_TARGET instead.
* Use UriConverter from context for test
* Fix type
* Pass URI converter using installHook
* Fix formatting
* Fix formatting in test
* Add comment about URI converter
The flag is true by default so the behavior does not change.
Next steps:
Use the flag for updated debugger module names:
- Frontend server: make the current behavior controlled
by the flag non-conditional
- Frontend server: add more debugging names changes under
the same flag, false by default
- Dwds: make changes required for the new module names.
- Flutter tools: when matching dwds changes roll to flutter,
pass the flag to the frontend server again.
- Cleanup:
- Frontend server: make new behavior default
- Flutter tools: remove uses of the flag.
- Frontend server: remove the flag.
Towards: https://github.com/dart-lang/webdev/issues/1692
Helps: https://github.com/flutter/flutter/issues/106727
* [flutter_tools] [dap] Ensure DAP sends app.stop/app.detach during terminate
Fixes an issue where the flutter_tester device may not be cleaned up correctly if we just terminate the Flutter process.
* Update integration test expectations
* Revert accidental commit
Fuchsia will soon remove all support for Component Framework version 1
components (recognized by component manifests ending in `.cmx`).
Notably, some of the `flutter` tool commands for Fuchsia devices--
notably, but not limited to, those related to CFv1--are outdated, and
either do not work today or soon won't work.
This PR removes the outdated components and commands, replacing some
with the newer version, or simply removing the non-working features,
in some cases.
* Check for bad characters in path on Windows build
* Doc comments
* Fix formatting
* Commenting/formatting
* Link to issue in comment
* Comments, formatting
* Global var rename
Speedup coverage test runs by using (new) coverage handle with caching.
On a `flutter test --coverage` run on `packages/flutter` the runtime goes from ~828 seconds to ~617 seconds, or a ~25% reduction in time spent (testing without coverage takes ~236 seconds so the overhead of `--coverage` in this case goes from ~592 seconds to ~381 seconds, or a ~35% reduction).
* [flutter_tools] [dap] Add support for passing env variables to spawned processes
* Use named args
* Use in-memory fs and FakePlatform
* Pass filesystem style to MemoryFileSystem
* Remove periods from pub --help command descriptions
* Add trailing period consistently
* Remove added period from PackagesInteractiveGetCommand description
* Verify line ending for first line of command description
* Update _allowedTrailingPatterns to validate that lines end with only one period, bang, or colon
* Ensure build is done in incremental mode.
This allows for faster bootstrapping of the compiler from previously created dill file.
Fixes https://github.com/flutter/flutter/issues/107183
* Avoid initializeFromDill in aot mode
* Update tests
The `flutter doctor` command uses `vswhere.exe` to verify the Visual Studio installation. This `vswhere.exe` is known to encode its output incorrectly. This is problematic as the `description` property is localized, and in certain languages this results in invalid JSON due to the incorrect encoding.
This change introduces a fallback to our `vswhere.exe` output parsing logic: if parsing JSON fails, remove the `description` property and retry parsing the JSON.
This fix was also tested on the outputs provided here: https://github.com/flutter/flutter/issues/106601#issuecomment-1170138123
Addresses https://github.com/flutter/flutter/issues/106601
Previously developers had to edit their `Runner.rc` file to update their executable's version information. Now, version information will automatically be set from `flutter build`'s arguments or the `pubspec.yaml` file for new projects.
Addresses https://github.com/flutter/flutter/issues/73652
* 9508a368d Roll Dart SDK from 692562354d6d to d3b8091c30f0 (1 revision) (flutter/engine#34273)
* a2985c034 Roll Fuchsia Linux SDK from F1U6IH2Nf... to aRT7s0Yct... (flutter/engine#34251)
* 54867f360 Roll Skia from bdd0205ae470 to 4345a2ea731a (1 revision) (flutter/engine#34268)
* 98221a22d Clean up text input configuration in clearTextInputClient (flutter/engine#34209)
* b9e02cc83 Adds a license check shard to CI (flutter/engine#34274)
* 1daf7ba98 [Impeller] Metal:Reset Encoder viewport and scissor rect in case the command specifies no opinion (flutter/engine#34252)
* 83b9a591a [Linux] remove duplicate clone_string() in favor of g_strdup() (flutter/engine#34031)
* Don't use .packages
* Another attempt
Co-authored-by: engine-flutter-autoroll <engine-flutter-autoroll@skia.org>
Add an integration test that verifies that `flutter build windows` produces the expected executable. In the future, this will be used to test that version information is properly stamped on the executable.
Part of https://github.com/flutter/flutter/issues/73652.
Currently CMake is tested entirely through `build_linux_test.dart`. However, CMake is also used for Windows builds. This adds additional "generic" tests:
1. Parsing CMake files
2. Generating CMake config files.
In the future, this will be used to test that generated CMake config files contain the expected version information, which will be used to flow version information to Windows executables.
Part of https://github.com/flutter/flutter/issues/73652.
This PR adds extra timings for a hot reload.
As an example, before a user might see
> Performing hot reload...
> Reloaded 1 of 788 libraries in 554ms.
With this PR it would instead be something like
> Performing hot reload...
> Reloaded 1 of 788 libraries in 554ms (compile: 33 ms, reload: 153 ms, reassemble: 310 ms).
* Fix issues running integration tests through DAP
These adapters were incorrectly trying to connect a DDS instance even when Flutter would create its own. This change disables DDS in the DAP layer and leaves it to Flutter (although it passes `--no-dds` on to Flutter if provided to the DAP process).
Also fixes an issue where we would unnecessarily connect the VM Service for tests even in 'noDebug' mode because of a change/fix that now includes a 'vmServiceUri' in the `test.startedProcess` event.
Flutter uses `vswhere.exe` to find Visual Studio installations and determine if they satisfy Flutter's requirements. However, `vswhere.exe`'s JSON output is known to contain bad UTF-8. This change ignores bad UTF-8 as long as they affect JSON properties that are either unused, or, used only for display purposes by Flutter.
Fixes: https://github.com/flutter/flutter/issues/102451
Adds a bit more clarifying documentation to the implementation of the
outputFollowsExit case, and adds tests that verify the behaviour of
stderr, stdout of processes launched via FakeProcessManager.
Specifically:
* Verifies that stderr, stdout are not emitted immediately after process
exit if outputFollowsExit is true. They must be emitted at least one
turn through the event loop later.
* Verifies that ProcessResult.stderr, stdout have the type documented
according to the encoding passted to Process.run/runSync:
* List<int> if null is passed as the encoding.
* String (in the default system encoding) if no encoding is specified.
* String (in the specified encoding) if an encoding is specified.
This is additional testing relating to refactoring landed in:
https://github.com/flutter/flutter/pull/103947
Issue: https://github.com/flutter/flutter/issues/102451
`VisualStudio` calls `vswhere.exe` to find Visual Studio installations and determine if they satisfy Flutter's requirements. Previously, `VisualStudio` stored the JSON output from `vswhere.exe` as `Map`s, resulting in duplicated logic to read the JSON output (once to validate values, second to expose values). Also, `VisualStudio` stored two copies of the JSON output (the latest valid installation as well as the latest VS installation).
This change simplifies `VisualStudio` by introducing a new `VswhereDetails`. This type contains the logic to read `vswhere.exe`'s JSON output, and, understand whether an installation is usable by Flutter. In the future, this `VswhereDetails` type will be used to make Flutter doctor resilient to bad UTF-8 output from `vswhere.exe`.
Part of https://github.com/flutter/flutter/issues/102451.
* Use libraryFilters flag to speed up coverage collection
* Allow libraryNames to be null
* Unconditionally enable the reportLines flag
* Fix analysis errors
Because this class has some subtle behaviour with regards to control of
exit timing and when and how it streams data to stderr and stdout, it's
worth adding unit tests for this class directly, as well as (in a
followup patch) for FakeProcessManager.
This is additional testing relating to refactoring landed in:
https://github.com/flutter/flutter/pull/103947
Issue: https://github.com/flutter/flutter/issues/102451
`FakeProcessManager` is a test-oriented implementation of `ProcessManager`
that simulates launching processes and returning `ProcessResult` objects
whose `exitCode`, `stdout`, `stderr` can be used to write platform-portable,
hermetic tests that don't rely on actually launching processes from
executables on disk. Its `run` and `runSync` methods provide asynchronous and
synchronous variants of this functionality.
Previously, the behaviour of `run` and `runSync` were inconsistent with
regards to the treatment of the `stdoutEncoding` (similarly,
`stderrEncoding`) parameters:
`run`:
* if the encoding was null, `ProcessResult.stdout` was returned as a
String in UTF-8 encoding. This was incorrect. The behaviour as
specified in `ProcessResult.stdout` is that in this case, a raw
`List<int>` should be returned.
* If the encoding was unspecified, `ProcessResult.stdout` was returned as
a `String` in the `io.systemEncoding` encoding. This was correct.
* If the encoding was non-null, `ProcessResult.stdout` was returned as a
`String` in the specified encoding. This was correct.
`runSync`:
* if the encoding was null, `ProcessResult.stdout` was returned as a
`List<int>` in UTF-8 encoding. This was incorrect. The behaviour as
specified in `ProcessResult.stdout` is that in this case, a raw
`List<int>` should be returned.
* If the encoding was unspecified, `ProcessResult.stdout` was returned as
`List<int>` in UTF-8 encoding. This was incorrect. The behaviour as
specified in `ProcessResult.stdout` is that in this case, a String a
`String` in the `io.systemEncoding` encoding should be returned.
* if the encoding was non-null, `ProcessResult.stdout` was returned as a
`String` in unknown (but probably UTF-8) encoding. This was incorrect.
The behaviour as specified in `ProcessResult.stdout` is that in this
case, a `String` in the specified encoding should be returned.
`_FakeProcess`, from which we obtain the fake stdout and stderr values now
holds these fields as raw `List<int>` of bytes rather than as `String`s. It
is up to the user to supply values that can be decoded with the encoding
passed to `run`/`runAsync`.
`run` and `runAsync` have been updated to set stdout (likewise, stderr) as
specified in the `ProcessResult` documentation.
This is pre-factoring for #102451, in which the tool throws an exception
when processing the JSON output from stdout of the `vswhere.exe` tool,
whose output was found to include the `U+FFFD` Unicode replacement
character during UTF-8 decoding, which triggers a `toolExit` exception
when decoded using our [Utf8Decoder][decoder] configured with `reportErrors` =
true. Because `FakeProcessManager.runAsync` did not previously invoke
`utf8.decode` on its output (behaviour which differs from the non-fake
implementation), it was impossible to write tests to verify the fix.
Ref: https://api.flutter.dev/flutter/dart-io/ProcessResult/stdout.html
Issue: https://github.com/flutter/flutter/issues/102451
[decoder]: fd312f1ccf/packages/flutter_tools/lib/src/convert.dart (L51-L60)
* Provide flutter sdk kernel files to dwds launcher instead of dart ones
* Update log test to report all warnings
* Update licences for new files
* Addressed CR comments
* Addressed CR comments
* Implement trackpad gestures in framework
* Touch and Pan/Zoom pointers have separate IDs now
* Handle trackpad pointer device type
* Respect supportedDevices for pan/zoom events
* Update after rebase
* Fix check failures
* Avoid error with very short drags
* Address feedback
* Refactor drag event handler
* Address more feedback
* Add some missing punctuation
* Added a bool that allows us to limit debugProfileBuildsEnabled to user
created widgets.
* made it turned on by default
* switched to hashmap
* Cleaned everything up and added tests
* fixed an odd test where it wants to be able to add asserts and run in profile mode
* hixie feedback
* hixie2
* made it default to false
* updated docstring as per dans request
* Don't terminate Dart process pids from VM Service
These processes may be on another device, and in the case of attach the debugee should not be terminated anyway.
Previously, https://github.com/flutter/flutter/pull/100271 enabled
building universal macOS binaries by default, but included a bug causing
the arm64 App.framework to be built such that the TEXT section
containing the app instructions built by gen_snapshot incorrectly
contained x86_64 instructions rather than arm64 instructions.
When building macOS (and iOS) apps, Flutter builds them in three
components:
* The Runner application: built by Xcode
* The bundled App.framework: built from assembly code generated by
gen_snapshot from the application's Dart sources.
* The bundled FlutterMacOS.framework: built as part of the engine build
and packaged by copying the distributed binary framework from our
artifacts cache.
Building App.framework consists of the following steps:
* For each architecture, invoke gen_snapshot to generate
architecture-specific assembly code, which is then built to object
code and linked into an architecture-specific App.framework.
* Use the `lipo` tool to generate a universal binary that includes both
x86_64 and arm64 architectures.
Previously, we were building architecture specific App.framework
binaries. However, for all architectures we were (mistakenly) invoking
the general `gen_snapshot` tool (which emitted x64 instructions, and
which is now deprecated) instead of the architecture-specific
`gen_snapshot_x86` and `gen_snapshot_arm64` builds which emit
instructions for the correct architecture.
This change introduces a small refactoring, which is to split the
`getNameForDarwinArch` function into two functions:
* `getDartNameForDarwinArch`: the name for the specified architecture as
used in the Dart SDK, for example as the suffix of `gen_snapshot`.
* `getNameForDarwinArch`: the name for the specified architecture
as used in Apple tools, for example as an argument to `lipo`. For
consistency, and to match developer expectations on Darwin platforms,
this is also the name used in Flutter's build outputs.
Issue: https://github.com/flutter/flutter/issues/100348