Add gerrit_client unit tests

Change-Id: Id4ca28da6c38f6403636ef8c4de5dae1206cb499
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/tools/depot_tools/+/2106518
Reviewed-by: Edward Lesmes <ehmaldonado@chromium.org>
Commit-Queue: Josip Sokcevic <sokcevic@google.com>
diff --git a/gerrit_client.py b/gerrit_client.py
index ccf78b5..6b3e9de 100755
--- a/gerrit_client.py
+++ b/gerrit_client.py
@@ -16,8 +16,13 @@
 import optparse
 import subcommand
 import sys
-import urllib
-import urlparse
+
+if sys.version_info.major == 2:
+  import urlparse
+  from urllib import quote_plus
+else:
+  from urllib.parse import quote_plus
+  import urllib.parse as urlparse
 
 import fix_encoding
 import gerrit_util
@@ -38,8 +43,8 @@
 
   (opt, args) = parser.parse_args(args)
   host = urlparse.urlparse(opt.host).netloc
-  project = urllib.quote_plus(opt.project)
-  branch = urllib.quote_plus(opt.branch)
+  project = quote_plus(opt.project)
+  branch = quote_plus(opt.branch)
   result = gerrit_util.GetGerritBranch(host, project, branch)
   logging.info(result)
   write_result(result, opt)
@@ -51,11 +56,14 @@
   parser.add_option('--commit', dest='commit', help='commit hash')
 
   (opt, args) = parser.parse_args(args)
+  assert opt.project, "--project not defined"
+  assert opt.branch, "--branch not defined"
+  assert opt.commit, "--commit not defined"
 
-  project = urllib.quote_plus(opt.project)
+  project = quote_plus(opt.project)
   host = urlparse.urlparse(opt.host).netloc
-  branch = urllib.quote_plus(opt.branch)
-  commit = urllib.quote_plus(opt.commit)
+  branch = quote_plus(opt.branch)
+  commit = quote_plus(opt.commit)
   result = gerrit_util.CreateGerritBranch(host, project, branch, commit)
   logging.info(result)
   write_result(result, opt)
@@ -92,6 +100,7 @@
   parser.add_option('-m', '--message', default='', help='reason for abandoning')
 
   (opt, args) = parser.parse_args(args)
+  assert opt.change, "-c not defined"
   result = gerrit_util.AbandonChange(
       urlparse.urlparse(opt.host).netloc,
       opt.change, opt.message)
@@ -102,8 +111,7 @@
 class OptionParser(optparse.OptionParser):
   """Creates the option parse and add --verbose support."""
   def __init__(self, *args, **kwargs):
-    optparse.OptionParser.__init__(
-        self, *args, prog='git cl', version=__version__, **kwargs)
+    optparse.OptionParser.__init__(self, *args, version=__version__, **kwargs)
     self.add_option(
         '--verbose', action='count', default=0,
         help='Use 2 times for more debugging info')
@@ -114,6 +122,8 @@
 
   def parse_args(self, args=None, values=None):
     options, args = optparse.OptionParser.parse_args(self, args, values)
+    # Host is always required
+    assert options.host, "--host not defined."
     levels = [logging.WARNING, logging.INFO, logging.DEBUG]
     logging.basicConfig(level=levels[min(options.verbose, len(levels) - 1)])
     return options, args