summaryrefslogtreecommitdiffstats
path: root/test/test_filesystem.c
diff options
context:
space:
mode:
Diffstat (limited to 'test/test_filesystem.c')
-rw-r--r--test/test_filesystem.c675
1 files changed, 337 insertions, 338 deletions
diff --git a/test/test_filesystem.c b/test/test_filesystem.c
index 7e1968d..761595e 100644
--- a/test/test_filesystem.c
+++ b/test/test_filesystem.c
@@ -30,523 +30,522 @@
static bool
equals(char* string, const char* expected)
{
- const bool result = !strcmp(string, expected);
- free(string);
- return result;
+ const bool result = !strcmp(string, expected);
+ free(string);
+ return result;
}
static void
test_temp_directory_path(void)
{
- char* tmpdir = lilv_temp_directory_path();
+ char* tmpdir = lilv_temp_directory_path();
- assert(lilv_is_directory(tmpdir));
+ assert(lilv_is_directory(tmpdir));
- free(tmpdir);
+ free(tmpdir);
}
static void
test_path_is_absolute(void)
{
- assert(lilv_path_is_absolute("/a/b"));
- assert(lilv_path_is_absolute("/a"));
- assert(lilv_path_is_absolute("/"));
+ assert(lilv_path_is_absolute("/a/b"));
+ assert(lilv_path_is_absolute("/a"));
+ assert(lilv_path_is_absolute("/"));
- assert(!lilv_path_is_absolute("a/b"));
- assert(!lilv_path_is_absolute("a"));
- assert(!lilv_path_is_absolute("."));
+ assert(!lilv_path_is_absolute("a/b"));
+ assert(!lilv_path_is_absolute("a"));
+ assert(!lilv_path_is_absolute("."));
#ifdef _WIN32
- assert(lilv_path_is_absolute("C:/a/b"));
- assert(lilv_path_is_absolute("C:\\a\\b"));
- assert(lilv_path_is_absolute("D:/a/b"));
- assert(lilv_path_is_absolute("D:\\a\\b"));
+ assert(lilv_path_is_absolute("C:/a/b"));
+ assert(lilv_path_is_absolute("C:\\a\\b"));
+ assert(lilv_path_is_absolute("D:/a/b"));
+ assert(lilv_path_is_absolute("D:\\a\\b"));
#endif
}
static void
test_path_is_child(void)
{
- assert(lilv_path_is_child("/a/b", "/a"));
- assert(lilv_path_is_child("/a/b", "/a/"));
- assert(lilv_path_is_child("/a/b/", "/a"));
- assert(lilv_path_is_child("/a/b/", "/a/"));
-
- assert(!lilv_path_is_child("/a/b", "/a/c"));
- assert(!lilv_path_is_child("/a/b", "/a/c/"));
- assert(!lilv_path_is_child("/a/b/", "/a/c"));
- assert(!lilv_path_is_child("/a/b/", "/a/c/"));
-
- assert(!lilv_path_is_child("/a/b", "/c"));
- assert(!lilv_path_is_child("/a/b", "/c/"));
- assert(!lilv_path_is_child("/a/b/", "/c"));
- assert(!lilv_path_is_child("/a/b/", "/c/"));
+ assert(lilv_path_is_child("/a/b", "/a"));
+ assert(lilv_path_is_child("/a/b", "/a/"));
+ assert(lilv_path_is_child("/a/b/", "/a"));
+ assert(lilv_path_is_child("/a/b/", "/a/"));
+
+ assert(!lilv_path_is_child("/a/b", "/a/c"));
+ assert(!lilv_path_is_child("/a/b", "/a/c/"));
+ assert(!lilv_path_is_child("/a/b/", "/a/c"));
+ assert(!lilv_path_is_child("/a/b/", "/a/c/"));
+
+ assert(!lilv_path_is_child("/a/b", "/c"));
+ assert(!lilv_path_is_child("/a/b", "/c/"));
+ assert(!lilv_path_is_child("/a/b/", "/c"));
+ assert(!lilv_path_is_child("/a/b/", "/c/"));
}
static void
test_path_current(void)
{
- char* cwd = lilv_path_current();
+ char* cwd = lilv_path_current();
- assert(lilv_is_directory(cwd));
+ assert(lilv_is_directory(cwd));
- free(cwd);
+ free(cwd);
}
static void
test_path_absolute(void)
{
- const char* const short_path = "a";
- const char* const long_path = "a/b/c";
+ const char* const short_path = "a";
+ const char* const long_path = "a/b/c";
- char* const cwd = lilv_path_current();
- char* const expected_short = lilv_path_join(cwd, short_path);
- char* const expected_long = lilv_path_join(cwd, long_path);
+ char* const cwd = lilv_path_current();
+ char* const expected_short = lilv_path_join(cwd, short_path);
+ char* const expected_long = lilv_path_join(cwd, long_path);
- assert(equals(lilv_path_absolute(short_path), expected_short));
- assert(equals(lilv_path_absolute(long_path), expected_long));
+ assert(equals(lilv_path_absolute(short_path), expected_short));
+ assert(equals(lilv_path_absolute(long_path), expected_long));
- free(expected_long);
- free(expected_short);
- free(cwd);
+ free(expected_long);
+ free(expected_short);
+ free(cwd);
}
static void
test_path_absolute_child(void)
{
- const char* const parent = "/parent";
- const char* const short_path = "a";
- const char* const long_path = "a/b/c";
+ const char* const parent = "/parent";
+ const char* const short_path = "a";
+ const char* const long_path = "a/b/c";
- char* const expected_short = lilv_path_join(parent, short_path);
- char* const expected_long = lilv_path_join(parent, long_path);
+ char* const expected_short = lilv_path_join(parent, short_path);
+ char* const expected_long = lilv_path_join(parent, long_path);
- assert(equals(lilv_path_absolute_child(short_path, parent),
- expected_short));
+ assert(equals(lilv_path_absolute_child(short_path, parent), expected_short));
- assert(equals(lilv_path_absolute_child(long_path, parent),
- expected_long));
+ assert(equals(lilv_path_absolute_child(long_path, parent), expected_long));
- free(expected_long);
- free(expected_short);
+ free(expected_long);
+ free(expected_short);
}
static void
test_path_relative_to(void)
{
- assert(equals(lilv_path_relative_to("/a/b", "/a/"), "b"));
- assert(equals(lilv_path_relative_to("/a", "/b/c/"), "/a"));
- assert(equals(lilv_path_relative_to("/a/b/c", "/a/b/d/"), "../c"));
- assert(equals(lilv_path_relative_to("/a/b/c", "/a/b/d/e/"), "../../c"));
+ assert(equals(lilv_path_relative_to("/a/b", "/a/"), "b"));
+ assert(equals(lilv_path_relative_to("/a", "/b/c/"), "/a"));
+ assert(equals(lilv_path_relative_to("/a/b/c", "/a/b/d/"), "../c"));
+ assert(equals(lilv_path_relative_to("/a/b/c", "/a/b/d/e/"), "../../c"));
#ifdef _WIN32
- assert(equals(lilv_path_relative_to("C:/a/b", "C:/a/"), "b"));
- assert(equals(lilv_path_relative_to("C:/a", "C:/b/c/"), "../../a"));
- assert(equals(lilv_path_relative_to("C:/a/b/c", "C:/a/b/d/"), "../c"));
- assert(equals(lilv_path_relative_to("C:/a/b/c", "C:/a/b/d/e/"), "../../c"));
-
- assert(equals(lilv_path_relative_to("C:\\a\\b", "C:\\a\\"), "b"));
- assert(equals(lilv_path_relative_to("C:\\a", "C:\\b\\c\\"), "..\\..\\a"));
- assert(equals(lilv_path_relative_to("C:\\a\\b\\c", "C:\\a\\b\\d\\"), "..\\c"));
- assert(equals(lilv_path_relative_to("C:\\a\\b\\c", "C:\\a\\b\\d\\e\\"), "..\\..\\c"));
+ assert(equals(lilv_path_relative_to("C:/a/b", "C:/a/"), "b"));
+ assert(equals(lilv_path_relative_to("C:/a", "C:/b/c/"), "../../a"));
+ assert(equals(lilv_path_relative_to("C:/a/b/c", "C:/a/b/d/"), "../c"));
+ assert(equals(lilv_path_relative_to("C:/a/b/c", "C:/a/b/d/e/"), "../../c"));
+
+ assert(equals(lilv_path_relative_to("C:\\a\\b", "C:\\a\\"), "b"));
+ assert(equals(lilv_path_relative_to("C:\\a", "C:\\b\\c\\"), "..\\..\\a"));
+ assert(
+ equals(lilv_path_relative_to("C:\\a\\b\\c", "C:\\a\\b\\d\\"), "..\\c"));
+ assert(equals(lilv_path_relative_to("C:\\a\\b\\c", "C:\\a\\b\\d\\e\\"),
+ "..\\..\\c"));
#endif
}
static void
test_path_parent(void)
{
- assert(equals(lilv_path_parent("/"), "/"));
- assert(equals(lilv_path_parent("//"), "/"));
- assert(equals(lilv_path_parent("/a"), "/"));
- assert(equals(lilv_path_parent("/a/"), "/"));
- assert(equals(lilv_path_parent("/a///b/"), "/a"));
- assert(equals(lilv_path_parent("/a///b//"), "/a"));
- assert(equals(lilv_path_parent("/a/b"), "/a"));
- assert(equals(lilv_path_parent("/a/b/"), "/a"));
- assert(equals(lilv_path_parent("/a/b/c"), "/a/b"));
- assert(equals(lilv_path_parent("/a/b/c/"), "/a/b"));
- assert(equals(lilv_path_parent("a"), "."));
+ assert(equals(lilv_path_parent("/"), "/"));
+ assert(equals(lilv_path_parent("//"), "/"));
+ assert(equals(lilv_path_parent("/a"), "/"));
+ assert(equals(lilv_path_parent("/a/"), "/"));
+ assert(equals(lilv_path_parent("/a///b/"), "/a"));
+ assert(equals(lilv_path_parent("/a///b//"), "/a"));
+ assert(equals(lilv_path_parent("/a/b"), "/a"));
+ assert(equals(lilv_path_parent("/a/b/"), "/a"));
+ assert(equals(lilv_path_parent("/a/b/c"), "/a/b"));
+ assert(equals(lilv_path_parent("/a/b/c/"), "/a/b"));
+ assert(equals(lilv_path_parent("a"), "."));
}
static void
test_path_filename(void)
{
- // Cases from cppreference.com for std::filesystem::path::filename
- assert(equals(lilv_path_filename("/foo/bar.txt"), "bar.txt"));
- assert(equals(lilv_path_filename("/foo/.bar"), ".bar"));
- assert(equals(lilv_path_filename("/foo/bar/"), ""));
- assert(equals(lilv_path_filename("/foo/."), "."));
- assert(equals(lilv_path_filename("/foo/.."), ".."));
- assert(equals(lilv_path_filename("."), "."));
- assert(equals(lilv_path_filename(".."), ".."));
- assert(equals(lilv_path_filename("/"), ""));
- assert(equals(lilv_path_filename("//host"), "host"));
+ // Cases from cppreference.com for std::filesystem::path::filename
+ assert(equals(lilv_path_filename("/foo/bar.txt"), "bar.txt"));
+ assert(equals(lilv_path_filename("/foo/.bar"), ".bar"));
+ assert(equals(lilv_path_filename("/foo/bar/"), ""));
+ assert(equals(lilv_path_filename("/foo/."), "."));
+ assert(equals(lilv_path_filename("/foo/.."), ".."));
+ assert(equals(lilv_path_filename("."), "."));
+ assert(equals(lilv_path_filename(".."), ".."));
+ assert(equals(lilv_path_filename("/"), ""));
+ assert(equals(lilv_path_filename("//host"), "host"));
#ifdef _WIN32
- assert(equals(lilv_path_filename("C:/foo/bar.txt"), "bar.txt"));
- assert(equals(lilv_path_filename("C:\\foo\\bar.txt"), "bar.txt"));
- assert(equals(lilv_path_filename("foo/bar.txt"), "bar.txt"));
- assert(equals(lilv_path_filename("foo\\bar.txt"), "bar.txt"));
+ assert(equals(lilv_path_filename("C:/foo/bar.txt"), "bar.txt"));
+ assert(equals(lilv_path_filename("C:\\foo\\bar.txt"), "bar.txt"));
+ assert(equals(lilv_path_filename("foo/bar.txt"), "bar.txt"));
+ assert(equals(lilv_path_filename("foo\\bar.txt"), "bar.txt"));
#endif
}
static void
test_path_join(void)
{
- assert(lilv_path_join(NULL, NULL) == NULL);
- assert(lilv_path_join(NULL, "") == NULL);
+ assert(lilv_path_join(NULL, NULL) == NULL);
+ assert(lilv_path_join(NULL, "") == NULL);
#ifdef _WIN32
- assert(equals(lilv_path_join("", NULL), "\\"));
- assert(equals(lilv_path_join("", ""), "\\"));
- assert(equals(lilv_path_join("a", ""), "a\\"));
- assert(equals(lilv_path_join("a", NULL), "a\\"));
- assert(equals(lilv_path_join("a", "b"), "a\\b"));
+ assert(equals(lilv_path_join("", NULL), "\\"));
+ assert(equals(lilv_path_join("", ""), "\\"));
+ assert(equals(lilv_path_join("a", ""), "a\\"));
+ assert(equals(lilv_path_join("a", NULL), "a\\"));
+ assert(equals(lilv_path_join("a", "b"), "a\\b"));
#else
- assert(equals(lilv_path_join("", NULL), "/"));
- assert(equals(lilv_path_join("", ""), "/"));
- assert(equals(lilv_path_join("a", ""), "a/"));
- assert(equals(lilv_path_join("a", NULL), "a/"));
- assert(equals(lilv_path_join("a", "b"), "a/b"));
+ assert(equals(lilv_path_join("", NULL), "/"));
+ assert(equals(lilv_path_join("", ""), "/"));
+ assert(equals(lilv_path_join("a", ""), "a/"));
+ assert(equals(lilv_path_join("a", NULL), "a/"));
+ assert(equals(lilv_path_join("a", "b"), "a/b"));
#endif
- assert(equals(lilv_path_join("/a", ""), "/a/"));
- assert(equals(lilv_path_join("/a/b", ""), "/a/b/"));
- assert(equals(lilv_path_join("/a/", ""), "/a/"));
- assert(equals(lilv_path_join("/a/b/", ""), "/a/b/"));
- assert(equals(lilv_path_join("a/b", ""), "a/b/"));
- assert(equals(lilv_path_join("a/", ""), "a/"));
- assert(equals(lilv_path_join("a/b/", ""), "a/b/"));
-
- assert(equals(lilv_path_join("/a", NULL), "/a/"));
- assert(equals(lilv_path_join("/a/b", NULL), "/a/b/"));
- assert(equals(lilv_path_join("/a/", NULL), "/a/"));
- assert(equals(lilv_path_join("/a/b/", NULL), "/a/b/"));
- assert(equals(lilv_path_join("a/b", NULL), "a/b/"));
- assert(equals(lilv_path_join("a/", NULL), "a/"));
- assert(equals(lilv_path_join("a/b/", NULL), "a/b/"));
-
- assert(equals(lilv_path_join("/a", "b"), "/a/b"));
- assert(equals(lilv_path_join("/a/", "b"), "/a/b"));
- assert(equals(lilv_path_join("a/", "b"), "a/b"));
-
- assert(equals(lilv_path_join("/a", "b/"), "/a/b/"));
- assert(equals(lilv_path_join("/a/", "b/"), "/a/b/"));
- assert(equals(lilv_path_join("a", "b/"), "a/b/"));
- assert(equals(lilv_path_join("a/", "b/"), "a/b/"));
+ assert(equals(lilv_path_join("/a", ""), "/a/"));
+ assert(equals(lilv_path_join("/a/b", ""), "/a/b/"));
+ assert(equals(lilv_path_join("/a/", ""), "/a/"));
+ assert(equals(lilv_path_join("/a/b/", ""), "/a/b/"));
+ assert(equals(lilv_path_join("a/b", ""), "a/b/"));
+ assert(equals(lilv_path_join("a/", ""), "a/"));
+ assert(equals(lilv_path_join("a/b/", ""), "a/b/"));
+
+ assert(equals(lilv_path_join("/a", NULL), "/a/"));
+ assert(equals(lilv_path_join("/a/b", NULL), "/a/b/"));
+ assert(equals(lilv_path_join("/a/", NULL), "/a/"));
+ assert(equals(lilv_path_join("/a/b/", NULL), "/a/b/"));
+ assert(equals(lilv_path_join("a/b", NULL), "a/b/"));
+ assert(equals(lilv_path_join("a/", NULL), "a/"));
+ assert(equals(lilv_path_join("a/b/", NULL), "a/b/"));
+
+ assert(equals(lilv_path_join("/a", "b"), "/a/b"));
+ assert(equals(lilv_path_join("/a/", "b"), "/a/b"));
+ assert(equals(lilv_path_join("a/", "b"), "a/b"));
+
+ assert(equals(lilv_path_join("/a", "b/"), "/a/b/"));
+ assert(equals(lilv_path_join("/a/", "b/"), "/a/b/"));
+ assert(equals(lilv_path_join("a", "b/"), "a/b/"));
+ assert(equals(lilv_path_join("a/", "b/"), "a/b/"));
#ifdef _WIN32
- assert(equals(lilv_path_join("C:/a", "b"), "C:/a/b"));
- assert(equals(lilv_path_join("C:\\a", "b"), "C:\\a\\b"));
- assert(equals(lilv_path_join("C:/a", "b/"), "C:/a/b/"));
- assert(equals(lilv_path_join("C:\\a", "b\\"), "C:\\a\\b\\"));
+ assert(equals(lilv_path_join("C:/a", "b"), "C:/a/b"));
+ assert(equals(lilv_path_join("C:\\a", "b"), "C:\\a\\b"));
+ assert(equals(lilv_path_join("C:/a", "b/"), "C:/a/b/"));
+ assert(equals(lilv_path_join("C:\\a", "b\\"), "C:\\a\\b\\"));
#endif
}
static void
test_path_canonical(void)
{
- char* const temp_dir = lilv_create_temporary_directory("lilvXXXXXX");
- char* const file_path = lilv_path_join(temp_dir, "lilv_test_file");
+ char* const temp_dir = lilv_create_temporary_directory("lilvXXXXXX");
+ char* const file_path = lilv_path_join(temp_dir, "lilv_test_file");
- FILE* f = fopen(file_path, "w");
- fprintf(f, "test\n");
- fclose(f);
+ FILE* f = fopen(file_path, "w");
+ fprintf(f, "test\n");
+ fclose(f);
#ifndef _WIN32
- // Test symlink resolution
+ // Test symlink resolution
- char* const link_path = lilv_path_join(temp_dir, "lilv_test_link");
+ char* const link_path = lilv_path_join(temp_dir, "lilv_test_link");
- assert(!lilv_symlink(file_path, link_path));
+ assert(!lilv_symlink(file_path, link_path));
- char* const real_file_path = lilv_path_canonical(file_path);
- char* const real_link_path = lilv_path_canonical(link_path);
+ char* const real_file_path = lilv_path_canonical(file_path);
+ char* const real_link_path = lilv_path_canonical(link_path);
- assert(!strcmp(real_file_path, real_link_path));
+ assert(!strcmp(real_file_path, real_link_path));
- assert(!lilv_remove(link_path));
- free(real_link_path);
- free(real_file_path);
- free(link_path);
+ assert(!lilv_remove(link_path));
+ free(real_link_path);
+ free(real_file_path);
+ free(link_path);
#endif
- // Test dot segment resolution
+ // Test dot segment resolution
- char* const parent_dir_1 = lilv_path_join(temp_dir, "..");
- char* const parent_dir_2 = lilv_path_parent(temp_dir);
- char* const real_parent_dir_1 = lilv_path_canonical(parent_dir_1);
- char* const real_parent_dir_2 = lilv_path_canonical(parent_dir_2);
+ char* const parent_dir_1 = lilv_path_join(temp_dir, "..");
+ char* const parent_dir_2 = lilv_path_parent(temp_dir);
+ char* const real_parent_dir_1 = lilv_path_canonical(parent_dir_1);
+ char* const real_parent_dir_2 = lilv_path_canonical(parent_dir_2);
- assert(!strcmp(real_parent_dir_1, real_parent_dir_2));
+ assert(!strcmp(real_parent_dir_1, real_parent_dir_2));
- // Clean everything up
+ // Clean everything up
- assert(!lilv_remove(file_path));
- assert(!lilv_remove(temp_dir));
+ assert(!lilv_remove(file_path));
+ assert(!lilv_remove(temp_dir));
- free(real_parent_dir_2);
- free(real_parent_dir_1);
- free(parent_dir_2);
- free(parent_dir_1);
- free(file_path);
- free(temp_dir);
+ free(real_parent_dir_2);
+ free(real_parent_dir_1);
+ free(parent_dir_2);
+ free(parent_dir_1);
+ free(file_path);
+ free(temp_dir);
}
static void
test_path_exists(void)
{
- char* const temp_dir = lilv_create_temporary_directory("lilvXXXXXX");
- char* const file_path = lilv_path_join(temp_dir, "lilv_test_file");
+ char* const temp_dir = lilv_create_temporary_directory("lilvXXXXXX");
+ char* const file_path = lilv_path_join(temp_dir, "lilv_test_file");
- assert(!lilv_path_exists(file_path));
+ assert(!lilv_path_exists(file_path));
- FILE* f = fopen(file_path, "w");
- fprintf(f, "test\n");
- fclose(f);
+ FILE* f = fopen(file_path, "w");
+ fprintf(f, "test\n");
+ fclose(f);
- assert(lilv_path_exists(file_path));
+ assert(lilv_path_exists(file_path));
- assert(!lilv_remove(file_path));
- assert(!lilv_remove(temp_dir));
+ assert(!lilv_remove(file_path));
+ assert(!lilv_remove(temp_dir));
- free(file_path);
- free(temp_dir);
+ free(file_path);
+ free(temp_dir);
}
static void
test_is_directory(void)
{
- char* const temp_dir = lilv_create_temporary_directory("lilvXXXXXX");
- char* const file_path = lilv_path_join(temp_dir, "lilv_test_file");
+ char* const temp_dir = lilv_create_temporary_directory("lilvXXXXXX");
+ char* const file_path = lilv_path_join(temp_dir, "lilv_test_file");
- assert(lilv_is_directory(temp_dir));
- assert(!lilv_is_directory(file_path)); // Nonexistent
+ assert(lilv_is_directory(temp_dir));
+ assert(!lilv_is_directory(file_path)); // Nonexistent
- FILE* f = fopen(file_path, "w");
- fprintf(f, "test\n");
- fclose(f);
+ FILE* f = fopen(file_path, "w");
+ fprintf(f, "test\n");
+ fclose(f);
- assert(!lilv_is_directory(file_path)); // File
+ assert(!lilv_is_directory(file_path)); // File
- assert(!lilv_remove(file_path));
- assert(!lilv_remove(temp_dir));
+ assert(!lilv_remove(file_path));
+ assert(!lilv_remove(temp_dir));
- free(file_path);
- free(temp_dir);
+ free(file_path);
+ free(temp_dir);
}
static void
test_copy_file(void)
{
- char* const temp_dir = lilv_create_temporary_directory("lilvXXXXXX");
- char* const file_path = lilv_path_join(temp_dir, "lilv_test_file");
- char* const copy_path = lilv_path_join(temp_dir, "lilv_test_copy");
-
- FILE* f = fopen(file_path, "w");
- fprintf(f, "test\n");
- fclose(f);
-
- assert(!lilv_copy_file(file_path, copy_path));
- assert(lilv_file_equals(file_path, copy_path));
-
- if (lilv_path_exists("/dev/full")) {
- // Copy short file (error after flushing)
- assert(lilv_copy_file(file_path, "/dev/full") == ENOSPC);
-
- // Copy long file (error during writing)
- f = fopen(file_path, "w");
- for (size_t i = 0; i < 4096; ++i) {
- fprintf(f, "test\n");
- }
- fclose(f);
- assert(lilv_copy_file(file_path, "/dev/full") == ENOSPC);
- }
-
- assert(!lilv_remove(copy_path));
- assert(!lilv_remove(file_path));
- assert(!lilv_remove(temp_dir));
-
- free(copy_path);
- free(file_path);
- free(temp_dir);
+ char* const temp_dir = lilv_create_temporary_directory("lilvXXXXXX");
+ char* const file_path = lilv_path_join(temp_dir, "lilv_test_file");
+ char* const copy_path = lilv_path_join(temp_dir, "lilv_test_copy");
+
+ FILE* f = fopen(file_path, "w");
+ fprintf(f, "test\n");
+ fclose(f);
+
+ assert(!lilv_copy_file(file_path, copy_path));
+ assert(lilv_file_equals(file_path, copy_path));
+
+ if (lilv_path_exists("/dev/full")) {
+ // Copy short file (error after flushing)
+ assert(lilv_copy_file(file_path, "/dev/full") == ENOSPC);
+
+ // Copy long file (error during writing)
+ f = fopen(file_path, "w");
+ for (size_t i = 0; i < 4096; ++i) {
+ fprintf(f, "test\n");
+ }
+ fclose(f);
+ assert(lilv_copy_file(file_path, "/dev/full") == ENOSPC);
+ }
+
+ assert(!lilv_remove(copy_path));
+ assert(!lilv_remove(file_path));
+ assert(!lilv_remove(temp_dir));
+
+ free(copy_path);
+ free(file_path);
+ free(temp_dir);
}
static void
test_flock(void)
{
- char* const temp_dir = lilv_create_temporary_directory("lilvXXXXXX");
- char* const file_path = lilv_path_join(temp_dir, "lilv_test_file");
-
- FILE* const f1 = fopen(file_path, "w");
- FILE* const f2 = fopen(file_path, "w");
-
- assert(!lilv_flock(f1, true, false));
- assert(lilv_flock(f2, true, false));
- assert(!lilv_flock(f1, false, false));
-
- fclose(f2);
- fclose(f1);
- assert(!lilv_remove(file_path));
- assert(!lilv_remove(temp_dir));
- free(file_path);
- free(temp_dir);
+ char* const temp_dir = lilv_create_temporary_directory("lilvXXXXXX");
+ char* const file_path = lilv_path_join(temp_dir, "lilv_test_file");
+
+ FILE* const f1 = fopen(file_path, "w");
+ FILE* const f2 = fopen(file_path, "w");
+
+ assert(!lilv_flock(f1, true, false));
+ assert(lilv_flock(f2, true, false));
+ assert(!lilv_flock(f1, false, false));
+
+ fclose(f2);
+ fclose(f1);
+ assert(!lilv_remove(file_path));
+ assert(!lilv_remove(temp_dir));
+ free(file_path);
+ free(temp_dir);
}
-typedef struct
-{
- size_t n_names;
- char** names;
+typedef struct {
+ size_t n_names;
+ char** names;
} FileList;
static void
visit(const char* const path, const char* const name, void* const data)
{
- FileList* file_list = (FileList*)data;
+ FileList* file_list = (FileList*)data;
- file_list->names =
- (char**)realloc(file_list->names, sizeof(char*) * ++file_list->n_names);
+ file_list->names =
+ (char**)realloc(file_list->names, sizeof(char*) * ++file_list->n_names);
- file_list->names[file_list->n_names - 1] = lilv_strdup(name);
+ file_list->names[file_list->n_names - 1] = lilv_strdup(name);
}
static void
test_dir_for_each(void)
{
- char* const temp_dir = lilv_create_temporary_directory("lilvXXXXXX");
- char* const path1 = lilv_path_join(temp_dir, "lilv_test_1");
- char* const path2 = lilv_path_join(temp_dir, "lilv_test_2");
-
- FILE* const f1 = fopen(path1, "w");
- FILE* const f2 = fopen(path2, "w");
- fprintf(f1, "test\n");
- fprintf(f2, "test\n");
- fclose(f2);
- fclose(f1);
-
- FileList file_list = {0, NULL};
- lilv_dir_for_each(temp_dir, &file_list, visit);
-
- assert((!strcmp(file_list.names[0], "lilv_test_1") &&
- !strcmp(file_list.names[1], "lilv_test_2")) ||
- (!strcmp(file_list.names[0], "lilv_test_2") &&
- !strcmp(file_list.names[1], "lilv_test_1")));
-
- assert(!lilv_remove(path2));
- assert(!lilv_remove(path1));
- assert(!lilv_remove(temp_dir));
-
- free(file_list.names[0]);
- free(file_list.names[1]);
- free(file_list.names);
- free(path2);
- free(path1);
- free(temp_dir);
+ char* const temp_dir = lilv_create_temporary_directory("lilvXXXXXX");
+ char* const path1 = lilv_path_join(temp_dir, "lilv_test_1");
+ char* const path2 = lilv_path_join(temp_dir, "lilv_test_2");
+
+ FILE* const f1 = fopen(path1, "w");
+ FILE* const f2 = fopen(path2, "w");
+ fprintf(f1, "test\n");
+ fprintf(f2, "test\n");
+ fclose(f2);
+ fclose(f1);
+
+ FileList file_list = {0, NULL};
+ lilv_dir_for_each(temp_dir, &file_list, visit);
+
+ assert((!strcmp(file_list.names[0], "lilv_test_1") &&
+ !strcmp(file_list.names[1], "lilv_test_2")) ||
+ (!strcmp(file_list.names[0], "lilv_test_2") &&
+ !strcmp(file_list.names[1], "lilv_test_1")));
+
+ assert(!lilv_remove(path2));
+ assert(!lilv_remove(path1));
+ assert(!lilv_remove(temp_dir));
+
+ free(file_list.names[0]);
+ free(file_list.names[1]);
+ free(file_list.names);
+ free(path2);
+ free(path1);
+ free(temp_dir);
}
static void
test_create_temporary_directory(void)
{
- char* const path1 = lilv_create_temporary_directory("lilvXXXXXX");
+ char* const path1 = lilv_create_temporary_directory("lilvXXXXXX");
- assert(lilv_is_directory(path1));
+ assert(lilv_is_directory(path1));
- char* const path2 = lilv_create_temporary_directory("lilvXXXXXX");
+ char* const path2 = lilv_create_temporary_directory("lilvXXXXXX");
- assert(strcmp(path1, path2));
- assert(lilv_is_directory(path2));
+ assert(strcmp(path1, path2));
+ assert(lilv_is_directory(path2));
- assert(!lilv_remove(path2));
- assert(!lilv_remove(path1));
- free(path2);
- free(path1);
+ assert(!lilv_remove(path2));
+ assert(!lilv_remove(path1));
+ free(path2);
+ free(path1);
}
static void
test_create_directories(void)
{
- char* const temp_dir = lilv_create_temporary_directory("lilvXXXXXX");
+ char* const temp_dir = lilv_create_temporary_directory("lilvXXXXXX");
- assert(lilv_is_directory(temp_dir));
+ assert(lilv_is_directory(temp_dir));
- char* const child_dir = lilv_path_join(temp_dir, "child");
- char* const grandchild_dir = lilv_path_join(child_dir, "grandchild");
+ char* const child_dir = lilv_path_join(temp_dir, "child");
+ char* const grandchild_dir = lilv_path_join(child_dir, "grandchild");
- assert(!lilv_create_directories(grandchild_dir));
- assert(lilv_is_directory(grandchild_dir));
- assert(lilv_is_directory(child_dir));
+ assert(!lilv_create_directories(grandchild_dir));
+ assert(lilv_is_directory(grandchild_dir));
+ assert(lilv_is_directory(child_dir));
- char* const file_path = lilv_path_join(temp_dir, "lilv_test_file");
- FILE* const f = fopen(file_path, "w");
+ char* const file_path = lilv_path_join(temp_dir, "lilv_test_file");
+ FILE* const f = fopen(file_path, "w");
- fprintf(f, "test\n");
- fclose(f);
+ fprintf(f, "test\n");
+ fclose(f);
- assert(lilv_create_directories(file_path));
+ assert(lilv_create_directories(file_path));
- assert(!lilv_remove(file_path));
- assert(!lilv_remove(grandchild_dir));
- assert(!lilv_remove(child_dir));
- assert(!lilv_remove(temp_dir));
- free(file_path);
- free(child_dir);
- free(grandchild_dir);
- free(temp_dir);
+ assert(!lilv_remove(file_path));
+ assert(!lilv_remove(grandchild_dir));
+ assert(!lilv_remove(child_dir));
+ assert(!lilv_remove(temp_dir));
+ free(file_path);
+ free(child_dir);
+ free(grandchild_dir);
+ free(temp_dir);
}
static void
test_file_equals(void)
{
- char* const temp_dir = lilv_create_temporary_directory("lilvXXXXXX");
- char* const path1 = lilv_path_join(temp_dir, "lilv_test_1");
- char* const path2 = lilv_path_join(temp_dir, "lilv_test_2");
+ char* const temp_dir = lilv_create_temporary_directory("lilvXXXXXX");
+ char* const path1 = lilv_path_join(temp_dir, "lilv_test_1");
+ char* const path2 = lilv_path_join(temp_dir, "lilv_test_2");
- FILE* const f1 = fopen(path1, "w");
- FILE* const f2 = fopen(path2, "w");
- fprintf(f1, "test\n");
- fprintf(f2, "test\n");
+ FILE* const f1 = fopen(path1, "w");
+ FILE* const f2 = fopen(path2, "w");
+ fprintf(f1, "test\n");
+ fprintf(f2, "test\n");
- assert(lilv_file_equals(path1, path2));
+ assert(lilv_file_equals(path1, path2));
- fprintf(f2, "diff\n");
- fflush(f2);
+ fprintf(f2, "diff\n");
+ fflush(f2);
- assert(!lilv_file_equals(path1, path2));
+ assert(!lilv_file_equals(path1, path2));
- fclose(f2);
- fclose(f1);
+ fclose(f2);
+ fclose(f1);
- assert(!lilv_remove(path2));
- assert(!lilv_remove(path1));
- assert(!lilv_remove(temp_dir));
+ assert(!lilv_remove(path2));
+ assert(!lilv_remove(path1));
+ assert(!lilv_remove(temp_dir));
- free(path2);
- free(path1);
- free(temp_dir);
+ free(path2);
+ free(path1);
+ free(temp_dir);
}
int
main(void)
{
- test_temp_directory_path();
- test_path_is_absolute();
- test_path_is_child();
- test_path_current();
- test_path_absolute();
- test_path_absolute_child();
- test_path_relative_to();
- test_path_parent();
- test_path_filename();
- test_path_join();
- test_path_canonical();
- test_path_exists();
- test_is_directory();
- test_copy_file();
- test_flock();
- test_dir_for_each();
- test_create_temporary_directory();
- test_create_directories();
- test_file_equals();
-
- return 0;
+ test_temp_directory_path();
+ test_path_is_absolute();
+ test_path_is_child();
+ test_path_current();
+ test_path_absolute();
+ test_path_absolute_child();
+ test_path_relative_to();
+ test_path_parent();
+ test_path_filename();
+ test_path_join();
+ test_path_canonical();
+ test_path_exists();
+ test_is_directory();
+ test_copy_file();
+ test_flock();
+ test_dir_for_each();
+ test_create_temporary_directory();
+ test_create_directories();
+ test_file_equals();
+
+ return 0;
}