summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorNeels Hofmeyr <neels@hofmeyr.de>2017-09-19 23:54:01 +0200
committerNeels Hofmeyr <neels@hofmeyr.de>2017-09-20 00:57:33 +0200
commit430636328c2fbd9fffc0eac5114462c200b7f2cb (patch)
tree9fbbecedf50ee4ff28e994855fb7cbf077a11319 /tests
parent4a31ffa2f0097d96201f80305a0495c57552f0ad (diff)
fix vty regression: empty parent node
The recent exit-by-indent patch breaks a VTY case where a node is entered but directly followed by a sibling or ancestor without listing any child nodes. Regression introduced by I24cbb3f6de111f2d31110c3c484c066f1153aac9. An example is a common usage in osmo-bts, where 'phy N' / 'instance N' is a parent node that is commonly left empty: phy 0 instance 0 bts 0 band 1800 Before this patch, this case produces the error: There is no such command. Error occurred during reading the below line: bts 0 Fix indentation parsing logic in command.c to accomodate this case. Add a unit test for empty parent node. Change-Id: Ia0880a17ae55accb092ae8585cc3a1bec9986891
Diffstat (limited to 'tests')
-rw-r--r--tests/Makefile.am1
-rw-r--r--tests/vty/ok_empty_parent.cfg2
-rw-r--r--tests/vty/vty_test.c1
-rw-r--r--tests/vty/vty_test.ok2
4 files changed, 6 insertions, 0 deletions
diff --git a/tests/Makefile.am b/tests/Makefile.am
index 8935bf72..b1387174 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -222,6 +222,7 @@ EXTRA_DIST = testsuite.at $(srcdir)/package.m4 $(TESTSUITE) \
vty/fail_tabs_and_spaces.cfg \
vty/fail_too_much_indent.cfg \
vty/ok.cfg \
+ vty/ok_empty_parent.cfg \
vty/ok_ignore_blank.cfg \
vty/ok_ignore_comment.cfg \
vty/ok_indented_root.cfg \
diff --git a/tests/vty/ok_empty_parent.cfg b/tests/vty/ok_empty_parent.cfg
new file mode 100644
index 00000000..fe04fcfa
--- /dev/null
+++ b/tests/vty/ok_empty_parent.cfg
@@ -0,0 +1,2 @@
+line vty
+log stderr
diff --git a/tests/vty/vty_test.c b/tests/vty/vty_test.c
index eba9995c..d9af6aee 100644
--- a/tests/vty/vty_test.c
+++ b/tests/vty/vty_test.c
@@ -342,6 +342,7 @@ int main(int argc, char **argv)
test_exit_by_indent("fail_too_much_indent.cfg", -EINVAL);
test_exit_by_indent("fail_tabs_and_spaces.cfg", -EINVAL);
test_exit_by_indent("ok_indented_root.cfg", 0);
+ test_exit_by_indent("ok_empty_parent.cfg", 0);
/* Leak check */
OSMO_ASSERT(talloc_total_blocks(stats_ctx) == 1);
diff --git a/tests/vty/vty_test.ok b/tests/vty/vty_test.ok
index b2df1a11..f9fea34d 100644
--- a/tests/vty/vty_test.ok
+++ b/tests/vty/vty_test.ok
@@ -128,4 +128,6 @@ reading file fail_tabs_and_spaces.cfg, expecting rc=-22
got rc=-22
reading file ok_indented_root.cfg, expecting rc=0
got rc=0
+reading file ok_empty_parent.cfg, expecting rc=0
+got rc=0
All tests passed