chore: add cspell checking to our CI (#2421)
This commit is contained in:
@@ -15,6 +15,12 @@ jobs:
|
|||||||
name: ✅ Semantic Pull Request
|
name: ✅ Semantic Pull Request
|
||||||
uses: VeryGoodOpenSource/very_good_workflows/.github/workflows/semantic_pull_request.yml@v1
|
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:
|
changes:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -1,5 +1,5 @@
|
|||||||
# This is the windows equivalent of the `third_party/flutter/bin/internal/shared.sh` script
|
# 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"
|
$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';
|
import 'package:test/test.dart';
|
||||||
|
|
||||||
void main() {
|
void main() {
|
||||||
const token =
|
const token = // cspell: disable-next-line
|
||||||
'''eyJhbGciOiJSUzI1NiIsImtpZCI6ImMxMGM5MGJhNGMzNjYzNTE2ZTA3MDdkMGU5YTg5NDgxMDYyODUxNTgiLCJ0eXAiOiJKV1QifQ.eyJpc3MiOiJodHRwczovL3NlY3VyZXRva2VuLmdvb2dsZS5jb20vbXktYXBwIiwiYXVkIjoibXktYXBwIiwiYXV0aF90aW1lIjoxNjQzNjg0MjY2LCJ1c2VyX2lkIjoiRzR1MzdXdk90dmVWR0pRb1pCWGpxcHVWazZWMiIsInN1YiI6Ikc0dTM3V3ZPdHZlVkdKUW9aQlhqcXB1Vms2VjIiLCJpYXQiOjE2NDM2ODQyNjYsImV4cCI6MTY0MzY4Nzg2NiwiZW1haWwiOiJ0ZXN0QGdtYWlsLmNvbSIsImVtYWlsX3ZlcmlmaWVkIjp0cnVlLCJmaXJlYmFzZSI6eyJpZGVudGl0aWVzIjp7ImVtYWlsIjpbInRlc3RAZ21haWwuY29tIl19LCJzaWduX2luX3Byb3ZpZGVyIjoicGFzc3dvcmQifX0.bUWnX_XmR1d9EmeFeYSsK_CHU1u9NPIHgyaQueZ6urYOtxvuL_QodjPl0c9CBJwctwPnxVyRmkeNCw0oF9xBgph0NApLL4FIG6vpDPZfW9txZBYr8xIvaqvmD0diACENAQdjRT2XmyEdQ2-U7SsTonybHmLoU9FMQTjAgw4NCALQvExfB6rtQ9GDsOBt1xoBkB3Vo7a5OmugZ1aHXF69b8As6137-Dggf5qx5R3oLRFovICMMesQziE3vGi-WKcbQxSeiD-9a6ShPAhk41XiyjFGDEOtUCQo63uwQnMw3g0KVtC6bzIyFq-E91vhxumxXzxPYC-kg7iUYiSZy7Y-Aw''';
|
'''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''';
|
'''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''';
|
'''eyJhbGciOiJSUzI1NiIsImtpZCI6IjEyMzQiLCJ0eXAiOiJKV1QifQ.eyJpc3MiOiJodHRwczovL3NlY3VyZXRva2VuLmdvb2dsZS5jb20vbXktYXBwIiwiYXVkIjoibXktYXBwIiwidXNlcl9pZCI6Ikc0dTM3V3ZPdHZlVkdKUW9aQlhqcXB1Vms2VjIiLCJzdWIiOiJHNHUzN1d2T3R2ZVZHSlFvWkJYanFwdVZrNlYyIiwiaWF0IjoxNjQzNjg0MjY2LCJleHAiOjE2NDM2ODc4NjYsImVtYWlsIjoidGVzdEBnbWFpbC5jb20iLCJlbWFpbF92ZXJpZmllZCI6dHJ1ZSwiZmlyZWJhc2UiOnsiaWRlbnRpdGllcyI6eyJlbWFpbCI6WyJ0ZXN0QGdtYWlsLmNvbSJdfSwic2lnbl9pbl9wcm92aWRlciI6InBhc3N3b3JkIn19.RBAwg-Ttf36aDkVR97Rd50aMp-0yzk8do_4AUPFi9nEhKu0Ye8ox_9hdTBttJYxoOq0NbH2zz0JHSnSHqoTvCleVhoGqg8YghzH0NiqncPfDzi-IcRfy2K8CrOoXuqXaj3YWrbrzNWAYV46eFmvI2TmPO55AyFOjhvLpW-uf96ceOPjueZm8o5K2DZym86BAhSdShknONV2O7b2vW34TXf3UJdISs5p9z6Si4JOWGjbVPY45CO16ODdDxyUGUM2-IVQloB7bg0nMqQbIjKDoO5g9d1nguR2Z-YBiv0BX1MDWDlrBsMAzzRVaFlf6YQS1LKxu2tnMdCrBnK_Wvqt5sQ''';
|
||||||
const keyValuePublicKeysUrl =
|
const keyValuePublicKeysUrl =
|
||||||
'https://www.googleapis.com/robot/v1/metadata/x509/securetoken@system.gserviceaccount.com';
|
'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', () {
|
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''';
|
'''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 audience = 'c4af9566-8a36-4348-b413-dab665b8717d';
|
||||||
const issuer =
|
const issuer =
|
||||||
'''https://login.microsoftonline.com/9188040d-6c67-4c5b-b112-36a304b66dad/v2.0''';
|
'''https://login.microsoftonline.com/9188040d-6c67-4c5b-b112-36a304b66dad/v2.0''';
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
<!-- cspell: ignore requirepass -->
|
||||||
# Contributing
|
# Contributing
|
||||||
|
|
||||||
We are happy to accept contributions!
|
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.get(key: key), completion(isNull));
|
||||||
await expectLater(client.json.set(key: key, value: value), completes);
|
await expectLater(client.json.set(key: key, value: value), completes);
|
||||||
await expectLater(
|
await expectLater(
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
// cspell:words Filesx
|
||||||
import 'dart:io';
|
import 'dart:io';
|
||||||
|
|
||||||
import 'package:collection/collection.dart';
|
import 'package:collection/collection.dart';
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
// cspell:words microsoftonline
|
||||||
import 'package:googleapis_auth/googleapis_auth.dart';
|
import 'package:googleapis_auth/googleapis_auth.dart';
|
||||||
|
|
||||||
/// Endpoints for OAuth authentication with Azure/Entra/Microsoft.
|
/// Endpoints for OAuth authentication with Azure/Entra/Microsoft.
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
// cspell:words dgst
|
||||||
import 'dart:convert';
|
import 'dart:convert';
|
||||||
import 'dart:io';
|
import 'dart:io';
|
||||||
import 'dart:typed_data';
|
import 'dart:typed_data';
|
||||||
|
|||||||
@@ -175,7 +175,7 @@ class AarPatcher extends Patcher {
|
|||||||
|
|
||||||
@override
|
@override
|
||||||
Future<String> extractReleaseVersionFromArtifact(File artifact) {
|
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(
|
throw UnimplementedError(
|
||||||
'Release version must be specified using --release-version.',
|
'Release version must be specified using --release-version.',
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -221,7 +221,7 @@ class IosFrameworkPatcher extends Patcher {
|
|||||||
|
|
||||||
@override
|
@override
|
||||||
Future<String> extractReleaseVersionFromArtifact(File artifact) {
|
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(
|
throw UnimplementedError(
|
||||||
'Release version must be specified using --release-version.',
|
'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
|
/// - Warn the user about the platform if that platform is not the one
|
||||||
/// the user specified with `--platform`.
|
/// the user specified with `--platform`.
|
||||||
/// - Error out if the user specified a platform that is not previewable.
|
/// - Error out if the user specified a platform that is not previewable.
|
||||||
void _assertPreviwableReleases({
|
void _assertPreviewableReleases({
|
||||||
required Release releaseWithAllPlatforms,
|
required Release releaseWithAllPlatforms,
|
||||||
required Release release,
|
required Release release,
|
||||||
}) {
|
}) {
|
||||||
@@ -203,7 +203,7 @@ class PreviewCommand extends ShorebirdCommand {
|
|||||||
final releaseWithAllPlatforms = releasesWithAllPlatforms.firstWhere(
|
final releaseWithAllPlatforms = releasesWithAllPlatforms.firstWhere(
|
||||||
(r) => r.id == release.id,
|
(r) => r.id == release.id,
|
||||||
);
|
);
|
||||||
_assertPreviwableReleases(
|
_assertPreviewableReleases(
|
||||||
releaseWithAllPlatforms: releaseWithAllPlatforms,
|
releaseWithAllPlatforms: releaseWithAllPlatforms,
|
||||||
release: release,
|
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({
|
void printPatchInstructions({
|
||||||
required Releaser releaser,
|
required Releaser releaser,
|
||||||
required String releaseVersion,
|
required String releaseVersion,
|
||||||
|
|||||||
@@ -300,7 +300,7 @@ Or run on an iOS simulator without code signing
|
|||||||
} catch (exception, stackTrace) {
|
} catch (exception, stackTrace) {
|
||||||
logger.detail('[ios-deploy] failed: $exception\n$stackTrace');
|
logger.detail('[ios-deploy] failed: $exception\n$stackTrace');
|
||||||
debuggerState = _DebuggerState.detached;
|
debuggerState = _DebuggerState.detached;
|
||||||
logger.err('[ios-deplay] failed: $exception');
|
logger.err('[ios-deploy] failed: $exception');
|
||||||
return ExitCode.software.code;
|
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.
|
// Always returns the original line.
|
||||||
@visibleForTesting
|
@visibleForTesting
|
||||||
String detectFailures(String line, Logger logger) {
|
String detectFailures(String line, Logger logger) {
|
||||||
|
|||||||
@@ -22,9 +22,9 @@ extension OptionFinder on ArgResults {
|
|||||||
return this[name] as String?;
|
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
|
// 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
|
final abbr = argParser.options.values
|
||||||
.firstWhereOrNull((option) => option.name == name)
|
.firstWhereOrNull((option) => option.name == name)
|
||||||
?.abbr;
|
?.abbr;
|
||||||
@@ -105,7 +105,7 @@ extension ForwardedArgs on ArgResults {
|
|||||||
bool _isPositionalArgPlatform(String arg) =>
|
bool _isPositionalArgPlatform(String arg) =>
|
||||||
ReleaseType.values.any((target) => target.cliName == 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
|
/// be multiple values for a single name, so we return a potentially empty
|
||||||
/// [Iterable<String>] instead of a [String?].
|
/// [Iterable<String>] instead of a [String?].
|
||||||
Iterable<String> _argsNamed(String name) {
|
Iterable<String> _argsNamed(String name) {
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
// ignore_for_file: public_member_api_docs
|
// ignore_for_file: public_member_api_docs
|
||||||
|
|
||||||
extension NullOrEmtpy on String? {
|
extension NullOrEmpty on String? {
|
||||||
/// Returns `true` if this string is null or empty.
|
/// Returns `true` if this string is null or empty.
|
||||||
bool get isNullOrEmpty => this == null || this!.isEmpty;
|
bool get isNullOrEmpty => this == null || this!.isEmpty;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -82,7 +82,7 @@ class PatchDiffChecker {
|
|||||||
..info(
|
..info(
|
||||||
yellow.wrap('''
|
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) {
|
if (!allowNativeChanges) {
|
||||||
|
|||||||
@@ -166,7 +166,7 @@ class Ios {
|
|||||||
.toSet();
|
.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.
|
/// extension. We don't want to include these schemes as app flavors.
|
||||||
///
|
///
|
||||||
/// xcschemes are XML files that contain metadata about the scheme, including
|
/// 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.
|
/// Link to the troubleshooting page on the Shorebird documentation.
|
||||||
const troubleshootingUrl = '$docsUrl/troubleshooting';
|
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
|
/// Unsupported class file major version
|
||||||
const unsupportedClassFileVersionUrl =
|
const unsupportedClassFileVersionUrl =
|
||||||
'$troubleshootingUrl#unsupported-class-file-major-version-65';
|
'$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:shorebird_cli/src/archive_analysis/archive_analysis.dart';
|
||||||
import 'package:test/test.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(
|
await expectLater(
|
||||||
() => runWithOverrides(
|
() => runWithOverrides(
|
||||||
() async => artifactManager.createDiff(
|
() async => artifactManager.createDiff(
|
||||||
|
|||||||
@@ -119,7 +119,7 @@ void main() {
|
|||||||
});
|
});
|
||||||
|
|
||||||
group(Auth, () {
|
group(Auth, () {
|
||||||
const idToken =
|
const idToken = // cspell:disable-next-line
|
||||||
'''eyJhbGciOiJIUzI1NiIsImtpZCI6IjEyMzQiLCJ0eXAiOiJKV1QifQ.eyJpc3MiOiJodHRwczovL2FjY291bnRzLmdvb2dsZS5jb20iLCJhenAiOiI1MjMzMDIyMzMyOTMtZWlhNWFudG0wdGd2ZWsyNDB0NDZvcmN0a3RpYWJyZWsuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20iLCJhdWQiOiI1MjMzMDIyMzMyOTMtZWlhNWFudG0wdGd2ZWsyNDB0NDZvcmN0a3RpYWJyZWsuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20iLCJzdWIiOiIxMjM0NSIsImhkIjoic2hvcmViaXJkLmRldiIsImVtYWlsIjoidGVzdEBlbWFpbC5jb20iLCJlbWFpbF92ZXJpZmllZCI6dHJ1ZSwiaWF0IjoxMjM0LCJleHAiOjY3ODl9.MYbITALvKsGYTYjw1o7AQ0ObkqRWVBSr9cFYJrvA46g''';
|
'''eyJhbGciOiJIUzI1NiIsImtpZCI6IjEyMzQiLCJ0eXAiOiJKV1QifQ.eyJpc3MiOiJodHRwczovL2FjY291bnRzLmdvb2dsZS5jb20iLCJhenAiOiI1MjMzMDIyMzMyOTMtZWlhNWFudG0wdGd2ZWsyNDB0NDZvcmN0a3RpYWJyZWsuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20iLCJhdWQiOiI1MjMzMDIyMzMyOTMtZWlhNWFudG0wdGd2ZWsyNDB0NDZvcmN0a3RpYWJyZWsuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20iLCJzdWIiOiIxMjM0NSIsImhkIjoic2hvcmViaXJkLmRldiIsImVtYWlsIjoidGVzdEBlbWFpbC5jb20iLCJlbWFpbF92ZXJpZmllZCI6dHJ1ZSwiaWF0IjoxMjM0LCJleHAiOjY3ODl9.MYbITALvKsGYTYjw1o7AQ0ObkqRWVBSr9cFYJrvA46g''';
|
||||||
const refreshToken = 'shorebird-token';
|
const refreshToken = 'shorebird-token';
|
||||||
const ciToken = CiToken(
|
const ciToken = CiToken(
|
||||||
@@ -362,7 +362,7 @@ void main() {
|
|||||||
),
|
),
|
||||||
);
|
);
|
||||||
|
|
||||||
const expiredIdToken =
|
const expiredIdToken = // cspell:disable-next-line
|
||||||
'''eyJhbGciOiJIUzI1NiIsImtpZCI6IjEyMzQiLCJ0eXAiOiJKV1QifQ.eyJpc3MiOiJodHRwczovL2FjY291bnRzLmdvb2dsZS5jb20iLCJhenAiOiI1MjMzMDIyMzMyOTMtZWlhNWFudG0wdGd2ZWsyNDB0NDZvcmN0a3RpYWJyZWsuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20iLCJhdWQiOiI1MjMzMDIyMzMyOTMtZWlhNWFudG0wdGd2ZWsyNDB0NDZvcmN0a3RpYWJyZWsuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20iLCJzdWIiOiIxMjM0NSIsImhkIjoic2hvcmViaXJkLmRldiIsImVtYWlsIjoidGVzdEBlbWFpbC5jb20iLCJlbWFpbF92ZXJpZmllZCI6dHJ1ZSwiaWF0IjoxMjM0LCJleHAiOjY3ODl9.MYbITALvKsGYTYjw1o7AQ0ObkqRWVBSr9cFYJrvA46g''';
|
'''eyJhbGciOiJIUzI1NiIsImtpZCI6IjEyMzQiLCJ0eXAiOiJKV1QifQ.eyJpc3MiOiJodHRwczovL2FjY291bnRzLmdvb2dsZS5jb20iLCJhenAiOiI1MjMzMDIyMzMyOTMtZWlhNWFudG0wdGd2ZWsyNDB0NDZvcmN0a3RpYWJyZWsuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20iLCJhdWQiOiI1MjMzMDIyMzMyOTMtZWlhNWFudG0wdGd2ZWsyNDB0NDZvcmN0a3RpYWJyZWsuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20iLCJzdWIiOiIxMjM0NSIsImhkIjoic2hvcmViaXJkLmRldiIsImVtYWlsIjoidGVzdEBlbWFpbC5jb20iLCJlbWFpbF92ZXJpZmllZCI6dHJ1ZSwiaWF0IjoxMjM0LCJleHAiOjY3ODl9.MYbITALvKsGYTYjw1o7AQ0ObkqRWVBSr9cFYJrvA46g''';
|
||||||
final onRefreshCredentialsCalls = <oauth2.AccessCredentials>[];
|
final onRefreshCredentialsCalls = <oauth2.AccessCredentials>[];
|
||||||
final expiredCredentials = oauth2.AccessCredentials(
|
final expiredCredentials = oauth2.AccessCredentials(
|
||||||
@@ -416,7 +416,7 @@ void main() {
|
|||||||
),
|
),
|
||||||
);
|
);
|
||||||
|
|
||||||
const expiredIdToken =
|
const expiredIdToken = // cspell:disable-next-line
|
||||||
'''eyJhbGciOiJIUzI1NiIsImtpZCI6IjEyMzQiLCJ0eXAiOiJKV1QifQ.eyJpc3MiOiJodHRwczovL2FjY291bnRzLmdvb2dsZS5jb20iLCJhenAiOiI1MjMzMDIyMzMyOTMtZWlhNWFudG0wdGd2ZWsyNDB0NDZvcmN0a3RpYWJyZWsuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20iLCJhdWQiOiI1MjMzMDIyMzMyOTMtZWlhNWFudG0wdGd2ZWsyNDB0NDZvcmN0a3RpYWJyZWsuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20iLCJzdWIiOiIxMjM0NSIsImhkIjoic2hvcmViaXJkLmRldiIsImVtYWlsIjoidGVzdEBlbWFpbC5jb20iLCJlbWFpbF92ZXJpZmllZCI6dHJ1ZSwiaWF0IjoxMjM0LCJleHAiOjY3ODl9.MYbITALvKsGYTYjw1o7AQ0ObkqRWVBSr9cFYJrvA46g''';
|
'''eyJhbGciOiJIUzI1NiIsImtpZCI6IjEyMzQiLCJ0eXAiOiJKV1QifQ.eyJpc3MiOiJodHRwczovL2FjY291bnRzLmdvb2dsZS5jb20iLCJhenAiOiI1MjMzMDIyMzMyOTMtZWlhNWFudG0wdGd2ZWsyNDB0NDZvcmN0a3RpYWJyZWsuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20iLCJhdWQiOiI1MjMzMDIyMzMyOTMtZWlhNWFudG0wdGd2ZWsyNDB0NDZvcmN0a3RpYWJyZWsuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20iLCJzdWIiOiIxMjM0NSIsImhkIjoic2hvcmViaXJkLmRldiIsImVtYWlsIjoidGVzdEBlbWFpbC5jb20iLCJlbWFpbF92ZXJpZmllZCI6dHJ1ZSwiaWF0IjoxMjM0LCJleHAiOjY3ODl9.MYbITALvKsGYTYjw1o7AQ0ObkqRWVBSr9cFYJrvA46g''';
|
||||||
final onRefreshCredentialsCalls = <oauth2.AccessCredentials>[];
|
final onRefreshCredentialsCalls = <oauth2.AccessCredentials>[];
|
||||||
final expiredCredentials = oauth2.AccessCredentials(
|
final expiredCredentials = oauth2.AccessCredentials(
|
||||||
|
|||||||
@@ -137,13 +137,13 @@ void main() {
|
|||||||
createdAt: DateTime(2023),
|
createdAt: DateTime(2023),
|
||||||
updatedAt: DateTime(2023),
|
updatedAt: DateTime(2023),
|
||||||
);
|
);
|
||||||
final partchArtifactBundle = PatchArtifactBundle(
|
final patchArtifactBundle = PatchArtifactBundle(
|
||||||
arch: arch.arch,
|
arch: arch.arch,
|
||||||
path: 'path',
|
path: 'path',
|
||||||
hash: '',
|
hash: '',
|
||||||
size: 4,
|
size: 4,
|
||||||
);
|
);
|
||||||
final patchArtifactBundles = {arch: partchArtifactBundle};
|
final patchArtifactBundles = {arch: patchArtifactBundle};
|
||||||
const archs = [Arch.arm64];
|
const archs = [Arch.arm64];
|
||||||
const releaseArtifact = ReleaseArtifact(
|
const releaseArtifact = ReleaseArtifact(
|
||||||
id: 1,
|
id: 1,
|
||||||
@@ -1332,7 +1332,7 @@ You can manage this release in the ${link(uri: uri, message: 'Shorebird Console'
|
|||||||
verifyNever(() => progress.fail(any()));
|
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';
|
const flavorName = 'myFlavor';
|
||||||
when(
|
when(
|
||||||
() => codePushClient.createReleaseArtifact(
|
() => codePushClient.createReleaseArtifact(
|
||||||
@@ -1598,7 +1598,7 @@ You can manage this release in the ${link(uri: uri, message: 'Shorebird Console'
|
|||||||
verifyNever(() => progress.fail(any()));
|
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';
|
const flavorName = 'myFlavor';
|
||||||
when(
|
when(
|
||||||
() => codePushClient.createReleaseArtifact(
|
() => codePushClient.createReleaseArtifact(
|
||||||
@@ -2139,11 +2139,11 @@ You can manage this release in the ${link(uri: uri, message: 'Shorebird Console'
|
|||||||
verify(
|
verify(
|
||||||
() => codePushClient.createPatchArtifact(
|
() => codePushClient.createPatchArtifact(
|
||||||
appId: appId,
|
appId: appId,
|
||||||
artifactPath: partchArtifactBundle.path,
|
artifactPath: patchArtifactBundle.path,
|
||||||
patchId: patchId,
|
patchId: patchId,
|
||||||
arch: arch.arch,
|
arch: arch.arch,
|
||||||
platform: releasePlatform,
|
platform: releasePlatform,
|
||||||
hash: partchArtifactBundle.hash,
|
hash: patchArtifactBundle.hash,
|
||||||
),
|
),
|
||||||
).called(1);
|
).called(1);
|
||||||
});
|
});
|
||||||
@@ -2202,11 +2202,11 @@ You can manage this release in the ${link(uri: uri, message: 'Shorebird Console'
|
|||||||
verify(
|
verify(
|
||||||
() => codePushClient.createPatchArtifact(
|
() => codePushClient.createPatchArtifact(
|
||||||
appId: appId,
|
appId: appId,
|
||||||
artifactPath: partchArtifactBundle.path,
|
artifactPath: patchArtifactBundle.path,
|
||||||
patchId: patchId,
|
patchId: patchId,
|
||||||
arch: arch.arch,
|
arch: arch.arch,
|
||||||
platform: releasePlatform,
|
platform: releasePlatform,
|
||||||
hash: partchArtifactBundle.hash,
|
hash: patchArtifactBundle.hash,
|
||||||
),
|
),
|
||||||
).called(1);
|
).called(1);
|
||||||
verify(() => codePushClient.getChannels(appId: appId)).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(
|
verify(
|
||||||
() => codePushClient.createPatchArtifact(
|
() => codePushClient.createPatchArtifact(
|
||||||
appId: appId,
|
appId: appId,
|
||||||
artifactPath: partchArtifactBundle.path,
|
artifactPath: patchArtifactBundle.path,
|
||||||
patchId: patchId,
|
patchId: patchId,
|
||||||
arch: arch.arch,
|
arch: arch.arch,
|
||||||
platform: releasePlatform,
|
platform: releasePlatform,
|
||||||
hash: partchArtifactBundle.hash,
|
hash: patchArtifactBundle.hash,
|
||||||
),
|
),
|
||||||
).called(1);
|
).called(1);
|
||||||
verify(() => codePushClient.getChannels(appId: appId)).called(1);
|
verify(() => codePushClient.getChannels(appId: appId)).called(1);
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
// cspell:words pubin dgst outform
|
||||||
import 'dart:convert';
|
import 'dart:convert';
|
||||||
import 'dart:io';
|
import 'dart:io';
|
||||||
|
|
||||||
|
|||||||
@@ -155,7 +155,7 @@ void main() {
|
|||||||
test('exits with code 0 when logged in successfully', () async {
|
test('exits with code 0 when logged in successfully', () async {
|
||||||
const token = CiToken(
|
const token = CiToken(
|
||||||
// "shorebird-token" in base64
|
// "shorebird-token" in base64
|
||||||
refreshToken: 'c2hvcmViaXJkLXRva2Vu',
|
refreshToken: 'c2hvcmViaXJkLXRva2Vu', // cspell:disable-line
|
||||||
authProvider: AuthProvider.google,
|
authProvider: AuthProvider.google,
|
||||||
);
|
);
|
||||||
when(
|
when(
|
||||||
|
|||||||
@@ -441,9 +441,9 @@ void main() {
|
|||||||
});
|
});
|
||||||
|
|
||||||
group('createPatchArtifacts', () {
|
group('createPatchArtifacts', () {
|
||||||
const postLinkerFlutterRevision =
|
const postLinkerFlutterRevision = // cspell: disable-next-line
|
||||||
'deadbeefdeadbeefdeadbeefdeadbeefdeadbeef';
|
'deadbeefdeadbeefdeadbeefdeadbeefdeadbeef';
|
||||||
const preLinkerFlutterRevision =
|
const preLinkerFlutterRevision = // cspell: disable-next-line
|
||||||
'83305b5088e6fe327fb3334a73ff190828d85713';
|
'83305b5088e6fe327fb3334a73ff190828d85713';
|
||||||
const appId = 'appId';
|
const appId = 'appId';
|
||||||
const arch = 'aarch64';
|
const arch = 'aarch64';
|
||||||
|
|||||||
@@ -774,7 +774,7 @@ For more information see: ${supportedFlutterVersionsUrl.toLink()}''',
|
|||||||
});
|
});
|
||||||
|
|
||||||
group('createPatchArtifacts', () {
|
group('createPatchArtifacts', () {
|
||||||
const postLinkerFlutterRevision =
|
const postLinkerFlutterRevision = // cspell: disable-next-line
|
||||||
'deadbeefdeadbeefdeadbeefdeadbeefdeadbeef';
|
'deadbeefdeadbeefdeadbeefdeadbeefdeadbeef';
|
||||||
const preLinkerFlutterRevision =
|
const preLinkerFlutterRevision =
|
||||||
'83305b5088e6fe327fb3334a73ff190828d85713';
|
'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';
|
const revision = 'deadbeef';
|
||||||
setUp(() {
|
setUp(() {
|
||||||
when(() => argResults['flutter-version']).thenReturn(revision);
|
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(() {
|
setUp(() {
|
||||||
device = const AppleDevice(
|
device = const AppleDevice(
|
||||||
deviceProperties: DeviceProperties(
|
deviceProperties: DeviceProperties(
|
||||||
name: deviceName,
|
name: deviceName,
|
||||||
osVersionNumber: 'unparseable version number',
|
osVersionNumber: 'unparsable version number',
|
||||||
),
|
),
|
||||||
hardwareProperties: hardwareProperties,
|
hardwareProperties: hardwareProperties,
|
||||||
connectionProperties: connectionProperties,
|
connectionProperties: connectionProperties,
|
||||||
|
|||||||
@@ -305,7 +305,7 @@ BUILD FAILED in 3s
|
|||||||
});
|
});
|
||||||
|
|
||||||
group(
|
group(
|
||||||
'when flavors are mixed, starting with upper case, finishin with camel',
|
'when flavors are mixed, starting with upper case, finishing with camel',
|
||||||
() {
|
() {
|
||||||
test(
|
test(
|
||||||
'extracts flavors',
|
'extracts flavors',
|
||||||
|
|||||||
@@ -139,7 +139,7 @@ void main() {
|
|||||||
bundlePath,
|
bundlePath,
|
||||||
]),
|
]),
|
||||||
).called(1);
|
).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 {
|
test('dumps backtrace on process stopped', () async {
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
// cspell:ignore qwer
|
||||||
import 'package:args/args.dart';
|
import 'package:args/args.dart';
|
||||||
import 'package:shorebird_cli/src/common_arguments.dart';
|
import 'package:shorebird_cli/src/common_arguments.dart';
|
||||||
import 'package:shorebird_cli/src/extensions/arg_results.dart';
|
import 'package:shorebird_cli/src/extensions/arg_results.dart';
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
// cspell:words stableplaystore stableglobal
|
||||||
import 'dart:io';
|
import 'dart:io';
|
||||||
|
|
||||||
import 'package:archive/archive_io.dart';
|
import 'package:archive/archive_io.dart';
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
// cspell:words revis
|
||||||
import 'dart:io';
|
import 'dart:io';
|
||||||
|
|
||||||
import 'package:mason_logger/mason_logger.dart';
|
import 'package:mason_logger/mason_logger.dart';
|
||||||
@@ -911,7 +912,7 @@ origin/flutter_release/3.10.6''';
|
|||||||
});
|
});
|
||||||
|
|
||||||
group('formatVersion', () {
|
group('formatVersion', () {
|
||||||
test('returns the correct formated value', () {
|
test('returns the correct formatted value', () {
|
||||||
expect(
|
expect(
|
||||||
runWithOverrides(
|
runWithOverrides(
|
||||||
() => shorebirdFlutter.formatVersion(
|
() => shorebirdFlutter.formatVersion(
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
// cspell:ignore asdfasdf
|
||||||
import 'dart:io';
|
import 'dart:io';
|
||||||
|
|
||||||
import 'package:mason_logger/mason_logger.dart';
|
import 'package:mason_logger/mason_logger.dart';
|
||||||
|
|||||||
@@ -47,7 +47,7 @@ void main() {
|
|||||||
expect(results, isEmpty);
|
expect(results, isEmpty);
|
||||||
});
|
});
|
||||||
|
|
||||||
test('retursn an error when shorebird version cannot be determined',
|
test('returns an error when shorebird version cannot be determined',
|
||||||
() async {
|
() async {
|
||||||
when(shorebirdVersion.isLatest).thenThrow(
|
when(shorebirdVersion.isLatest).thenThrow(
|
||||||
const ProcessException('git', ['rev-parse', 'HEAD']),
|
const ProcessException('git', ['rev-parse', 'HEAD']),
|
||||||
|
|||||||
@@ -116,7 +116,7 @@ void main() {
|
|||||||
expect(request.hasHeaders(expectedHeaders), isTrue);
|
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(
|
when(() => httpClient.send(any())).thenAnswer(
|
||||||
(_) async => http.StreamedResponse(
|
(_) async => http.StreamedResponse(
|
||||||
const Stream.empty(),
|
const Stream.empty(),
|
||||||
|
|||||||
Reference in New Issue
Block a user