Replaced argp support for platforms that support it
Argp is really useful, but it's not mandatory.
Этот коммит содержится в:
родитель
551b87b65b
Коммит
2917e71aad
@ -1,5 +1,7 @@
|
||||
project(tests C)
|
||||
|
||||
find_package(Argp)
|
||||
|
||||
set(TORTURE_LIBRARY torture)
|
||||
|
||||
include_directories(
|
||||
@ -14,13 +16,14 @@ include_directories(
|
||||
)
|
||||
|
||||
# create test library
|
||||
add_library(${TORTURE_LIBRARY} STATIC torture.c)
|
||||
add_library(${TORTURE_LIBRARY} STATIC cmdline.c torture.c)
|
||||
target_link_libraries(${TORTURE_LIBRARY}
|
||||
${CMOCKERY_LIBRARY}
|
||||
${LIBSSH_STATIC_LIBRARY}
|
||||
${LIBSSH_LINK_LIBRARIES}
|
||||
${LIBSSH_THREADS_STATIC_LIBRARY}
|
||||
${LIBSSH_THREADS_LINK_LIBRARIES}
|
||||
${ARGP_LIBRARIES}
|
||||
)
|
||||
|
||||
set(TEST_TARGET_LIBRARIES
|
||||
|
67
tests/cmdline.c
Обычный файл
67
tests/cmdline.c
Обычный файл
@ -0,0 +1,67 @@
|
||||
#include "config.h"
|
||||
#include "torture.h"
|
||||
|
||||
#ifdef HAVE_ARGP_H
|
||||
#include <argp.h>
|
||||
|
||||
const char *argp_program_version = "libssh test 0.2";
|
||||
const char *argp_program_bug_address = "<csync-devel@csync.org>";
|
||||
|
||||
static char **cmdline;
|
||||
|
||||
/* Program documentation. */
|
||||
static char doc[] = "libssh test test";
|
||||
|
||||
/* The options we understand. */
|
||||
static struct argp_option options[] = {
|
||||
{
|
||||
.name = "verbose",
|
||||
.key = 'v',
|
||||
.arg = NULL,
|
||||
.flags = 0,
|
||||
.doc = "Make libssh test more verbose",
|
||||
.group = 0
|
||||
},
|
||||
{NULL, 0, NULL, 0, NULL, 0}
|
||||
};
|
||||
|
||||
/* Parse a single option. */
|
||||
static error_t parse_opt (int key, char *arg, struct argp_state *state) {
|
||||
/* Get the input argument from argp_parse, which we
|
||||
* know is a pointer to our arguments structure.
|
||||
*/
|
||||
struct argument_s *arguments = state->input;
|
||||
|
||||
/* arg is currently not used */
|
||||
(void) arg;
|
||||
|
||||
switch (key) {
|
||||
case 'v':
|
||||
arguments->verbose++;
|
||||
break;
|
||||
case ARGP_KEY_ARG:
|
||||
/* End processing here. */
|
||||
cmdline = &state->argv [state->next - 1];
|
||||
state->next = state->argc;
|
||||
break;
|
||||
default:
|
||||
return ARGP_ERR_UNKNOWN;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* Our argp parser. */
|
||||
/* static struct argp argp = {options, parse_opt, args_doc, doc, NULL, NULL, NULL}; */
|
||||
static struct argp argp = {options, parse_opt, NULL, doc, NULL, NULL, NULL};
|
||||
#endif /* HAVE_ARGP_H */
|
||||
|
||||
void torture_cmdline_parse(int argc, char **argv, struct argument_s *arguments) {
|
||||
/*
|
||||
* Parse our arguments; every option seen by parse_opt will
|
||||
* be reflected in arguments.
|
||||
*/
|
||||
#ifdef HAVE_ARGP_H
|
||||
argp_parse(&argp, argc, argv, 0, 0, arguments);
|
||||
#endif /* HAVE_ARGP_H */
|
||||
}
|
@ -9,8 +9,11 @@ int torture_libssh_verbosity(void){
|
||||
}
|
||||
|
||||
int main(int argc, char **argv) {
|
||||
(void) argc;
|
||||
(void) argv;
|
||||
struct argument_s arguments;
|
||||
|
||||
return torture_run_tests();
|
||||
arguments.verbose=0;
|
||||
torture_cmdline_parse(argc, argv, &arguments);
|
||||
verbosity=arguments.verbose;
|
||||
|
||||
return torture_run_tests();
|
||||
}
|
||||
|
@ -12,6 +12,15 @@
|
||||
#include <setjmp.h>
|
||||
#include <google/cmockery.h>
|
||||
|
||||
|
||||
/* Used by main to communicate with parse_opt. */
|
||||
struct argument_s {
|
||||
char *args[2];
|
||||
int verbose;
|
||||
};
|
||||
|
||||
void torture_cmdline_parse(int argc, char **argv, struct argument_s *arguments);
|
||||
|
||||
/*
|
||||
* Returns the verbosity level asked by user
|
||||
*/
|
||||
|
Загрузка…
Ссылка в новой задаче
Block a user