diff --git a/tests/.gitignore b/tests/.gitignore
index 1cb28c9..3002b27 100644
--- a/tests/.gitignore
+++ b/tests/.gitignore
@@ -29,6 +29,7 @@
 testbgpmpattr
 testbuffer
 testchecksum
+testcli
 testmemory
 testprivs
 testsegv
diff --git a/tests/Makefile.am b/tests/Makefile.am
index b542071..cdd5d02 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -29,6 +29,7 @@
 check_PROGRAMS = testsig testsegv testbuffer testmemory heavy heavywq heavythread \
 		testprivs teststream testchecksum tabletest testnexthopiter \
 		testcommands test-timer-correctness test-timer-performance \
+		testcli \
 		$(TESTS_BGPD)
 
 ../vtysh/vtysh_cmd.c:
@@ -43,8 +44,9 @@
 		> test-commands-defun.c
 
 BUILT_SOURCES = test-commands-defun.c
-noinst_HEADERS = prng.h tests.h
+noinst_HEADERS = prng.h tests.h common-cli.h
 
+testcli_SOURCES = test-cli.c common-cli.c
 testsig_SOURCES = test-sig.c
 testsegv_SOURCES = test-segv.c
 testbuffer_SOURCES = test-buffer.c
@@ -66,6 +68,7 @@
 test_timer_correctness_SOURCES = test-timer-correctness.c prng.c
 test_timer_performance_SOURCES = test-timer-performance.c prng.c
 
+testcli_LDADD = ../lib/libzebra.la @LIBCAP@
 testsig_LDADD = ../lib/libzebra.la @LIBCAP@
 testsegv_LDADD = ../lib/libzebra.la @LIBCAP@
 testbuffer_LDADD = ../lib/libzebra.la @LIBCAP@
diff --git a/tests/common-cli.c b/tests/common-cli.c
new file mode 100644
index 0000000..7135856
--- /dev/null
+++ b/tests/common-cli.c
@@ -0,0 +1,90 @@
+/*
+ * generic CLI test helper functions
+ *
+ * Copyright (C) 2015 by David Lamparter,
+ *                   for Open Source Routing / NetDEF, Inc.
+ *
+ * Quagga is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the
+ * Free Software Foundation; either version 2, or (at your option) any
+ * later version.
+ *
+ * Quagga is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Quagga; see the file COPYING.  If not, write to the Free
+ * Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+ * 02111-1307, USA.
+ */
+
+#include <zebra.h>
+
+#include "thread.h"
+#include "vty.h"
+#include "command.h"
+#include "memory.h"
+#include "log.h"
+
+#include "common-cli.h"
+
+struct thread_master *master;
+
+int dump_args(struct vty *vty, const char *descr,
+              int argc, const char **argv)
+{
+  int i;
+  vty_out (vty, "%s with %d args.%s", descr, argc, VTY_NEWLINE);
+  for (i = 0; i < argc; i++)
+    {
+      vty_out (vty, "[%02d]: %s%s", i, argv[i], VTY_NEWLINE);
+    }
+
+  return CMD_SUCCESS;
+}
+
+static void vty_do_exit(void)
+{
+  printf ("\nend.\n");
+  exit (0);
+}
+
+/* main routine. */
+int
+main (int argc, char **argv)
+{
+  struct thread thread;
+
+  /* Set umask before anything for security */
+  umask (0027);
+
+  /* master init. */
+  master = thread_master_create ();
+
+  zlog_default = openzlog ("common-cli", ZLOG_NONE,
+                           LOG_CONS|LOG_NDELAY|LOG_PID, LOG_DAEMON);
+  zlog_set_level (NULL, ZLOG_DEST_SYSLOG, ZLOG_DISABLED);
+  zlog_set_level (NULL, ZLOG_DEST_STDOUT, ZLOG_DISABLED);
+  zlog_set_level (NULL, ZLOG_DEST_MONITOR, LOG_DEBUG);
+
+  /* Library inits. */
+  cmd_init (1);
+  host.name = strdup ("test");
+
+  vty_init (master);
+  memory_init ();
+
+  test_init ();
+
+  vty_stdio (vty_do_exit);
+
+  /* Fetch next active thread. */
+  while (thread_fetch (master, &thread))
+    thread_call (&thread);
+
+  /* Not reached. */
+  exit (0);
+}
+
diff --git a/tests/common-cli.h b/tests/common-cli.h
new file mode 100644
index 0000000..8f67515
--- /dev/null
+++ b/tests/common-cli.h
@@ -0,0 +1,49 @@
+/*
+ * generic CLI test helper functions
+ *
+ * Copyright (C) 2015 by David Lamparter,
+ *                   for Open Source Routing / NetDEF, Inc.
+ *
+ * Quagga is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the
+ * Free Software Foundation; either version 2, or (at your option) any
+ * later version.
+ *
+ * Quagga is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Quagga; see the file COPYING.  If not, write to the Free
+ * Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+ * 02111-1307, USA.
+ */
+
+#ifndef _COMMON_CLI_H
+#define _COMMON_CLI_H
+
+#include "zebra.h"
+#include "vty.h"
+#include "command.h"
+
+/* function to be implemented by test */
+extern void test_init (void);
+
+/* functions provided by common cli
+ * (includes main())
+ */
+extern struct thread_master *master;
+
+extern int dump_args(struct vty *vty, const char *descr,
+              int argc, const char **argv);
+
+#define DUMMY_HELPSTR \
+       "00\n01\n02\n03\n04\n05\n06\n07\n08\n09\n" \
+       "10\n11\n12\n13\n14\n15\n16\n17\n18\n19\n" \
+       "20\n21\n22\n23\n24\n25\n26\n27\n28\n29\n"
+#define DUMMY_DEFUN(name, cmdstr) \
+        DEFUN (name, name ## _cmd, cmdstr, DUMMY_HELPSTR) \
+        { return dump_args(vty, #name, argc, argv); }
+
+#endif /* _COMMON_CLI_H */
diff --git a/tests/test-cli.c b/tests/test-cli.c
new file mode 100644
index 0000000..3db44ee
--- /dev/null
+++ b/tests/test-cli.c
@@ -0,0 +1,56 @@
+/*
+ * CLI/command dummy handling tester
+ *
+ * Copyright (C) 2015 by David Lamparter,
+ *                   for Open Source Routing / NetDEF, Inc.
+ *
+ * Quagga is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the
+ * Free Software Foundation; either version 2, or (at your option) any
+ * later version.
+ *
+ * Quagga is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Quagga; see the file COPYING.  If not, write to the Free
+ * Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+ * 02111-1307, USA.
+ */
+
+#include "common-cli.h"
+
+DUMMY_DEFUN(cmd0,  "arg ipv4 A.B.C.D");
+DUMMY_DEFUN(cmd1,  "arg ipv4m A.B.C.D/M");
+DUMMY_DEFUN(cmd2,  "arg ipv6 X:X::X:X");
+DUMMY_DEFUN(cmd3,  "arg ipv6m X:X::X:X/M");
+DUMMY_DEFUN(cmd4,  "arg range <5-15>");
+DUMMY_DEFUN(cmd5,  "pat a ( a|b)");
+DUMMY_DEFUN(cmd6,  "pat b  (a|)");
+DUMMY_DEFUN(cmd7,  "pat c (a | b|c) A.B.C.D");
+DUMMY_DEFUN(cmd8,  "pat d {  foo A.B.C.D|bar   X:X::X:X| baz }");
+DUMMY_DEFUN(cmd9,  "pat e [ WORD ]");
+DUMMY_DEFUN(cmd10, "pat f [key]");
+DUMMY_DEFUN(cmd11, "alt a WORD");
+DUMMY_DEFUN(cmd12, "alt a A.B.C.D");
+DUMMY_DEFUN(cmd13, "alt a X:X::X:X");
+
+void test_init(void)
+{
+  install_element (ENABLE_NODE, &cmd0_cmd);
+  install_element (ENABLE_NODE, &cmd1_cmd);
+  install_element (ENABLE_NODE, &cmd2_cmd);
+  install_element (ENABLE_NODE, &cmd3_cmd);
+  install_element (ENABLE_NODE, &cmd4_cmd);
+  install_element (ENABLE_NODE, &cmd5_cmd);
+  install_element (ENABLE_NODE, &cmd6_cmd);
+  install_element (ENABLE_NODE, &cmd7_cmd);
+  install_element (ENABLE_NODE, &cmd8_cmd);
+  install_element (ENABLE_NODE, &cmd9_cmd);
+  install_element (ENABLE_NODE, &cmd10_cmd);
+  install_element (ENABLE_NODE, &cmd11_cmd);
+  install_element (ENABLE_NODE, &cmd12_cmd);
+  install_element (ENABLE_NODE, &cmd13_cmd);
+}
