[augeas-devel] [PATCH 1/1] Added 'setm' function.
Frederik Wagner
fnerdwq at googlemail.com
Tue Mar 16 21:04:42 UTC 2010
This function sets multiple elements to a node set.
---
lib/augeas.rb | 8 ++++++++
tests/root/etc/group | 26 ++++++++++++++++++++++++++
tests/tc_augeas.rb | 12 ++++++++++++
3 files changed, 46 insertions(+), 0 deletions(-)
create mode 100644 tests/root/etc/group
diff --git a/lib/augeas.rb b/lib/augeas.rb
index c42d073..97ca9bf 100644
--- a/lib/augeas.rb
+++ b/lib/augeas.rb
@@ -108,4 +108,12 @@ class Augeas
def set!(path, value)
raise Augeas::Error unless set(path, value)
end
+
+ # Sets +path+ to each element of +values+.
+ # Sensefull mainly when using a path like .../array[last()+1], since
+ # this appends all elements.
+ def setm(path, values)
+ values.each {|val| set(path, val) }
+ end
+
end
diff --git a/tests/root/etc/group b/tests/root/etc/group
new file mode 100644
index 0000000..206b7a6
--- /dev/null
+++ b/tests/root/etc/group
@@ -0,0 +1,26 @@
+root:x:0:root
+bin:x:1:root,bin,daemon
+daemon:x:2:root,bin,daemon
+sys:x:3:root,bin,adm
+adm:x:4:root,adm,daemon
+tty:x:5:
+disk:x:6:root
+lp:x:7:daemon,lp
+mem:x:8:
+kmem:x:9:
+wheel:x:10:root
+mail:x:12:mail,postfix
+uucp:x:14:uucp
+man:x:15:
+games:x:20:
+gopher:x:30:
+dip:x:40:
+ftp:x:50:
+lock:x:54:
+nobody:x:99:
+users:x:100:
+floppy:x:19:
+vcsa:x:69:
+rpc:x:32:asfd
+rpcuser:x:29:
+nfsnobody:x:499:
diff --git a/tests/tc_augeas.rb b/tests/tc_augeas.rb
index b14ea66..9619119 100644
--- a/tests/tc_augeas.rb
+++ b/tests/tc_augeas.rb
@@ -132,6 +132,18 @@ class TestAugeas < Test::Unit::TestCase
assert_raises(Augeas::Error) { aug.set!("files/etc/hosts/*", nil) }
end
+ def test_setm
+ aug = aug_open
+ aug.setm("/files/etc/group/disk/user[last()+1]",["user1","user2"])
+ assert_equal( aug.get("/files/etc/group/disk/user[1]"),"root" )
+ assert_equal( aug.get("/files/etc/group/disk/user[2]"),"user1" )
+ assert_equal( aug.get("/files/etc/group/disk/user[3]"),"user2" )
+
+ aug.rm("/files/etc/group/disk/user")
+ aug.setm("/files/etc/group/disk/user[last()+1]","testuser")
+ assert_equal( aug.get("/files/etc/group/disk/user"),"testuser")
+ end
+
private
def aug_open(flags = Augeas::NONE)
if File::directory?(TST_ROOT)
--
1.5.6.5
More information about the augeas-devel
mailing list