diff options
author | Ana Rey <anarey@gmail.com> | 2014-04-09 17:03:45 +0200 |
---|---|---|
committer | Pablo Neira Ayuso <pablo@netfilter.org> | 2014-04-14 10:46:15 +0200 |
commit | f349fc44e0961b72f39d5343a26fcbbd5b4e1dec (patch) | |
tree | 040c9b9a535b37af6d13f1b8b3077b5499fd770a | |
parent | 4292509d13c73a0739c21a215177799476c4d7dc (diff) |
tests: Add support to check a json or xml testfile
Add new command-line argument "-f <file>" to check a json or xml
testfile.
./nft-parsing-test -f <file> Check this testfile.
Signed-off-by: Ana Rey <anarey@gmail.com>
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
-rw-r--r-- | tests/nft-parsing-test.c | 48 |
1 files changed, 47 insertions, 1 deletions
diff --git a/tests/nft-parsing-test.c b/tests/nft-parsing-test.c index 59c75a6..952ffbf 100644 --- a/tests/nft-parsing-test.c +++ b/tests/nft-parsing-test.c @@ -240,6 +240,47 @@ static int execute_test(const char *dir_name) return 0; } +static int execute_test_file(const char *filename) +{ + char path[PATH_MAX]; + int ret = 0; + struct nft_parse_err *err; + + err = nft_parse_err_alloc(); + if (err == NULL) { + perror("error"); + exit(EXIT_FAILURE); + } + + snprintf(path, sizeof(path), "%s", filename); + + int len = strlen(filename); + if (strcmp(&filename[len-4], ".xml") == 0) { + if ((ret = test_xml(path, err)) == 0) { + if (!update) { + printf("parsing and validating %s: ", + path); + printf("\033[32mOK\e[0m\n"); + } + } + exit(EXIT_FAILURE); + } + if (strcmp(&filename[len-5], ".json") == 0) { + if ((ret = test_json(path, err)) == 0) { + if (!update) { + printf("parsing and validating %s: ", + path); + printf("\033[32mOK\e[0m\n"); + } + } + exit(EXIT_FAILURE); + } + + nft_parse_err_free(err); + + return 0; +} + static void show_help(const char *name) { printf( @@ -248,6 +289,7 @@ static void show_help(const char *name) "Options:\n" " -d/--dir <directory> Check test files from <directory>.\n" " -u/--update <directory> Update test files from <directory>.\n" +" -f/--file <file> Check test file <file>\n" "\n", name); } @@ -260,6 +302,7 @@ int main(int argc, char *argv[]) static struct option long_options[] = { { "dir", required_argument, 0, 'd' }, { "update", required_argument, 0, 'u' }, + { "file", required_argument, 0, 'f' }, { 0 } }; @@ -269,7 +312,7 @@ int main(int argc, char *argv[]) } while (1) { - val = getopt_long(argc, argv, "d:u:", long_options, + val = getopt_long(argc, argv, "d:u:f:", long_options, &option_index); if (val == -1) @@ -283,6 +326,9 @@ int main(int argc, char *argv[]) update = true; ret = execute_test(optarg); break; + case 'f': + ret = execute_test_file(optarg); + break; default: show_help(argv[0]); break; |