]> git.puffer.fish Git - matthieu/frr.git/commitdiff
tests: add testcli reference in/out & do DejaGNU
authorDavid Lamparter <equinox@opensourcerouting.org>
Thu, 14 May 2015 12:47:05 +0000 (14:47 +0200)
committerDaniel Walton <dwalton@cumulusnetworks.com>
Fri, 3 Jun 2016 20:35:40 +0000 (20:35 +0000)
This adds reference in & output for the previously added testcli tool,
to check basic CLI parsing/help functions.  Unlike "testcommands", this
one doesn't depend on compile-time system details.

Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
(cherry picked from commit d79668fb440ae2689b54f52c076dbd79a8689135)

tests/Makefile.am
tests/libzebra.tests/Makefile.am
tests/libzebra.tests/testcli.exp [new file with mode: 0644]
tests/testcli.in [new file with mode: 0644]
tests/testcli.refout [new file with mode: 0644]

index 6a3d42524f0718874f367478a1bbba5c6637b5da..16c9e4c3db5db6f47b1e4eb0736adf9957ee181b 100644 (file)
@@ -11,7 +11,9 @@ EXTRA_DIST = \
        lib/libzebra.exp \
        global-conf.exp \
        testcommands.in \
-       testcommands.refout
+       testcommands.refout \
+       testcli.in \
+       testcli.refout
 
 AM_CPPFLAGS = -I.. -I$(top_srcdir) -I$(top_srcdir)/lib -I$(top_builddir)/lib
 DEFS = @DEFS@ $(LOCAL_OPTS) -DSYSCONFDIR=\"$(sysconfdir)/\"
index 819cce2fed2ecaae159fd499aae678725601f028..4b74e2d3fb41f0f881e6a9d374e5d62d6640c73d 100644 (file)
@@ -2,4 +2,5 @@ EXTRA_DIST = \
        tabletest.exp \
        test-timer-correctness.exp \
        testcommands.exp \
+       testcli.exp \
        testnexthopiter.exp
diff --git a/tests/libzebra.tests/testcli.exp b/tests/libzebra.tests/testcli.exp
new file mode 100644 (file)
index 0000000..778bd0c
--- /dev/null
@@ -0,0 +1,23 @@
+set timeout 30
+set test_name "testcli"
+
+spawn sh -c "./testcli < $env(srcdir)/testcli.in | diff -au $env(srcdir)/testcli.refout -"
+
+expect {
+       eof {
+       }
+       timeout {
+               exp_close
+               fail "$test_name: timeout"
+       }
+}
+
+catch wait result
+set os_error    [lindex $result 2]
+set exit_status [lindex $result 3]
+
+if { $os_error == 0 && $exit_status == 0 } {
+       pass "$test_name"
+} else {
+       fail "$test_name"
+}
diff --git a/tests/testcli.in b/tests/testcli.in
new file mode 100644 (file)
index 0000000..f4212b9
--- /dev/null
@@ -0,0 +1,93 @@
+echo this is a  test message
+echo  foo bla  ?  baz
+echo
+
+arg ipv4 1.2.3.4
+arg ipv4 1.2.?3.4
+arg ipv4 1.2.3
+arg ipv4 1.2.3.4.5
+arg ipv4 1.a.3.4
+arg ipv4 blah
+
+arg ipv4m 1.2.3.0/24
+arg ipv4m 1.2.?3.0/24
+arg ipv4m 1.2.3/9
+arg ipv4m 1.2.3.4.5/6
+arg ipv4m 1.a.3.4
+arg ipv4m blah
+arg ipv4m 1.2.3.0/999
+arg ipv4m 1.2.3.0/a9
+arg ipv4m 1.2.3.0/9a
+
+arg ipv6 de4d:b33f::cafe
+arg ipv6 de4d:b3?3f::caf?e
+arg ipv6 de4d:b3       3f::caf?e
+arg ipv6 de4d:b33f:z::cafe
+arg ipv6 de4d:b33f:cafe:
+arg ipv6 ::
+arg ipv6 ::/
+arg ipv6 1:2:3:4:5:6:7:8:9:0:1:2:3:4:5:6:7:8:9:0:1:2:3:4:5:6:7:8:9:0
+arg ipv6 12::34::56
+arg ipv6m dead:beef:cafe::/64
+arg ipv6m dead:be?ef:cafe:?:/64
+
+arg range 4
+arg range 5
+arg range 9?
+arg range 15
+arg range 16
+arg range -1
+arg range 99999999999999999999999999999999999999999
+
+arg ?
+
+pa     
+pat    
+
+pat a
+pat a a
+pat a ?b
+pat a c?
+pat a a x
+
+pat b
+pat b ?a
+pat b x
+pat b x y
+
+pat c a
+pat c a 1.2.3.4
+pat c b 2.3.4
+pat c c ?x
+
+pat d
+pat d  
+pat d foo 1.2.3.4
+pat d foo
+pat d noooo
+pat d bar 1::2
+pat d bar 1::2 foo 3.4.5.6
+pat d ba?z
+pat d foo 3.4.5.6 baz
+
+pat e
+pat e f
+pat e f g
+pat e 1.2.3.4
+
+pat f
+pat f foo
+pat f key
+
+alt a  a?b
+alt a 1        .2?.3.4
+alt a 1        :2?     ::?3
+
+conf t
+do pat d baz
+exit
+
+show run
+conf t
+hostname foohost
+do show run
diff --git a/tests/testcli.refout b/tests/testcli.refout
new file mode 100644 (file)
index 0000000..1515ea2
--- /dev/null
@@ -0,0 +1,290 @@
+test# echo this is a  test message\r
+this is a test message\r
+test# echo  foo bla  \r
+  MESSAGE  The message to echo\r
+  <cr>     \r
+test# echo  foo bla    baz\r
+foo bla baz\r
+test# echo\r
+% Command incomplete.\r
+test# \r
+test# arg ipv4 1.2.3.4\r
+cmd0 with 1 args.\r
+[00]: 1.2.3.4\r
+test# arg ipv4 1.2.\r
+  A.B.C.D  02\r
+test# arg ipv4 1.2.3.4\r
+cmd0 with 1 args.\r
+[00]: 1.2.3.4\r
+test# arg ipv4 1.2.3\r
+cmd0 with 1 args.\r
+[00]: 1.2.3\r
+test# arg ipv4 1.2.3.4.5\r
+% [NONE] Unknown command: arg ipv4 1.2.3.4.5\r
+test# arg ipv4 1.a.3.4\r
+% [NONE] Unknown command: arg ipv4 1.a.3.4\r
+test# arg ipv4 blah\r
+% [NONE] Unknown command: arg ipv4 blah\r
+test# \r
+test# arg ipv4m 1.2.3.0/24\r
+cmd1 with 1 args.\r
+[00]: 1.2.3.0/24\r
+test# arg ipv4m 1.2.\r
+  A.B.C.D/M  02\r
+test# arg ipv4m 1.2.3.0/24\r
+cmd1 with 1 args.\r
+[00]: 1.2.3.0/24\r
+test# arg ipv4m 1.2.3/9\r
+% [NONE] Unknown command: arg ipv4m 1.2.3/9\r
+test# arg ipv4m 1.2.3.4.5/6\r
+% [NONE] Unknown command: arg ipv4m 1.2.3.4.5/6\r
+test# arg ipv4m 1.a.3.4\r
+% [NONE] Unknown command: arg ipv4m 1.a.3.4\r
+test# arg ipv4m blah\r
+% [NONE] Unknown command: arg ipv4m blah\r
+test# arg ipv4m 1.2.3.0/999\r
+% [NONE] Unknown command: arg ipv4m 1.2.3.0/999\r
+test# arg ipv4m 1.2.3.0/a9\r
+% [NONE] Unknown command: arg ipv4m 1.2.3.0/a9\r
+test# arg ipv4m 1.2.3.0/9a\r
+% [NONE] Unknown command: arg ipv4m 1.2.3.0/9a\r
+test# \r
+test# arg ipv6 de4d:b33f::cafe\r
+cmd2 with 1 args.\r
+[00]: de4d:b33f::cafe\r
+test# arg ipv6 de4d:b3\r
+% There is no matched command.\r
+test# arg ipv6 de4d:b33f::caf\r
+  X:X::X:X  02\r
+test# arg ipv6 de4d:b33f::cafe\r
+cmd2 with 1 args.\r
+[00]: de4d:b33f::cafe\r
+test# arg ipv6 de4d:b3\r
+test# arg ipv6 de4d:b33f::caf\r
+  X:X::X:X  02\r
+test# arg ipv6 de4d:b33f::cafe\r
+cmd2 with 1 args.\r
+[00]: de4d:b33f::cafe\r
+test# arg ipv6 de4d:b33f:z::cafe\r
+% [NONE] Unknown command: arg ipv6 de4d:b33f:z::cafe\r
+test# arg ipv6 de4d:b33f:cafe:\r
+% [NONE] Unknown command: arg ipv6 de4d:b33f:cafe:\r
+test# arg ipv6 ::\r
+cmd2 with 1 args.\r
+[00]: ::\r
+test# arg ipv6 ::/\r
+% [NONE] Unknown command: arg ipv6 ::/\r
+test# arg ipv6 1:2:3:4:5:6:7:8:9:0:1:2:3:4:5:6:7:8:9:0:1:2:3:4:5:6:7:8:9:0\r
+% [NONE] Unknown command: arg ipv6 1:2:3:4:5:6:7:8:9:0:1:2:3:4:5:6:7:8:9:0:1:2:3:4:5:6:7:8:9:0\r
+test# arg ipv6 12::34::56\r
+% [NONE] Unknown command: arg ipv6 12::34::56\r
+test# arg ipv6m dead:beef:cafe::/64\r
+cmd3 with 1 args.\r
+[00]: dead:beef:cafe::/64\r
+test# arg ipv6m dead:be\r
+  X:X::X:X/M  02\r
+test# arg ipv6m dead:beef:cafe:\r
+  X:X::X:X/M  02\r
+test# arg ipv6m dead:beef:cafe::/64\r
+cmd3 with 1 args.\r
+[00]: dead:beef:cafe::/64\r
+test# \r
+test# arg range 4\r
+% [NONE] Unknown command: arg range 4\r
+test# arg range 5\r
+cmd4 with 1 args.\r
+[00]: 5\r
+test# arg range 9\r
+  <5-15>  02\r
+test# arg range 9\r
+cmd4 with 1 args.\r
+[00]: 9\r
+test# arg range 15\r
+cmd4 with 1 args.\r
+[00]: 15\r
+test# arg range 16\r
+% [NONE] Unknown command: arg range 16\r
+test# arg range -1\r
+% [NONE] Unknown command: arg range -1\r
+test# arg range 99999999999999999999999999999999999999999\r
+% [NONE] Unknown command: arg range 99999999999999999999999999999999999999999\r
+test# \r
+test# arg \r
+  ipv4   01\r
+  ipv4m  01\r
+  ipv6   01\r
+  ipv6m  01\r
+  range  01\r
+test# arg \r
+% Command incomplete.\r
+test# \r
+test# pa\r
+test# pa\b\bpat \r
+% Command incomplete.\r
+test# pat \r
+a          b          c          d          e          f          \r
+test# pat \r
+% Command incomplete.\r
+test# \r
+test# pat a\r
+% Command incomplete.\r
+test# pat a a\r
+cmd5 with 1 args.\r
+[00]: a\r
+test# pat a \r
+  a  02\r
+  b  03\r
+test# pat a b\r
+cmd5 with 1 args.\r
+[00]: b\r
+test# pat a c\r
+% There is no matched command.\r
+test# pat a c\r
+% [NONE] Unknown command: pat a c\r
+test# pat a a x\r
+% [NONE] Unknown command: pat a a x\r
+test# \r
+test# pat b\r
+% Command incomplete.\r
+test# pat b \r
+  a  02\r
+test# pat b a\r
+cmd6 with 1 args.\r
+[00]: a\r
+test# pat b x\r
+% [NONE] Unknown command: pat b x\r
+test# pat b x y\r
+% [NONE] Unknown command: pat b x y\r
+test# \r
+test# pat c a\r
+% Command incomplete.\r
+test# pat c a 1.2.3.4\r
+cmd7 with 2 args.\r
+[00]: a\r
+[01]: 1.2.3.4\r
+test# pat c b 2.3.4\r
+cmd7 with 2 args.\r
+[00]: b\r
+[01]: 2.3.4\r
+test# pat c c \r
+  A.B.C.D  05\r
+test# pat c c x\r
+% [NONE] Unknown command: pat c c x\r
+test# \r
+test# pat d\r
+cmd8 with 3 args.\r
+[00]: (null)\r
+[01]: (null)\r
+[02]: (null)\r
+test# pat d \r
+bar        baz        foo        \r
+test# pat d \r
+cmd8 with 3 args.\r
+[00]: (null)\r
+[01]: (null)\r
+[02]: (null)\r
+test# pat d foo 1.2.3.4\r
+cmd8 with 3 args.\r
+[00]: 1.2.3.4\r
+[01]: (null)\r
+[02]: (null)\r
+test# pat d foo\r
+% Command incomplete.\r
+test# pat d noooo\r
+% [NONE] Unknown command: pat d noooo\r
+test# pat d bar 1::2\r
+cmd8 with 3 args.\r
+[00]: (null)\r
+[01]: 1::2\r
+[02]: (null)\r
+test# pat d bar 1::2 foo 3.4.5.6\r
+cmd8 with 3 args.\r
+[00]: 3.4.5.6\r
+[01]: 1::2\r
+[02]: (null)\r
+test# pat d ba\r
+  bar  04\r
+  baz  06\r
+test# pat d baz\r
+cmd8 with 3 args.\r
+[00]: (null)\r
+[01]: (null)\r
+[02]: baz\r
+test# pat d foo 3.4.5.6 baz\r
+cmd8 with 3 args.\r
+[00]: 3.4.5.6\r
+[01]: (null)\r
+[02]: baz\r
+test# \r
+test# pat e\r
+% Command incomplete.\r
+test# pat e f\r
+% Command incomplete.\r
+test# pat e f g\r
+% Command incomplete.\r
+test# pat e 1.2.3.4\r
+% Command incomplete.\r
+test# \r
+test# pat f\r
+cmd10 with 0 args.\r
+test# pat f foo\r
+cmd10 with 1 args.\r
+[00]: foo\r
+test# pat f key\r
+cmd10 with 1 args.\r
+[00]: key\r
+test# \r
+test# alt a \r
+test# alt a a\r
+  WORD  02\r
+test# alt a ab\r
+cmd11 with 1 args.\r
+[00]: ab\r
+test# alt a 1\r
+test# alt a 1.2\r
+  A.B.C.D  02\r
+  WORD     02\r
+test# alt a 1.2.3.4\r
+cmd12 with 1 args.\r
+[00]: 1.2.3.4\r
+test# alt a 1\r
+test# alt a 1:2\r
+  WORD  02\r
+test# alt a 1:2\r
+test# alt a 1:2::\r
+  WORD      02\r
+  X:X::X:X  02\r
+test# alt a 1:2::3\r
+cmd13 with 1 args.\r
+[00]: 1:2::3\r
+test# \r
+test# conf t\r
+test(config)# do pat d baz\r
+cmd8 with 3 args.\r
+[00]: (null)\r
+[01]: (null)\r
+[02]: baz\r
+test(config)# exit\r
+test# \r
+test# show run\r
+\r
+Current configuration:\r
+!\r
+hostname test\r
+!\r
+line vty\r
+!\r
+end\r
+test# conf t\r
+test(config)# hostname foohost\r
+foohost(config)# do show run\r
+\r
+Current configuration:\r
+!\r
+hostname foohost\r
+!\r
+line vty\r
+!\r
+end\r
+foohost(config)# 
+end.