~andreserl/pyjuju/maas_provider_distro_series

« back to all changes in this revision

Viewing changes to juju/lib/tests/test_format.py

  • Committer: Jim Baker
  • Date: 2012-09-10 18:28:40 UTC
  • mfrom: (570.2.7 format-2-raw)
  • Revision ID: jim.baker@canonical.com-20120910182840-9rfts18sbp30id5g
merge format-2-raw [r=hazmat][f=1044632]

Modifies format 2 support so that it supports the use of raw strings.

Show diffs side-by-side

added added

removed removed

Lines of Context:
223
223
    def assert_parse(self, data):
224
224
        """Verify input parses as expected, including from a data file"""
225
225
        formatter = YAMLFormat()
226
 
        formatted = formatter.format(data)
 
226
        formatted = formatter.format_raw(data)
227
227
        data_file = self.makeFile(formatted)
228
228
        kvs = ["formatted=%s" % formatted,
229
229
               "file=@%s" % data_file]
234
234
    def test_parse_keyvalue_pairs(self):
235
235
        """Verify key value pairs parse for a wide range of YAML inputs."""
236
236
        formatter = YAMLFormat()
237
 
        self.assert_parse(None)
238
237
        self.assert_parse("")
239
238
        self.assert_parse("A string")
240
239
        self.assert_parse("High bytes: \xCA\xFE")
241
 
        self.assert_parse(u"")
242
 
        self.assert_parse(u"A unicode string (but really ascii)")
243
 
        self.assert_parse(u"中文")
244
 
        self.assert_parse({})
245
 
        self.assert_parse(
246
 
            {u"public-address": u"ec2-1-2-3-4.compute-1.amazonaws.com",
247
 
             u"foo": u"bar",
248
 
             u"configured": True})
249
 
        self.assert_parse([])
250
 
        self.assert_parse(["abc", "xyz", 42, True])
251
 
        self.assert_parse(False)
252
 
        self.assert_parse(True)
253
 
        self.assert_parse(0.0)
254
 
        self.assert_parse(3.14159)
255
 
        self.assert_parse(6.02214178e23)
256
 
        self.assert_parse(0)
257
 
        self.assert_parse(42)
258
240
 
259
241
        # Raises an error if no such file
260
242
        e = self.assertRaises(
271
253
        self.assertEquals(
272
254
            str(e), "Expected `option=value`. Found `foobar`")
273
255
 
274
 
        # Raises an error if the value is invalid YAML
275
 
        e = self.assertRaises(
276
 
            JujuError,
277
 
            formatter.parse_keyvalue_pairs, ["content=\xCA\FE"])
278
 
        self.assertEquals(
279
 
            str(e),
280
 
            "Invalid YAML value (argument:content)")
281
 
 
282
256
    def assert_dump_load(self, data, expected):
283
257
        """Asserts expected formatting and roundtrip through dump/load"""
284
258
        formatter = YAMLFormat()
320
294
        self.assert_dump_load(42, "data: 42")
321
295
 
322
296
    def test_should_delete(self):
323
 
        """Verify only `None` values (as YAML loaded) indicate deletion"""
324
 
        formatter = YAMLFormat()
 
297
        """Verify empty or whitespace only strings indicate deletion"""
 
298
        formatter = PythonFormat()
325
299
        self.assertFalse(formatter.should_delete("0"))
326
300
        self.assertFalse(formatter.should_delete("something"))
327
 
        self.assertFalse(formatter.should_delete(""))
328
 
        self.assertFalse(formatter.should_delete("   "))
329
 
        self.assertFalse(formatter.should_delete(0))
330
 
        self.assertTrue(formatter.should_delete(None))
 
301
        self.assertTrue(formatter.should_delete(""))
 
302
        self.assertTrue(formatter.should_delete("   "))
 
303
 
 
304
        # Verify that format: 1 can only work with str values
 
305
        e = self.assertRaises(AttributeError, formatter.should_delete, 42)
 
306
        self.assertEqual(str(e), "'int' object has no attribute 'strip'")
 
307
        e = self.assertRaises(AttributeError, formatter.should_delete, None)
 
308
        self.assertEqual(str(e), "'NoneType' object has no attribute 'strip'")