Implement git cl upload -b BUG --bug=BUG.

CC=friedman@chromium.org
R=sergiyb@chromium.org
BUG=500658

Review-Url: https://codereview.chromium.org/2117483002
diff --git a/tests/git_cl_test.py b/tests/git_cl_test.py
index 902fd07..c500b81 100755
--- a/tests/git_cl_test.py
+++ b/tests/git_cl_test.py
@@ -208,6 +208,16 @@
          123, 4, 'chrome-review.source.com')
     test('https://chrome-review.source.com/bad/123/4', fail=True)
 
+  def test_get_bug_line_values(self):
+    f = lambda p, bugs: list(git_cl._get_bug_line_values(p, bugs))
+    self.assertEqual(f('', ''), [])
+    self.assertEqual(f('', '123,v8:456'), ['123', 'v8:456'])
+    self.assertEqual(f('v8', '456'), ['v8:456'])
+    self.assertEqual(f('v8', 'chromium:123,456'), ['v8:456', 'chromium:123'])
+    # Not nice, but not worth carying.
+    self.assertEqual(f('v8', 'chromium:123,456,v8:123'),
+                     ['v8:456', 'chromium:123', 'v8:123'])
+
 
 class TestGitCl(TestCase):
   def setUp(self):
@@ -688,6 +698,14 @@
       self.assertEqual(
           'Must specify reviewers to send email.\n', stderr.getvalue())
 
+  def test_bug_on_cmd(self):
+    self._run_reviewer_test(
+        ['--bug=500658,proj:123'],
+        'desc\n\nBUG=500658\nBUG=proj:123',
+        '# Blah blah comment.\ndesc\n\nBUG=500658\nBUG=proj:1234',
+        'desc\n\nBUG=500658\nBUG=proj:1234',
+        [])
+
   def test_dcommit(self):
     self.mock(git_cl.sys, 'stdout', StringIO.StringIO())
     self.calls = (