Modify devserver and gmerge to be friendlier
1. If devserver detects that you are trying to build a cros_workon
package that isn't actually cros_workon'd, it will fail. This should
prevent an infrequent, but highly frustrating error case.
2. You can supply USE flags on the gmerge command line
3. Some unit tests added for gmerge
BUG=N0NE
TEST=unit tests + manual testing
Change-Id: I6dacdf16496efb90e18fba7a412339051eebc4e4
Review URL: http://codereview.chromium.org/6305004
diff --git a/gmerge_test.py b/gmerge_test.py
new file mode 100755
index 0000000..eab886c
--- /dev/null
+++ b/gmerge_test.py
@@ -0,0 +1,42 @@
+#!/usr/bin/python
+
+# Copyright (c) 2011 The Chromium OS Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+"""Unit tests for gmerge."""
+
+import gmerge
+import unittest
+
+class Flags(object):
+ def __init__(self, dictionary):
+ self.__dict__.update(dictionary)
+
+
+class GMergeTest(unittest.TestCase):
+ """Test for gmerge."""
+
+ def setUp(self):
+ self.lsb_release_lines = [
+ 'CHROMEOS_RELEASE_BOARD=x86-mario\r\n',
+ 'CHROMEOS_DEVSERVER=http://localhost:8080/\n']
+
+ def testLsbRelease(self):
+ merger = gmerge.GMerger(self.lsb_release_lines)
+ self.assertEqual({'CHROMEOS_RELEASE_BOARD': 'x86-mario',
+ 'CHROMEOS_DEVSERVER': 'http://localhost:8080/'},
+ merger.lsb_release)
+
+ def testPostData(self):
+ gmerge.FLAGS = Flags({'use': 'a b c d +e',
+ 'accept_stable': 'blah'})
+
+ merger = gmerge.GMerger(self.lsb_release_lines)
+ self.assertEqual(
+ 'use=a+b+c+d+%2Be&pkg=package_name&board=x86-mario&accept_stable=blah',
+ merger.GeneratePackageRequest('package_name'))
+
+
+if __name__ == '__main__':
+ unittest.main()