[augeas-devel] [PATCH 2 of 2] Fix insertion before the first child
David Lutterkort
dlutter at redhat.com
Thu Jul 17 04:06:32 UTC 2008
2 files changed, 34 insertions(+), 4 deletions(-)
src/augeas.c | 6 +++---
tests/modules/pass_ins_test.aug | 32 +++++++++++++++++++++++++++++++-
# HG changeset patch
# User David Lutterkort <dlutter at redhat.com>
# Date 1216248737 25200
# Node ID 2846f10d64be3cb642dbf1f45b087a0a46aeb065
# Parent a090ab78da11d32de54d1572f8ab115c3120854e
Fix insertion before the first child
Inserting a node as the new first child was completely broken.
Bug reported by Raphael Pinson.
diff -r a090ab78da11 -r 2846f10d64be src/augeas.c
--- a/src/augeas.c Wed Jul 16 15:28:40 2008 -0700
+++ b/src/augeas.c Wed Jul 16 15:52:17 2008 -0700
@@ -627,11 +627,11 @@
struct segment *seg = last_segment(p);
if (before) {
- struct tree *siblings = seg_siblings(p, seg);
- if (siblings == *tree) {
+ if (seg == p->segments) {
list_insert_before(new, seg->tree, *tree);
} else {
- list_insert_before(new, seg->tree, siblings);
+ struct tree *parent = seg_parent(p, seg);
+ list_insert_before(new, seg->tree, parent->children);
}
} else {
new->next = seg->tree->next;
diff -r a090ab78da11 -r 2846f10d64be tests/modules/pass_ins_test.aug
--- a/tests/modules/pass_ins_test.aug Wed Jul 16 15:28:40 2008 -0700
+++ b/tests/modules/pass_ins_test.aug Wed Jul 16 15:52:17 2008 -0700
@@ -2,7 +2,8 @@
let eol = del "\n" "\n"
let word = /[a-z0-9]+/
- let lns = [ key word . del /[ \t]+/ " " . store word . eol ]*
+ let sep = del /[ \t]+/ " "
+ let lns = [ key word . sep . store word . eol ]*
let s = "key value1\nkey value2\n"
let t = "key value1\nnewkey newvalue\nkey value2\n"
@@ -16,3 +17,32 @@
insb "newkey" "key[2]";
set "newkey" "newvalue"
= t
+
+ test lns put s after
+ insb "newkey" "key[1]";
+ set "newkey" "newvalue"
+ = "newkey newvalue\n" . s
+
+ (* Now test insertion inside the tree *)
+
+ let lns2 = [ key word . eol . lns ]
+
+ let s2 = "outer\n" . s
+ let t2 = "outer\n" . t
+
+ test lns2 put s2 after
+ insa "newkey" "outer/key[1]";
+ set "outer/newkey" "newvalue"
+ = t2
+
+ test lns2 put s2 after
+ insb "newkey" "outer/key[2]";
+ set "outer/newkey" "newvalue"
+ = t2
+
+
+ test lns2 put s2 after
+ insb "newkey" "outer/key[1]";
+ set "outer/newkey" "newvalue"
+ = "outer\nnewkey newvalue\n" . s
+
More information about the augeas-devel
mailing list