mirror of
https://github.com/flutter/packages.git
synced 2025-06-17 20:19:14 +08:00
[tool] Allow running from anywhere (#4199)
Now that the repo tooling is always run from source, not via `pub global`, we no longer need to infer the repo location from the current directory. Instead, hard-code knowledge of where the repository root is. This makes it much easier to run the tooling, since it's common to be in a package directory rather than the repo root. To make it even easier to run from within a package, this also adds a `--current-package` as an alternative to `--packages`. This makes it possible to, e.g., write local wrapper scripts that run a specific set of commands on whatever the current package happens to be (such as a generic version of the script discussed in https://github.com/flutter/packages/pull/4129). As related cleanup, makes the tool non-publishable (we haven't been publishing it since the repo merge, but I never made it unpublishable; this is important now that it would not work if published) and remove the LICENSE and CHANGELOG since it's no longer a stand-alone package. Fixes https://github.com/flutter/flutter/issues/128231 Fixes https://github.com/flutter/flutter/issues/128232
This commit is contained in:
@ -1,675 +0,0 @@
|
|||||||
## 0.13.4+4
|
|
||||||
|
|
||||||
* Allows code excerpts in `example/README.md`.
|
|
||||||
|
|
||||||
## 0.13.4+3
|
|
||||||
|
|
||||||
* Moves source to flutter/packages.
|
|
||||||
|
|
||||||
## 0.13.4+2
|
|
||||||
|
|
||||||
* Expands the `--packages-for-branch` detection of main to include ancestors
|
|
||||||
of `origin/main` and `upstream/main`.
|
|
||||||
|
|
||||||
## 0.13.4+1
|
|
||||||
|
|
||||||
* Makes `--packages-for-branch` detect any commit on `main` as being `main`,
|
|
||||||
so that it works with pinned checkouts (e.g., on LUCI).
|
|
||||||
|
|
||||||
## 0.13.4
|
|
||||||
|
|
||||||
* Adds the ability to validate minimum supported Dart/Flutter versions in
|
|
||||||
`pubspec-check`.
|
|
||||||
|
|
||||||
## 0.13.3
|
|
||||||
|
|
||||||
* Renames `podspecs` to `podspec-check`. The old name will continue to work.
|
|
||||||
* Adds validation of the Swift-in-Obj-C-projects workaround in the podspecs of
|
|
||||||
iOS plugin implementations that use Swift.
|
|
||||||
|
|
||||||
## 0.13.2+1
|
|
||||||
|
|
||||||
* Replaces deprecated `flutter format` with `dart format` in `format`
|
|
||||||
implementation.
|
|
||||||
|
|
||||||
## 0.13.2
|
|
||||||
|
|
||||||
* Falls back to other executables in PATH when `clang-format` does not run.
|
|
||||||
|
|
||||||
## 0.13.1
|
|
||||||
|
|
||||||
* Updates `version-check` to recognize Pigeon's platform test structure.
|
|
||||||
* Pins `package:git` dependency to `2.0.x` until `dart >=2.18.0` becomes our
|
|
||||||
oldest legacy.
|
|
||||||
* Updates test mocks.
|
|
||||||
|
|
||||||
## 0.13.0
|
|
||||||
|
|
||||||
* Renames `all-plugins-app` to `create-all-packages-app` to clarify what it
|
|
||||||
actually does. Also renames the project directory it creates from
|
|
||||||
`all_plugins` to `all_packages`.
|
|
||||||
|
|
||||||
## 0.12.1
|
|
||||||
|
|
||||||
* Modifies `publish_check_command.dart` to do a `dart pub get` in all examples
|
|
||||||
of the package being checked. Workaround for [dart-lang/pub#3618](https://github.com/dart-lang/pub/issues/3618).
|
|
||||||
|
|
||||||
## 0.12.0
|
|
||||||
|
|
||||||
* Changes the behavior of `--packages-for-branch` on main/master to run for
|
|
||||||
packages changed in the last commit, rather than running for all packages.
|
|
||||||
This allows CI to test the same filtered set of packages in post-submit as are
|
|
||||||
tested in presubmit.
|
|
||||||
* Adds a `fix` command to run `dart fix --apply` in target packages.
|
|
||||||
|
|
||||||
## 0.11.0
|
|
||||||
|
|
||||||
* Renames `publish-plugin` to `publish`.
|
|
||||||
* Renames arguments to `list`:
|
|
||||||
* `--package` now lists top-level packages (previously `--plugin`).
|
|
||||||
* `--package-or-subpackage` now lists top-level packages (previously
|
|
||||||
`--package`).
|
|
||||||
|
|
||||||
## 0.10.0+1
|
|
||||||
|
|
||||||
* Recognizes `run_test.sh` as a developer-only file in `version-check`.
|
|
||||||
* Adds `readme-check` validation that the example/README.md for a federated
|
|
||||||
plugin's implementation packages has a warning about the intended use of the
|
|
||||||
example instead of the template boilerplate.
|
|
||||||
|
|
||||||
## 0.10.0
|
|
||||||
|
|
||||||
* Improves the logic in `version-check` to determine what changes don't require
|
|
||||||
version changes, as well as making any dev-only changes also not require
|
|
||||||
changelog changes since in practice we almost always override the check in
|
|
||||||
that case.
|
|
||||||
* Removes special-case handling of Dependabot PRs, and the (fragile)
|
|
||||||
`--change-description-file` flag was only still used for that case, as
|
|
||||||
the improved diff analysis now handles that case more robustly.
|
|
||||||
|
|
||||||
## 0.9.3
|
|
||||||
|
|
||||||
* Raises minimum `compileSdkVersion` to 32 for the `all-plugins-app` command.
|
|
||||||
|
|
||||||
## 0.9.2
|
|
||||||
|
|
||||||
* Adds checking of `code-excerpt` configuration to `readme-check`, to validate
|
|
||||||
that if the excerpting tags are added to a README they are actually being
|
|
||||||
used.
|
|
||||||
|
|
||||||
## 0.9.1
|
|
||||||
|
|
||||||
* Adds a `--downgrade` flag to `analyze` for analyzing with the oldest possible
|
|
||||||
versions of packages.
|
|
||||||
|
|
||||||
## 0.9.0
|
|
||||||
|
|
||||||
* Replaces PR-description-based version/changelog/breaking change check
|
|
||||||
overrides in `version-check` with label-based overrides using a new
|
|
||||||
`pr-labels` flag, since we don't actually have reliable access to the
|
|
||||||
PR description in checks.
|
|
||||||
|
|
||||||
## 0.8.10
|
|
||||||
|
|
||||||
- Adds a new `remove-dev-dependencies` command to remove `dev_dependencies`
|
|
||||||
entries to make legacy version analysis possible in more cases.
|
|
||||||
- Adds a `--lib-only` option to `analyze` to allow only analyzing the client
|
|
||||||
parts of a library for legacy verison compatibility.
|
|
||||||
|
|
||||||
## 0.8.9
|
|
||||||
|
|
||||||
- Includes `dev_dependencies` when overridding dependencies using
|
|
||||||
`make-deps-path-based`.
|
|
||||||
- Bypasses version and CHANGELOG checks for Dependabot PRs for packages
|
|
||||||
that are known not to be client-affecting.
|
|
||||||
|
|
||||||
## 0.8.8
|
|
||||||
|
|
||||||
- Allows pre-release versions in `version-check`.
|
|
||||||
|
|
||||||
## 0.8.7
|
|
||||||
|
|
||||||
- Supports empty custom analysis allow list files.
|
|
||||||
- `drive-examples` now validates files to ensure that they don't accidentally
|
|
||||||
use `test(...)`.
|
|
||||||
- Adds a new `dependabot-check` command to ensure complete Dependabot coverage.
|
|
||||||
- Adds `skip-if-not-supporting-dart-version` to allow for the same use cases
|
|
||||||
as `skip-if-not-supporting-flutter-version` but for packages without Flutter
|
|
||||||
constraints.
|
|
||||||
|
|
||||||
## 0.8.6
|
|
||||||
|
|
||||||
- Adds `update-release-info` to apply changelog and optional version changes
|
|
||||||
across multiple packages.
|
|
||||||
- Fixes changelog validation when reverting to a `NEXT` state.
|
|
||||||
- Fixes multiplication of `--force` flag when publishing multiple packages.
|
|
||||||
- Adds minimum deployment target flags to `xcode-analyze` to allow
|
|
||||||
enforcing deprecation warning handling in advance of actually dropping
|
|
||||||
support for an OS version.
|
|
||||||
- Checks for template boilerplate in `readme-check`.
|
|
||||||
- `readme-check` now validates example READMEs when present.
|
|
||||||
|
|
||||||
## 0.8.5
|
|
||||||
|
|
||||||
- Updates `test` to inculde the Dart unit tests of examples, if any.
|
|
||||||
- `drive-examples` now supports non-plugin packages.
|
|
||||||
- Commands that iterate over examples now include non-Flutter example packages.
|
|
||||||
|
|
||||||
## 0.8.4
|
|
||||||
|
|
||||||
- `readme-check` now validates that there's a info tag on code blocks to
|
|
||||||
identify (and for supported languages, syntax highlight) the language.
|
|
||||||
- `readme-check` now has a `--require-excerpts` flag to require that any Dart
|
|
||||||
code blocks be managed by `code_excerpter`.
|
|
||||||
|
|
||||||
## 0.8.3
|
|
||||||
|
|
||||||
- Adds a new `update-excerpts` command to maintain README files using the
|
|
||||||
`code-excerpter` package from flutter/site-shared.
|
|
||||||
- `license-check` now ignores submodules.
|
|
||||||
- Allows `make-deps-path-based` to skip packages it has alredy rewritten, so
|
|
||||||
that running multiple times won't fail after the first time.
|
|
||||||
- Removes UWP support, since Flutter has dropped support for UWP.
|
|
||||||
|
|
||||||
## 0.8.2+1
|
|
||||||
|
|
||||||
- Adds a new `readme-check` command.
|
|
||||||
- Updates `publish-plugin` command documentation.
|
|
||||||
- Fixes `all-plugins-app` to preserve the original application's Dart SDK
|
|
||||||
version to avoid changing language feature opt-ins that the template may
|
|
||||||
rely on.
|
|
||||||
- Fixes `custom-test` to run `pub get` before running Dart test scripts.
|
|
||||||
|
|
||||||
## 0.8.2
|
|
||||||
|
|
||||||
- Adds a new `custom-test` command.
|
|
||||||
- Switches from deprecated `flutter packages` alias to `flutter pub`.
|
|
||||||
|
|
||||||
## 0.8.1
|
|
||||||
|
|
||||||
- Fixes an `analyze` regression in 0.8.0 with packages that have non-`example`
|
|
||||||
sub-packages.
|
|
||||||
|
|
||||||
## 0.8.0
|
|
||||||
|
|
||||||
- Ensures that `firebase-test-lab` runs include an `integration_test` runner.
|
|
||||||
- Adds a `make-deps-path-based` command to convert inter-repo package
|
|
||||||
dependencies to path-based dependencies.
|
|
||||||
- Adds a (hidden) `--run-on-dirty-packages` flag for use with
|
|
||||||
`make-deps-path-based` in CI.
|
|
||||||
- `--packages` now allows using a federated plugin's package as a target without
|
|
||||||
fully specifying it (if it is not the same as the plugin's name). E.g.,
|
|
||||||
`--packages=path_provide_ios` now works.
|
|
||||||
- `--run-on-changed-packages` now includes only the changed packages in a
|
|
||||||
federated plugin, not all packages in that plugin.
|
|
||||||
- Fixes `federation-safety-check` handling of plugin deletion, and of top-level
|
|
||||||
files in unfederated plugins whose names match federated plugin heuristics
|
|
||||||
(e.g., `packages/foo/foo_android.iml`).
|
|
||||||
- Adds an auto-retry for failed Firebase Test Lab tests as a short-term patch
|
|
||||||
for flake issues.
|
|
||||||
- Adds support for `CHROME_EXECUTABLE` in `drive-examples` to match similar
|
|
||||||
`flutter` behavior.
|
|
||||||
- Validates `default_package` entries in plugins.
|
|
||||||
- Removes `allow-warnings` from the `podspecs` command.
|
|
||||||
- Adds `skip-if-not-supporting-flutter-version` to allow running tests using a
|
|
||||||
version of Flutter that not all packages support. (E.g., to allow for running
|
|
||||||
some tests against old versions of Flutter to help avoid accidental breakage.)
|
|
||||||
|
|
||||||
## 0.7.3
|
|
||||||
|
|
||||||
- `native-test` now builds unit tests before running them on Windows and Linux,
|
|
||||||
matching the behavior of other platforms.
|
|
||||||
- Adds `--log-timing` to add timing information to package headers in looping
|
|
||||||
commands.
|
|
||||||
- Adds a `--check-for-missing-changes` flag to `version-check` that requires
|
|
||||||
version updates (except for recognized exemptions) and CHANGELOG changes when
|
|
||||||
modifying packages, unless the PR description explains why it's not needed.
|
|
||||||
|
|
||||||
## 0.7.2
|
|
||||||
|
|
||||||
- Update Firebase Testlab deprecated test device. (Pixel 4 API 29 -> Pixel 5 API 30).
|
|
||||||
- `native-test --android`, `--ios`, and `--macos` now fail plugins that don't
|
|
||||||
have unit tests, rather than skipping them.
|
|
||||||
- Added a new `federation-safety-check` command to help catch changes to
|
|
||||||
federated packages that have been done in such a way that they will pass in
|
|
||||||
CI, but fail once the change is landed and published.
|
|
||||||
- `publish-check` now validates that there is an `AUTHORS` file.
|
|
||||||
- Added flags to `version-check` to allow overriding the platform interface
|
|
||||||
major version change restriction.
|
|
||||||
- Improved error handling and error messages in CHANGELOG version checks.
|
|
||||||
- `license-check` now validates Kotlin files.
|
|
||||||
- `pubspec-check` now checks that the description is of the pub-recommended
|
|
||||||
length.
|
|
||||||
- Fix `license-check` when run on Windows with line ending conversion enabled.
|
|
||||||
- Fixed `pubspec-check` on Windows.
|
|
||||||
- Add support for `main` as a primary branch. `master` continues to work for
|
|
||||||
compatibility.
|
|
||||||
|
|
||||||
## 0.7.1
|
|
||||||
|
|
||||||
- Add support for `.pluginToolsConfig.yaml` in the `build-examples` command.
|
|
||||||
|
|
||||||
## 0.7.0
|
|
||||||
|
|
||||||
- `native-test` now supports `--linux` for unit tests.
|
|
||||||
- Formatting now skips Dart files that contain a line that exactly
|
|
||||||
matches the string `// This file is hand-formatted.`.
|
|
||||||
|
|
||||||
## 0.6.0+1
|
|
||||||
|
|
||||||
- Fixed `build-examples` to work for non-plugin packages.
|
|
||||||
|
|
||||||
## 0.6.0
|
|
||||||
|
|
||||||
- Added Android native integration test support to `native-test`.
|
|
||||||
- Added a new `android-lint` command to lint Android plugin native code.
|
|
||||||
- Pubspec validation now checks for `implements` in implementation packages.
|
|
||||||
- Pubspec valitation now checks the full relative path of `repository` entries.
|
|
||||||
- `build-examples` now supports UWP plugins via a `--winuwp` flag.
|
|
||||||
- `native-test` now supports `--windows` for unit tests.
|
|
||||||
- **Breaking change**: `publish` no longer accepts `--no-tag-release` or
|
|
||||||
`--no-push-flags`. Releases now always tag and push.
|
|
||||||
- **Breaking change**: `publish`'s `--package` flag has been replaced with the
|
|
||||||
`--packages` flag used by most other packages.
|
|
||||||
- **Breaking change** Passing both `--run-on-changed-packages` and `--packages`
|
|
||||||
is now an error; previously it the former would be ignored.
|
|
||||||
|
|
||||||
## 0.5.0
|
|
||||||
|
|
||||||
- `--exclude` and `--custom-analysis` now accept paths to YAML files that
|
|
||||||
contain lists of packages to exclude, in addition to just package names,
|
|
||||||
so that exclude lists can be maintained separately from scripts and CI
|
|
||||||
configuration.
|
|
||||||
- Added an `xctest` flag to select specific test targets, to allow running only
|
|
||||||
unit tests or integration tests.
|
|
||||||
- **Breaking change**: Split Xcode analysis out of `xctest` and into a new
|
|
||||||
`xcode-analyze` command.
|
|
||||||
- Fixed a bug that caused `firebase-test-lab` to hang if it tried to run more
|
|
||||||
than one plugin's tests in a single run.
|
|
||||||
- **Breaking change**: If `firebase-test-lab` is run on a package that supports
|
|
||||||
Android, but for which no tests are run, it now fails instead of skipping.
|
|
||||||
This matches `drive-examples`, as this command is what is used for driving
|
|
||||||
Android Flutter integration tests on CI.
|
|
||||||
- **Breaking change**: Replaced `xctest` with a new `native-test` command that
|
|
||||||
will eventually be able to run native unit and integration tests for all
|
|
||||||
platforms.
|
|
||||||
- Adds the ability to disable test types via `--no-unit` or
|
|
||||||
`--no-integration`.
|
|
||||||
- **Breaking change**: Replaced `java-test` with Android unit test support for
|
|
||||||
the new `native-test` command.
|
|
||||||
- Commands that print a run summary at the end now track and log exclusions
|
|
||||||
similarly to skips for easier auditing.
|
|
||||||
- `version-check` now validates that `NEXT` is not present when changing
|
|
||||||
the version.
|
|
||||||
|
|
||||||
## 0.4.1
|
|
||||||
|
|
||||||
- Improved `license-check` output.
|
|
||||||
- Use `java -version` rather than `java --version`, for compatibility with more
|
|
||||||
versions of Java.
|
|
||||||
|
|
||||||
## 0.4.0
|
|
||||||
|
|
||||||
- Modified the output format of many commands
|
|
||||||
- **Breaking change**: `firebase-test-lab` no longer supports `*_e2e.dart`
|
|
||||||
files, only `integration_test/*_test.dart`.
|
|
||||||
- Add a summary to the end of successful command runs for commands using the
|
|
||||||
new output format.
|
|
||||||
- Fixed some cases where a failure in a command for a single package would
|
|
||||||
immediately abort the test.
|
|
||||||
- Deprecated `--plugins` in favor of new `--packages`. `--plugins` continues to
|
|
||||||
work for now, but will be removed in the future.
|
|
||||||
- Make `drive-examples` device detection robust against Flutter tool banners.
|
|
||||||
- `format` is now supported on Windows.
|
|
||||||
|
|
||||||
## 0.3.0
|
|
||||||
|
|
||||||
- Add a --build-id flag to `firebase-test-lab` instead of hard-coding the use of
|
|
||||||
`CIRRUS_BUILD_ID`. `CIRRUS_BUILD_ID` is the default value for that flag, for backward
|
|
||||||
compatibility.
|
|
||||||
- `xctest` now supports running macOS tests in addition to iOS
|
|
||||||
- **Breaking change**: it now requires an `--ios` and/or `--macos` flag.
|
|
||||||
- **Breaking change**: `build-examples` for iOS now uses `--ios` rather than
|
|
||||||
`--ipa`.
|
|
||||||
- The tooling now runs in strong null-safe mode.
|
|
||||||
- `publish plugins` check against pub.dev to determine if a release should happen.
|
|
||||||
- Modified the output format of many commands
|
|
||||||
- Removed `podspec`'s `--skip` in favor of `--ignore` using the new structure.
|
|
||||||
|
|
||||||
## 0.2.0
|
|
||||||
|
|
||||||
- Remove `xctest`'s `--skip`, which is redundant with `--ignore`.
|
|
||||||
|
|
||||||
## 0.1.4
|
|
||||||
|
|
||||||
- Add a `pubspec-check` command
|
|
||||||
|
|
||||||
## 0.1.3
|
|
||||||
|
|
||||||
- Cosmetic fix to `publish-check` output
|
|
||||||
- Add a --dart-sdk option to `analyze`
|
|
||||||
- Allow reverts in `version-check`
|
|
||||||
|
|
||||||
## 0.1.2
|
|
||||||
|
|
||||||
- Add `against-pub` flag for version-check, which allows the command to check version with pub.
|
|
||||||
- Add `machine` flag for publish-check, which replaces outputs to something parsable by machines.
|
|
||||||
- Add `skip-conformation` flag to publish-plugin to allow auto publishing.
|
|
||||||
- Change `run-on-changed-packages` to consider all packages as changed if any
|
|
||||||
files have been changed that could affect the entire repository.
|
|
||||||
|
|
||||||
## 0.1.1
|
|
||||||
|
|
||||||
- Update the allowed third-party licenses for flutter/packages.
|
|
||||||
|
|
||||||
## 0.1.0+1
|
|
||||||
|
|
||||||
- Re-add the bin/ directory.
|
|
||||||
|
|
||||||
## 0.1.0
|
|
||||||
|
|
||||||
- **NOTE**: This is no longer intended as a general-purpose package, and is now
|
|
||||||
supported only for flutter/plugins and flutter/tools.
|
|
||||||
- Fix version checks
|
|
||||||
- Remove handling of pre-release null-safe versions
|
|
||||||
- Fix build all for null-safe template apps
|
|
||||||
- Improve handling of web integration tests
|
|
||||||
- Supports enforcing standardized copyright files
|
|
||||||
- Improve handling of iOS tests
|
|
||||||
|
|
||||||
## v.0.0.45+3
|
|
||||||
|
|
||||||
- Pin `collection` to `1.14.13` to be able to target Flutter stable (v1.22.6).
|
|
||||||
|
|
||||||
## v.0.0.45+2
|
|
||||||
|
|
||||||
- Make `publish-plugin` to work on non-flutter packages.
|
|
||||||
|
|
||||||
## v.0.0.45+1
|
|
||||||
|
|
||||||
- Don't call `flutter format` if there are no Dart files to format.
|
|
||||||
|
|
||||||
## v.0.0.45
|
|
||||||
|
|
||||||
- Add exclude flag to exclude any plugin from further processing.
|
|
||||||
|
|
||||||
## v.0.0.44+7
|
|
||||||
|
|
||||||
- `all-plugins-app` doesn't override the AGP version.
|
|
||||||
|
|
||||||
## v.0.0.44+6
|
|
||||||
|
|
||||||
- Fix code formatting.
|
|
||||||
|
|
||||||
## v.0.0.44+5
|
|
||||||
|
|
||||||
- Remove `-v` flag on drive-examples.
|
|
||||||
|
|
||||||
## v.0.0.44+4
|
|
||||||
|
|
||||||
- Fix bug where directory isn't passed
|
|
||||||
|
|
||||||
## v.0.0.44+3
|
|
||||||
|
|
||||||
- More verbose logging
|
|
||||||
|
|
||||||
## v.0.0.44+2
|
|
||||||
|
|
||||||
- Remove pre-alpha Windows workaround to create examples on the fly.
|
|
||||||
|
|
||||||
## v.0.0.44+1
|
|
||||||
|
|
||||||
- Print packages that passed tests in `xctest` command.
|
|
||||||
- Remove printing the whole list of simulators.
|
|
||||||
|
|
||||||
## v.0.0.44
|
|
||||||
|
|
||||||
- Add 'xctest' command to run xctests.
|
|
||||||
|
|
||||||
## v.0.0.43
|
|
||||||
|
|
||||||
- Allow minor `*-nullsafety` pre release packages.
|
|
||||||
|
|
||||||
## v.0.0.42+1
|
|
||||||
|
|
||||||
- Fix test command when `--enable-experiment` is called.
|
|
||||||
|
|
||||||
## v.0.0.42
|
|
||||||
|
|
||||||
- Allow `*-nullsafety` pre release packages.
|
|
||||||
|
|
||||||
## v.0.0.41
|
|
||||||
|
|
||||||
- Support `--enable-experiment` flag in subcommands `test`, `build-examples`, `drive-examples`,
|
|
||||||
and `firebase-test-lab`.
|
|
||||||
|
|
||||||
## v.0.0.40
|
|
||||||
|
|
||||||
- Support `integration_test/` directory for `drive-examples` command
|
|
||||||
|
|
||||||
## v.0.0.39
|
|
||||||
|
|
||||||
- Support `integration_test/` directory for `package:integration_test`
|
|
||||||
|
|
||||||
## v.0.0.38
|
|
||||||
|
|
||||||
- Add C++ and ObjC++ to clang-format.
|
|
||||||
|
|
||||||
## v.0.0.37+2
|
|
||||||
|
|
||||||
- Make `http` and `http_multi_server` dependency version constraint more flexible.
|
|
||||||
|
|
||||||
## v.0.0.37+1
|
|
||||||
|
|
||||||
- All_plugin test puts the plugin dependencies into dependency_overrides.
|
|
||||||
|
|
||||||
## v.0.0.37
|
|
||||||
|
|
||||||
- Only builds mobile example apps when necessary.
|
|
||||||
|
|
||||||
## v.0.0.36+3
|
|
||||||
|
|
||||||
- Add support for Linux plugins.
|
|
||||||
|
|
||||||
## v.0.0.36+2
|
|
||||||
|
|
||||||
- Default to showing podspec lint warnings
|
|
||||||
|
|
||||||
## v.0.0.36+1
|
|
||||||
|
|
||||||
- Serialize linting podspecs.
|
|
||||||
|
|
||||||
## v.0.0.36
|
|
||||||
|
|
||||||
- Remove retry on Firebase Test Lab's call to gcloud set.
|
|
||||||
- Remove quiet flag from Firebase Test Lab's gcloud set command.
|
|
||||||
- Allow Firebase Test Lab command to continue past gcloud set network failures.
|
|
||||||
This is a mitigation for the network service sometimes not responding,
|
|
||||||
but it isn't actually necessary to have a network connection for this command.
|
|
||||||
|
|
||||||
## v.0.0.35+1
|
|
||||||
|
|
||||||
- Minor cleanup to the analyze test.
|
|
||||||
|
|
||||||
## v.0.0.35
|
|
||||||
|
|
||||||
- Firebase Test Lab command generates a configurable unique path suffix for results.
|
|
||||||
|
|
||||||
## v.0.0.34
|
|
||||||
|
|
||||||
- Firebase Test Lab command now only tries to configure the project once
|
|
||||||
- Firebase Test Lab command now retries project configuration up to five times.
|
|
||||||
|
|
||||||
## v.0.0.33+1
|
|
||||||
|
|
||||||
- Fixes formatting issues that got past our CI due to
|
|
||||||
https://github.com/flutter/flutter/issues/51585.
|
|
||||||
- Changes the default package name for testing method `createFakePubspec` back
|
|
||||||
its previous behavior.
|
|
||||||
|
|
||||||
## v.0.0.33
|
|
||||||
|
|
||||||
- Version check command now fails on breaking changes to platform interfaces.
|
|
||||||
- Updated version check test to be more flexible.
|
|
||||||
|
|
||||||
## v.0.0.32+7
|
|
||||||
|
|
||||||
- Ensure that Firebase Test Lab tests have a unique storage bucket for each test run.
|
|
||||||
|
|
||||||
## v.0.0.32+6
|
|
||||||
|
|
||||||
- Ensure that Firebase Test Lab tests have a unique storage bucket for each package.
|
|
||||||
|
|
||||||
## v.0.0.32+5
|
|
||||||
|
|
||||||
- Remove --fail-fast and --silent from lint podspec command.
|
|
||||||
|
|
||||||
## v.0.0.32+4
|
|
||||||
|
|
||||||
- Update `publish-plugin` to use `flutter pub publish` instead of just `pub
|
|
||||||
publish`. Enforces a `pub publish` command that matches the Dart SDK in the
|
|
||||||
user's Flutter install.
|
|
||||||
|
|
||||||
## v.0.0.32+3
|
|
||||||
|
|
||||||
- Update Firebase Testlab deprecated test device. (Pixel 3 API 28 -> Pixel 4 API 29).
|
|
||||||
|
|
||||||
## v.0.0.32+2
|
|
||||||
|
|
||||||
- Runs pub get before building macos to avoid failures.
|
|
||||||
|
|
||||||
## v.0.0.32+1
|
|
||||||
|
|
||||||
- Default macOS example builds to false. Previously they were running whenever
|
|
||||||
CI was itself running on macOS.
|
|
||||||
|
|
||||||
## v.0.0.32
|
|
||||||
|
|
||||||
- `analyze` now asserts that the global `analysis_options.yaml` is the only one
|
|
||||||
by default. Individual directories can be excluded from this check with the
|
|
||||||
new `--custom-analysis` flag.
|
|
||||||
|
|
||||||
## v.0.0.31+1
|
|
||||||
|
|
||||||
- Add --skip and --no-analyze flags to podspec command.
|
|
||||||
|
|
||||||
## v.0.0.31
|
|
||||||
|
|
||||||
- Add support for macos on `DriveExamplesCommand` and `BuildExamplesCommand`.
|
|
||||||
|
|
||||||
## v.0.0.30
|
|
||||||
|
|
||||||
- Adopt pedantic analysis options, fix firebase_test_lab_test.
|
|
||||||
|
|
||||||
## v.0.0.29
|
|
||||||
|
|
||||||
- Add a command to run pod lib lint on podspec files.
|
|
||||||
|
|
||||||
## v.0.0.28
|
|
||||||
|
|
||||||
- Increase Firebase test lab timeouts to 5 minutes.
|
|
||||||
|
|
||||||
## v.0.0.27
|
|
||||||
|
|
||||||
- Run tests with `--platform=chrome` for web plugins.
|
|
||||||
|
|
||||||
## v.0.0.26
|
|
||||||
|
|
||||||
- Add a command for publishing plugins to pub.
|
|
||||||
|
|
||||||
## v.0.0.25
|
|
||||||
|
|
||||||
- Update `DriveExamplesCommand` to use `ProcessRunner`.
|
|
||||||
- Make `DriveExamplesCommand` rely on `ProcessRunner` to determine if the test fails or not.
|
|
||||||
- Add simple tests for `DriveExamplesCommand`.
|
|
||||||
|
|
||||||
## v.0.0.24
|
|
||||||
|
|
||||||
- Gracefully handle pubspec.yaml files for new plugins.
|
|
||||||
- Additional unit testing.
|
|
||||||
|
|
||||||
## v.0.0.23
|
|
||||||
|
|
||||||
- Add a test case for transitive dependency solving in the
|
|
||||||
`create_all_plugins_app` command.
|
|
||||||
|
|
||||||
## v.0.0.22
|
|
||||||
|
|
||||||
- Updated firebase-test-lab command with updated conventions for test locations.
|
|
||||||
- Updated firebase-test-lab to add an optional "device" argument.
|
|
||||||
- Updated version-check command to always compare refs instead of using the working copy.
|
|
||||||
- Added unit tests for the firebase-test-lab and version-check commands.
|
|
||||||
- Add ProcessRunner to mock running processes for testing.
|
|
||||||
|
|
||||||
## v.0.0.21
|
|
||||||
|
|
||||||
- Support the `--plugins` argument for federated plugins.
|
|
||||||
|
|
||||||
## v.0.0.20
|
|
||||||
|
|
||||||
- Support for finding federated plugins, where one directory contains
|
|
||||||
multiple packages for different platform implementations.
|
|
||||||
|
|
||||||
## v.0.0.19+3
|
|
||||||
|
|
||||||
- Use `package:file` for file I/O.
|
|
||||||
|
|
||||||
## v.0.0.19+2
|
|
||||||
|
|
||||||
- Use java as language when calling `flutter create`.
|
|
||||||
|
|
||||||
## v.0.0.19+1
|
|
||||||
|
|
||||||
- Rename command for `CreateAllPluginsAppCommand`.
|
|
||||||
|
|
||||||
## v.0.0.19
|
|
||||||
|
|
||||||
- Use flutter create to build app testing plugin compilation.
|
|
||||||
|
|
||||||
## v.0.0.18+2
|
|
||||||
|
|
||||||
- Fix `.travis.yml` file name in `README.md`.
|
|
||||||
|
|
||||||
## v0.0.18+1
|
|
||||||
|
|
||||||
- Skip version check if it contains `publish_to: none`.
|
|
||||||
|
|
||||||
## v0.0.18
|
|
||||||
|
|
||||||
- Add option to exclude packages from generated pubspec command.
|
|
||||||
|
|
||||||
## v0.0.17+4
|
|
||||||
|
|
||||||
- Avoid trying to version-check pubspecs that are missing a version.
|
|
||||||
|
|
||||||
## v0.0.17+3
|
|
||||||
|
|
||||||
- version-check accounts for [pre-1.0 patch versions](https://github.com/flutter/flutter/issues/35412).
|
|
||||||
|
|
||||||
## v0.0.17+2
|
|
||||||
|
|
||||||
- Fix exception handling for version checker
|
|
||||||
|
|
||||||
## v0.0.17+1
|
|
||||||
|
|
||||||
- Fix bug where we used a flag instead of an option
|
|
||||||
|
|
||||||
## v0.0.17
|
|
||||||
|
|
||||||
- Add a command for checking the version number
|
|
||||||
|
|
||||||
## v0.0.16
|
|
||||||
|
|
||||||
- Add a command for generating `pubspec.yaml` for All Plugins app.
|
|
||||||
|
|
||||||
## v0.0.15
|
|
||||||
|
|
||||||
- Add a command for running driver tests of plugin examples.
|
|
||||||
|
|
||||||
## v0.0.14
|
|
||||||
|
|
||||||
- Check for dependencies->flutter instead of top level flutter node.
|
|
||||||
|
|
||||||
## v0.0.13
|
|
||||||
|
|
||||||
- Differentiate between Flutter and non-Flutter (but potentially Flutter consumed) Dart packages.
|
|
@ -1,25 +0,0 @@
|
|||||||
Copyright 2013 The Flutter Authors. All rights reserved.
|
|
||||||
|
|
||||||
Redistribution and use in source and binary forms, with or without modification,
|
|
||||||
are permitted provided that the following conditions are met:
|
|
||||||
|
|
||||||
* Redistributions of source code must retain the above copyright
|
|
||||||
notice, this list of conditions and the following disclaimer.
|
|
||||||
* Redistributions in binary form must reproduce the above
|
|
||||||
copyright notice, this list of conditions and the following
|
|
||||||
disclaimer in the documentation and/or other materials provided
|
|
||||||
with the distribution.
|
|
||||||
* Neither the name of Google Inc. nor the names of its
|
|
||||||
contributors may be used to endorse or promote products derived
|
|
||||||
from this software without specific prior written permission.
|
|
||||||
|
|
||||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
|
||||||
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
|
||||||
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
|
||||||
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
|
|
||||||
ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
|
||||||
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
|
||||||
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
|
|
||||||
ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
||||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
|
||||||
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
@ -3,12 +3,8 @@
|
|||||||
This is a set of utilities used in this repository, both for CI and for
|
This is a set of utilities used in this repository, both for CI and for
|
||||||
local development.
|
local development.
|
||||||
|
|
||||||
The tool is designed to be run at the root of the repository or `<repository-root>/packages/`.
|
|
||||||
|
|
||||||
## Getting Started
|
## Getting Started
|
||||||
|
|
||||||
In flutter/packages, the tool is run from source.
|
|
||||||
|
|
||||||
Set up:
|
Set up:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
@ -42,31 +38,36 @@ command is targetting. An package name can be any of:
|
|||||||
- A combination federated_plugin_name/package_name (e.g.,
|
- A combination federated_plugin_name/package_name (e.g.,
|
||||||
`path_provider/path_provider` for the app-facing package).
|
`path_provider/path_provider` for the app-facing package).
|
||||||
|
|
||||||
|
The examples below assume they are being run from the repository root, but
|
||||||
|
the script works from anywhere. If you develop in flutter/packages frequently,
|
||||||
|
it may be useful to make an alias for
|
||||||
|
`dart run /absolute/path/to/script/tool/bin/flutter_plugin_tools.dart` so that
|
||||||
|
you can easily run commands from within packages. For that use case there is
|
||||||
|
also a `--current-package` flag as an alternative to `--packages`, to target the
|
||||||
|
current working directory's package (or enclosing package; it can be used from
|
||||||
|
anywhere within a package).
|
||||||
|
|
||||||
### Format Code
|
### Format Code
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
cd <repository root>
|
|
||||||
dart run script/tool/bin/flutter_plugin_tools.dart format --packages package_name
|
dart run script/tool/bin/flutter_plugin_tools.dart format --packages package_name
|
||||||
```
|
```
|
||||||
|
|
||||||
### Run the Dart Static Analyzer
|
### Run the Dart Static Analyzer
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
cd <repository root>
|
|
||||||
dart run script/tool/bin/flutter_plugin_tools.dart analyze --packages package_name
|
dart run script/tool/bin/flutter_plugin_tools.dart analyze --packages package_name
|
||||||
```
|
```
|
||||||
|
|
||||||
### Run Dart Unit Tests
|
### Run Dart Unit Tests
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
cd <repository root>
|
|
||||||
dart run script/tool/bin/flutter_plugin_tools.dart test --packages package_name
|
dart run script/tool/bin/flutter_plugin_tools.dart test --packages package_name
|
||||||
```
|
```
|
||||||
|
|
||||||
### Run Dart Integration Tests
|
### Run Dart Integration Tests
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
cd <repository root>
|
|
||||||
dart run script/tool/bin/flutter_plugin_tools.dart build-examples --apk --packages package_name
|
dart run script/tool/bin/flutter_plugin_tools.dart build-examples --apk --packages package_name
|
||||||
dart run script/tool/bin/flutter_plugin_tools.dart drive-examples --android --packages package_name
|
dart run script/tool/bin/flutter_plugin_tools.dart drive-examples --android --packages package_name
|
||||||
```
|
```
|
||||||
@ -83,7 +84,6 @@ runs both unit tests and (on platforms that support it) integration tests, but
|
|||||||
Examples:
|
Examples:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
cd <repository root>
|
|
||||||
# Run just unit tests for iOS and Android:
|
# Run just unit tests for iOS and Android:
|
||||||
dart run script/tool/bin/flutter_plugin_tools.dart native-test --ios --android --no-integration --packages package_name
|
dart run script/tool/bin/flutter_plugin_tools.dart native-test --ios --android --no-integration --packages package_name
|
||||||
# Run all tests for macOS:
|
# Run all tests for macOS:
|
||||||
@ -99,7 +99,6 @@ with submodules, you will need to `git submodule update --init --recursive`
|
|||||||
before running this command.
|
before running this command.
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
cd <repository root>
|
|
||||||
dart run script/tool/bin/flutter_plugin_tools.dart update-excerpts --packages package_name
|
dart run script/tool/bin/flutter_plugin_tools.dart update-excerpts --packages package_name
|
||||||
```
|
```
|
||||||
|
|
||||||
@ -114,7 +113,6 @@ For instance, if you add a new analysis option that requires production
|
|||||||
code changes across many packages:
|
code changes across many packages:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
cd <repository root>
|
|
||||||
dart run script/tool/bin/flutter_plugin_tools.dart update-release-info \
|
dart run script/tool/bin/flutter_plugin_tools.dart update-release-info \
|
||||||
--version=minimal \
|
--version=minimal \
|
||||||
--base-branch=upstream/main \
|
--base-branch=upstream/main \
|
||||||
@ -143,7 +141,6 @@ For instance, to updated to version 3.0.0 of `some_package` in every package
|
|||||||
that depends on it:
|
that depends on it:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
cd <repository root>
|
|
||||||
dart run script/tool/bin/flutter_plugin_tools.dart update-dependency \
|
dart run script/tool/bin/flutter_plugin_tools.dart update-dependency \
|
||||||
--pub-package=some_package \
|
--pub-package=some_package \
|
||||||
--version=3.0.0 \
|
--version=3.0.0 \
|
||||||
|
@ -71,6 +71,7 @@ abstract class PackageCommand extends Command<void> {
|
|||||||
defaultsTo: <String>[],
|
defaultsTo: <String>[],
|
||||||
);
|
);
|
||||||
argParser.addFlag(_runOnChangedPackagesArg,
|
argParser.addFlag(_runOnChangedPackagesArg,
|
||||||
|
negatable: false,
|
||||||
help: 'Run the command on changed packages.\n'
|
help: 'Run the command on changed packages.\n'
|
||||||
'If no packages have changed, or if there have been changes that may\n'
|
'If no packages have changed, or if there have been changes that may\n'
|
||||||
'affect all packages, the command runs on all packages.\n'
|
'affect all packages, the command runs on all packages.\n'
|
||||||
@ -78,18 +79,29 @@ abstract class PackageCommand extends Command<void> {
|
|||||||
'See $_baseShaArg if a custom base is needed to determine the diff.\n\n'
|
'See $_baseShaArg if a custom base is needed to determine the diff.\n\n'
|
||||||
'Cannot be combined with $_packagesArg.\n');
|
'Cannot be combined with $_packagesArg.\n');
|
||||||
argParser.addFlag(_runOnDirtyPackagesArg,
|
argParser.addFlag(_runOnDirtyPackagesArg,
|
||||||
|
negatable: false,
|
||||||
help:
|
help:
|
||||||
'Run the command on packages with changes that have not been committed.\n'
|
'Run the command on packages with changes that have not been committed.\n'
|
||||||
'Packages excluded with $_excludeArg are excluded even if changed.\n'
|
'Packages excluded with $_excludeArg are excluded even if changed.\n'
|
||||||
'Cannot be combined with $_packagesArg.\n',
|
'Cannot be combined with $_packagesArg.\n',
|
||||||
hide: true);
|
hide: true);
|
||||||
argParser.addFlag(_packagesForBranchArg,
|
argParser.addFlag(_packagesForBranchArg,
|
||||||
|
negatable: false,
|
||||||
help: 'This runs on all packages changed in the last commit on main '
|
help: 'This runs on all packages changed in the last commit on main '
|
||||||
'(or master), and behaves like --run-on-changed-packages on '
|
'(or master), and behaves like --run-on-changed-packages on '
|
||||||
'any other branch.\n\n'
|
'any other branch.\n\n'
|
||||||
'Cannot be combined with $_packagesArg.\n\n'
|
'Cannot be combined with $_packagesArg.\n\n'
|
||||||
'This is intended for use in CI.\n',
|
'This is intended for use in CI.\n',
|
||||||
hide: true);
|
hide: true);
|
||||||
|
argParser.addFlag(_currentPackageArg,
|
||||||
|
negatable: false,
|
||||||
|
help:
|
||||||
|
'Set the target package(s) based on the current working directory.\n'
|
||||||
|
'- If the current working directory is (or is inside) a package, '
|
||||||
|
'that package will be targeted.\n'
|
||||||
|
'- If the current working directory is the root of a federated '
|
||||||
|
'plugin group, that group will be targeted.\n'
|
||||||
|
'Cannot be combined with $_packagesArg.\n');
|
||||||
argParser.addOption(_baseShaArg,
|
argParser.addOption(_baseShaArg,
|
||||||
help: 'The base sha used to determine git diff. \n'
|
help: 'The base sha used to determine git diff. \n'
|
||||||
'This is useful when $_runOnChangedPackagesArg is specified.\n'
|
'This is useful when $_runOnChangedPackagesArg is specified.\n'
|
||||||
@ -104,17 +116,22 @@ abstract class PackageCommand extends Command<void> {
|
|||||||
'but more information may be added in the future.');
|
'but more information may be added in the future.');
|
||||||
}
|
}
|
||||||
|
|
||||||
static const String _baseBranchArg = 'base-branch';
|
// Package selection.
|
||||||
static const String _baseShaArg = 'base-sha';
|
|
||||||
static const String _excludeArg = 'exclude';
|
|
||||||
static const String _logTimingArg = 'log-timing';
|
|
||||||
static const String _packagesArg = 'packages';
|
static const String _packagesArg = 'packages';
|
||||||
static const String _packagesForBranchArg = 'packages-for-branch';
|
static const String _packagesForBranchArg = 'packages-for-branch';
|
||||||
|
static const String _currentPackageArg = 'current-package';
|
||||||
static const String _pluginsLegacyAliasArg = 'plugins';
|
static const String _pluginsLegacyAliasArg = 'plugins';
|
||||||
static const String _runOnChangedPackagesArg = 'run-on-changed-packages';
|
static const String _runOnChangedPackagesArg = 'run-on-changed-packages';
|
||||||
static const String _runOnDirtyPackagesArg = 'run-on-dirty-packages';
|
static const String _runOnDirtyPackagesArg = 'run-on-dirty-packages';
|
||||||
|
static const String _excludeArg = 'exclude';
|
||||||
|
// Diff base selection.
|
||||||
|
static const String _baseBranchArg = 'base-branch';
|
||||||
|
static const String _baseShaArg = 'base-sha';
|
||||||
|
// Sharding.
|
||||||
static const String _shardCountArg = 'shardCount';
|
static const String _shardCountArg = 'shardCount';
|
||||||
static const String _shardIndexArg = 'shardIndex';
|
static const String _shardIndexArg = 'shardIndex';
|
||||||
|
// Utility.
|
||||||
|
static const String _logTimingArg = 'log-timing';
|
||||||
|
|
||||||
/// The directory containing the packages.
|
/// The directory containing the packages.
|
||||||
final Directory packagesDir;
|
final Directory packagesDir;
|
||||||
@ -308,13 +325,15 @@ abstract class PackageCommand extends Command<void> {
|
|||||||
_runOnChangedPackagesArg,
|
_runOnChangedPackagesArg,
|
||||||
_runOnDirtyPackagesArg,
|
_runOnDirtyPackagesArg,
|
||||||
_packagesForBranchArg,
|
_packagesForBranchArg,
|
||||||
|
_currentPackageArg,
|
||||||
};
|
};
|
||||||
if (packageSelectionFlags
|
if (packageSelectionFlags
|
||||||
.where((String flag) => argResults!.wasParsed(flag))
|
.where((String flag) => argResults!.wasParsed(flag))
|
||||||
.length >
|
.length >
|
||||||
1) {
|
1) {
|
||||||
printError('Only one of --$_packagesArg, --$_runOnChangedPackagesArg, or '
|
printError('Only one of the package selection arguments '
|
||||||
'--$_packagesForBranchArg can be provided.');
|
'(${packageSelectionFlags.join(", ")}) '
|
||||||
|
'can be provided.');
|
||||||
throw ToolExit(exitInvalidArguments);
|
throw ToolExit(exitInvalidArguments);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -383,6 +402,14 @@ abstract class PackageCommand extends Command<void> {
|
|||||||
if (packages.isEmpty) {
|
if (packages.isEmpty) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
} else if (getBoolArg(_currentPackageArg)) {
|
||||||
|
final String? currentPackageName = _getCurrentDirectoryPackageName();
|
||||||
|
if (currentPackageName == null) {
|
||||||
|
printError('Unable to determine packages; --$_currentPackageArg can '
|
||||||
|
'only be used within a repository package or package group.');
|
||||||
|
throw ToolExit(exitInvalidArguments);
|
||||||
|
}
|
||||||
|
packages = <String>{currentPackageName};
|
||||||
}
|
}
|
||||||
|
|
||||||
final Directory thirdPartyPackagesDirectory = packagesDir.parent
|
final Directory thirdPartyPackagesDirectory = packagesDir.parent
|
||||||
@ -545,6 +572,32 @@ abstract class PackageCommand extends Command<void> {
|
|||||||
return packages;
|
return packages;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
String? _getCurrentDirectoryPackageName() {
|
||||||
|
// Ensure that the current directory is within the packages directory.
|
||||||
|
final Directory absolutePackagesDir = packagesDir.absolute;
|
||||||
|
Directory currentDir = packagesDir.fileSystem.currentDirectory.absolute;
|
||||||
|
if (!currentDir.path.startsWith(absolutePackagesDir.path) ||
|
||||||
|
currentDir.path == packagesDir.path) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
// If the current directory is a direct subdirectory of the packages
|
||||||
|
// directory, then that's the target.
|
||||||
|
if (currentDir.parent.path == absolutePackagesDir.path) {
|
||||||
|
return currentDir.basename;
|
||||||
|
}
|
||||||
|
// Otherwise, walk up until a package is found...
|
||||||
|
while (!isPackage(currentDir)) {
|
||||||
|
currentDir = currentDir.parent;
|
||||||
|
if (currentDir.path == absolutePackagesDir.path) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// ... and then check whether it has an enclosing package.
|
||||||
|
final RepositoryPackage package = RepositoryPackage(currentDir);
|
||||||
|
final RepositoryPackage? enclosingPackage = package.getEnclosingPackage();
|
||||||
|
return (enclosingPackage ?? package).directory.basename;
|
||||||
|
}
|
||||||
|
|
||||||
// Returns true if the current checkout is on an ancestor of [branch].
|
// Returns true if the current checkout is on an ancestor of [branch].
|
||||||
//
|
//
|
||||||
// This is used because CI may check out a specific hash rather than a branch,
|
// This is used because CI may check out a specific hash rather than a branch,
|
||||||
|
@ -41,17 +41,14 @@ import 'xcode_analyze_command.dart';
|
|||||||
|
|
||||||
void main(List<String> args) {
|
void main(List<String> args) {
|
||||||
const FileSystem fileSystem = LocalFileSystem();
|
const FileSystem fileSystem = LocalFileSystem();
|
||||||
|
final Directory scriptBinDir =
|
||||||
Directory packagesDir =
|
fileSystem.file(io.Platform.script.toFilePath()).parent;
|
||||||
fileSystem.currentDirectory.childDirectory('packages');
|
final Directory root = scriptBinDir.parent.parent.parent;
|
||||||
|
final Directory packagesDir = root.childDirectory('packages');
|
||||||
|
|
||||||
if (!packagesDir.existsSync()) {
|
if (!packagesDir.existsSync()) {
|
||||||
if (fileSystem.currentDirectory.basename == 'packages') {
|
print('Error: Cannot find a "packages" sub-directory');
|
||||||
packagesDir = fileSystem.currentDirectory;
|
io.exit(1);
|
||||||
} else {
|
|
||||||
print('Error: Cannot find a "packages" sub-directory');
|
|
||||||
io.exit(1);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
final CommandRunner<void> commandRunner = CommandRunner<void>(
|
final CommandRunner<void> commandRunner = CommandRunner<void>(
|
||||||
|
@ -1,7 +1,8 @@
|
|||||||
name: flutter_plugin_tools
|
name: flutter_plugin_tools
|
||||||
description: Productivity and CI utils for flutter/packages
|
description: Productivity and CI utils for flutter/packages
|
||||||
repository: https://github.com/flutter/packages/tree/main/script/tool
|
repository: https://github.com/flutter/packages/tree/main/script/tool
|
||||||
version: 0.13.4+4
|
version: 1.0.0
|
||||||
|
publish_to: none
|
||||||
|
|
||||||
dependencies:
|
dependencies:
|
||||||
args: ^2.1.0
|
args: ^2.1.0
|
||||||
|
@ -319,8 +319,7 @@ packages/plugin1/plugin1/plugin1.dart
|
|||||||
expect(
|
expect(
|
||||||
output,
|
output,
|
||||||
containsAllInOrder(<Matcher>[
|
containsAllInOrder(<Matcher>[
|
||||||
contains('Only one of --packages, --run-on-changed-packages, or '
|
contains('Only one of the package selection arguments')
|
||||||
'--packages-for-branch can be provided.')
|
|
||||||
]));
|
]));
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -338,8 +337,25 @@ packages/plugin1/plugin1/plugin1.dart
|
|||||||
expect(
|
expect(
|
||||||
output,
|
output,
|
||||||
containsAllInOrder(<Matcher>[
|
containsAllInOrder(<Matcher>[
|
||||||
contains('Only one of --packages, --run-on-changed-packages, or '
|
contains('Only one of the package selection arguments')
|
||||||
'--packages-for-branch can be provided.')
|
]));
|
||||||
|
});
|
||||||
|
|
||||||
|
test('does not allow --packages with --current-package', () async {
|
||||||
|
Error? commandError;
|
||||||
|
final List<String> output = await runCapturingPrint(runner, <String>[
|
||||||
|
'sample',
|
||||||
|
'--current-package',
|
||||||
|
'--packages=plugin1',
|
||||||
|
], errorHandler: (Error e) {
|
||||||
|
commandError = e;
|
||||||
|
});
|
||||||
|
|
||||||
|
expect(commandError, isA<ToolExit>());
|
||||||
|
expect(
|
||||||
|
output,
|
||||||
|
containsAllInOrder(<Matcher>[
|
||||||
|
contains('Only one of the package selection arguments')
|
||||||
]));
|
]));
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -359,12 +375,96 @@ packages/plugin1/plugin1/plugin1.dart
|
|||||||
expect(
|
expect(
|
||||||
output,
|
output,
|
||||||
containsAllInOrder(<Matcher>[
|
containsAllInOrder(<Matcher>[
|
||||||
contains('Only one of --packages, --run-on-changed-packages, or '
|
contains('Only one of the package selection arguments')
|
||||||
'--packages-for-branch can be provided.')
|
|
||||||
]));
|
]));
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
group('current-package', () {
|
||||||
|
test('throws when run from outside of the packages directory', () async {
|
||||||
|
fileSystem.currentDirectory = packagesDir.parent;
|
||||||
|
|
||||||
|
Error? commandError;
|
||||||
|
final List<String> output = await runCapturingPrint(runner, <String>[
|
||||||
|
'sample',
|
||||||
|
'--current-package',
|
||||||
|
], errorHandler: (Error e) {
|
||||||
|
commandError = e;
|
||||||
|
});
|
||||||
|
|
||||||
|
expect(commandError, isA<ToolExit>());
|
||||||
|
expect(
|
||||||
|
output,
|
||||||
|
containsAllInOrder(<Matcher>[
|
||||||
|
contains('--current-package can only be used within a repository '
|
||||||
|
'package or package group')
|
||||||
|
]));
|
||||||
|
});
|
||||||
|
|
||||||
|
test('throws when run directly in the packages directory', () async {
|
||||||
|
fileSystem.currentDirectory = packagesDir;
|
||||||
|
|
||||||
|
Error? commandError;
|
||||||
|
final List<String> output = await runCapturingPrint(runner, <String>[
|
||||||
|
'sample',
|
||||||
|
'--current-package',
|
||||||
|
], errorHandler: (Error e) {
|
||||||
|
commandError = e;
|
||||||
|
});
|
||||||
|
|
||||||
|
expect(commandError, isA<ToolExit>());
|
||||||
|
expect(
|
||||||
|
output,
|
||||||
|
containsAllInOrder(<Matcher>[
|
||||||
|
contains('--current-package can only be used within a repository '
|
||||||
|
'package or package group')
|
||||||
|
]));
|
||||||
|
});
|
||||||
|
|
||||||
|
test('runs on a package when run from the package directory', () async {
|
||||||
|
final RepositoryPackage package =
|
||||||
|
createFakePlugin('a_package', packagesDir);
|
||||||
|
createFakePlugin('another_package', packagesDir);
|
||||||
|
fileSystem.currentDirectory = package.directory;
|
||||||
|
|
||||||
|
await runCapturingPrint(
|
||||||
|
runner, <String>['sample', '--current-package']);
|
||||||
|
|
||||||
|
expect(command.plugins, unorderedEquals(<String>[package.path]));
|
||||||
|
});
|
||||||
|
|
||||||
|
test('runs on a package when run from a package example directory',
|
||||||
|
() async {
|
||||||
|
final RepositoryPackage package = createFakePlugin(
|
||||||
|
'a_package', packagesDir,
|
||||||
|
examples: <String>['a', 'b', 'c']);
|
||||||
|
createFakePlugin('another_package', packagesDir);
|
||||||
|
fileSystem.currentDirectory = package.getExamples().first.directory;
|
||||||
|
|
||||||
|
await runCapturingPrint(
|
||||||
|
runner, <String>['sample', '--current-package']);
|
||||||
|
|
||||||
|
expect(command.plugins, unorderedEquals(<String>[package.path]));
|
||||||
|
});
|
||||||
|
|
||||||
|
test('runs on a package group when run from the group directory',
|
||||||
|
() async {
|
||||||
|
final Directory pluginGroup = packagesDir.childDirectory('a_plugin');
|
||||||
|
final RepositoryPackage plugin1 =
|
||||||
|
createFakePlugin('a_plugin_foo', pluginGroup);
|
||||||
|
final RepositoryPackage plugin2 =
|
||||||
|
createFakePlugin('a_plugin_bar', pluginGroup);
|
||||||
|
createFakePlugin('unrelated_plugin', packagesDir);
|
||||||
|
fileSystem.currentDirectory = pluginGroup;
|
||||||
|
|
||||||
|
await runCapturingPrint(
|
||||||
|
runner, <String>['sample', '--current-package']);
|
||||||
|
|
||||||
|
expect(command.plugins,
|
||||||
|
unorderedEquals(<String>[plugin1.path, plugin2.path]));
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
group('test run-on-changed-packages', () {
|
group('test run-on-changed-packages', () {
|
||||||
test('all plugins should be tested if there are no changes.', () async {
|
test('all plugins should be tested if there are no changes.', () async {
|
||||||
final RepositoryPackage plugin1 =
|
final RepositoryPackage plugin1 =
|
||||||
|
Reference in New Issue
Block a user