summaryrefslogtreecommitdiffstats
path: root/testSystemTools.cxx
diff options
context:
space:
mode:
authorKWSys Upstream <kwrobot@kitware.com>2019-01-24 14:49:15 (GMT)
committerBrad King <brad.king@kitware.com>2019-01-24 14:52:22 (GMT)
commitbee32e96b392ff4e0f2baf8fdc831a9e5240c7d9 (patch)
treed7c327b42847f873c196830510d4045c61c6b4ab /testSystemTools.cxx
parent3068a0d0dc87a57408c53b23e125b6c6de0c181a (diff)
downloadCMake-bee32e96b392ff4e0f2baf8fdc831a9e5240c7d9.zip
CMake-bee32e96b392ff4e0f2baf8fdc831a9e5240c7d9.tar.gz
CMake-bee32e96b392ff4e0f2baf8fdc831a9e5240c7d9.tar.bz2
KWSys 2019-01-24 (b9dd1636)
Code extracted from: https://gitlab.kitware.com/utils/kwsys.git at commit b9dd1636e50ea43cd33bed8c6ffbbe7161618b54 (master). Upstream Shortlog ----------------- Ben Boeckel (1): 28db6989 cmake: add an option for building with PIC Taylor Braun-Jones (1): 3f35954d SystemTools: Add TextFilesDiffer method Tobias Kloss (1): aa1f7f7c SystemTools: Fix FileIsSymlink with Windows data deduplication
Diffstat (limited to 'testSystemTools.cxx')
-rw-r--r--testSystemTools.cxx46
1 files changed, 46 insertions, 0 deletions
diff --git a/testSystemTools.cxx b/testSystemTools.cxx
index 0477d59..9a40b53 100644
--- a/testSystemTools.cxx
+++ b/testSystemTools.cxx
@@ -984,6 +984,50 @@ static bool CheckGetLineFromStreamLongLine()
return true;
}
+static bool writeFile(const char* fileName, const char* data)
+{
+ kwsys::ofstream out(fileName, std::ios::binary);
+ out << data;
+ if (!out) {
+ std::cerr << "Failed to write file: " << fileName << std::endl;
+ return false;
+ }
+ return true;
+}
+
+static bool CheckTextFilesDiffer()
+{
+ struct
+ {
+ const char* a;
+ const char* b;
+ bool differ;
+ } test_cases[] = { { "one", "one", false },
+ { "one", "two", true },
+ { "", "", false },
+ { "\n", "\r\n", false },
+ { "one\n", "one\n", false },
+ { "one\r\n", "one\n", false },
+ { "one\n", "one", false },
+ { "one\ntwo", "one\ntwo", false },
+ { "one\ntwo", "one\r\ntwo", false } };
+ const int num_test_cases = sizeof(test_cases) / sizeof(test_cases[0]);
+ for (int i = 0; i < num_test_cases; ++i) {
+ if (!writeFile("file_a", test_cases[i].a) ||
+ !writeFile("file_b", test_cases[i].b)) {
+ return false;
+ }
+ if (kwsys::SystemTools::TextFilesDiffer("file_a", "file_b") !=
+ test_cases[i].differ) {
+ std::cerr << "Incorrect TextFilesDiffer result for test case " << i + 1
+ << "." << std::endl;
+ return false;
+ }
+ }
+
+ return true;
+}
+
int testSystemTools(int, char* [])
{
bool res = true;
@@ -1027,5 +1071,7 @@ int testSystemTools(int, char* [])
res &= CheckGetFilenameName();
+ res &= CheckTextFilesDiffer();
+
return res ? 0 : 1;
}