diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index f7042697c..42053881e 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -380,10 +380,11 @@ if (SLIC3R_BUILD_TESTS) target_include_directories(Catch INTERFACE ${CMAKE_BINARY_DIR}/external/Catch/include) target_compile_definitions(Catch INTERFACE $<$:_SILENCE_CXX17_UNCAUGHT_EXCEPTION_DEPRECATION_WARNING>) endif() - include_directories(${LIBDIR}/test) + include_directories(${TESTDIR}) configure_file("${TESTDIR}/test_options.hpp.in" "${TESTDIR}/test_options.hpp") add_executable(slic3r_test ${SLIC3R_TEST_SOURCES}) add_test(NAME TestSlic3r COMMAND slic3r_test) + target_compile_features(slic3r_test PUBLIC cxx_std_14) target_link_libraries(slic3r_test PUBLIC libslic3r Catch ${LIBSLIC3R_DEPENDS}) endif() diff --git a/src/test/libslic3r/test_config.cpp b/src/test/libslic3r/test_config.cpp index 0aeb8f0f0..730f3119c 100644 --- a/src/test/libslic3r/test_config.cpp +++ b/src/test/libslic3r/test_config.cpp @@ -1,12 +1,12 @@ #include #include "Config.hpp" -#include +#include #include using namespace Slic3r; -using namespace std::string_literals; +using namespace std::literals::string_literals; SCENARIO("Generic config validation performs as expected.", "[!mayfail]") { GIVEN("A config generated from default options") { @@ -101,7 +101,7 @@ SCENARIO("Config accessor functions perform as expected.", "[!mayfail]") { SCENARIO("Config ini load/save interface", "[!mayfail]") { WHEN("new_from_ini is called") { - auto config {Slic3r::Config::new_from_config(std::string(testfile_dir) + "test_config/new_from_ini.ini"s) }; + auto config {Slic3r::Config::new_from_ini(std::string(testfile_dir) + "test_config/new_from_ini.ini"s) }; THEN("Config object contains ini file options.") { } } diff --git a/xs/src/libslic3r/Config.cpp b/xs/src/libslic3r/Config.cpp index b46ecb227..4bf60e5c7 100644 --- a/xs/src/libslic3r/Config.cpp +++ b/xs/src/libslic3r/Config.cpp @@ -35,6 +35,15 @@ new_from_cli(const int& argc, const char* argv[]) return std::make_shared(); } +std::shared_ptr +Config::new_from_ini(const std::string& inifile) +{ + + auto my_config(std::make_shared()); + my_config->read_ini(inifile); + return my_config; +} + bool Config::validate() { diff --git a/xs/src/libslic3r/Config.hpp b/xs/src/libslic3r/Config.hpp index e2e9a6c34..231b635ae 100644 --- a/xs/src/libslic3r/Config.hpp +++ b/xs/src/libslic3r/Config.hpp @@ -40,6 +40,9 @@ public: /// Factory method to construct a Config from CLI options. static std::shared_ptr new_from_cli(const int& argc, const char* argv[]); + /// Factory method to construct a Config from an ini file. + static std::shared_ptr new_from_ini(const std::string& inifile); + /// Write a windows-style opt=value ini file with categories from the configuration store. void write_ini(const std::string& file) const;