Rev 5833: (mbp) add RuleSearcher.get_single_value() (Martin Pool) in file:///home/pqm/archives/thelove/bzr/%2Btrunk/

Canonical.com Patch Queue Manager pqm at pqm.ubuntu.com
Thu May 5 18:05:53 UTC 2011


At file:///home/pqm/archives/thelove/bzr/%2Btrunk/

------------------------------------------------------------
revno: 5833 [merge]
revision-id: pqm at pqm.ubuntu.com-20110505180506-ddz84ffyd1kzt6r1
parent: pqm at pqm.ubuntu.com-20110505111920-5fr176fp585jw922
parent: mbp at sourcefrog.net-20110419075211-3m94qorhr0rg3gzg
committer: Canonical.com Patch Queue Manager <pqm at pqm.ubuntu.com>
branch nick: +trunk
timestamp: Thu 2011-05-05 18:05:06 +0000
message:
  (mbp) add RuleSearcher.get_single_value() (Martin Pool)
modified:
  bzrlib/rules.py                properties.py-20080506032617-9k06uqalkf09ck0z-1
  bzrlib/tests/test_rules.py     test_properties.py-20080506033501-3p9kmuob25dho8xl-1
=== modified file 'bzrlib/rules.py'
--- a/bzrlib/rules.py	2010-11-05 20:54:32 +0000
+++ b/bzrlib/rules.py	2011-04-19 07:52:11 +0000
@@ -64,6 +64,15 @@
         """
         raise NotImplementedError(self.get_selected_items)
 
+    def get_single_value(self, path, preference_name):
+        """Get a single preference for a single file.
+        
+        :returns: The string preference value, or None.
+        """
+        for key, value in self.get_selected_items(path, [preference_name]):
+            return value
+        return None
+
 
 class _IniBasedRulesSearcher(_RulesSearcher):
 

=== modified file 'bzrlib/tests/test_rules.py'
--- a/bzrlib/tests/test_rules.py	2011-01-12 01:01:53 +0000
+++ b/bzrlib/tests/test_rules.py	2011-04-19 07:52:11 +0000
@@ -43,11 +43,13 @@
         rs = self.make_searcher(None)
         self.assertEquals((), rs.get_items('a.txt'))
         self.assertEquals((), rs.get_selected_items('a.txt', ['foo']))
+        self.assertEquals(None, rs.get_single_value('a.txt', 'foo'))
 
     def test_get_items_file_empty(self):
         rs = self.make_searcher("")
         self.assertEquals((), rs.get_items('a.txt'))
         self.assertEquals((), rs.get_selected_items('a.txt', ['foo']))
+        self.assertEquals(None, rs.get_single_value('a.txt', 'foo'))
 
     def test_get_items_from_extension_match(self):
         rs = self.make_searcher("[name *.txt]\nfoo=bar\na=True\n")
@@ -58,6 +60,7 @@
             rs.get_items('dir/a.txt'))
         self.assertEquals((('foo', 'bar'),),
             rs.get_selected_items('a.txt', ['foo']))
+        self.assertEquals('bar', rs.get_single_value('a.txt', 'foo'))
 
     def test_get_items_from_multiple_glob_match(self):
         rs = self.make_searcher(
@@ -71,12 +74,15 @@
             rs.get_items('x x'))
         self.assertEquals((('foo', 'bar'), ('a', 'True')),
             rs.get_items('y y'))
+        self.assertEquals('bar', rs.get_single_value('a.txt', 'foo'))
 
     def test_get_items_pathname_match(self):
         rs = self.make_searcher("[name ./a.txt]\nfoo=baz\n")
         self.assertEquals((('foo', 'baz'),),
             rs.get_items('a.txt'))
+        self.assertEquals('baz', rs.get_single_value('a.txt', 'foo'))
         self.assertEquals((), rs.get_items('dir/a.txt'))
+        self.assertEquals(None, rs.get_single_value('dir/a.txt', 'foo'))
 
     def test_get_items_match_first(self):
         rs = self.make_searcher(
@@ -84,8 +90,10 @@
             "[name *.txt]\nfoo=bar\na=True\n")
         self.assertEquals((('foo', 'baz'),),
             rs.get_items('a.txt'))
+        self.assertEquals('baz', rs.get_single_value('a.txt', 'foo'))
         self.assertEquals((('foo', 'bar'), ('a', 'True')),
             rs.get_items('dir/a.txt'))
+        self.assertEquals('bar', rs.get_single_value('dir/a.txt', 'foo'))
 
 
 class TestStackedRulesSearcher(tests.TestCase):
@@ -107,8 +115,12 @@
             "[name *.txt]\nfoo=bar\na=True\n")
         self.assertEquals((('foo', 'baz'),),
             rs.get_items('a.txt'))
+        self.assertEquals('baz', rs.get_single_value('a.txt', 'foo'))
+        self.assertEquals(None, rs.get_single_value('a.txt', 'a'))
         self.assertEquals((('foo', 'bar'), ('a', 'True')),
             rs.get_items('dir/a.txt'))
+        self.assertEquals('bar', rs.get_single_value('dir/a.txt', 'foo'))
+        self.assertEquals('True', rs.get_single_value('dir/a.txt', 'a'))
 
 
 class TestRulesPath(tests.TestCase):




More information about the bazaar-commits mailing list