diff options
author | Neels Hofmeyr <neels@hofmeyr.de> | 2017-09-19 23:54:01 +0200 |
---|---|---|
committer | Neels Hofmeyr <neels@hofmeyr.de> | 2017-09-20 00:57:33 +0200 |
commit | 430636328c2fbd9fffc0eac5114462c200b7f2cb (patch) | |
tree | 9fbbecedf50ee4ff28e994855fb7cbf077a11319 /tests | |
parent | 4a31ffa2f0097d96201f80305a0495c57552f0ad (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.am | 1 | ||||
-rw-r--r-- | tests/vty/ok_empty_parent.cfg | 2 | ||||
-rw-r--r-- | tests/vty/vty_test.c | 1 | ||||
-rw-r--r-- | tests/vty/vty_test.ok | 2 |
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 |