Browse Source

tests: add testcli reference in/out & do DejaGNU

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>
David Lamparter 4 years ago
parent
commit
d79668fb44
5 changed files with 410 additions and 1 deletions
  1. 3 1
      tests/Makefile.am
  2. 1 0
      tests/libzebra.tests/Makefile.am
  3. 23 0
      tests/libzebra.tests/testcli.exp
  4. 93 0
      tests/testcli.in
  5. 290 0
      tests/testcli.refout

+ 3 - 1
tests/Makefile.am

@@ -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)/\"

+ 1 - 0
tests/libzebra.tests/Makefile.am

@@ -2,4 +2,5 @@ EXTRA_DIST = \
 	tabletest.exp \
 	test-timer-correctness.exp \
 	testcommands.exp \
+	testcli.exp \
 	testnexthopiter.exp

+ 23 - 0
tests/libzebra.tests/testcli.exp

@@ -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"
+}

+ 93 - 0
tests/testcli.in

@@ -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

+ 290 - 0
tests/testcli.refout

@@ -0,0 +1,290 @@
+test# echo this is a  test message
+this is a test message
+test# echo  foo bla  
+  MESSAGE  The message to echo
+  <cr>     
+test# echo  foo bla    baz
+foo bla baz
+test# echo
+% Command incomplete.
+test# 
+test# arg ipv4 1.2.3.4
+cmd0 with 1 args.
+[00]: 1.2.3.4
+test# arg ipv4 1.2.
+  A.B.C.D  02
+test# arg ipv4 1.2.3.4
+cmd0 with 1 args.
+[00]: 1.2.3.4
+test# arg ipv4 1.2.3
+cmd0 with 1 args.
+[00]: 1.2.3
+test# arg ipv4 1.2.3.4.5
+% [NONE] Unknown command: arg ipv4 1.2.3.4.5
+test# arg ipv4 1.a.3.4
+% [NONE] Unknown command: arg ipv4 1.a.3.4
+test# arg ipv4 blah
+% [NONE] Unknown command: arg ipv4 blah
+test# 
+test# arg ipv4m 1.2.3.0/24
+cmd1 with 1 args.
+[00]: 1.2.3.0/24
+test# arg ipv4m 1.2.
+  A.B.C.D/M  02
+test# arg ipv4m 1.2.3.0/24
+cmd1 with 1 args.
+[00]: 1.2.3.0/24
+test# arg ipv4m 1.2.3/9
+% [NONE] Unknown command: arg ipv4m 1.2.3/9
+test# arg ipv4m 1.2.3.4.5/6
+% [NONE] Unknown command: arg ipv4m 1.2.3.4.5/6
+test# arg ipv4m 1.a.3.4
+% [NONE] Unknown command: arg ipv4m 1.a.3.4
+test# arg ipv4m blah
+% [NONE] Unknown command: arg ipv4m blah
+test# arg ipv4m 1.2.3.0/999
+% [NONE] Unknown command: arg ipv4m 1.2.3.0/999
+test# arg ipv4m 1.2.3.0/a9
+% [NONE] Unknown command: arg ipv4m 1.2.3.0/a9
+test# arg ipv4m 1.2.3.0/9a
+% [NONE] Unknown command: arg ipv4m 1.2.3.0/9a
+test# 
+test# arg ipv6 de4d:b33f::cafe
+cmd2 with 1 args.
+[00]: de4d:b33f::cafe
+test# arg ipv6 de4d:b3
+% There is no matched command.
+test# arg ipv6 de4d:b33f::caf
+  X:X::X:X  02
+test# arg ipv6 de4d:b33f::cafe
+cmd2 with 1 args.
+[00]: de4d:b33f::cafe
+test# arg ipv6 de4d:b3
+test# arg ipv6 de4d:b33f::caf
+  X:X::X:X  02
+test# arg ipv6 de4d:b33f::cafe
+cmd2 with 1 args.
+[00]: de4d:b33f::cafe
+test# arg ipv6 de4d:b33f:z::cafe
+% [NONE] Unknown command: arg ipv6 de4d:b33f:z::cafe
+test# arg ipv6 de4d:b33f:cafe:
+% [NONE] Unknown command: arg ipv6 de4d:b33f:cafe:
+test# arg ipv6 ::
+cmd2 with 1 args.
+[00]: ::
+test# arg ipv6 ::/
+% [NONE] Unknown command: arg ipv6 ::/
+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
+% [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
+test# arg ipv6 12::34::56
+% [NONE] Unknown command: arg ipv6 12::34::56
+test# arg ipv6m dead:beef:cafe::/64
+cmd3 with 1 args.
+[00]: dead:beef:cafe::/64
+test# arg ipv6m dead:be
+  X:X::X:X/M  02
+test# arg ipv6m dead:beef:cafe:
+  X:X::X:X/M  02
+test# arg ipv6m dead:beef:cafe::/64
+cmd3 with 1 args.
+[00]: dead:beef:cafe::/64
+test# 
+test# arg range 4
+% [NONE] Unknown command: arg range 4
+test# arg range 5
+cmd4 with 1 args.
+[00]: 5
+test# arg range 9
+  <5-15>  02
+test# arg range 9
+cmd4 with 1 args.
+[00]: 9
+test# arg range 15
+cmd4 with 1 args.
+[00]: 15
+test# arg range 16
+% [NONE] Unknown command: arg range 16
+test# arg range -1
+% [NONE] Unknown command: arg range -1
+test# arg range 99999999999999999999999999999999999999999
+% [NONE] Unknown command: arg range 99999999999999999999999999999999999999999
+test# 
+test# arg 
+  ipv4   01
+  ipv4m  01
+  ipv6   01
+  ipv6m  01
+  range  01
+test# arg 
+% Command incomplete.
+test# 
+test# pa
+test# papat 
+% Command incomplete.
+test# pat 
+a          b          c          d          e          f          
+test# pat 
+% Command incomplete.
+test# 
+test# pat a
+% Command incomplete.
+test# pat a a
+cmd5 with 1 args.
+[00]: a
+test# pat a 
+  a  02
+  b  03
+test# pat a b
+cmd5 with 1 args.
+[00]: b
+test# pat a c
+% There is no matched command.
+test# pat a c
+% [NONE] Unknown command: pat a c
+test# pat a a x
+% [NONE] Unknown command: pat a a x
+test# 
+test# pat b
+% Command incomplete.
+test# pat b 
+  a  02
+test# pat b a
+cmd6 with 1 args.
+[00]: a
+test# pat b x
+% [NONE] Unknown command: pat b x
+test# pat b x y
+% [NONE] Unknown command: pat b x y
+test# 
+test# pat c a
+% Command incomplete.
+test# pat c a 1.2.3.4
+cmd7 with 2 args.
+[00]: a
+[01]: 1.2.3.4
+test# pat c b 2.3.4
+cmd7 with 2 args.
+[00]: b
+[01]: 2.3.4
+test# pat c c 
+  A.B.C.D  05
+test# pat c c x
+% [NONE] Unknown command: pat c c x
+test# 
+test# pat d
+cmd8 with 3 args.
+[00]: (null)
+[01]: (null)
+[02]: (null)
+test# pat d 
+bar        baz        foo        
+test# pat d 
+cmd8 with 3 args.
+[00]: (null)
+[01]: (null)
+[02]: (null)
+test# pat d foo 1.2.3.4
+cmd8 with 3 args.
+[00]: 1.2.3.4
+[01]: (null)
+[02]: (null)
+test# pat d foo
+% Command incomplete.
+test# pat d noooo
+% [NONE] Unknown command: pat d noooo
+test# pat d bar 1::2
+cmd8 with 3 args.
+[00]: (null)
+[01]: 1::2
+[02]: (null)
+test# pat d bar 1::2 foo 3.4.5.6
+cmd8 with 3 args.
+[00]: 3.4.5.6
+[01]: 1::2
+[02]: (null)
+test# pat d ba
+  bar  04
+  baz  06
+test# pat d baz
+cmd8 with 3 args.
+[00]: (null)
+[01]: (null)
+[02]: baz
+test# pat d foo 3.4.5.6 baz
+cmd8 with 3 args.
+[00]: 3.4.5.6
+[01]: (null)
+[02]: baz
+test# 
+test# pat e
+% Command incomplete.
+test# pat e f
+% Command incomplete.
+test# pat e f g
+% Command incomplete.
+test# pat e 1.2.3.4
+% Command incomplete.
+test# 
+test# pat f
+cmd10 with 0 args.
+test# pat f foo
+cmd10 with 1 args.
+[00]: foo
+test# pat f key
+cmd10 with 1 args.
+[00]: key
+test# 
+test# alt a 
+test# alt a a
+  WORD  02
+test# alt a ab
+cmd11 with 1 args.
+[00]: ab
+test# alt a 1
+test# alt a 1.2
+  A.B.C.D  02
+  WORD     02
+test# alt a 1.2.3.4
+cmd12 with 1 args.
+[00]: 1.2.3.4
+test# alt a 1
+test# alt a 1:2
+  WORD  02
+test# alt a 1:2
+test# alt a 1:2::
+  WORD      02
+  X:X::X:X  02
+test# alt a 1:2::3
+cmd13 with 1 args.
+[00]: 1:2::3
+test# 
+test# conf t
+test(config)# do pat d baz
+cmd8 with 3 args.
+[00]: (null)
+[01]: (null)
+[02]: baz
+test(config)# exit
+test# 
+test# show run
+
+Current configuration:
+!
+hostname test
+!
+line vty
+!
+end
+test# conf t
+test(config)# hostname foohost
+foohost(config)# do show run
+
+Current configuration:
+!
+hostname foohost
+!
+line vty
+!
+end
+foohost(config)# 
+end.