changeset 911:0cf576cea845

Make platform rules matching case-insensitive. Fixes #334. Patch with test by Anatoly Techtonik. Thanks!
author osimons
date Mon, 16 May 2011 21:57:27 +0000
parents 2c82cf261d9e
children 5bfdd7348d6f
files bitten/queue.py bitten/tests/queue.py
diffstat 2 files changed, 14 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/bitten/queue.py
+++ b/bitten/queue.py
@@ -184,7 +184,8 @@
                 for propname, pattern in ifilter(None, platform.rules):
                     try:
                         propvalue = properties.get(propname)
-                        if not propvalue or not re.match(pattern, propvalue):
+                        if not propvalue or not re.match(pattern,
+                                                         propvalue, re.I):
                             match = False
                             break
                     except re.error:
--- a/bitten/tests/queue.py
+++ b/bitten/tests/queue.py
@@ -450,6 +450,18 @@
         platforms = queue.match_slave('foo', {'family': 'nt'})
         self.assertEqual([], platforms)
 
+    def test_register_slave_match_case_insensitive(self):
+        BuildConfig(self.env, 'test', active=True).insert()
+        platform = TargetPlatform(self.env, config='test', name="Unix")
+        platform.rules.append(('os', 'LiNUX'))
+        platform.insert()
+        platform_id = platform.id
+
+        queue = BuildQueue(self.env)
+        platforms = queue.match_slave('foo', {'os': 'linux'})
+        self.assertEqual(1, len(platforms))
+        self.assertEqual(platform_id, platforms[0].id)
+
     def test_register_slave_match_regexp(self):
         BuildConfig(self.env, 'test', active=True).insert()
         platform = TargetPlatform(self.env, config='test', name="Unix")
Copyright (C) 2012-2017 Edgewall Software