[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