Viewing file: test_augeas.py (8.06 KB) -rw-r--r-- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
from __future__ import print_function
import os import sys import unittest
__mydir = os.path.dirname(os.path.abspath(__file__)) if not os.path.isdir(__mydir): __mydir = os.getcwd()
sys.path.insert(0, __mydir + "/..")
import augeas
MYROOT = __mydir + "/testroot"
def recurmatch(aug, path): if path: if path != "/": val = aug.get(path) if val: yield (path, val)
m = [] if path != "/": aug.match(path) for i in m: for x in recurmatch(aug, i): yield x else: for i in aug.match(path + "/*"): for x in recurmatch(aug, i): yield x
class TestAugeas(unittest.TestCase): def test01aGetNone(self): "test aug_get with non-existing path" a = augeas.Augeas(root=MYROOT) self.assertIsNone(a.get("/wrong/path")) del a
def test01bGetValue(self): "test aug_get with existing path" a = augeas.Augeas(root=MYROOT) self.assertEqual(a.get("/files/etc/hosts/1/ipaddr"), "127.0.0.1") del a
def test01cGetException(self): "test aug_get with incorrect path" a = augeas.Augeas(root=MYROOT) self.assertRaises(ValueError, a.get, "/files//[1]/") del a
def test02Match(self): "test aug_match" a = augeas.Augeas(root=MYROOT) matches = a.match("/files/etc/hosts/*") self.assertTrue(matches) for i in matches: for attr in a.match(i+"/*"): self.assertIsNotNone(a.get(attr)) del a
def test03PrintAll(self): "print all tree elements" output = open("test03PrintAll.out", "w") a = augeas.Augeas(root=MYROOT) path = "/" matches = recurmatch(a, path) for (p, attr) in matches: print(p, attr, file=output) self.assertIsNotNone(p) self.assertIsNotNone(attr) output.close()
def test04Grub(self): "test default setting of grub entry" a = augeas.Augeas(root=MYROOT) num = 0 for entry in a.match("/files/etc/grub.conf/title"): num += 1 self.assertEqual(num, 2) default = int(a.get("/files/etc/grub.conf/default")) self.assertEqual(default, 0) a.set("/files/etc/grub.conf/default", str(1)) a.save() default = int(a.get("/files/etc/grub.conf/default")) self.assertEqual(default, 1) a.set("/files/etc/grub.conf/default", str(0)) a.save()
def test05Defvar(self): "test defvar" a = augeas.Augeas(root=MYROOT) a.defvar("hosts", "/files/etc/hosts") matches = a.match("$hosts/*") self.assertTrue(matches) for i in matches: for attr in a.match(i+"/*"): self.assertIsNotNone(a.get(attr)) del a
def test06Defnode(self): "test defnode" a = augeas.Augeas(root=MYROOT) a.defnode("bighost", "/files/etc/hosts/50/ipaddr", "192.168.1.1") value = a.get("$bighost") self.assertEqual(value, "192.168.1.1") del a
def test07Setm(self): "test setm" a = augeas.Augeas(root=MYROOT) matches = a.match("/files/etc/hosts/*/ipaddr") self.assertTrue(matches) a.setm("/files/etc/hosts", "*/ipaddr", "192.168.1.1") for i in matches: self.assertEqual(a.get(i), "192.168.1.1") del a
def test08Span(self): "test span" data = [{"expr": "/files/etc/hosts/1/ipaddr", "f": "hosts", "ls": 0, "le": 0, "vs": 104, "ve": 113, "ss": 104, "se": 113}, {"expr": "/files/etc/hosts/1", "f": "hosts", "ls": 0, "le": 0, "vs": 0, "ve": 0, "ss": 104, "se": 155}, {"expr": "/files/etc/hosts/*[last()]", "f": "hosts", "ls": 0, "le": 0, "vs": 0, "ve": 0, "ss": 155, "se": 202}, {"expr": "/files/etc/hosts/#comment[2]", "f": "hosts", "ls": 0, "le": 0, "vs": 58, "ve": 103, "ss": 56, "se": 104}, {"expr": "/files/etc/hosts", "f": "hosts", "ls": 0, "le": 0, "vs": 0, "ve": 0, "ss": 0, "se": 202}, ] a = augeas.Augeas(root=MYROOT, flags=augeas.Augeas.ENABLE_SPAN) for d in data: r = a.span(d["expr"]) self.assertEqual(os.path.basename(r[0]), d["f"]) self.assertEqual(r[1], d["ls"]) self.assertEqual(r[2], d["le"]) self.assertEqual(r[3], d["vs"]) self.assertEqual(r[4], d["ve"]) self.assertEqual(r[5], d["ss"]) self.assertEqual(r[6], d["se"])
self.assertRaises(ValueError, a.span, "/files")
self.assertRaises(ValueError, a.span, "/random")
del a
def test09TextStore(self): hosts = "192.168.0.1 rtr.example.com router\n" a = augeas.Augeas(root=MYROOT) a.set("/raw/hosts", hosts) a.text_store("Hosts.lns", "/raw/hosts", "/t1")
# Test bad lens name self.assertRaises(ValueError, a.text_store, "Notthere.lns", "/raw/hosts", "/t2")
def testSetNone(self): a = augeas.Augeas(root=MYROOT) a.set("/raw/hosts", None)
def test10TextRetrieve(self): hosts = "192.168.0.1 rtr.example.com router\n" a = augeas.Augeas(root=MYROOT) a.set("/raw/hosts", hosts) a.text_store("Hosts.lns", "/raw/hosts", "/t1") a.text_retrieve("Hosts.lns", "/raw/hosts", "/t1", "/out/hosts") hosts_out = a.get("/out/hosts") self.assertEqual(hosts, hosts_out)
# Test bad lens name self.assertRaises(ValueError, a.text_store, "Notthere.lns", "/raw/hosts", "/t2")
def test11Rename(self): a = augeas.Augeas(root=MYROOT) a.set("/a/b/c", "value") r = a.rename("/a/b/c", "d") self.assertEqual(r, 1) a.set("/a/e/d", "value2") r = a.rename("/a//d", "x") self.assertEqual(r, 2) self.assertRaises(ValueError, a.rename, "/a/e/x", "a/b")
def test12Transform(self): a = augeas.Augeas(root=MYROOT)
a.transform("Foo", "/tmp/bar") lens = a.get("/augeas/load/Foo/lens") self.assertEqual(lens, "Foo.lns") incl = a.get("/augeas/load/Foo/incl") self.assertEqual(incl, "/tmp/bar")
a.transform("Foo", "/tmp/baz", True) excl = a.get("/augeas/load/Foo/excl") self.assertEqual(excl, "/tmp/baz")
def test13AddTransform(self): a = augeas.Augeas(root=MYROOT)
a.add_transform("Foo", "/tmp/bar") incl = a.get("/augeas/load/Foo/incl") self.assertEqual(incl, "/tmp/bar")
a.add_transform("Foo", "/tmp/bar", excl="/tmp/baz") excl = a.get("/augeas/load/Foo/excl") self.assertEqual(excl, "/tmp/baz")
def test14aLabelOk(self): """test aug_label with valid input""" a = augeas.Augeas(root=MYROOT)
lbl = a.label("/augeas/version") self.assertEqual(lbl, "version")
def test14bLabelException(self): """test aug_label with invalid input""" a = augeas.Augeas(root=MYROOT)
self.assertRaises(ValueError, a.label, "/augeas/version/[1]/")
def test15Copy(self): a = augeas.Augeas(root=MYROOT)
orig_path = '/tmp/src/copy_test/a' copy_path = '/tmp/dst/copy_test/a' orig_value = 'test value'
a.set(orig_path, orig_value)
matches = a.match(orig_path) self.assertTrue(matches)
a.copy(orig_path, copy_path)
matches = a.match(copy_path) self.assertTrue(matches) self.assertEqual(a.get(copy_path), a.get(orig_path))
def testClose(self): a = augeas.Augeas(root=MYROOT) a.close()
def getsuite(): suite = unittest.TestSuite() suite = unittest.makeSuite(TestAugeas, 'test') return suite
if __name__ == "__main__": __testRunner = unittest.TextTestRunner(verbosity=2) __result = __testRunner.run(getsuite()) sys.exit(not __result.wasSuccessful())
__author__ = "Harald Hoyer <harald@redhat.com>"
|