<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/99931>99931</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
lldb API tests fails with "NameError: name 'urlparse' is not defined" when run against an Android device
</td>
</tr>
<tr>
<th>Labels</th>
<td>
new issue
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
andrurogerz
</td>
</tr>
</table>
<pre>
22ea97d7bfd65abf68a68b13bf96ad69be23df54 removed the Python import for `urlparse` from lldb/packages/Python/lldbsuite/test/lldbplatformutil.py. This removal appears to be a mistake. The codepath that uses `urlparse` is only executed when running the tests against an Android device so the issue wasn't immediately apparent.
## Repro
### Steps
Repro steps using Fedora 39 with Android NDK r21c with a developer-enabled Android device attached via USB
1. `cd llvm-project`
2. `cmake -S llvm -B build -G Ninja -DLLVM_ENABLE_PROJECTS='clang;lldb' -DCMAKE_BUILD_TYPE=Release -DLLDB_ENABLE_PYTHON=On`
3. `adb push $ANDROID_NDK_ROOT/toolchains/llvm/prebuilt/linux-x86_64/lib64/clang/9.0.9/lib/linux/aarch64/lldb-server /data/local/tmp`
4. `./build/bin/lldb-dotest --arch aarch64 --out-of-tree-debugserver --platform-name=remote-android --platform-working-dir=/data/local/tmp/ds2 --platform-url=connect://localhost:5432 --compiler $ANDROID_NDK_ROOT/toolchains/llvm/prebuilt/linux-x86_64/bin/clang`
### Expected:
The test should execute and most should pass.
### Actual:
The lldb-dotest command will fail with the follow `NameError: name 'urlparse' is not defined``
## Log
```
Traceback (most recent call last):
File "/src/llvm/llvm-project/lldb/test/API/dotest.py", line 8, in <module>
lldbsuite.test.run_suite()
File "/src/llvm/llvm-project/lldb/packages/Python/lldbsuite/test/dotest.py", line 1064, in run_suite
visit("Test", dirpath, filenames)
File "/src/llvm/llvm-project/lldb/packages/Python/lldbsuite/test/dotest.py", line 706, in visit
visit_file(dir, name)
File "/src/llvm/llvm-project/lldb/packages/Python/lldbsuite/test/dotest.py", line 649, in visit_file
module = __import__(base)
^^^^^^^^^^^^^^^^
File "/src/llvm/llvm-project/lldb/test/API/functionalities/inferior-assert/TestInferiorAssert.py", line 10, in <module>
class AssertingInferiorTestCase(TestBase):
File "/src/llvm/llvm-project/lldb/test/API/functionalities/inferior-assert/TestInferiorAssert.py", line 26, in AssertingInferiorTestCase
@expectedFailureAndroid(api_levels=list(range(16 + 1))) # b.android.com/179836
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/src/llvm/llvm-project/lldb/packages/Python/lldbsuite/test/decorators.py", line 529, in expectedFailureAndroid
_skip_fn_for_android("xfailing on android", api_levels, archs)(), bugnumber
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/src/llvm/llvm-project/lldb/packages/Python/lldbsuite/test/decorators.py", line 402, in impl
result = lldbplatformutil.match_android_device(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/src/llvm/llvm-project/lldb/packages/Python/lldbsuite/test/lldbplatformutil.py", line 90, in match_android_device
if valid_api_levels is not None and android_device_api() not in valid_api_levels:
^^^^^^^^^^^^^^^^^^^^
File "/src/llvm/llvm-project/lldb/packages/Python/lldbsuite/test/lldbplatformutil.py", line 65, in android_device_api
parsed_url = urlparse(configuration.lldb_platform_url)
^^^^^^^^
NameError: name 'urlparse' is not defined
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzUWF1v6zbS_jX0zUCGTPlDvvCFHdnvmz1pEuSkC_RKoMSRxYYiBZJykv31C1KynKQ5i54W3bMFjEQaDofPzDwzJMWsFUeFuCGLHVlkE9a5WpsNU9x0Rh_R_GtSaP66oRTZesVXRcWXC1ZUy5Qt02KWFNV6yfhyXSBNeLWYg8FGn5CDqxHuX12tFYim1cZBpQ2QZdwZ2TJjkSxjqIxuQEpeEHpoWfnEjmgJPfTzCD34IdsJh4QeHFo3iFrJXKVN0zkhp-3rFB5rYfuVmQTWtsiMBaehQGDQCOvYE3othFJzbJmrwdXMQWfRfsQkLGglXwFfsOwccniuUYHplBLqGNzySCywIxPKOmAKtoobLThwPIkSweqgJqztEJ6ZVYSuHIimQS6YQ_nqITKDyk1JnJF4O_ylCaEJPGBr9FuJF3512NpeGMbBegF01mM6INeGQbKGZ-HqEc1t9gUMnZW9lHl0KHWLJkLFCon8I27mHCtr5HASDH7-uuvXm019hEoOUp6aqDX6VywdWcb9KO1HG_aEEH0NOhDtoOiE5BD9H9wK9SuDKLu5-edP-f52u7vZ5_cPd__YXz1-JUlG6KqUTB1JsutpsIIou_pp-2Wf736-vsnyx1_u9yTJHlAisxgMZbvR0C-P_393S5LsTo2AkgCI8QLaztZA6Hx7mz3cXWf5bfYlf7i7e_Rc0lqWtc9fYNSp8fwz6FEHjgnVvUQv6TJfzsNrEf73SOlhPY2n615-Vib0wJgp615f8iKyaE5ogNADZ455qS6Z9Gs37Qh2HsBOCT2EgPn_4sz7iGtPNIgibxgG8xBFunORriJnECOORXccloqic11EijVIksxXhMOIDWl-o_CszZNQx4gLE7LwGUh64Ja-ndQZSZKs1Ep5BiRbQg_nKbW2XrKYJ35GqZtWyOD9n49-H5E-9ue4fSyP_UuLpUPuQYWhx6FMwda6k_xczMAUh0Zf5C2z9pMi9Da3peuYfGfxbVpK3TTe2rOQEiomZF9mvvArLaV-9pm9ZQ3ujdGGJFvwSQFCV2OzoSvfbJR2wLESCrn37zMX4UYfh_de46z0aFiJBSufgNA0-GWwROWgZFKCZL5jrkcXAA5CegiU0IM15SX670q7p9-l427vrz0XgtvT9jVMvwIpFELqn4QCklw1mncSSbI_rwUwdu9pmGo6lQ_NPPWw_hCm37lLfIp2FntCBcAXLCPak7DCBWj0MRgJE7kwfrvwj5WQ6HNofwj4VbwcsPdA3-POPThCU1_P9CpQ7YegXM7Xb1H2sEaoPUeAJBnkeX8qyHNC04LZN3DJYv99vz9P7qpTpRNaMSmcCJ4LVaER2kTMWjRe05PiepBug_A39PqP1VBKZi30M4U6nk15s1fB_9Q_7oZQjDX7o72iZ9p9G_mQtnmMQxs-MCE7g8PxgtCUtSKX_vhhSZJJ4TGmhqmj93q2BEJ3MPNehx-Ab3nFdNi2pqX2_s5W6zRZ_lGK_Pd_f2npYakNc9rYD8la0HP5fSMVIxtz-yTavFJ5pU3OxkQRSl_8ZuaPlVrBOBCWeJNF_2bKOrTCvpvTKyi6o-qaAs3fJ0v_gzmcx3TIoWhaecmYQdtJF5rnb-5ADXNlfU5j3h_nfV5-WB7-ysh9cgN8G7_1uQ1_GpQxnKKCE5OC5xdWn09jt1r1J8X3c71mT_ag5fe4DwYuXfvvGrzlYgjeJ66PoQunV553RgY2Xs6zaalVJY6dYX7bmfq18vNiXv137PFh-HuPze-PxhO-Sfg6WbMJbmYrOlumcbpOJvWG02o1L3lMecqLsqJVPJ8viooWBS-SVZJOxIbGdB6vKKXxfJYkU1rRuGDJLMWUUs5Lv8c1TMipz8FUm-MkXPI36_U6mU0kK1Da8CWFUoXP_RcAH95FNjGbkDd_XSPz2O-B9mLFCSdx4-MF2_vr4QOD78O2v1UQSr83JpSOHy6-_ali0hm5qZ1r7XidOwpXd8Ww6X7OuOCWJ1rv9mlD_x0AAP__za6ZFg">