feat: 添加程序值

This commit is contained in:
2025-07-16 13:59:23 +08:00
parent 924f9662b5
commit f6ee49f85e
8 changed files with 358 additions and 60 deletions

View File

@@ -32,3 +32,8 @@ add_executable(${PROJECT_NAME}unknow_command_arg test_unknow_command.c)
target_link_libraries(${PROJECT_NAME}unknow_command_arg CArgParse)
add_test(${PROJECT_NAME}unknow_command_arg ${PROJECT_NAME}unknow_command_arg install --unknow)
set_tests_properties(${PROJECT_NAME}unknow_command_arg PROPERTIES WILL_FAIL TRUE)
# 未知命令选项测试,预期打印该命令的帮助信息
add_executable(${PROJECT_NAME}val test_val.c)
target_link_libraries(${PROJECT_NAME}val CArgParse)
add_test(${PROJECT_NAME}val ${PROJECT_NAME}val file1.txt file2.txt file3.txt -v -q)

View File

@@ -4,7 +4,7 @@
#include <string.h>
ArgParse *initArgParse() {
ArgParse *argparse = argParseInit("测试程序");
ArgParse *argparse = argParseInit("测试程序",NOVALUE);
Command *command = NULL;
Command *sub_command = NULL;

122
tests/test_val.c Normal file
View File

@@ -0,0 +1,122 @@
#include "ArgParse.h"
#include <assert.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
ArgParse *initArgParse() {
ArgParse *argparse = argParseInit("测试程序", MULTIVALUE);
Command *command = NULL;
Command *sub_command = NULL;
// add global arguments
argParseAddGlobalArg(argparse,
"-v",
"--version",
"Show version",
NULL,
NULL,
false,
NOVALUE);
argParseAddGlobalArg(
argparse, "-q", "--quiet", "Quiet mode", NULL, NULL, false, NOVALUE);
// add arguments
command = argParseAddCommand(
argparse, "install", "Install the package", NULL, NULL, NULL, NOVALUE);
argParseAddArg(command,
"-i",
"--index",
"Index URL",
"https://example.com",
NULL,
false,
SINGLEVALUE);
argParseAddArg(command,
"-f",
"--file",
"Package file",
"package.json",
NULL,
false,
MULTIVALUE);
argParseAddArg(command,
"-p",
"--package",
"Package file",
"package.json",
NULL,
false,
MULTIVALUE);
sub_command = argParseAddSubCommand(
command, "tools", "Install tools", NULL, NULL, NULL, MULTIVALUE);
argParseAddArg(sub_command,
"-t",
"--tool",
"Tool name",
"Tool name",
NULL,
true,
MULTIVALUE);
sub_command = argParseAddSubCommand(
command, "tools_sub", "Install tools", NULL, NULL, NULL, MULTIVALUE);
argParseAddArg(sub_command,
"-s",
"--source",
"test_source",
"tools subcommand test",
NULL,
true,
MULTIVALUE);
command = argParseAddCommand(argparse,
"uninstall",
"Uninstall the package",
NULL,
NULL,
NULL,
SINGLEVALUE);
argParseAddArg(command,
"-p",
"--package",
"Package name",
"Package name",
NULL,
true,
MULTIVALUE);
return argparse;
}
int main(int argc, char *argv[]) {
ArgParse *argparse = initArgParse();
argParseParse(argparse, argc, argv);
char *val = argParseGetVal(argparse);
if (val) {
printf("val: %s\n", val);
}
int len = 0;
char **vals = argParseGetValList(argparse, &len);
char *test_val[3] = {"file1.txt", "file2.txt", "file3.txt"};
if (vals) {
for (int i = 0; i < len; i++) {
printf("vals: %s\n", vals[i]);
assert(strcmp(vals[i], test_val[i]) == 0);
}
}
assert(argParseCheckGlobalTriggered(argparse, "-v"));
assert(argParseCheckGlobalTriggered(argparse, "-q"));
argParseFree(argparse);
return 0;
}