Remove commission flag validator as it is not required

PiperOrigin-RevId: 581803494
diff --git a/ui_automator/ui_automator.py b/ui_automator/ui_automator.py
index 41b2bad..10f6fac 100644
--- a/ui_automator/ui_automator.py
+++ b/ui_automator/ui_automator.py
@@ -105,13 +105,6 @@
     )
 
 
-flags.register_validator(
-    'commission',
-    lambda value: value and len(value) == 3,
-    message=_COMMISSIONING_FLAG_USAGE_GUIDE,
-)
-
-
 def get_android_device_ready(func: Callable[..., Any]) -> Callable[..., Any]:
   """A decorator to check if an Android device can be controlled by installed apk.
 
@@ -312,11 +305,16 @@
 def _process_flags(ui_automator: UIAutomator) -> None:
   """Does specific action based on given flag values."""
   if _COMMISSION.value:
+    if len(_COMMISSION.value) != 3:
+      raise flags.IllegalFlagValueError(_COMMISSIONING_FLAG_USAGE_GUIDE)
+
     ui_automator.commission_device(*_COMMISSION.value)
+
   if _DECOMMISSION.value:
     ui_automator.decommission_device(_DECOMMISSION.value)
 
 
+# TODO(b/309745485): Type of argv should be Squence[str].
 def _main(argv) -> None:
   if argv and len(argv) > 1:
     raise app.UsageError(f'Too many command-line arguments: {argv!r}')
diff --git a/ui_automator/ui_automator_test.py b/ui_automator/ui_automator_test.py
index 637e97b..66eba17 100644
--- a/ui_automator/ui_automator_test.py
+++ b/ui_automator/ui_automator_test.py
@@ -19,6 +19,7 @@
 import unittest
 from unittest import mock
 
+from absl import flags
 from absl.testing import flagsaver
 from mobly.controllers import android_device
 from mobly.controllers.android_device_lib import adb
@@ -53,7 +54,11 @@
 _FAKE_SYS_ARGV_FOR_COMMISSIONING_WITH_INVALID_LENGTH = [
     _PYTHON_BIN_PATH + 'ui-automator',
     '--commission',
-    '',
+    'm5',
+]
+_FAKE_SYS_ARGV_FOR_COMMISSIONING_WITH_EMPTY_VALUE = [
+    _PYTHON_BIN_PATH + 'ui-automator',
+    '--commission',
 ]
 
 
@@ -450,25 +455,37 @@
     mock_commission_device.assert_called_once_with(
         mock.ANY, 'm5stack', '34970112332', 'Office'
     )
-    mock_exit.assert_called()
+    mock_exit.assert_called_once()
 
-  @mock.patch.object(sys.stderr, 'write', autospec=True)
-  @mock.patch.object(sys, 'exit', autospec=True)
-  def test_commission_with_cmd_invalid_arg_should_stderr(
-      self, mock_exit, mock_stderr_write
+  @flagsaver.flagsaver(
+      (ui_automator._COMMISSION, ['m5'])
+  )
+  def test_commission_with_cmd_invalid_arg_should_raise_an_error(
+      self
   ):
     with mock.patch.object(
         sys, 'argv', _FAKE_SYS_ARGV_FOR_COMMISSIONING_WITH_INVALID_LENGTH
     ):
+      with self.assertRaises(flags.IllegalFlagValueError):
+        ui_automator.run()
+
+    self.mock_android_device.mbs.commissionDevice.assert_not_called()
+
+  @mock.patch.object(sys.stderr, 'write', autospec=True)
+  @mock.patch.object(sys, 'exit', autospec=True)
+  def test_commission_with_cmd_invalid_args_should_stderr(
+      self, mock_exit, mock_stderr_write
+  ):
+    with mock.patch.object(
+        sys, 'argv', _FAKE_SYS_ARGV_FOR_COMMISSIONING_WITH_EMPTY_VALUE
+    ):
       ui_automator.run()
 
     self.assertEqual(mock_stderr_write.call_count, 2)
     first_call_args = ''.join(mock_stderr_write.call_args_list[0][0])
     self.assertEqual(
         first_call_args,
-        'FATAL Flags parsing error: flag --commission=[]: Use'
-        ' --commission {DeviceName},{PairingCode},{GHARoom} to commission a'
-        ' device to google fabric on GHA.\n',
+        'FATAL Flags parsing error: Missing value for flag --commission\n',
     )
     second_call_args = ''.join(mock_stderr_write.call_args_list[1][0])
     self.assertEqual(
@@ -496,7 +513,7 @@
 
     mock_commission_device.assert_not_called()
     mock_decommission_device.assert_called_once_with(mock.ANY, 'm5stack')
-    mock_exit.assert_called()
+    mock_exit.assert_called_once()
 
   @mock.patch.object(android_device, 'get_all_instances', autospec=True)
   def test_decommission_device_raises_an_error_with_invalid_device_name(