diff --git a/release_notes.md b/release_notes.md index d2832ae85e..5ccd575312 100644 --- a/release_notes.md +++ b/release_notes.md @@ -9,6 +9,9 @@ - [#906](https://github.com/Flank/flank/pull/906) Added option to print network profiles. ([adamfilipow92](https://github.com/adamfilipow92)) - [#908](https://github.com/Flank/flank/pull/908) Added option to print iOS available locales to test against. ([piotradamczyk5](https://github.com/piotradamczyk5)) - [#906](https://github.com/Flank/flank/pull/909) Added option to print iOS and Android screen orientations. ([adamfilipow92](https://github.com/adamfilipow92)) +- [#907](https://github.com/Flank/flank/pull/907) Added option to print Android available locales to test against. ([piotradamczyk5](https://github.com/piotradamczyk5)) +- +- - ## v20.07.0 diff --git a/test_runner/docs/ascii/flank.jar_-android-locales-list.adoc b/test_runner/docs/ascii/flank.jar_-android-locales-list.adoc new file mode 100644 index 0000000000..81930745c0 --- /dev/null +++ b/test_runner/docs/ascii/flank.jar_-android-locales-list.adoc @@ -0,0 +1,37 @@ +// tag::picocli-generated-full-manpage[] + +// tag::picocli-generated-man-section-name[] +== Name + +flank.jar +-android-locales-list - Print current list of locales available to test against + +// end::picocli-generated-man-section-name[] + +// tag::picocli-generated-man-section-synopsis[] +== Synopsis + +*flank.jar + android locales list* [*-h*] [*-c*=__] + +// end::picocli-generated-man-section-synopsis[] + +// tag::picocli-generated-man-section-description[] +== Description + +Print current list of Android locales available to test against + +// end::picocli-generated-man-section-description[] + +// tag::picocli-generated-man-section-options[] +== Options + +*-c*, *--config*=__:: + YAML config file path + +*-h*, *--help*:: + Prints this help message + +// end::picocli-generated-man-section-options[] + +// end::picocli-generated-full-manpage[] \ No newline at end of file diff --git a/test_runner/docs/ascii/flank.jar_-android-locales.adoc b/test_runner/docs/ascii/flank.jar_-android-locales.adoc new file mode 100644 index 0000000000..e66017b468 --- /dev/null +++ b/test_runner/docs/ascii/flank.jar_-android-locales.adoc @@ -0,0 +1,34 @@ +// tag::picocli-generated-full-manpage[] + +// tag::picocli-generated-man-section-name[] +== Name + +flank.jar +-android-locales - Information about available locales on device + +// end::picocli-generated-man-section-name[] + +// tag::picocli-generated-man-section-synopsis[] +== Synopsis + +*flank.jar + android locales* [COMMAND] + +// end::picocli-generated-man-section-synopsis[] + +// tag::picocli-generated-man-section-description[] +== Description + +Information about available locales on device. For example prints list of available locales to test against + +// end::picocli-generated-man-section-description[] + +// tag::picocli-generated-man-section-commands[] +== Commands + +*list*:: + Print current list of locales available to test against + +// end::picocli-generated-man-section-commands[] + +// end::picocli-generated-full-manpage[] \ No newline at end of file diff --git a/test_runner/docs/ascii/flank.jar_-android-screen-orientations-list.adoc b/test_runner/docs/ascii/flank.jar_-android-screen-orientations-list.adoc new file mode 100644 index 0000000000..5354911e15 --- /dev/null +++ b/test_runner/docs/ascii/flank.jar_-android-screen-orientations-list.adoc @@ -0,0 +1,37 @@ +// tag::picocli-generated-full-manpage[] + +// tag::picocli-generated-man-section-name[] +== Name + +flank.jar +-android-screen-orientations-list - List of device orientations available to test against + +// end::picocli-generated-man-section-name[] + +// tag::picocli-generated-man-section-synopsis[] +== Synopsis + +*flank.jar + android screen-orientations list* [*-h*] [*-c*=__] + +// end::picocli-generated-man-section-synopsis[] + +// tag::picocli-generated-man-section-description[] +== Description + +Print current list of Android orientations available to test against + +// end::picocli-generated-man-section-description[] + +// tag::picocli-generated-man-section-options[] +== Options + +*-c*, *--config*=__:: + YAML config file path + +*-h*, *--help*:: + Prints this help message + +// end::picocli-generated-man-section-options[] + +// end::picocli-generated-full-manpage[] \ No newline at end of file diff --git a/test_runner/docs/ascii/flank.jar_-android-screen-orientations.adoc b/test_runner/docs/ascii/flank.jar_-android-screen-orientations.adoc new file mode 100644 index 0000000000..fa13fb7693 --- /dev/null +++ b/test_runner/docs/ascii/flank.jar_-android-screen-orientations.adoc @@ -0,0 +1,34 @@ +// tag::picocli-generated-full-manpage[] + +// tag::picocli-generated-man-section-name[] +== Name + +flank.jar +-android-screen-orientations - Information about available orientations + +// end::picocli-generated-man-section-name[] + +// tag::picocli-generated-man-section-synopsis[] +== Synopsis + +*flank.jar + android screen-orientations* [COMMAND] + +// end::picocli-generated-man-section-synopsis[] + +// tag::picocli-generated-man-section-description[] +== Description + +Prints list of available orientations + +// end::picocli-generated-man-section-description[] + +// tag::picocli-generated-man-section-commands[] +== Commands + +*list*:: + List of device orientations available to test against + +// end::picocli-generated-man-section-commands[] + +// end::picocli-generated-full-manpage[] \ No newline at end of file diff --git a/test_runner/docs/ascii/flank.jar_-android-test-environment.adoc b/test_runner/docs/ascii/flank.jar_-android-test-environment.adoc index 4c5553896f..a643b038e2 100644 --- a/test_runner/docs/ascii/flank.jar_-android-test-environment.adoc +++ b/test_runner/docs/ascii/flank.jar_-android-test-environment.adoc @@ -4,7 +4,7 @@ == Name flank.jar --android-test-environment - Print available devices, OS versions, provided software list and network configuration to test against +-android-test-environment - Print available devices, OS versions, locales, provided software list and network configuration to test against // end::picocli-generated-man-section-name[] @@ -19,7 +19,7 @@ flank.jar // tag::picocli-generated-man-section-description[] == Description -Print available Android devices, Android OS versions list, provided software and network configuration to test against +Print available Android devices, Android OS versions list, locales, provided software and network configuration to test against // end::picocli-generated-man-section-description[] diff --git a/test_runner/docs/ascii/flank.jar_-android.adoc b/test_runner/docs/ascii/flank.jar_-android.adoc index bb3b9fe3bf..373f5f450a 100644 --- a/test_runner/docs/ascii/flank.jar_-android.adoc +++ b/test_runner/docs/ascii/flank.jar_-android.adoc @@ -38,12 +38,15 @@ flank.jar *versions*:: Information about available software versions -*test-environment*:: - Print available devices, OS versions, provided software list and network configuration to test against - -*orientations*:: +*screen-orientations*:: Information about available orientations +*locales*:: + Information about available locales on device + +*test-environment*:: + Print available devices, OS versions, locales, provided software list and network configuration to test against + // end::picocli-generated-man-section-commands[] // end::picocli-generated-full-manpage[] \ No newline at end of file diff --git a/test_runner/docs/ascii/flank.jar_-firebase-test-android-locales-list.adoc b/test_runner/docs/ascii/flank.jar_-firebase-test-android-locales-list.adoc new file mode 100644 index 0000000000..f54ae95904 --- /dev/null +++ b/test_runner/docs/ascii/flank.jar_-firebase-test-android-locales-list.adoc @@ -0,0 +1,37 @@ +// tag::picocli-generated-full-manpage[] + +// tag::picocli-generated-man-section-name[] +== Name + +flank.jar +-firebase-test-android-locales-list - Print current list of locales available to test against + +// end::picocli-generated-man-section-name[] + +// tag::picocli-generated-man-section-synopsis[] +== Synopsis + +*flank.jar + firebase test android locales list* [*-h*] [*-c*=__] + +// end::picocli-generated-man-section-synopsis[] + +// tag::picocli-generated-man-section-description[] +== Description + +Print current list of Android locales available to test against + +// end::picocli-generated-man-section-description[] + +// tag::picocli-generated-man-section-options[] +== Options + +*-c*, *--config*=__:: + YAML config file path + +*-h*, *--help*:: + Prints this help message + +// end::picocli-generated-man-section-options[] + +// end::picocli-generated-full-manpage[] \ No newline at end of file diff --git a/test_runner/docs/ascii/flank.jar_-firebase-test-android-locales.adoc b/test_runner/docs/ascii/flank.jar_-firebase-test-android-locales.adoc new file mode 100644 index 0000000000..01ec99d93c --- /dev/null +++ b/test_runner/docs/ascii/flank.jar_-firebase-test-android-locales.adoc @@ -0,0 +1,34 @@ +// tag::picocli-generated-full-manpage[] + +// tag::picocli-generated-man-section-name[] +== Name + +flank.jar +-firebase-test-android-locales - Information about available locales on device + +// end::picocli-generated-man-section-name[] + +// tag::picocli-generated-man-section-synopsis[] +== Synopsis + +*flank.jar + firebase test android locales* [COMMAND] + +// end::picocli-generated-man-section-synopsis[] + +// tag::picocli-generated-man-section-description[] +== Description + +Information about available locales on device. For example prints list of available locales to test against + +// end::picocli-generated-man-section-description[] + +// tag::picocli-generated-man-section-commands[] +== Commands + +*list*:: + Print current list of locales available to test against + +// end::picocli-generated-man-section-commands[] + +// end::picocli-generated-full-manpage[] \ No newline at end of file diff --git a/test_runner/docs/ascii/flank.jar_-firebase-test-android-screen-orientations-list.adoc b/test_runner/docs/ascii/flank.jar_-firebase-test-android-screen-orientations-list.adoc new file mode 100644 index 0000000000..2b629160e5 --- /dev/null +++ b/test_runner/docs/ascii/flank.jar_-firebase-test-android-screen-orientations-list.adoc @@ -0,0 +1,37 @@ +// tag::picocli-generated-full-manpage[] + +// tag::picocli-generated-man-section-name[] +== Name + +flank.jar +-firebase-test-android-screen-orientations-list - List of device orientations available to test against + +// end::picocli-generated-man-section-name[] + +// tag::picocli-generated-man-section-synopsis[] +== Synopsis + +*flank.jar + firebase test android screen-orientations list* [*-h*] [*-c*=__] + +// end::picocli-generated-man-section-synopsis[] + +// tag::picocli-generated-man-section-description[] +== Description + +Print current list of Android orientations available to test against + +// end::picocli-generated-man-section-description[] + +// tag::picocli-generated-man-section-options[] +== Options + +*-c*, *--config*=__:: + YAML config file path + +*-h*, *--help*:: + Prints this help message + +// end::picocli-generated-man-section-options[] + +// end::picocli-generated-full-manpage[] \ No newline at end of file diff --git a/test_runner/docs/ascii/flank.jar_-firebase-test-android-screen-orientations.adoc b/test_runner/docs/ascii/flank.jar_-firebase-test-android-screen-orientations.adoc new file mode 100644 index 0000000000..c065bbcc80 --- /dev/null +++ b/test_runner/docs/ascii/flank.jar_-firebase-test-android-screen-orientations.adoc @@ -0,0 +1,34 @@ +// tag::picocli-generated-full-manpage[] + +// tag::picocli-generated-man-section-name[] +== Name + +flank.jar +-firebase-test-android-screen-orientations - Information about available orientations + +// end::picocli-generated-man-section-name[] + +// tag::picocli-generated-man-section-synopsis[] +== Synopsis + +*flank.jar + firebase test android screen-orientations* [COMMAND] + +// end::picocli-generated-man-section-synopsis[] + +// tag::picocli-generated-man-section-description[] +== Description + +Prints list of available orientations + +// end::picocli-generated-man-section-description[] + +// tag::picocli-generated-man-section-commands[] +== Commands + +*list*:: + List of device orientations available to test against + +// end::picocli-generated-man-section-commands[] + +// end::picocli-generated-full-manpage[] \ No newline at end of file diff --git a/test_runner/docs/ascii/flank.jar_-firebase-test-android-test-environment.adoc b/test_runner/docs/ascii/flank.jar_-firebase-test-android-test-environment.adoc index 332ee77266..fe38e91711 100644 --- a/test_runner/docs/ascii/flank.jar_-firebase-test-android-test-environment.adoc +++ b/test_runner/docs/ascii/flank.jar_-firebase-test-android-test-environment.adoc @@ -4,7 +4,7 @@ == Name flank.jar --firebase-test-android-test-environment - Print available devices, OS versions, provided software list and network configuration to test against +-firebase-test-android-test-environment - Print available devices, OS versions, locales, provided software list and network configuration to test against // end::picocli-generated-man-section-name[] @@ -19,7 +19,7 @@ flank.jar // tag::picocli-generated-man-section-description[] == Description -Print available Android devices, Android OS versions list, provided software and network configuration to test against +Print available Android devices, Android OS versions list, locales, provided software and network configuration to test against // end::picocli-generated-man-section-description[] diff --git a/test_runner/docs/ascii/flank.jar_-firebase-test-android.adoc b/test_runner/docs/ascii/flank.jar_-firebase-test-android.adoc index 61f40b50c0..16d1f2ff4f 100644 --- a/test_runner/docs/ascii/flank.jar_-firebase-test-android.adoc +++ b/test_runner/docs/ascii/flank.jar_-firebase-test-android.adoc @@ -38,12 +38,15 @@ flank.jar *versions*:: Information about available software versions -*test-environment*:: - Print available devices, OS versions, provided software list and network configuration to test against - -*orientations*:: +*screen-orientations*:: Information about available orientations +*locales*:: + Information about available locales on device + +*test-environment*:: + Print available devices, OS versions, locales, provided software list and network configuration to test against + // end::picocli-generated-man-section-commands[] // end::picocli-generated-full-manpage[] \ No newline at end of file diff --git a/test_runner/docs/ascii/flank.jar_-firebase-test-ios-run.adoc b/test_runner/docs/ascii/flank.jar_-firebase-test-ios-run.adoc index 7538b24237..3b2565e1da 100644 --- a/test_runner/docs/ascii/flank.jar_-firebase-test-ios-run.adoc +++ b/test_runner/docs/ascii/flank.jar_-firebase-test-ios-run.adoc @@ -154,15 +154,15 @@ Configuration is read from flank.yml *--disable-results-upload*:: Disables flank results upload on gcloud storage. +*--test*=__:: + The path to the test package (a zip file containing the iOS app and XCTest files). The given path may be in the local filesystem or in Google Cloud Storage using a URL beginning with gs://. Note: any .xctestrun file in this zip file will be ignored if --xctestrun-file is specified. + *--xctestrun-file*=__:: The path to an .xctestrun file that will override any .xctestrun file contained in the --test package. Because the .xctestrun file contains environment variables along with test methods to run and/or ignore, this can be useful for customizing or sharding test suites. The given path may be in the local filesystem or in Google Cloud Storage using a URL beginning with gs://. *--xcode-version*=__:: The version of Xcode that should be used to run an XCTest. Defaults to the latest Xcode version supported in Firebase Test Lab. This Xcode version must be supported by all iOS versions selected in the test matrix. -*--test*=__:: - The path to the test package (a zip file containing the iOS app and XCTest files). The given path may be in the local filesystem or in Google Cloud Storage using a URL beginning with gs://. Note: any .xctestrun file in this zip file will be ignored if --xctestrun-file is specified. - *--test-targets*=__[,__...]:: A list of one or more test method names to run (default: run all test targets). diff --git a/test_runner/docs/ascii/flank.jar_-firebase-test-ios-screen-orientations-list.adoc b/test_runner/docs/ascii/flank.jar_-firebase-test-ios-screen-orientations-list.adoc new file mode 100644 index 0000000000..2b17457f5b --- /dev/null +++ b/test_runner/docs/ascii/flank.jar_-firebase-test-ios-screen-orientations-list.adoc @@ -0,0 +1,37 @@ +// tag::picocli-generated-full-manpage[] + +// tag::picocli-generated-man-section-name[] +== Name + +flank.jar +-firebase-test-ios-screen-orientations-list - List of device orientations available to test against + +// end::picocli-generated-man-section-name[] + +// tag::picocli-generated-man-section-synopsis[] +== Synopsis + +*flank.jar + firebase test ios screen-orientations list* [*-h*] [*-c*=__] + +// end::picocli-generated-man-section-synopsis[] + +// tag::picocli-generated-man-section-description[] +== Description + +Print current list of iOS orientations available to test against + +// end::picocli-generated-man-section-description[] + +// tag::picocli-generated-man-section-options[] +== Options + +*-c*, *--config*=__:: + YAML config file path + +*-h*, *--help*:: + Prints this help message + +// end::picocli-generated-man-section-options[] + +// end::picocli-generated-full-manpage[] \ No newline at end of file diff --git a/test_runner/docs/ascii/flank.jar_-firebase-test-ios-screen-orientations.adoc b/test_runner/docs/ascii/flank.jar_-firebase-test-ios-screen-orientations.adoc new file mode 100644 index 0000000000..d859a4bf41 --- /dev/null +++ b/test_runner/docs/ascii/flank.jar_-firebase-test-ios-screen-orientations.adoc @@ -0,0 +1,34 @@ +// tag::picocli-generated-full-manpage[] + +// tag::picocli-generated-man-section-name[] +== Name + +flank.jar +-firebase-test-ios-screen-orientations - Information about available orientation versions + +// end::picocli-generated-man-section-name[] + +// tag::picocli-generated-man-section-synopsis[] +== Synopsis + +*flank.jar + firebase test ios screen-orientations* [COMMAND] + +// end::picocli-generated-man-section-synopsis[] + +// tag::picocli-generated-man-section-description[] +== Description + +Prints list of available orientations + +// end::picocli-generated-man-section-description[] + +// tag::picocli-generated-man-section-commands[] +== Commands + +*list*:: + List of device orientations available to test against + +// end::picocli-generated-man-section-commands[] + +// end::picocli-generated-full-manpage[] \ No newline at end of file diff --git a/test_runner/docs/ascii/flank.jar_-firebase-test-ios.adoc b/test_runner/docs/ascii/flank.jar_-firebase-test-ios.adoc index 602f007d7d..6888cb7f94 100644 --- a/test_runner/docs/ascii/flank.jar_-firebase-test-ios.adoc +++ b/test_runner/docs/ascii/flank.jar_-firebase-test-ios.adoc @@ -44,7 +44,7 @@ flank.jar *test-environment*:: Print available devices, OS versions, locales, provided software list and network configuration to test against -*orientations*:: +*screen-orientations*:: Information about available orientation versions // end::picocli-generated-man-section-commands[] diff --git a/test_runner/docs/ascii/flank.jar_-ios-run.adoc b/test_runner/docs/ascii/flank.jar_-ios-run.adoc index 0f511825e4..63dbed8801 100644 --- a/test_runner/docs/ascii/flank.jar_-ios-run.adoc +++ b/test_runner/docs/ascii/flank.jar_-ios-run.adoc @@ -146,15 +146,15 @@ Configuration is read from flank.yml *--disable-results-upload*:: Disables flank results upload on gcloud storage. +*--test*=__:: + The path to the test package (a zip file containing the iOS app and XCTest files). The given path may be in the local filesystem or in Google Cloud Storage using a URL beginning with gs://. Note: any .xctestrun file in this zip file will be ignored if --xctestrun-file is specified. + *--xctestrun-file*=__:: The path to an .xctestrun file that will override any .xctestrun file contained in the --test package. Because the .xctestrun file contains environment variables along with test methods to run and/or ignore, this can be useful for customizing or sharding test suites. The given path may be in the local filesystem or in Google Cloud Storage using a URL beginning with gs://. *--xcode-version*=__:: The version of Xcode that should be used to run an XCTest. Defaults to the latest Xcode version supported in Firebase Test Lab. This Xcode version must be supported by all iOS versions selected in the test matrix. -*--test*=__:: - The path to the test package (a zip file containing the iOS app and XCTest files). The given path may be in the local filesystem or in Google Cloud Storage using a URL beginning with gs://. Note: any .xctestrun file in this zip file will be ignored if --xctestrun-file is specified. - *--test-targets*=__[,__...]:: A list of one or more test method names to run (default: run all test targets). diff --git a/test_runner/docs/ascii/flank.jar_-ios-screen-orientations-list.adoc b/test_runner/docs/ascii/flank.jar_-ios-screen-orientations-list.adoc new file mode 100644 index 0000000000..3bc79c8966 --- /dev/null +++ b/test_runner/docs/ascii/flank.jar_-ios-screen-orientations-list.adoc @@ -0,0 +1,37 @@ +// tag::picocli-generated-full-manpage[] + +// tag::picocli-generated-man-section-name[] +== Name + +flank.jar +-ios-screen-orientations-list - List of device orientations available to test against + +// end::picocli-generated-man-section-name[] + +// tag::picocli-generated-man-section-synopsis[] +== Synopsis + +*flank.jar + ios screen-orientations list* [*-h*] [*-c*=__] + +// end::picocli-generated-man-section-synopsis[] + +// tag::picocli-generated-man-section-description[] +== Description + +Print current list of iOS orientations available to test against + +// end::picocli-generated-man-section-description[] + +// tag::picocli-generated-man-section-options[] +== Options + +*-c*, *--config*=__:: + YAML config file path + +*-h*, *--help*:: + Prints this help message + +// end::picocli-generated-man-section-options[] + +// end::picocli-generated-full-manpage[] \ No newline at end of file diff --git a/test_runner/docs/ascii/flank.jar_-ios-screen-orientations.adoc b/test_runner/docs/ascii/flank.jar_-ios-screen-orientations.adoc new file mode 100644 index 0000000000..8a024b835d --- /dev/null +++ b/test_runner/docs/ascii/flank.jar_-ios-screen-orientations.adoc @@ -0,0 +1,34 @@ +// tag::picocli-generated-full-manpage[] + +// tag::picocli-generated-man-section-name[] +== Name + +flank.jar +-ios-screen-orientations - Information about available orientation versions + +// end::picocli-generated-man-section-name[] + +// tag::picocli-generated-man-section-synopsis[] +== Synopsis + +*flank.jar + ios screen-orientations* [COMMAND] + +// end::picocli-generated-man-section-synopsis[] + +// tag::picocli-generated-man-section-description[] +== Description + +Prints list of available orientations + +// end::picocli-generated-man-section-description[] + +// tag::picocli-generated-man-section-commands[] +== Commands + +*list*:: + List of device orientations available to test against + +// end::picocli-generated-man-section-commands[] + +// end::picocli-generated-full-manpage[] \ No newline at end of file diff --git a/test_runner/docs/ascii/flank.jar_-ios.adoc b/test_runner/docs/ascii/flank.jar_-ios.adoc index cd4a00372f..ebc9e71027 100644 --- a/test_runner/docs/ascii/flank.jar_-ios.adoc +++ b/test_runner/docs/ascii/flank.jar_-ios.adoc @@ -44,7 +44,7 @@ flank.jar *test-environment*:: Print available devices, OS versions, locales, provided software list and network configuration to test against -*orientations*:: +*screen-orientations*:: Information about available orientation versions // end::picocli-generated-man-section-commands[] diff --git a/test_runner/src/main/kotlin/ftl/android/AndroidCatalog.kt b/test_runner/src/main/kotlin/ftl/android/AndroidCatalog.kt index 2fbdac0730..52ef5d946f 100644 --- a/test_runner/src/main/kotlin/ftl/android/AndroidCatalog.kt +++ b/test_runner/src/main/kotlin/ftl/android/AndroidCatalog.kt @@ -3,6 +3,7 @@ package ftl.android import com.google.api.services.testing.model.AndroidDevice import com.google.api.services.testing.model.AndroidDeviceCatalog import ftl.environment.android.asPrintableTable +import ftl.environment.asPrintableTable import ftl.environment.common.asPrintableTable import ftl.gc.GcTesting import ftl.http.executeWithRetry @@ -30,6 +31,8 @@ object AndroidCatalog { fun supportedOrientationsAsTable(projectId: String) = deviceCatalog(projectId).runtimeConfiguration.orientations.asPrintableTable() + fun localesAsTable(projectId: String) = deviceCatalog(projectId).runtimeConfiguration.locales.asPrintableTable() + fun androidModelIds(projectId: String) = modelMap.getOrPut(projectId) { deviceCatalog(projectId).models.map { it.id } } diff --git a/test_runner/src/main/kotlin/ftl/cli/firebase/test/AndroidCommand.kt b/test_runner/src/main/kotlin/ftl/cli/firebase/test/AndroidCommand.kt index 6bb5f4b8e7..d38be145fc 100644 --- a/test_runner/src/main/kotlin/ftl/cli/firebase/test/AndroidCommand.kt +++ b/test_runner/src/main/kotlin/ftl/cli/firebase/test/AndroidCommand.kt @@ -3,6 +3,7 @@ package ftl.cli.firebase.test import ftl.cli.firebase.test.android.AndroidDoctorCommand import ftl.cli.firebase.test.android.AndroidRunCommand import ftl.cli.firebase.test.android.AndroidTestEnvironmentCommand +import ftl.cli.firebase.test.android.configuration.AndroidLocalesCommand import ftl.cli.firebase.test.android.models.AndroidModelsCommand import ftl.cli.firebase.test.android.orientations.AndroidOrientationsCommand import ftl.cli.firebase.test.android.versions.AndroidVersionsCommand @@ -17,8 +18,9 @@ import picocli.CommandLine.Command AndroidDoctorCommand::class, AndroidModelsCommand::class, AndroidVersionsCommand::class, - AndroidTestEnvironmentCommand::class, - AndroidOrientationsCommand::class + AndroidOrientationsCommand::class, + AndroidLocalesCommand::class, + AndroidTestEnvironmentCommand::class ], usageHelpAutoWidth = true ) diff --git a/test_runner/src/main/kotlin/ftl/cli/firebase/test/android/AndroidTestEnvironmentCommand.kt b/test_runner/src/main/kotlin/ftl/cli/firebase/test/android/AndroidTestEnvironmentCommand.kt index c509abf407..50bab111e7 100644 --- a/test_runner/src/main/kotlin/ftl/cli/firebase/test/android/AndroidTestEnvironmentCommand.kt +++ b/test_runner/src/main/kotlin/ftl/cli/firebase/test/android/AndroidTestEnvironmentCommand.kt @@ -2,6 +2,7 @@ package ftl.cli.firebase.test.android import ftl.android.AndroidCatalog.devicesCatalogAsTable import ftl.android.AndroidCatalog.supportedOrientationsAsTable +import ftl.android.AndroidCatalog.localesAsTable import ftl.android.AndroidCatalog.supportedVersionsAsTable import ftl.args.AndroidArgs import ftl.config.FtlConstants @@ -17,8 +18,8 @@ import java.nio.file.Paths descriptionHeading = "%n@|bold,underline Description:|@%n%n", parameterListHeading = "%n@|bold,underline Parameters:|@%n", optionListHeading = "%n@|bold,underline Options:|@%n", - header = ["Print available devices, OS versions, provided software list and network configuration to test against"], - description = ["Print available Android devices, Android OS versions list, provided software and network configuration to test against"], + header = ["Print available devices, OS versions, locales, provided software list and network configuration to test against"], + description = ["Print available Android devices, Android OS versions list, locales, provided software and network configuration to test against"], usageHelpAutoWidth = true ) class AndroidTestEnvironmentCommand : Runnable { @@ -26,6 +27,7 @@ class AndroidTestEnvironmentCommand : Runnable { val projectId = AndroidArgs.load(Paths.get(configPath)).project println(devicesCatalogAsTable(projectId)) println(supportedVersionsAsTable(projectId)) + println(localesAsTable(projectId)) println(providedSoftwareAsTable()) println(networkConfigurationAsTable()) println(supportedOrientationsAsTable(projectId)) diff --git a/test_runner/src/main/kotlin/ftl/cli/firebase/test/android/configuration/AndroidLocalesCommand.kt b/test_runner/src/main/kotlin/ftl/cli/firebase/test/android/configuration/AndroidLocalesCommand.kt new file mode 100644 index 0000000000..7029cc1215 --- /dev/null +++ b/test_runner/src/main/kotlin/ftl/cli/firebase/test/android/configuration/AndroidLocalesCommand.kt @@ -0,0 +1,21 @@ +package ftl.cli.firebase.test.android.configuration + +import picocli.CommandLine + +@CommandLine.Command( + name = "locales", + headerHeading = "", + synopsisHeading = "%n", + descriptionHeading = "%n@|bold,underline Description:|@%n%n", + parameterListHeading = "%n@|bold,underline Parameters:|@%n", + optionListHeading = "%n@|bold,underline Options:|@%n", + header = ["Information about available locales on device"], + description = ["Information about available locales on device. For example prints list of available locales to test against"], + subcommands = [AndroidLocalesListCommand::class], + usageHelpAutoWidth = true +) +class AndroidLocalesCommand : Runnable { + override fun run() { + CommandLine.usage(AndroidLocalesCommand(), System.out) + } +} diff --git a/test_runner/src/main/kotlin/ftl/cli/firebase/test/android/configuration/AndroidLocalesListCommand.kt b/test_runner/src/main/kotlin/ftl/cli/firebase/test/android/configuration/AndroidLocalesListCommand.kt new file mode 100644 index 0000000000..7e983e54a7 --- /dev/null +++ b/test_runner/src/main/kotlin/ftl/cli/firebase/test/android/configuration/AndroidLocalesListCommand.kt @@ -0,0 +1,30 @@ +package ftl.cli.firebase.test.android.configuration + +import ftl.android.AndroidCatalog +import ftl.args.AndroidArgs +import ftl.config.FtlConstants +import picocli.CommandLine +import java.nio.file.Paths + +@CommandLine.Command( + name = "list", + headerHeading = "", + synopsisHeading = "%n", + descriptionHeading = "%n@|bold,underline Description:|@%n%n", + parameterListHeading = "%n@|bold,underline Parameters:|@%n", + optionListHeading = "%n@|bold,underline Options:|@%n", + header = ["Print current list of locales available to test against"], + description = ["Print current list of Android locales available to test against"], + usageHelpAutoWidth = true +) +class AndroidLocalesListCommand : Runnable { + override fun run() { + println(AndroidCatalog.localesAsTable(projectId = AndroidArgs.load(Paths.get(configPath)).project)) + } + + @CommandLine.Option(names = ["-c", "--config"], description = ["YAML config file path"]) + var configPath: String = FtlConstants.defaultAndroidConfig + + @CommandLine.Option(names = ["-h", "--help"], usageHelp = true, description = ["Prints this help message"]) + var usageHelpRequested: Boolean = false +} diff --git a/test_runner/src/test/kotlin/ftl/android/AndroidCatalogTest.kt b/test_runner/src/test/kotlin/ftl/android/AndroidCatalogTest.kt index 0b5fffb274..aebb9cec09 100644 --- a/test_runner/src/test/kotlin/ftl/android/AndroidCatalogTest.kt +++ b/test_runner/src/test/kotlin/ftl/android/AndroidCatalogTest.kt @@ -107,4 +107,24 @@ class AndroidCatalogTest { // number of separators match assertThat(headers.count { it == '│' }).isEqualTo(expectedSeparatorCount) } + + @Test + fun `should print available locales as table`() { + // given + val expectedHeaders = + arrayOf("LOCALE", "NAME", "REGION", "TAGS") + val expectedSeparatorCount = expectedHeaders.size + 1 + + // when + val devicesTable = AndroidCatalog.localesAsTable(projectId) + val headers = devicesTable.lines()[1] + + // then + // has all necessary headers + expectedHeaders.forEach { + assertThat(headers.contains(it)).isTrue() + } + // number of separators match + assertThat(headers.count { it == '│' }).isEqualTo(expectedSeparatorCount) + } } diff --git a/test_runner/src/test/kotlin/ftl/cli/firebase/test/android/configuration/AndroidLocalesListCommandTest.kt b/test_runner/src/test/kotlin/ftl/cli/firebase/test/android/configuration/AndroidLocalesListCommandTest.kt new file mode 100644 index 0000000000..3a952c6e23 --- /dev/null +++ b/test_runner/src/test/kotlin/ftl/cli/firebase/test/android/configuration/AndroidLocalesListCommandTest.kt @@ -0,0 +1,27 @@ +package ftl.cli.firebase.test.android.configuration + +import com.google.common.truth.Truth.assertThat +import ftl.android.AndroidCatalog +import io.mockk.mockkObject +import io.mockk.verify +import org.junit.Test +import picocli.CommandLine + +class AndroidLocalesListCommandTest { + + @Test + fun `should execute AndroidCatalog localesAsTable when run AndroidLocalesListCommand`() { + mockkObject(AndroidCatalog) { + CommandLine(AndroidLocalesListCommand()).execute() + verify { AndroidCatalog.localesAsTable(any()) } + } + } + + @Test + fun androidLocalesListCommandShouldParseConfig() { + val cmd = AndroidLocalesListCommand() + CommandLine(cmd).parseArgs("--config=a") + + assertThat(cmd.configPath).isEqualTo("a") + } +} diff --git a/test_runner/src/test/kotlin/ftl/cli/firebase/test/ios/configuration/IosLocalesListCommandTest.kt b/test_runner/src/test/kotlin/ftl/cli/firebase/test/ios/configuration/IosLocalesListCommandTest.kt index 4bdc516285..c73544dbdc 100644 --- a/test_runner/src/test/kotlin/ftl/cli/firebase/test/ios/configuration/IosLocalesListCommandTest.kt +++ b/test_runner/src/test/kotlin/ftl/cli/firebase/test/ios/configuration/IosLocalesListCommandTest.kt @@ -1,13 +1,24 @@ package ftl.cli.firebase.test.ios.configuration import com.google.common.truth.Truth +import ftl.ios.IosCatalog +import io.mockk.mockkObject +import io.mockk.verify import org.junit.Test import picocli.CommandLine class IosLocalesListCommandTest { @Test - fun androidLocalesListCommandShouldParseConfig() { + fun `should execute IosCatalog localesAsTable when run IosLocalesListCommand`() { + mockkObject(IosCatalog) { + CommandLine(IosLocalesListCommand()).execute() + verify { IosCatalog.localesAsTable(any()) } + } + } + + @Test + fun iOsLocalesListCommandShouldParseConfig() { val cmd = IosLocalesListCommand() CommandLine(cmd).parseArgs("--config=a")