From 399d3a7433cd5baf9a36e54a0f98eb9ef25b90c1 Mon Sep 17 00:00:00 2001 From: Phil Harrison Date: Sat, 12 Mar 2022 15:24:16 +0000 Subject: [PATCH 01/14] Update INTENT_LAUNCH to use 'android.intent.category.LEANBACK_LAUNCHER'. Added new constants to launch apps on Fire TV (to keep using 'android.intent.category.LAUNCHER') Update constants for Android Play apps. --- .gitignore | 1 + androidtv/basetv/basetv.py | 3 +++ androidtv/constants.py | 17 ++++++++++++++--- 3 files changed, 18 insertions(+), 3 deletions(-) diff --git a/.gitignore b/.gitignore index 8eda1137..84a204f8 100644 --- a/.gitignore +++ b/.gitignore @@ -8,6 +8,7 @@ androidtv.egg-info .eggs/ build/ dist/ +.vs/ # Documentation docs/build/ diff --git a/androidtv/basetv/basetv.py b/androidtv/basetv/basetv.py index aa988a1b..00691a97 100644 --- a/androidtv/basetv/basetv.py +++ b/androidtv/basetv/basetv.py @@ -213,6 +213,9 @@ def _cmd_launch_app(self, app): ): return constants.CMD_LAUNCH_APP_GOOGLE_TV.format(app) + if self.DEVICE_ENUM == constants.DeviceEnum.FIRETV: + return constants.CMD_LAUNCH_APP_FIRE_TV.format(app) + return constants.CMD_LAUNCH_APP.format(app) def _cmd_running_apps(self): diff --git a/androidtv/constants.py b/androidtv/constants.py index f9889aaf..d3aa955c 100644 --- a/androidtv/constants.py +++ b/androidtv/constants.py @@ -31,7 +31,8 @@ class DeviceEnum(IntEnum): # Intents -INTENT_LAUNCH = "android.intent.category.LAUNCHER" +INTENT_LAUNCH = "android.intent.category.LEANBACK_LAUNCHER" +INTENT_LAUNCH_FIRE_TV = "android.intent.category.LAUNCHER" INTENT_HOME = "android.intent.category.HOME" # Customizable commands @@ -106,6 +107,11 @@ class DeviceEnum(IntEnum): "if [ $CURRENT_APP != '{0}' ]; then monkey -p {0} -c " + INTENT_LAUNCH + " --pct-syskeys 0 1; fi" ) +#: Launch an app if it is not already the current app (assumes the variable ``CURRENT_APP`` has already been set) on a Fire TV +CMD_LAUNCH_APP_CONDITION_FIRE_TV = ( + "if [ $CURRENT_APP != '{0}' ]; then monkey -p {0} -c " + INTENT_LAUNCH_FIRE_TV + " --pct-syskeys 0 1; fi" +) + #: Launch an app if it is not already the current app CMD_LAUNCH_APP = ( CMD_DEFINE_CURRENT_APP_VARIABLE.replace("{", "{{").replace("}", "}}") + " && " + CMD_LAUNCH_APP_CONDITION @@ -116,6 +122,11 @@ class DeviceEnum(IntEnum): CMD_DEFINE_CURRENT_APP_VARIABLE_GOOGLE_TV.replace("{", "{{").replace("}", "}}") + " && " + CMD_LAUNCH_APP_CONDITION ) +#: Launch an app on a Fire TV device +CMD_LAUNCH_APP_FIRE_TV = ( + CMD_DEFINE_CURRENT_APP_VARIABLE.replace("{", "{{").replace("}", "}}") + " && " + CMD_LAUNCH_APP_CONDITION_FIRE_TV +) + #: Get the state from ``dumpsys media_session``; this assumes that the variable ``CURRENT_APP`` has been defined CMD_MEDIA_SESSION_STATE = "dumpsys media_session | grep -A 100 'Sessions Stack' | grep -A 100 $CURRENT_APP | grep -m 1 'state=PlaybackState {'" @@ -403,10 +414,10 @@ class DeviceEnum(IntEnum): APP_NOS = "nl.nos.app" APP_NPO = "nl.uitzendinggemist" APP_OCS = "com.orange.ocsgo" -APP_PLAY_GAMES = "com.google.android.games" +APP_PLAY_GAMES = "com.google.android.play.games" APP_PLAY_MUSIC = "com.google.android.music" APP_PLAY_STORE = "com.android.vending" -APP_PLAY_VIDEOS = "com.android.videos" +APP_PLAY_VIDEOS = "com.google.android.videos" APP_PLEX = "com.plexapp.android" APP_PRIME_VIDEO = "com.amazon.amazonvideo.livingroom" APP_PRIME_VIDEO_FIRETV = "com.amazon.firebat" From d5dd3549cbb74758ec5fbc60712729f211679e92 Mon Sep 17 00:00:00 2001 From: Phil Harrison Date: Sat, 12 Mar 2022 16:06:27 +0000 Subject: [PATCH 02/14] Update test files to reflect changes to launch constants --- tests/generate_test_constants.py | 1 + tests/test_constants.py | 10 ++++++++-- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/tests/generate_test_constants.py b/tests/generate_test_constants.py index f7aff0e1..b8bb991c 100644 --- a/tests/generate_test_constants.py +++ b/tests/generate_test_constants.py @@ -14,6 +14,7 @@ "CMD_DEFINE_CURRENT_APP_VARIABLE", "CMD_DEFINE_CURRENT_APP_VARIABLE_GOOGLE_TV", "CMD_LAUNCH_APP_CONDITION", + "CMD_LAUNCH_APP_CONDITION_FIRE_TV", } diff --git a/tests/test_constants.py b/tests/test_constants.py index 44891e38..c3d10388 100644 --- a/tests/test_constants.py +++ b/tests/test_constants.py @@ -113,13 +113,19 @@ def test_constants(self): # CMD_LAUNCH_APP self.assertCommand( constants.CMD_LAUNCH_APP, - r"CURRENT_APP=$(dumpsys window windows | grep -E 'mCurrentFocus|mFocusedApp') && CURRENT_APP=${{CURRENT_APP#*ActivityRecord{{* * }} && CURRENT_APP=${{CURRENT_APP#*{{* * }} && CURRENT_APP=${{CURRENT_APP%%/*}} && CURRENT_APP=${{CURRENT_APP%\}}*}} && if [ $CURRENT_APP != '{0}' ]; then monkey -p {0} -c android.intent.category.LAUNCHER --pct-syskeys 0 1; fi", + r"CURRENT_APP=$(dumpsys window windows | grep -E 'mCurrentFocus|mFocusedApp') && CURRENT_APP=${{CURRENT_APP#*ActivityRecord{{* * }} && CURRENT_APP=${{CURRENT_APP#*{{* * }} && CURRENT_APP=${{CURRENT_APP%%/*}} && CURRENT_APP=${{CURRENT_APP%\}}*}} && if [ $CURRENT_APP != '{0}' ]; then monkey -p {0} -c android.intent.category.LEANBACK_LAUNCHER --pct-syskeys 0 1; fi", ) # CMD_LAUNCH_APP_GOOGLE_TV self.assertCommand( constants.CMD_LAUNCH_APP_GOOGLE_TV, - r"CURRENT_APP=$(dumpsys activity a . | grep mResumedActivity) && CURRENT_APP=${{CURRENT_APP#*ActivityRecord{{* * }} && CURRENT_APP=${{CURRENT_APP#*{{* * }} && CURRENT_APP=${{CURRENT_APP%%/*}} && CURRENT_APP=${{CURRENT_APP%\}}*}} && if [ $CURRENT_APP != '{0}' ]; then monkey -p {0} -c android.intent.category.LAUNCHER --pct-syskeys 0 1; fi", + r"CURRENT_APP=$(dumpsys activity a . | grep mResumedActivity) && CURRENT_APP=${{CURRENT_APP#*ActivityRecord{{* * }} && CURRENT_APP=${{CURRENT_APP#*{{* * }} && CURRENT_APP=${{CURRENT_APP%%/*}} && CURRENT_APP=${{CURRENT_APP%\}}*}} && if [ $CURRENT_APP != '{0}' ]; then monkey -p {0} -c android.intent.category.LEANBACK_LAUNCHER --pct-syskeys 0 1; fi", + ) + + # CMD_LAUNCH_APP_FIRE_TV + self.assertCommand( + constants.CMD_LAUNCH_APP_FIRE_TV + r"CURRENT_APP=$(dumpsys window windows | grep -E 'mCurrentFocus|mFocusedApp') && CURRENT_APP=${{CURRENT_APP#*ActivityRecord{{* * }} && CURRENT_APP=${{CURRENT_APP#*{{* * }} && CURRENT_APP=${{CURRENT_APP%%/*}} && CURRENT_APP=${{CURRENT_APP%\}}*}} && if [ $CURRENT_APP != '{0}' ]; then monkey -p {0} -c android.intent.category.LAUNCHER --pct-syskeys 0 1; fi", ) # CMD_MAC_ETH0 From 8a18da317964c9f3e3d692a2264059dd46ba7c25 Mon Sep 17 00:00:00 2001 From: Phil Harrison Date: Sat, 12 Mar 2022 16:36:45 +0000 Subject: [PATCH 03/14] formatting --- tests/test_constants.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/test_constants.py b/tests/test_constants.py index c3d10388..979a6d83 100644 --- a/tests/test_constants.py +++ b/tests/test_constants.py @@ -125,7 +125,7 @@ def test_constants(self): # CMD_LAUNCH_APP_FIRE_TV self.assertCommand( constants.CMD_LAUNCH_APP_FIRE_TV - r"CURRENT_APP=$(dumpsys window windows | grep -E 'mCurrentFocus|mFocusedApp') && CURRENT_APP=${{CURRENT_APP#*ActivityRecord{{* * }} && CURRENT_APP=${{CURRENT_APP#*{{* * }} && CURRENT_APP=${{CURRENT_APP%%/*}} && CURRENT_APP=${{CURRENT_APP%\}}*}} && if [ $CURRENT_APP != '{0}' ]; then monkey -p {0} -c android.intent.category.LAUNCHER --pct-syskeys 0 1; fi", + r"CURRENT_APP=$(dumpsys window windows | grep -E 'mCurrentFocus|mFocusedApp') && CURRENT_APP=${{CURRENT_APP#*ActivityRecord{{* * }} && CURRENT_APP=${{CURRENT_APP#*{{* * }} && CURRENT_APP=${{CURRENT_APP%%/*}} && CURRENT_APP=${{CURRENT_APP%\}}*}} && if [ $CURRENT_APP != '{0}' ]; then monkey -p {0} -c android.intent.category.LAUNCHER --pct-syskeys 0 1; fi", ) # CMD_MAC_ETH0 From 20afb326f5ac361c5c0a3c67bb6cc1a95205ece2 Mon Sep 17 00:00:00 2001 From: Phil Harrison Date: Sat, 12 Mar 2022 16:38:32 +0000 Subject: [PATCH 04/14] formatting --- tests/test_constants.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/test_constants.py b/tests/test_constants.py index 979a6d83..c3d10388 100644 --- a/tests/test_constants.py +++ b/tests/test_constants.py @@ -125,7 +125,7 @@ def test_constants(self): # CMD_LAUNCH_APP_FIRE_TV self.assertCommand( constants.CMD_LAUNCH_APP_FIRE_TV - r"CURRENT_APP=$(dumpsys window windows | grep -E 'mCurrentFocus|mFocusedApp') && CURRENT_APP=${{CURRENT_APP#*ActivityRecord{{* * }} && CURRENT_APP=${{CURRENT_APP#*{{* * }} && CURRENT_APP=${{CURRENT_APP%%/*}} && CURRENT_APP=${{CURRENT_APP%\}}*}} && if [ $CURRENT_APP != '{0}' ]; then monkey -p {0} -c android.intent.category.LAUNCHER --pct-syskeys 0 1; fi", + r"CURRENT_APP=$(dumpsys window windows | grep -E 'mCurrentFocus|mFocusedApp') && CURRENT_APP=${{CURRENT_APP#*ActivityRecord{{* * }} && CURRENT_APP=${{CURRENT_APP#*{{* * }} && CURRENT_APP=${{CURRENT_APP%%/*}} && CURRENT_APP=${{CURRENT_APP%\}}*}} && if [ $CURRENT_APP != '{0}' ]; then monkey -p {0} -c android.intent.category.LAUNCHER --pct-syskeys 0 1; fi", ) # CMD_MAC_ETH0 From f1f9941ad058fb683a79821ff45164b29b979a26 Mon Sep 17 00:00:00 2001 From: Phil Harrison Date: Sat, 12 Mar 2022 17:02:49 +0000 Subject: [PATCH 05/14] Fixed missing comma --- tests/test_constants.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/test_constants.py b/tests/test_constants.py index c3d10388..f21eb5e0 100644 --- a/tests/test_constants.py +++ b/tests/test_constants.py @@ -124,7 +124,7 @@ def test_constants(self): # CMD_LAUNCH_APP_FIRE_TV self.assertCommand( - constants.CMD_LAUNCH_APP_FIRE_TV + constants.CMD_LAUNCH_APP_FIRE_TV, r"CURRENT_APP=$(dumpsys window windows | grep -E 'mCurrentFocus|mFocusedApp') && CURRENT_APP=${{CURRENT_APP#*ActivityRecord{{* * }} && CURRENT_APP=${{CURRENT_APP#*{{* * }} && CURRENT_APP=${{CURRENT_APP%%/*}} && CURRENT_APP=${{CURRENT_APP%\}}*}} && if [ $CURRENT_APP != '{0}' ]; then monkey -p {0} -c android.intent.category.LAUNCHER --pct-syskeys 0 1; fi", ) From cda8a62f98a89c270ed46a5daf1fcaf263112879 Mon Sep 17 00:00:00 2001 From: Phil Harrison Date: Sat, 12 Mar 2022 17:13:32 +0000 Subject: [PATCH 06/14] Fixed test errors --- androidtv/basetv/basetv.py | 2 +- androidtv/constants.py | 16 ++++++++-------- tests/test_constants.py | 12 ++++++------ 3 files changed, 15 insertions(+), 15 deletions(-) diff --git a/androidtv/basetv/basetv.py b/androidtv/basetv/basetv.py index 00691a97..faa400aa 100644 --- a/androidtv/basetv/basetv.py +++ b/androidtv/basetv/basetv.py @@ -214,7 +214,7 @@ def _cmd_launch_app(self, app): return constants.CMD_LAUNCH_APP_GOOGLE_TV.format(app) if self.DEVICE_ENUM == constants.DeviceEnum.FIRETV: - return constants.CMD_LAUNCH_APP_FIRE_TV.format(app) + return constants.CMD_LAUNCH_APP_FIRETV.format(app) return constants.CMD_LAUNCH_APP.format(app) diff --git a/androidtv/constants.py b/androidtv/constants.py index d3aa955c..5b6d20ae 100644 --- a/androidtv/constants.py +++ b/androidtv/constants.py @@ -32,7 +32,7 @@ class DeviceEnum(IntEnum): # Intents INTENT_LAUNCH = "android.intent.category.LEANBACK_LAUNCHER" -INTENT_LAUNCH_FIRE_TV = "android.intent.category.LAUNCHER" +INTENT_LAUNCH_FIRETV = "android.intent.category.LAUNCHER" INTENT_HOME = "android.intent.category.HOME" # Customizable commands @@ -108,8 +108,8 @@ class DeviceEnum(IntEnum): ) #: Launch an app if it is not already the current app (assumes the variable ``CURRENT_APP`` has already been set) on a Fire TV -CMD_LAUNCH_APP_CONDITION_FIRE_TV = ( - "if [ $CURRENT_APP != '{0}' ]; then monkey -p {0} -c " + INTENT_LAUNCH_FIRE_TV + " --pct-syskeys 0 1; fi" +CMD_LAUNCH_APP_CONDITION_FIRETV = ( + "if [ $CURRENT_APP != '{0}' ]; then monkey -p {0} -c " + INTENT_LAUNCH_FIRETV + " --pct-syskeys 0 1; fi" ) #: Launch an app if it is not already the current app @@ -117,16 +117,16 @@ class DeviceEnum(IntEnum): CMD_DEFINE_CURRENT_APP_VARIABLE.replace("{", "{{").replace("}", "}}") + " && " + CMD_LAUNCH_APP_CONDITION ) +#: Launch an app on a Fire TV device +CMD_LAUNCH_APP_FIRETV = ( + CMD_DEFINE_CURRENT_APP_VARIABLE.replace("{", "{{").replace("}", "}}") + " && " + CMD_LAUNCH_APP_CONDITION_FIRETV +) + #: Launch an app on a Google TV device CMD_LAUNCH_APP_GOOGLE_TV = ( CMD_DEFINE_CURRENT_APP_VARIABLE_GOOGLE_TV.replace("{", "{{").replace("}", "}}") + " && " + CMD_LAUNCH_APP_CONDITION ) -#: Launch an app on a Fire TV device -CMD_LAUNCH_APP_FIRE_TV = ( - CMD_DEFINE_CURRENT_APP_VARIABLE.replace("{", "{{").replace("}", "}}") + " && " + CMD_LAUNCH_APP_CONDITION_FIRE_TV -) - #: Get the state from ``dumpsys media_session``; this assumes that the variable ``CURRENT_APP`` has been defined CMD_MEDIA_SESSION_STATE = "dumpsys media_session | grep -A 100 'Sessions Stack' | grep -A 100 $CURRENT_APP | grep -m 1 'state=PlaybackState {'" diff --git a/tests/test_constants.py b/tests/test_constants.py index f21eb5e0..0a46cfa8 100644 --- a/tests/test_constants.py +++ b/tests/test_constants.py @@ -116,16 +116,16 @@ def test_constants(self): r"CURRENT_APP=$(dumpsys window windows | grep -E 'mCurrentFocus|mFocusedApp') && CURRENT_APP=${{CURRENT_APP#*ActivityRecord{{* * }} && CURRENT_APP=${{CURRENT_APP#*{{* * }} && CURRENT_APP=${{CURRENT_APP%%/*}} && CURRENT_APP=${{CURRENT_APP%\}}*}} && if [ $CURRENT_APP != '{0}' ]; then monkey -p {0} -c android.intent.category.LEANBACK_LAUNCHER --pct-syskeys 0 1; fi", ) - # CMD_LAUNCH_APP_GOOGLE_TV + # CMD_LAUNCH_APP_FIRETV self.assertCommand( - constants.CMD_LAUNCH_APP_GOOGLE_TV, - r"CURRENT_APP=$(dumpsys activity a . | grep mResumedActivity) && CURRENT_APP=${{CURRENT_APP#*ActivityRecord{{* * }} && CURRENT_APP=${{CURRENT_APP#*{{* * }} && CURRENT_APP=${{CURRENT_APP%%/*}} && CURRENT_APP=${{CURRENT_APP%\}}*}} && if [ $CURRENT_APP != '{0}' ]; then monkey -p {0} -c android.intent.category.LEANBACK_LAUNCHER --pct-syskeys 0 1; fi", + constants.CMD_LAUNCH_APP_FIRETV, + r"CURRENT_APP=$(dumpsys window windows | grep -E 'mCurrentFocus|mFocusedApp') && CURRENT_APP=${{CURRENT_APP#*ActivityRecord{{* * }} && CURRENT_APP=${{CURRENT_APP#*{{* * }} && CURRENT_APP=${{CURRENT_APP%%/*}} && CURRENT_APP=${{CURRENT_APP%\}}*}} && if [ $CURRENT_APP != '{0}' ]; then monkey -p {0} -c android.intent.category.LAUNCHER --pct-syskeys 0 1; fi", ) - # CMD_LAUNCH_APP_FIRE_TV + # CMD_LAUNCH_APP_GOOGLE_TV self.assertCommand( - constants.CMD_LAUNCH_APP_FIRE_TV, - r"CURRENT_APP=$(dumpsys window windows | grep -E 'mCurrentFocus|mFocusedApp') && CURRENT_APP=${{CURRENT_APP#*ActivityRecord{{* * }} && CURRENT_APP=${{CURRENT_APP#*{{* * }} && CURRENT_APP=${{CURRENT_APP%%/*}} && CURRENT_APP=${{CURRENT_APP%\}}*}} && if [ $CURRENT_APP != '{0}' ]; then monkey -p {0} -c android.intent.category.LAUNCHER --pct-syskeys 0 1; fi", + constants.CMD_LAUNCH_APP_GOOGLE_TV, + r"CURRENT_APP=$(dumpsys activity a . | grep mResumedActivity) && CURRENT_APP=${{CURRENT_APP#*ActivityRecord{{* * }} && CURRENT_APP=${{CURRENT_APP#*{{* * }} && CURRENT_APP=${{CURRENT_APP%%/*}} && CURRENT_APP=${{CURRENT_APP%\}}*}} && if [ $CURRENT_APP != '{0}' ]; then monkey -p {0} -c android.intent.category.LEANBACK_LAUNCHER --pct-syskeys 0 1; fi", ) # CMD_MAC_ETH0 From ed6e13a32ce05b2baa7b2f81a969562447a8a336 Mon Sep 17 00:00:00 2001 From: Phil Harrison Date: Sat, 12 Mar 2022 17:15:30 +0000 Subject: [PATCH 07/14] Fixed another test error --- tests/generate_test_constants.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/generate_test_constants.py b/tests/generate_test_constants.py index b8bb991c..5158c744 100644 --- a/tests/generate_test_constants.py +++ b/tests/generate_test_constants.py @@ -14,7 +14,7 @@ "CMD_DEFINE_CURRENT_APP_VARIABLE", "CMD_DEFINE_CURRENT_APP_VARIABLE_GOOGLE_TV", "CMD_LAUNCH_APP_CONDITION", - "CMD_LAUNCH_APP_CONDITION_FIRE_TV", + "CMD_LAUNCH_APP_CONDITION_FIRETV", } From dfb27fe97be429ffa353b829066185065ed97f27 Mon Sep 17 00:00:00 2001 From: Phil Harrison Date: Sat, 12 Mar 2022 17:33:53 +0000 Subject: [PATCH 08/14] More test fixes --- tests/test_firetv_async.py | 6 +++--- tests/test_firetv_sync.py | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/tests/test_firetv_async.py b/tests/test_firetv_async.py index 90fc0003..2e477720 100644 --- a/tests/test_firetv_async.py +++ b/tests/test_firetv_async.py @@ -46,7 +46,7 @@ async def test_turn_on_off(self): async def test_send_intent(self): """Test that the ``_send_intent`` method works correctly.""" with async_patchers.patch_shell("output\r\nretcode")[self.PATCH_KEY]: - result = await self.ftv._send_intent("TEST", constants.INTENT_LAUNCH) + result = await self.ftv._send_intent("TEST", constants.INTENT_LAUNCH_FIRETV) self.assertEqual( getattr(self.ftv._adb, self.ADB_ATTR).shell_cmd, "monkey -p TEST -c android.intent.category.LAUNCHER 1; echo $?", @@ -54,7 +54,7 @@ async def test_send_intent(self): self.assertDictEqual(result, {"output": "output", "retcode": "retcode"}) with async_patchers.patch_connect(True)[self.PATCH_KEY], async_patchers.patch_shell(None)[self.PATCH_KEY]: - result = await self.ftv._send_intent("TEST", constants.INTENT_LAUNCH) + result = await self.ftv._send_intent("TEST", constants.INTENT_LAUNCH_FIRETV) self.assertEqual( getattr(self.ftv._adb, self.ADB_ATTR).shell_cmd, "monkey -p TEST -c android.intent.category.LAUNCHER 1; echo $?", @@ -66,7 +66,7 @@ async def test_launch_app_stop_app(self): """Test that the ``FireTVAsync.launch_app`` and ``FireTVAsync.stop_app`` methods work correctly.""" with async_patchers.patch_shell("")[self.PATCH_KEY]: await self.ftv.launch_app("TEST") - self.assertEqual(getattr(self.ftv._adb, self.ADB_ATTR).shell_cmd, constants.CMD_LAUNCH_APP.format("TEST")) + self.assertEqual(getattr(self.ftv._adb, self.ADB_ATTR).shell_cmd, constants.CMD_LAUNCH_APP_FIRETV.format("TEST")) await self.ftv.stop_app("TEST") self.assertEqual(getattr(self.ftv._adb, self.ADB_ATTR).shell_cmd, "am force-stop TEST") diff --git a/tests/test_firetv_sync.py b/tests/test_firetv_sync.py index 7dc61c05..d2838f8c 100644 --- a/tests/test_firetv_sync.py +++ b/tests/test_firetv_sync.py @@ -64,7 +64,7 @@ def test_turn_on_off(self): def test_send_intent(self): """Test that the ``_send_intent`` method works correctly.""" with patchers.patch_connect(True)[self.PATCH_KEY], patchers.patch_shell("output\r\nretcode")[self.PATCH_KEY]: - result = self.ftv._send_intent("TEST", constants.INTENT_LAUNCH) + result = self.ftv._send_intent("TEST", constants.INTENT_LAUNCH_FIRETV) self.assertEqual( getattr(self.ftv._adb, self.ADB_ATTR).shell_cmd, "monkey -p TEST -c android.intent.category.LAUNCHER 1; echo $?", @@ -72,7 +72,7 @@ def test_send_intent(self): self.assertDictEqual(result, {"output": "output", "retcode": "retcode"}) with patchers.patch_connect(True)[self.PATCH_KEY], patchers.patch_shell(None)[self.PATCH_KEY]: - result = self.ftv._send_intent("TEST", constants.INTENT_LAUNCH) + result = self.ftv._send_intent("TEST", constants.INTENT_LAUNCH_FIRETV) self.assertEqual( getattr(self.ftv._adb, self.ADB_ATTR).shell_cmd, "monkey -p TEST -c android.intent.category.LAUNCHER 1; echo $?", @@ -83,7 +83,7 @@ def test_launch_app_stop_app(self): """Test that the ``FireTVSync.launch_app`` and ``FireTVSync.stop_app`` methods work correctly.""" with patchers.patch_connect(True)[self.PATCH_KEY], patchers.patch_shell(None)[self.PATCH_KEY]: self.ftv.launch_app("TEST") - self.assertEqual(getattr(self.ftv._adb, self.ADB_ATTR).shell_cmd, constants.CMD_LAUNCH_APP.format("TEST")) + self.assertEqual(getattr(self.ftv._adb, self.ADB_ATTR).shell_cmd, constants.CMD_LAUNCH_APP_FIRETV.format("TEST")) self.ftv.stop_app("TEST") self.assertEqual(getattr(self.ftv._adb, self.ADB_ATTR).shell_cmd, "am force-stop TEST") From 50be2fb09aacc5077691b4bbab943519f3b30792 Mon Sep 17 00:00:00 2001 From: Phil Harrison Date: Sat, 12 Mar 2022 17:46:35 +0000 Subject: [PATCH 09/14] Formatting (line length) fixes --- tests/test_firetv_async.py | 3 ++- tests/test_firetv_sync.py | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/tests/test_firetv_async.py b/tests/test_firetv_async.py index 2e477720..978dc83c 100644 --- a/tests/test_firetv_async.py +++ b/tests/test_firetv_async.py @@ -66,7 +66,8 @@ async def test_launch_app_stop_app(self): """Test that the ``FireTVAsync.launch_app`` and ``FireTVAsync.stop_app`` methods work correctly.""" with async_patchers.patch_shell("")[self.PATCH_KEY]: await self.ftv.launch_app("TEST") - self.assertEqual(getattr(self.ftv._adb, self.ADB_ATTR).shell_cmd, constants.CMD_LAUNCH_APP_FIRETV.format("TEST")) + self.assertEqual(getattr(self.ftv._adb, self.ADB_ATTR).shell_cmd, + constants.CMD_LAUNCH_APP_FIRETV.format("TEST")) await self.ftv.stop_app("TEST") self.assertEqual(getattr(self.ftv._adb, self.ADB_ATTR).shell_cmd, "am force-stop TEST") diff --git a/tests/test_firetv_sync.py b/tests/test_firetv_sync.py index d2838f8c..aa1b5597 100644 --- a/tests/test_firetv_sync.py +++ b/tests/test_firetv_sync.py @@ -83,7 +83,8 @@ def test_launch_app_stop_app(self): """Test that the ``FireTVSync.launch_app`` and ``FireTVSync.stop_app`` methods work correctly.""" with patchers.patch_connect(True)[self.PATCH_KEY], patchers.patch_shell(None)[self.PATCH_KEY]: self.ftv.launch_app("TEST") - self.assertEqual(getattr(self.ftv._adb, self.ADB_ATTR).shell_cmd, constants.CMD_LAUNCH_APP_FIRETV.format("TEST")) + self.assertEqual(getattr(self.ftv._adb, self.ADB_ATTR).shell_cmd, + constants.CMD_LAUNCH_APP_FIRETV.format("TEST")) self.ftv.stop_app("TEST") self.assertEqual(getattr(self.ftv._adb, self.ADB_ATTR).shell_cmd, "am force-stop TEST") From 4b0aae80ae75b9a2d2ff32ce10e2c47979b22725 Mon Sep 17 00:00:00 2001 From: Phil Harrison Date: Sat, 12 Mar 2022 18:49:36 +0000 Subject: [PATCH 10/14] More formatting changes --- .gitignore | 1 + tests/test_firetv_async.py | 5 +++-- tests/test_firetv_sync.py | 5 +++-- 3 files changed, 7 insertions(+), 4 deletions(-) diff --git a/.gitignore b/.gitignore index 84a204f8..c101db99 100644 --- a/.gitignore +++ b/.gitignore @@ -9,6 +9,7 @@ androidtv.egg-info build/ dist/ .vs/ +.vscode/ # Documentation docs/build/ diff --git a/tests/test_firetv_async.py b/tests/test_firetv_async.py index 978dc83c..b0aac7a8 100644 --- a/tests/test_firetv_async.py +++ b/tests/test_firetv_async.py @@ -66,8 +66,9 @@ async def test_launch_app_stop_app(self): """Test that the ``FireTVAsync.launch_app`` and ``FireTVAsync.stop_app`` methods work correctly.""" with async_patchers.patch_shell("")[self.PATCH_KEY]: await self.ftv.launch_app("TEST") - self.assertEqual(getattr(self.ftv._adb, self.ADB_ATTR).shell_cmd, - constants.CMD_LAUNCH_APP_FIRETV.format("TEST")) + self.assertEqual( + getattr(self.ftv._adb, self.ADB_ATTR).shell_cmd, constants.CMD_LAUNCH_APP_FIRETV.format("TEST") + ) await self.ftv.stop_app("TEST") self.assertEqual(getattr(self.ftv._adb, self.ADB_ATTR).shell_cmd, "am force-stop TEST") diff --git a/tests/test_firetv_sync.py b/tests/test_firetv_sync.py index aa1b5597..f5f9906e 100644 --- a/tests/test_firetv_sync.py +++ b/tests/test_firetv_sync.py @@ -83,8 +83,9 @@ def test_launch_app_stop_app(self): """Test that the ``FireTVSync.launch_app`` and ``FireTVSync.stop_app`` methods work correctly.""" with patchers.patch_connect(True)[self.PATCH_KEY], patchers.patch_shell(None)[self.PATCH_KEY]: self.ftv.launch_app("TEST") - self.assertEqual(getattr(self.ftv._adb, self.ADB_ATTR).shell_cmd, - constants.CMD_LAUNCH_APP_FIRETV.format("TEST")) + self.assertEqual( + getattr(self.ftv._adb, self.ADB_ATTR).shell_cmd, constants.CMD_LAUNCH_APP_FIRETV.format("TEST") + ) self.ftv.stop_app("TEST") self.assertEqual(getattr(self.ftv._adb, self.ADB_ATTR).shell_cmd, "am force-stop TEST") From 0a726b963e3585db065f2d3203d2fd4dc23cd735 Mon Sep 17 00:00:00 2001 From: Phil Harrison Date: Sun, 13 Mar 2022 11:26:30 +0000 Subject: [PATCH 11/14] Added missing tests --- tests/test_androidtv_async.py | 31 +++++++++++++++++++++++++++++++ tests/test_androidtv_sync.py | 29 +++++++++++++++++++++++++++++ 2 files changed, 60 insertions(+) diff --git a/tests/test_androidtv_async.py b/tests/test_androidtv_async.py index 98fbc378..b4bca87a 100644 --- a/tests/test_androidtv_async.py +++ b/tests/test_androidtv_async.py @@ -93,6 +93,37 @@ async def test_start_intent(self): getattr(self.atv._adb, self.ADB_ATTR).shell_cmd, "am start -a android.intent.action.VIEW -d TEST" ) + @awaiter + async def test_send_intent(self): + """Test that the ``_send_intent`` method works correctly.""" + with async_patchers.patch_shell("output\r\nretcode")[self.PATCH_KEY]: + result = await self.atv._send_intent("TEST", constants.INTENT_LAUNCH) + self.assertEqual( + getattr(self.atv._adb, self.ADB_ATTR).shell_cmd, + "monkey -p TEST -c android.intent.category.LEANBACK_LAUNCHER 1; echo $?", + ) + self.assertDictEqual(result, {"output": "output", "retcode": "retcode"}) + + with async_patchers.patch_connect(True)[self.PATCH_KEY], async_patchers.patch_shell(None)[self.PATCH_KEY]: + result = await self.atv._send_intent("TEST", constants.INTENT_LAUNCH) + self.assertEqual( + getattr(self.atv._adb, self.ADB_ATTR).shell_cmd, + "monkey -p TEST -c android.intent.category.LEANBACK_LAUNCHER 1; echo $?", + ) + self.assertDictEqual(result, {}) + + @awaiter + async def test_launch_app_stop_app(self): + """Test that the ``AndroidTVAsync.launch_app`` and ``AndroidTVAsync.stop_app`` methods work correctly.""" + with async_patchers.patch_shell("")[self.PATCH_KEY]: + await self.atv.launch_app("TEST") + self.assertEqual( + getattr(self.atv._adb, self.ADB_ATTR).shell_cmd, constants.CMD_LAUNCH_APP.format("TEST") + ) + + await self.atv.stop_app("TEST") + self.assertEqual(getattr(self.atv._adb, self.ADB_ATTR).shell_cmd, "am force-stop TEST") + @awaiter async def test_running_apps(self): """Check that the ``running_apps`` property works correctly.""" diff --git a/tests/test_androidtv_sync.py b/tests/test_androidtv_sync.py index b87a60be..1cce3ea9 100644 --- a/tests/test_androidtv_sync.py +++ b/tests/test_androidtv_sync.py @@ -123,6 +123,35 @@ def test_start_intent(self): getattr(self.atv._adb, self.ADB_ATTR).shell_cmd, "am start -a android.intent.action.VIEW -d TEST" ) + def test_send_intent(self): + """Test that the ``_send_intent`` method works correctly.""" + with patchers.patch_connect(True)[self.PATCH_KEY], patchers.patch_shell("output\r\nretcode")[self.PATCH_KEY]: + result = self.atv._send_intent("TEST", constants.INTENT_LAUNCH) + self.assertEqual( + getattr(self.atv._adb, self.ADB_ATTR).shell_cmd, + "monkey -p TEST -c android.intent.category.LEANBACK_LAUNCHER 1; echo $?", + ) + self.assertDictEqual(result, {"output": "output", "retcode": "retcode"}) + + with patchers.patch_connect(True)[self.PATCH_KEY], patchers.patch_shell(None)[self.PATCH_KEY]: + result = self.atv._send_intent("TEST", constants.INTENT_LAUNCH) + self.assertEqual( + getattr(self.atv._adb, self.ADB_ATTR).shell_cmd, + "monkey -p TEST -c android.intent.category.LEANBACK_LAUNCHER 1; echo $?", + ) + self.assertDictEqual(result, {}) + + def test_launch_app_stop_app(self): + """Test that the ``AndroidTVSync.launch_app`` and ``AndroidTVSync.stop_app`` methods work correctly.""" + with patchers.patch_connect(True)[self.PATCH_KEY], patchers.patch_shell(None)[self.PATCH_KEY]: + self.atv.launch_app("TEST") + self.assertEqual( + getattr(self.atv._adb, self.ADB_ATTR).shell_cmd, constants.CMD_LAUNCH_APP.format("TEST") + ) + + self.atv.stop_app("TEST") + self.assertEqual(getattr(self.atv._adb, self.ADB_ATTR).shell_cmd, "am force-stop TEST") + def test_running_apps(self): """Check that the ``running_apps`` property works correctly.""" with patchers.patch_shell(None)[self.PATCH_KEY]: From 1b1ac875d3f6acc998bd54a65c6d45660bcdb7ab Mon Sep 17 00:00:00 2001 From: Phil Harrison Date: Sun, 13 Mar 2022 11:43:09 +0000 Subject: [PATCH 12/14] Formatting (again....) --- tests/test_androidtv_async.py | 4 +--- tests/test_androidtv_sync.py | 4 +--- 2 files changed, 2 insertions(+), 6 deletions(-) diff --git a/tests/test_androidtv_async.py b/tests/test_androidtv_async.py index b4bca87a..700ee3d5 100644 --- a/tests/test_androidtv_async.py +++ b/tests/test_androidtv_async.py @@ -117,9 +117,7 @@ async def test_launch_app_stop_app(self): """Test that the ``AndroidTVAsync.launch_app`` and ``AndroidTVAsync.stop_app`` methods work correctly.""" with async_patchers.patch_shell("")[self.PATCH_KEY]: await self.atv.launch_app("TEST") - self.assertEqual( - getattr(self.atv._adb, self.ADB_ATTR).shell_cmd, constants.CMD_LAUNCH_APP.format("TEST") - ) + self.assertEqual(getattr(self.atv._adb, self.ADB_ATTR).shell_cmd, constants.CMD_LAUNCH_APP.format("TEST")) await self.atv.stop_app("TEST") self.assertEqual(getattr(self.atv._adb, self.ADB_ATTR).shell_cmd, "am force-stop TEST") diff --git a/tests/test_androidtv_sync.py b/tests/test_androidtv_sync.py index 1cce3ea9..3aa22d50 100644 --- a/tests/test_androidtv_sync.py +++ b/tests/test_androidtv_sync.py @@ -145,9 +145,7 @@ def test_launch_app_stop_app(self): """Test that the ``AndroidTVSync.launch_app`` and ``AndroidTVSync.stop_app`` methods work correctly.""" with patchers.patch_connect(True)[self.PATCH_KEY], patchers.patch_shell(None)[self.PATCH_KEY]: self.atv.launch_app("TEST") - self.assertEqual( - getattr(self.atv._adb, self.ADB_ATTR).shell_cmd, constants.CMD_LAUNCH_APP.format("TEST") - ) + self.assertEqual(getattr(self.atv._adb, self.ADB_ATTR).shell_cmd, constants.CMD_LAUNCH_APP.format("TEST")) self.atv.stop_app("TEST") self.assertEqual(getattr(self.atv._adb, self.ADB_ATTR).shell_cmd, "am force-stop TEST") From 7191351c9a74c2afcc099ccd8a8c42223be01f5b Mon Sep 17 00:00:00 2001 From: Jeff Irion Date: Sun, 13 Mar 2022 09:58:21 -0700 Subject: [PATCH 13/14] Apply suggestions from code review --- .gitignore | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index c101db99..257e1dad 100644 --- a/.gitignore +++ b/.gitignore @@ -7,9 +7,9 @@ androidtv.egg-info # Build files .eggs/ build/ -dist/ .vs/ .vscode/ +dist/ # Documentation docs/build/ From 2c23e2cec43bc59a20f914eb913664f442d5269e Mon Sep 17 00:00:00 2001 From: Jeff Irion Date: Sun, 13 Mar 2022 10:00:55 -0700 Subject: [PATCH 14/14] Apply suggestions from code review --- .gitignore | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.gitignore b/.gitignore index 257e1dad..b87b6855 100644 --- a/.gitignore +++ b/.gitignore @@ -4,11 +4,11 @@ **/__pycache__/ androidtv.egg-info -# Build files +# Build / development files .eggs/ -build/ .vs/ .vscode/ +build/ dist/ # Documentation