Revision 3f2f55bb test/ganeti.qlang_unittest.py

b/test/ganeti.qlang_unittest.py
22 22
"""Script for testing ganeti.qlang"""
23 23

  
24 24
import unittest
25
import string
25 26

  
26 27
from ganeti import utils
27 28
from ganeti import errors
......
52 53
  def setUp(self):
53 54
    self.parser = qlang.BuildFilterParser()
54 55

  
55
  def _Test(self, filter_, expected):
56
  def _Test(self, filter_, expected, expect_filter=True):
57
    if expect_filter:
58
      self.assertTrue(qlang.MaybeFilter(filter_),
59
                      msg="'%s' was not recognized as a filter" % filter_)
60
    else:
61
      self.assertFalse(qlang.MaybeFilter(filter_),
62
                       msg=("'%s' should not be recognized as a filter" %
63
                            filter_))
56 64
    self.assertEqual(qlang.ParseFilter(filter_, parser=self.parser), expected)
57 65

  
58 66
  def test(self):
......
90 98
                             [qlang.OP_TRUE, "field"]])
91 99
    self._Test("mem == 128", [qlang.OP_EQUAL, "mem", 128])
92 100
    self._Test("negfield != -1", [qlang.OP_NOT_EQUAL, "negfield", -1])
93
    self._Test("master", [qlang.OP_TRUE, "master"])
101
    self._Test("master", [qlang.OP_TRUE, "master"],
102
               expect_filter=False)
94 103
    self._Test("not master", [qlang.OP_NOT, [qlang.OP_TRUE, "master"]])
95 104
    for op in ["not", "and", "or"]:
96
      self._Test("%sxyz" % op, [qlang.OP_TRUE, "%sxyz" % op])
105
      self._Test("%sxyz" % op, [qlang.OP_TRUE, "%sxyz" % op],
106
                 expect_filter=False)
97 107
      self._Test("not %sxyz" % op,
98 108
                 [qlang.OP_NOT, [qlang.OP_TRUE, "%sxyz" % op]])
99 109
      self._Test("  not \t%sfoo" % op,
......
166 176
        self.fail("Invalid filter '%s' did not raise exception" % filter_)
167 177

  
168 178

  
179
class TestMaybeFilter(unittest.TestCase):
180
  def test(self):
181
    self.assertTrue(qlang.MaybeFilter(""))
182
    self.assertTrue(qlang.MaybeFilter("foo/bar"))
183
    self.assertTrue(qlang.MaybeFilter("foo==bar"))
184

  
185
    for i in set("()!~" + string.whitespace) | qlang.FILTER_DETECTION_CHARS:
186
      self.assertTrue(qlang.MaybeFilter(i),
187
                      msg="%r not recognized as filter" % i)
188

  
189
    self.assertFalse(qlang.MaybeFilter("node1"))
190
    self.assertFalse(qlang.MaybeFilter("n-o-d-e"))
191
    self.assertFalse(qlang.MaybeFilter("n_o_d_e"))
192
    self.assertFalse(qlang.MaybeFilter("node1.example.com"))
193
    self.assertFalse(qlang.MaybeFilter("node1.example.com."))
194

  
195

  
169 196
if __name__ == "__main__":
170 197
  testutils.GanetiTestProgram()

Also available in: Unified diff