chore: add cspell checking to our CI (#2421)
This commit is contained in:
@@ -15,6 +15,12 @@ jobs:
|
||||
name: ✅ Semantic Pull Request
|
||||
uses: VeryGoodOpenSource/very_good_workflows/.github/workflows/semantic_pull_request.yml@v1
|
||||
|
||||
cspell:
|
||||
name: 🔤 Check Spelling
|
||||
uses: VeryGoodOpenSource/very_good_workflows/.github/workflows/spell_check.yml@v1
|
||||
with:
|
||||
config: cspell.config.yaml
|
||||
|
||||
changes:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# Code push Notes
|
||||
|
||||
Just place to keep running notes about our development of codepush for Flutter.
|
||||
Just place to keep running notes about our development of code push for Flutter.
|
||||
|
||||
## Server push vs. code push
|
||||
|
||||
|
||||
+1
-1
@@ -1,5 +1,5 @@
|
||||
# This is the windows equivalent of the `third_party/flutter/bin/internal/shared.sh` script
|
||||
# compiles `shorebird_cli/bin/shorebird_cli.dart` to `bin/cache/shorebird.shapshot`
|
||||
# compiles `shorebird_cli/bin/shorebird_cli.dart` to `bin/cache/shorebird.snapshot`
|
||||
|
||||
$ErrorActionPreference = "Stop"
|
||||
|
||||
|
||||
@@ -0,0 +1,109 @@
|
||||
$schema: https://raw.githubusercontent.com/streetsidesoftware/cspell/main/cspell.schema.json
|
||||
version: "0.2"
|
||||
ignorePaths:
|
||||
["coverage", "bin/cache", "third_party", "build", "*.xcscheme", "fixtures"]
|
||||
words:
|
||||
- pubspec
|
||||
- podfile
|
||||
- Apks
|
||||
- metadatas
|
||||
- logcat
|
||||
- mktemp
|
||||
- gradlew
|
||||
- bundletool
|
||||
- genhtml
|
||||
- sideload
|
||||
- endtemplate
|
||||
- mocktail
|
||||
- libapp
|
||||
- aarch
|
||||
- codesign
|
||||
- xcarchive
|
||||
- xcrun
|
||||
- vmcode
|
||||
- xcodebuild
|
||||
- sideloadable
|
||||
- bryanoltman
|
||||
- signup
|
||||
- lerping
|
||||
- precache
|
||||
- devicectl
|
||||
- exitcode
|
||||
- writeln
|
||||
- xcodeproj
|
||||
- xcschemes
|
||||
- xcshareddata
|
||||
- armeabi
|
||||
- cipd
|
||||
- canvaskit
|
||||
- libimobiledevice
|
||||
- hotreload
|
||||
- libflutter
|
||||
- apigee
|
||||
- pointycastle
|
||||
- pkcs
|
||||
- appbundle
|
||||
- felangel
|
||||
- bitcode
|
||||
- xcscheme
|
||||
- archs
|
||||
- shorebirdtech
|
||||
- aapt
|
||||
- USERPROFILE
|
||||
- LOCALAPPDATA
|
||||
- Unpatchable
|
||||
- multioption
|
||||
- xcframework
|
||||
- deflavored
|
||||
- dylib
|
||||
- libplist
|
||||
- usbmuxd
|
||||
- pwsh
|
||||
- readlink
|
||||
- unawaited
|
||||
- NOAUTH
|
||||
- WRONGPASS
|
||||
- FLUSHALL
|
||||
- pana
|
||||
- idevicesyslog
|
||||
- Entra
|
||||
- xlink
|
||||
- propertylistserialization
|
||||
- Retryable
|
||||
- storyboardc
|
||||
- iphoneos
|
||||
- lproj
|
||||
- iokit
|
||||
- backboardd
|
||||
- dyld
|
||||
- bintools
|
||||
- codesigned
|
||||
- codesigning
|
||||
- previewable
|
||||
- udid # Unique Device Identifier
|
||||
- podspec
|
||||
- exportoptions
|
||||
- ANDROIDD
|
||||
- propertylistserialization
|
||||
- VCRUNTIME
|
||||
- Oltman
|
||||
- xcworkspace
|
||||
- SIGSTOP
|
||||
- lldb
|
||||
- nserror
|
||||
- sysroot
|
||||
- RSAPKCS
|
||||
- PRNG
|
||||
- sideloaded
|
||||
- Azul
|
||||
- altool
|
||||
- aabs
|
||||
- upvote
|
||||
- Verdana
|
||||
- reinit
|
||||
- allprojects # From gradle files
|
||||
- aars # Android Archive
|
||||
- orri # Arm64 instruction, Or Register with Immediate
|
||||
- unmockable
|
||||
- dorny # From .github dir, doesn't show up in "**" check?
|
||||
- requirepass # From .github dir, doesn't show up in "**" check?
|
||||
@@ -8,11 +8,11 @@ import 'package:path/path.dart' as p;
|
||||
import 'package:test/test.dart';
|
||||
|
||||
void main() {
|
||||
const token =
|
||||
const token = // cspell: disable-next-line
|
||||
'''eyJhbGciOiJSUzI1NiIsImtpZCI6ImMxMGM5MGJhNGMzNjYzNTE2ZTA3MDdkMGU5YTg5NDgxMDYyODUxNTgiLCJ0eXAiOiJKV1QifQ.eyJpc3MiOiJodHRwczovL3NlY3VyZXRva2VuLmdvb2dsZS5jb20vbXktYXBwIiwiYXVkIjoibXktYXBwIiwiYXV0aF90aW1lIjoxNjQzNjg0MjY2LCJ1c2VyX2lkIjoiRzR1MzdXdk90dmVWR0pRb1pCWGpxcHVWazZWMiIsInN1YiI6Ikc0dTM3V3ZPdHZlVkdKUW9aQlhqcXB1Vms2VjIiLCJpYXQiOjE2NDM2ODQyNjYsImV4cCI6MTY0MzY4Nzg2NiwiZW1haWwiOiJ0ZXN0QGdtYWlsLmNvbSIsImVtYWlsX3ZlcmlmaWVkIjp0cnVlLCJmaXJlYmFzZSI6eyJpZGVudGl0aWVzIjp7ImVtYWlsIjpbInRlc3RAZ21haWwuY29tIl19LCJzaWduX2luX3Byb3ZpZGVyIjoicGFzc3dvcmQifX0.bUWnX_XmR1d9EmeFeYSsK_CHU1u9NPIHgyaQueZ6urYOtxvuL_QodjPl0c9CBJwctwPnxVyRmkeNCw0oF9xBgph0NApLL4FIG6vpDPZfW9txZBYr8xIvaqvmD0diACENAQdjRT2XmyEdQ2-U7SsTonybHmLoU9FMQTjAgw4NCALQvExfB6rtQ9GDsOBt1xoBkB3Vo7a5OmugZ1aHXF69b8As6137-Dggf5qx5R3oLRFovICMMesQziE3vGi-WKcbQxSeiD-9a6ShPAhk41XiyjFGDEOtUCQo63uwQnMw3g0KVtC6bzIyFq-E91vhxumxXzxPYC-kg7iUYiSZy7Y-Aw''';
|
||||
const tokenNoAuthTime =
|
||||
const tokenNoAuthTime = // cspell: disable-next-line
|
||||
'''eyJhbGciOiJSUzI1NiIsImtpZCI6ImMxMGM5MGJhNGMzNjYzNTE2ZTA3MDdkMGU5YTg5NDgxMDYyODUxNTgiLCJ0eXAiOiJKV1QifQ.eyJpc3MiOiJodHRwczovL3NlY3VyZXRva2VuLmdvb2dsZS5jb20vbXktYXBwIiwiYXVkIjoibXktYXBwIiwidXNlcl9pZCI6Ikc0dTM3V3ZPdHZlVkdKUW9aQlhqcXB1Vms2VjIiLCJzdWIiOiJHNHUzN1d2T3R2ZVZHSlFvWkJYanFwdVZrNlYyIiwiaWF0IjoxNjQzNjg0MjY2LCJleHAiOjE2NDM2ODc4NjYsImVtYWlsIjoidGVzdEBnbWFpbC5jb20iLCJlbWFpbF92ZXJpZmllZCI6dHJ1ZSwiZmlyZWJhc2UiOnsiaWRlbnRpdGllcyI6eyJlbWFpbCI6WyJ0ZXN0QGdtYWlsLmNvbSJdfSwic2lnbl9pbl9wcm92aWRlciI6InBhc3N3b3JkIn19.ZWCadE43mUk43cPQdNCCi4WhDgB4ZsDT9rhPGQq_1uFPhzkVrCSRcjUhwkzH11VLap_MVurNvI_pGWbu9Z4CRPvGFzXPpuNveWy2qFPEa4jcM-R40vsbrP30vNnrp4PrmqgLar0vWs6FZ2g9fbjU8L1LaU5ik31OKSXufTIKn_hPHhyIC33tYTpWzG3Abq3H9EELHUXKW9nEcN8YYnOHAZ3A6ymb3DyBguhf2O-XAIlrn1WoxRRqlukFGSmprk7heonbVUTzoc3sIDZcC-Cj1U9wTee1NmqmU7v3SvpBRGnuXz-5rzSRHblyVxn_EEfCYwjsDUwetYpyFcCs5dqPlQ''';
|
||||
const tokenWithNoMatchingKid =
|
||||
const tokenWithNoMatchingKid = // cspell: disable-next-line
|
||||
'''eyJhbGciOiJSUzI1NiIsImtpZCI6IjEyMzQiLCJ0eXAiOiJKV1QifQ.eyJpc3MiOiJodHRwczovL3NlY3VyZXRva2VuLmdvb2dsZS5jb20vbXktYXBwIiwiYXVkIjoibXktYXBwIiwidXNlcl9pZCI6Ikc0dTM3V3ZPdHZlVkdKUW9aQlhqcXB1Vms2VjIiLCJzdWIiOiJHNHUzN1d2T3R2ZVZHSlFvWkJYanFwdVZrNlYyIiwiaWF0IjoxNjQzNjg0MjY2LCJleHAiOjE2NDM2ODc4NjYsImVtYWlsIjoidGVzdEBnbWFpbC5jb20iLCJlbWFpbF92ZXJpZmllZCI6dHJ1ZSwiZmlyZWJhc2UiOnsiaWRlbnRpdGllcyI6eyJlbWFpbCI6WyJ0ZXN0QGdtYWlsLmNvbSJdfSwic2lnbl9pbl9wcm92aWRlciI6InBhc3N3b3JkIn19.RBAwg-Ttf36aDkVR97Rd50aMp-0yzk8do_4AUPFi9nEhKu0Ye8ox_9hdTBttJYxoOq0NbH2zz0JHSnSHqoTvCleVhoGqg8YghzH0NiqncPfDzi-IcRfy2K8CrOoXuqXaj3YWrbrzNWAYV46eFmvI2TmPO55AyFOjhvLpW-uf96ceOPjueZm8o5K2DZym86BAhSdShknONV2O7b2vW34TXf3UJdISs5p9z6Si4JOWGjbVPY45CO16ODdDxyUGUM2-IVQloB7bg0nMqQbIjKDoO5g9d1nguR2Z-YBiv0BX1MDWDlrBsMAzzRVaFlf6YQS1LKxu2tnMdCrBnK_Wvqt5sQ''';
|
||||
const keyValuePublicKeysUrl =
|
||||
'https://www.googleapis.com/robot/v1/metadata/x509/securetoken@system.gserviceaccount.com';
|
||||
@@ -217,8 +217,9 @@ void main() {
|
||||
});
|
||||
|
||||
group('when key store is JWK store', () {
|
||||
const token =
|
||||
const token = // cspell: disable-next-line
|
||||
'''eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImtpZCI6InRSNHdrWWhIeEhvX3FlcHJTMDhDdXc4eGNPdyJ9.eyJ2ZXIiOiIyLjAiLCJpc3MiOiJodHRwczovL2xvZ2luLm1pY3Jvc29mdG9ubGluZS5jb20vOTE4ODA0MGQtNmM2Ny00YzViLWIxMTItMzZhMzA0YjY2ZGFkL3YyLjAiLCJzdWIiOiJBQUFBQUFBQUFBQUFBQUFBQUFBQUFKclpOMmI0eldUNzhQWFJEN2J6dkxrIiwiYXVkIjoiYzRhZjk1NjYtOGEzNi00MzQ4LWI0MTMtZGFiNjY1Yjg3MTdkIiwiZXhwIjoxNzA4NTQ2MDYwLCJpYXQiOjE3MDg0NTkzNjAsIm5iZiI6MTcwODQ1OTM2MCwiZW1haWwiOiJicnlhbm9sdG1hbkBob3RtYWlsLmNvbSIsInRpZCI6IjkxODgwNDBkLTZjNjctNGM1Yi1iMTEyLTM2YTMwNGI2NmRhZCIsImFpbyI6IkRtUE91OTNxdWlSNm9OYVBrMjl1dVFSTkhSN0NIS0V4VDlrSE5DamVJIUdpN3JMQks2SDZYYzdkUWl2ZmRxTVZ5VExuNDMxUWRaTXpPSHQqaDQ2NWViQTlBWE9RdzhOdlM3dzNTbFREWU9iOW52OGh2SHNDTXZqdlJJMzRaWXlPbiE2MHBUcXghWnVmeTF0VnRGMWp6VEVsQmlUTjRrOWJIU0RDUFZaU1BlaXNzYjFLdmhCamc4biFPUSptNWszSmZ3JCQifQ.PhZfpmMmhlW_w9P-EQjcA-DgD0Mxnufxgn6rsKlQYtRn2hmT8uGOlMpMthYIeYLhVPtQqPyHDdW-0GxJ3ROK6prlogvPt8SxY8lSiJ6a4XCNmGop-7MxWGkYhqnMw21TKiSsGIr5LSuD3b_5RK6uBipra0rf819Wlvp6JbXulGSHt9N_qyq8328npCHRYbIDOBcOgDjnPjDFp_pJ99-itCsM8OO0npZJZ64MmlENgEYswnOQYlCShF1HLQwes7uGuw8ZBik-XSu44iJKJ9u4Ai3BjpxYdMFmMZ-B4DpF3uWpFsK-X9tMbi23gwufu5X_6aqtZYRLg052M1SUaBiMUw''';
|
||||
// cspell: disable-next-line
|
||||
const audience = 'c4af9566-8a36-4348-b413-dab665b8717d';
|
||||
const issuer =
|
||||
'''https://login.microsoftonline.com/9188040d-6c67-4c5b-b112-36a304b66dad/v2.0''';
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
<!-- cspell: ignore requirepass -->
|
||||
# Contributing
|
||||
|
||||
We are happy to accept contributions!
|
||||
|
||||
@@ -250,7 +250,7 @@ void main() {
|
||||
},
|
||||
},
|
||||
};
|
||||
const other = {'qux': 'quux'};
|
||||
const other = {'qux': 'quux'}; // cspell:disable-line
|
||||
await expectLater(client.json.get(key: key), completion(isNull));
|
||||
await expectLater(client.json.set(key: key, value: value), completes);
|
||||
await expectLater(
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
// cspell:words Filesx
|
||||
import 'dart:io';
|
||||
|
||||
import 'package:collection/collection.dart';
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
// cspell:words microsoftonline
|
||||
import 'package:googleapis_auth/googleapis_auth.dart';
|
||||
|
||||
/// Endpoints for OAuth authentication with Azure/Entra/Microsoft.
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
// cspell:words dgst
|
||||
import 'dart:convert';
|
||||
import 'dart:io';
|
||||
import 'dart:typed_data';
|
||||
|
||||
@@ -175,7 +175,7 @@ class AarPatcher extends Patcher {
|
||||
|
||||
@override
|
||||
Future<String> extractReleaseVersionFromArtifact(File artifact) {
|
||||
// Not implemented - release verison must be specified by the user.
|
||||
// Not implemented - release version must be specified by the user.
|
||||
throw UnimplementedError(
|
||||
'Release version must be specified using --release-version.',
|
||||
);
|
||||
|
||||
@@ -221,7 +221,7 @@ class IosFrameworkPatcher extends Patcher {
|
||||
|
||||
@override
|
||||
Future<String> extractReleaseVersionFromArtifact(File artifact) {
|
||||
// Not implemented - release verison must be specified by the user.
|
||||
// Not implemented - release version must be specified by the user.
|
||||
throw UnimplementedError(
|
||||
'Release version must be specified using --release-version.',
|
||||
);
|
||||
|
||||
@@ -86,7 +86,7 @@ class PreviewCommand extends ShorebirdCommand {
|
||||
/// - Warn the user about the platform if that platform is not the one
|
||||
/// the user specified with `--platform`.
|
||||
/// - Error out if the user specified a platform that is not previewable.
|
||||
void _assertPreviwableReleases({
|
||||
void _assertPreviewableReleases({
|
||||
required Release releaseWithAllPlatforms,
|
||||
required Release release,
|
||||
}) {
|
||||
@@ -203,7 +203,7 @@ class PreviewCommand extends ShorebirdCommand {
|
||||
final releaseWithAllPlatforms = releasesWithAllPlatforms.firstWhere(
|
||||
(r) => r.id == release.id,
|
||||
);
|
||||
_assertPreviwableReleases(
|
||||
_assertPreviewableReleases(
|
||||
releaseWithAllPlatforms: releaseWithAllPlatforms,
|
||||
release: release,
|
||||
);
|
||||
|
||||
@@ -485,7 +485,7 @@ ${summary.join('\n')}
|
||||
);
|
||||
}
|
||||
|
||||
/// Instructions explaining how to patch the release that was just creatd.
|
||||
/// Instructions explaining how to patch the release that was just created.
|
||||
void printPatchInstructions({
|
||||
required Releaser releaser,
|
||||
required String releaseVersion,
|
||||
|
||||
@@ -300,7 +300,7 @@ Or run on an iOS simulator without code signing
|
||||
} catch (exception, stackTrace) {
|
||||
logger.detail('[ios-deploy] failed: $exception\n$stackTrace');
|
||||
debuggerState = _DebuggerState.detached;
|
||||
logger.err('[ios-deplay] failed: $exception');
|
||||
logger.err('[ios-deploy] failed: $exception');
|
||||
return ExitCode.software.code;
|
||||
}
|
||||
}
|
||||
@@ -328,7 +328,7 @@ Or run on an iOS simulator without code signing
|
||||
}
|
||||
}
|
||||
|
||||
// Handles interpretting stdout line and logs errors accordingly.
|
||||
// Handles interpreting stdout line and logs errors accordingly.
|
||||
// Always returns the original line.
|
||||
@visibleForTesting
|
||||
String detectFailures(String line, Logger logger) {
|
||||
|
||||
@@ -22,9 +22,9 @@ extension OptionFinder on ArgResults {
|
||||
return this[name] as String?;
|
||||
}
|
||||
|
||||
// We would ideally check for abbrevations here as well, but ArgResults
|
||||
// We would ideally check for abbreviations here as well, but ArgResults
|
||||
// doesn't expose its parser (which we could use to get the list of
|
||||
// [Options] being parsed) or an abbrevations map.
|
||||
// [Options] being parsed) or an abbreviations map.
|
||||
final abbr = argParser.options.values
|
||||
.firstWhereOrNull((option) => option.name == name)
|
||||
?.abbr;
|
||||
@@ -105,7 +105,7 @@ extension ForwardedArgs on ArgResults {
|
||||
bool _isPositionalArgPlatform(String arg) =>
|
||||
ReleaseType.values.any((target) => target.cliName == arg);
|
||||
|
||||
/// All parsed args with the given name. Because of multioptions, there may
|
||||
/// All parsed args with the given name. Because of multi-options, there may
|
||||
/// be multiple values for a single name, so we return a potentially empty
|
||||
/// [Iterable<String>] instead of a [String?].
|
||||
Iterable<String> _argsNamed(String name) {
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
// ignore_for_file: public_member_api_docs
|
||||
|
||||
extension NullOrEmtpy on String? {
|
||||
extension NullOrEmpty on String? {
|
||||
/// Returns `true` if this string is null or empty.
|
||||
bool get isNullOrEmpty => this == null || this!.isEmpty;
|
||||
}
|
||||
|
||||
@@ -82,7 +82,7 @@ class PatchDiffChecker {
|
||||
..info(
|
||||
yellow.wrap('''
|
||||
|
||||
If you don't know why you're seeing this error, visit our troublshooting page at ${troubleshootingUrl.toLink()}'''),
|
||||
If you don't know why you're seeing this error, visit our troubleshooting page at ${troubleshootingUrl.toLink()}'''),
|
||||
);
|
||||
|
||||
if (!allowNativeChanges) {
|
||||
|
||||
@@ -166,7 +166,7 @@ class Ios {
|
||||
.toSet();
|
||||
}
|
||||
|
||||
/// Parses the .xcsheme file to determine if it was created for an app
|
||||
/// Parses the .xcscheme file to determine if it was created for an app
|
||||
/// extension. We don't want to include these schemes as app flavors.
|
||||
///
|
||||
/// xcschemes are XML files that contain metadata about the scheme, including
|
||||
|
||||
@@ -20,7 +20,7 @@ const iOSLinkPercentageUrl = '$statusUrl#link-percentage-ios';
|
||||
/// Link to the troubleshooting page on the Shorebird documentation.
|
||||
const troubleshootingUrl = '$docsUrl/troubleshooting';
|
||||
|
||||
/// Link to the troubshooting section which covers the
|
||||
/// Link to the troubleshooting section which covers the
|
||||
/// Unsupported class file major version
|
||||
const unsupportedClassFileVersionUrl =
|
||||
'$troubleshootingUrl#unsupported-class-file-major-version-65';
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
// cspell:ignore asdf, qwer, zxcv
|
||||
import 'package:shorebird_cli/src/archive_analysis/archive_analysis.dart';
|
||||
import 'package:test/test.dart';
|
||||
|
||||
|
||||
@@ -122,7 +122,7 @@ void main() {
|
||||
);
|
||||
});
|
||||
|
||||
test('throws error when patch artfiact file does not exist', () async {
|
||||
test('throws error when patch artifact file does not exist', () async {
|
||||
await expectLater(
|
||||
() => runWithOverrides(
|
||||
() async => artifactManager.createDiff(
|
||||
|
||||
@@ -119,7 +119,7 @@ void main() {
|
||||
});
|
||||
|
||||
group(Auth, () {
|
||||
const idToken =
|
||||
const idToken = // cspell:disable-next-line
|
||||
'''eyJhbGciOiJIUzI1NiIsImtpZCI6IjEyMzQiLCJ0eXAiOiJKV1QifQ.eyJpc3MiOiJodHRwczovL2FjY291bnRzLmdvb2dsZS5jb20iLCJhenAiOiI1MjMzMDIyMzMyOTMtZWlhNWFudG0wdGd2ZWsyNDB0NDZvcmN0a3RpYWJyZWsuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20iLCJhdWQiOiI1MjMzMDIyMzMyOTMtZWlhNWFudG0wdGd2ZWsyNDB0NDZvcmN0a3RpYWJyZWsuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20iLCJzdWIiOiIxMjM0NSIsImhkIjoic2hvcmViaXJkLmRldiIsImVtYWlsIjoidGVzdEBlbWFpbC5jb20iLCJlbWFpbF92ZXJpZmllZCI6dHJ1ZSwiaWF0IjoxMjM0LCJleHAiOjY3ODl9.MYbITALvKsGYTYjw1o7AQ0ObkqRWVBSr9cFYJrvA46g''';
|
||||
const refreshToken = 'shorebird-token';
|
||||
const ciToken = CiToken(
|
||||
@@ -362,7 +362,7 @@ void main() {
|
||||
),
|
||||
);
|
||||
|
||||
const expiredIdToken =
|
||||
const expiredIdToken = // cspell:disable-next-line
|
||||
'''eyJhbGciOiJIUzI1NiIsImtpZCI6IjEyMzQiLCJ0eXAiOiJKV1QifQ.eyJpc3MiOiJodHRwczovL2FjY291bnRzLmdvb2dsZS5jb20iLCJhenAiOiI1MjMzMDIyMzMyOTMtZWlhNWFudG0wdGd2ZWsyNDB0NDZvcmN0a3RpYWJyZWsuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20iLCJhdWQiOiI1MjMzMDIyMzMyOTMtZWlhNWFudG0wdGd2ZWsyNDB0NDZvcmN0a3RpYWJyZWsuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20iLCJzdWIiOiIxMjM0NSIsImhkIjoic2hvcmViaXJkLmRldiIsImVtYWlsIjoidGVzdEBlbWFpbC5jb20iLCJlbWFpbF92ZXJpZmllZCI6dHJ1ZSwiaWF0IjoxMjM0LCJleHAiOjY3ODl9.MYbITALvKsGYTYjw1o7AQ0ObkqRWVBSr9cFYJrvA46g''';
|
||||
final onRefreshCredentialsCalls = <oauth2.AccessCredentials>[];
|
||||
final expiredCredentials = oauth2.AccessCredentials(
|
||||
@@ -416,7 +416,7 @@ void main() {
|
||||
),
|
||||
);
|
||||
|
||||
const expiredIdToken =
|
||||
const expiredIdToken = // cspell:disable-next-line
|
||||
'''eyJhbGciOiJIUzI1NiIsImtpZCI6IjEyMzQiLCJ0eXAiOiJKV1QifQ.eyJpc3MiOiJodHRwczovL2FjY291bnRzLmdvb2dsZS5jb20iLCJhenAiOiI1MjMzMDIyMzMyOTMtZWlhNWFudG0wdGd2ZWsyNDB0NDZvcmN0a3RpYWJyZWsuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20iLCJhdWQiOiI1MjMzMDIyMzMyOTMtZWlhNWFudG0wdGd2ZWsyNDB0NDZvcmN0a3RpYWJyZWsuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20iLCJzdWIiOiIxMjM0NSIsImhkIjoic2hvcmViaXJkLmRldiIsImVtYWlsIjoidGVzdEBlbWFpbC5jb20iLCJlbWFpbF92ZXJpZmllZCI6dHJ1ZSwiaWF0IjoxMjM0LCJleHAiOjY3ODl9.MYbITALvKsGYTYjw1o7AQ0ObkqRWVBSr9cFYJrvA46g''';
|
||||
final onRefreshCredentialsCalls = <oauth2.AccessCredentials>[];
|
||||
final expiredCredentials = oauth2.AccessCredentials(
|
||||
|
||||
@@ -137,13 +137,13 @@ void main() {
|
||||
createdAt: DateTime(2023),
|
||||
updatedAt: DateTime(2023),
|
||||
);
|
||||
final partchArtifactBundle = PatchArtifactBundle(
|
||||
final patchArtifactBundle = PatchArtifactBundle(
|
||||
arch: arch.arch,
|
||||
path: 'path',
|
||||
hash: '',
|
||||
size: 4,
|
||||
);
|
||||
final patchArtifactBundles = {arch: partchArtifactBundle};
|
||||
final patchArtifactBundles = {arch: patchArtifactBundle};
|
||||
const archs = [Arch.arm64];
|
||||
const releaseArtifact = ReleaseArtifact(
|
||||
id: 1,
|
||||
@@ -1332,7 +1332,7 @@ You can manage this release in the ${link(uri: uri, message: 'Shorebird Console'
|
||||
verifyNever(() => progress.fail(any()));
|
||||
});
|
||||
|
||||
test('completes succesfully when a flavor is provided', () async {
|
||||
test('completes successfully when a flavor is provided', () async {
|
||||
const flavorName = 'myFlavor';
|
||||
when(
|
||||
() => codePushClient.createReleaseArtifact(
|
||||
@@ -1598,7 +1598,7 @@ You can manage this release in the ${link(uri: uri, message: 'Shorebird Console'
|
||||
verifyNever(() => progress.fail(any()));
|
||||
});
|
||||
|
||||
test('completes succesfully when a flavor is provided', () async {
|
||||
test('completes successfully when a flavor is provided', () async {
|
||||
const flavorName = 'myFlavor';
|
||||
when(
|
||||
() => codePushClient.createReleaseArtifact(
|
||||
@@ -2139,11 +2139,11 @@ You can manage this release in the ${link(uri: uri, message: 'Shorebird Console'
|
||||
verify(
|
||||
() => codePushClient.createPatchArtifact(
|
||||
appId: appId,
|
||||
artifactPath: partchArtifactBundle.path,
|
||||
artifactPath: patchArtifactBundle.path,
|
||||
patchId: patchId,
|
||||
arch: arch.arch,
|
||||
platform: releasePlatform,
|
||||
hash: partchArtifactBundle.hash,
|
||||
hash: patchArtifactBundle.hash,
|
||||
),
|
||||
).called(1);
|
||||
});
|
||||
@@ -2202,11 +2202,11 @@ You can manage this release in the ${link(uri: uri, message: 'Shorebird Console'
|
||||
verify(
|
||||
() => codePushClient.createPatchArtifact(
|
||||
appId: appId,
|
||||
artifactPath: partchArtifactBundle.path,
|
||||
artifactPath: patchArtifactBundle.path,
|
||||
patchId: patchId,
|
||||
arch: arch.arch,
|
||||
platform: releasePlatform,
|
||||
hash: partchArtifactBundle.hash,
|
||||
hash: patchArtifactBundle.hash,
|
||||
),
|
||||
).called(1);
|
||||
verify(() => codePushClient.getChannels(appId: appId)).called(1);
|
||||
@@ -2258,11 +2258,11 @@ You can manage this release in the ${link(uri: uri, message: 'Shorebird Console'
|
||||
verify(
|
||||
() => codePushClient.createPatchArtifact(
|
||||
appId: appId,
|
||||
artifactPath: partchArtifactBundle.path,
|
||||
artifactPath: patchArtifactBundle.path,
|
||||
patchId: patchId,
|
||||
arch: arch.arch,
|
||||
platform: releasePlatform,
|
||||
hash: partchArtifactBundle.hash,
|
||||
hash: patchArtifactBundle.hash,
|
||||
),
|
||||
).called(1);
|
||||
verify(() => codePushClient.getChannels(appId: appId)).called(1);
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
// cspell:words pubin dgst outform
|
||||
import 'dart:convert';
|
||||
import 'dart:io';
|
||||
|
||||
|
||||
@@ -155,7 +155,7 @@ void main() {
|
||||
test('exits with code 0 when logged in successfully', () async {
|
||||
const token = CiToken(
|
||||
// "shorebird-token" in base64
|
||||
refreshToken: 'c2hvcmViaXJkLXRva2Vu',
|
||||
refreshToken: 'c2hvcmViaXJkLXRva2Vu', // cspell:disable-line
|
||||
authProvider: AuthProvider.google,
|
||||
);
|
||||
when(
|
||||
|
||||
@@ -441,9 +441,9 @@ void main() {
|
||||
});
|
||||
|
||||
group('createPatchArtifacts', () {
|
||||
const postLinkerFlutterRevision =
|
||||
const postLinkerFlutterRevision = // cspell: disable-next-line
|
||||
'deadbeefdeadbeefdeadbeefdeadbeefdeadbeef';
|
||||
const preLinkerFlutterRevision =
|
||||
const preLinkerFlutterRevision = // cspell: disable-next-line
|
||||
'83305b5088e6fe327fb3334a73ff190828d85713';
|
||||
const appId = 'appId';
|
||||
const arch = 'aarch64';
|
||||
|
||||
@@ -774,7 +774,7 @@ For more information see: ${supportedFlutterVersionsUrl.toLink()}''',
|
||||
});
|
||||
|
||||
group('createPatchArtifacts', () {
|
||||
const postLinkerFlutterRevision =
|
||||
const postLinkerFlutterRevision = // cspell: disable-next-line
|
||||
'deadbeefdeadbeefdeadbeefdeadbeefdeadbeef';
|
||||
const preLinkerFlutterRevision =
|
||||
'83305b5088e6fe327fb3334a73ff190828d85713';
|
||||
|
||||
@@ -521,7 +521,7 @@ $exception''',
|
||||
});
|
||||
});
|
||||
|
||||
group('when flutter-verison is a git hash', () {
|
||||
group('when flutter-version is a git hash', () {
|
||||
const revision = 'deadbeef';
|
||||
setUp(() {
|
||||
when(() => argResults['flutter-version']).thenReturn(revision);
|
||||
|
||||
@@ -45,12 +45,12 @@ void main() {
|
||||
});
|
||||
});
|
||||
|
||||
group('when version string not parseable', () {
|
||||
group('when version string not parsable', () {
|
||||
setUp(() {
|
||||
device = const AppleDevice(
|
||||
deviceProperties: DeviceProperties(
|
||||
name: deviceName,
|
||||
osVersionNumber: 'unparseable version number',
|
||||
osVersionNumber: 'unparsable version number',
|
||||
),
|
||||
hardwareProperties: hardwareProperties,
|
||||
connectionProperties: connectionProperties,
|
||||
|
||||
@@ -305,7 +305,7 @@ BUILD FAILED in 3s
|
||||
});
|
||||
|
||||
group(
|
||||
'when flavors are mixed, starting with upper case, finishin with camel',
|
||||
'when flavors are mixed, starting with upper case, finishing with camel',
|
||||
() {
|
||||
test(
|
||||
'extracts flavors',
|
||||
|
||||
@@ -139,7 +139,7 @@ void main() {
|
||||
bundlePath,
|
||||
]),
|
||||
).called(1);
|
||||
verify(() => logger.err('[ios-deplay] failed: $exception')).called(1);
|
||||
verify(() => logger.err('[ios-deploy] failed: $exception')).called(1);
|
||||
});
|
||||
|
||||
test('dumps backtrace on process stopped', () async {
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
// cspell:ignore qwer
|
||||
import 'package:args/args.dart';
|
||||
import 'package:shorebird_cli/src/common_arguments.dart';
|
||||
import 'package:shorebird_cli/src/extensions/arg_results.dart';
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
// cspell:words stableplaystore stableglobal
|
||||
import 'dart:io';
|
||||
|
||||
import 'package:archive/archive_io.dart';
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
// cspell:words revis
|
||||
import 'dart:io';
|
||||
|
||||
import 'package:mason_logger/mason_logger.dart';
|
||||
@@ -911,7 +912,7 @@ origin/flutter_release/3.10.6''';
|
||||
});
|
||||
|
||||
group('formatVersion', () {
|
||||
test('returns the correct formated value', () {
|
||||
test('returns the correct formatted value', () {
|
||||
expect(
|
||||
runWithOverrides(
|
||||
() => shorebirdFlutter.formatVersion(
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
// cspell:ignore asdfasdf
|
||||
import 'dart:io';
|
||||
|
||||
import 'package:mason_logger/mason_logger.dart';
|
||||
|
||||
@@ -47,7 +47,7 @@ void main() {
|
||||
expect(results, isEmpty);
|
||||
});
|
||||
|
||||
test('retursn an error when shorebird version cannot be determined',
|
||||
test('returns an error when shorebird version cannot be determined',
|
||||
() async {
|
||||
when(shorebirdVersion.isLatest).thenThrow(
|
||||
const ProcessException('git', ['rev-parse', 'HEAD']),
|
||||
|
||||
@@ -116,7 +116,7 @@ void main() {
|
||||
expect(request.hasHeaders(expectedHeaders), isTrue);
|
||||
});
|
||||
|
||||
test('returns null if reponse is a 404', () async {
|
||||
test('returns null if response is a 404', () async {
|
||||
when(() => httpClient.send(any())).thenAnswer(
|
||||
(_) async => http.StreamedResponse(
|
||||
const Stream.empty(),
|
||||
|
||||
Reference in New Issue
Block a user