diff --git a/Code/Mantid/Kernel/src/ConfigService.cpp b/Code/Mantid/Kernel/src/ConfigService.cpp index 7f0ce924ec5b1eeda954fdcbd169240bd9914085..ed7eef6bfca5265fb7e5f186ce9dd82b20ae29a2 100644 --- a/Code/Mantid/Kernel/src/ConfigService.cpp +++ b/Code/Mantid/Kernel/src/ConfigService.cpp @@ -571,6 +571,7 @@ namespace Kernel } else { + output = ""; updated_file += "\n"; continue; } diff --git a/Code/Mantid/Kernel/test/ConfigServiceTest.h b/Code/Mantid/Kernel/test/ConfigServiceTest.h index 381a05971cbbbf8b46aa2027a8680591fbe16d8f..24de1bb4c74e0817cf9260cf91031787ae8a9f38 100644 --- a/Code/Mantid/Kernel/test/ConfigServiceTest.h +++ b/Code/Mantid/Kernel/test/ConfigServiceTest.h @@ -221,7 +221,56 @@ public: writer.close(); runSaveTest(filename); + } + + void testSaveConfigWithLineContinuation() + { + const std::string filename("user.settings"); + Poco::File prop_file(filename); + if( prop_file.exists() ) prop_file.remove(); + + ConfigServiceImpl& settings = ConfigService::Instance(); + + std::ofstream writer(filename.c_str(),std::ios_base::trunc); + writer << + "mantid.legs=6\n\n" + "search.directories=/test1;\\\n" + "/test2;/test3;\\\n" + "/test4\n"; + writer.close(); + + TS_ASSERT_THROWS_NOTHING(settings.setString("mantid.legs", "10")); + + TS_ASSERT_THROWS_NOTHING(settings.saveConfig(filename)); + // Should exist + TS_ASSERT_EQUALS(prop_file.exists(), true); + // Test the entry + std::ifstream reader(filename.c_str(), std::ios::in); + if( reader.bad() ) + { + TS_FAIL("Unable to open config file for saving"); + } + std::string line(""); + std::map<int, std::string> prop_lines; + int line_index(0); + while(getline(reader, line)) + { + prop_lines.insert(std::make_pair(line_index, line)); + ++line_index; + } + reader.close(); + + //Saved file gets an extra new line + TS_ASSERT_EQUALS(prop_lines.size(), 6); + TS_ASSERT_EQUALS(prop_lines[0], "mantid.legs=10"); + TS_ASSERT_EQUALS(prop_lines[1], ""); + TS_ASSERT_EQUALS(prop_lines[2], "search.directories=/test1;\\"); + TS_ASSERT_EQUALS(prop_lines[3], "/test2;/test3;\\"); + TS_ASSERT_EQUALS(prop_lines[4], "/test4"); + + // Clean up + prop_file.remove(); } private: