Added support for params config file

This commit is contained in:
SChernykh
2025-11-21 20:13:13 +01:00
parent d9cea1cfc3
commit de28201edc
9 changed files with 255 additions and 18 deletions
+1
View File
@@ -191,3 +191,4 @@ add_custom_command(TARGET ${CMAKE_PROJECT_NAME} POST_BUILD COMMAND ${CMAKE_COMMA
add_custom_command(TARGET ${CMAKE_PROJECT_NAME} POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy_if_different "${CMAKE_SOURCE_DIR}/src/sidechain_dump.dat.xz" $<TARGET_FILE_DIR:${CMAKE_PROJECT_NAME}>)
add_custom_command(TARGET ${CMAKE_PROJECT_NAME} POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy_if_different "${CMAKE_SOURCE_DIR}/src/sidechain_dump_mini.dat.xz" $<TARGET_FILE_DIR:${CMAKE_PROJECT_NAME}>)
add_custom_command(TARGET ${CMAKE_PROJECT_NAME} POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy_if_different "${CMAKE_SOURCE_DIR}/src/sidechain_dump_nano.dat.xz" $<TARGET_FILE_DIR:${CMAKE_PROJECT_NAME}>)
add_custom_command(TARGET ${CMAKE_PROJECT_NAME} POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy_if_different "${CMAKE_SOURCE_DIR}/src/test_params.conf" $<TARGET_FILE_DIR:${CMAKE_PROJECT_NAME}>)
+17
View File
@@ -0,0 +1,17 @@
# comment 1
param1=value1
param2 = value2 # comment 2
param3 value3#_comment_3
param4 = "value with spaces # not a comment" # a real comment
param5 = "spaces and quotes \" and \\ slashes"
param6 = value1 value2 value3
param7=value7
param8#comment
param9
abcdefghijklmnopqrstuvwxyz-ABCDEFGHIJKLMNOPQRSTUVWXYZ-0123456789=0123456789-ABCDEFGHIJKLMNOPQRSTUVWXYZ-abcdefghijklmnopqrstuvwxyz=://
+61
View File
@@ -247,4 +247,65 @@ TEST(util, onion)
ASSERT_TRUE(from_onion_v3("civ5tgldg3yx73ytse6hvvk3nm6q3zctbqvytpszihm35b33ze73kxad.onion").empty());
}
TEST(util, parse_config)
{
const std::vector<std::vector<std::string>> args = parse_config("test_params.conf");
ASSERT_EQ(args.size(), 10);
ASSERT_EQ(args[0].size(), 2);
ASSERT_EQ(args[0][0], "param1");
ASSERT_EQ(args[0][1], "value1");
ASSERT_EQ(args[1].size(), 2);
ASSERT_EQ(args[1][0], "param2");
ASSERT_EQ(args[1][1], "value2");
ASSERT_EQ(args[2].size(), 2);
ASSERT_EQ(args[2][0], "param3");
ASSERT_EQ(args[2][1], "value3");
ASSERT_EQ(args[3].size(), 2);
ASSERT_EQ(args[3][0], "param4");
ASSERT_EQ(args[3][1], "value with spaces # not a comment");
ASSERT_EQ(args[4].size(), 2);
ASSERT_EQ(args[4][0], "param5");
ASSERT_EQ(args[4][1], "spaces and quotes \" and \\ slashes");
ASSERT_EQ(args[5].size(), 4);
ASSERT_EQ(args[5][0], "param6");
ASSERT_EQ(args[5][1], "value1");
ASSERT_EQ(args[5][2], "value2");
ASSERT_EQ(args[5][3], "value3");
ASSERT_EQ(args[6].size(), 2);
ASSERT_EQ(args[6][0], "param7");
ASSERT_EQ(args[6][1], "value7");
ASSERT_EQ(args[7].size(), 1);
ASSERT_EQ(args[7][0], "param8");
ASSERT_EQ(args[8].size(), 1);
ASSERT_EQ(args[8][0], "param9");
ASSERT_EQ(args[9].size(), 2);
ASSERT_EQ(args[9][0], "abcdefghijklmnopqrstuvwxyz-ABCDEFGHIJKLMNOPQRSTUVWXYZ-0123456789");
ASSERT_EQ(args[9][1], "0123456789-ABCDEFGHIJKLMNOPQRSTUVWXYZ-abcdefghijklmnopqrstuvwxyz=://");
bool exception_thrown = false;
try {
parse_config("non_existent_file.conf");
// Execution shouldn't reach this line
FAIL();
}
catch (const std::exception&) {
exception_thrown = true;
}
ASSERT_TRUE(exception_thrown);
}
}