--- /dev/null
+:- use_module(library(files)).
+:- use_module(library(iso_ext)).
+:- use_module(library(lists)).
+:- use_module(library(os), [setenv/2, getenv/2, shell/2]).
+
+check :-
+ act(TargetDir),
+ ground(TargetDir).
+
+act(TargetDir) :-
+ getenv("TARGET_DIRECTORY", TargetDir),
+ delete_directory(TargetDir),
+ append(["ls ", TargetDir], ListFilesCmd),
+ shell(ListFilesCmd, 0),
+ throw(system_error).
+act(TargetDir) :-
+ getenv("TARGET_DIRECTORY", TargetDir),
+ append(["ls ", TargetDir], ListFilesCmd),
+ \+ shell(ListFilesCmd, 0),
+ write(directory_deleted).
+
+main :-
+ call_cleanup(
+ (setenv("TARGET_DIRECTORY", "delete_directory_test"),
+ shell("mkdir delete_directory_test", 0),
+ check),
+ shell("test -d delete_directory_test && rmdir delete_directory_test || true", 0)
+ ).
+
+:- initialization(main).
--- /dev/null
+:- use_module(library(files)).
+:- use_module(library(iso_ext)).
+:- use_module(library(lists)).
+:- use_module(library(os), [setenv/2, getenv/2, shell/2]).
+
+check :-
+ act(TargetFile),
+ ground(TargetFile).
+
+act(TargetFile) :-
+ getenv("TARGET_FILE", TargetFile),
+ delete_file(TargetFile),
+ append(["ls ", TargetFile], ListFilesCmd),
+ shell(ListFilesCmd, 0),
+ throw(system_error).
+act(TargetFile) :-
+ getenv("TARGET_FILE", TargetFile),
+ append(["ls ", TargetFile], ListFilesCmd),
+ \+ shell(ListFilesCmd, 0),
+ write(file_deleted).
+
+main :-
+ call_cleanup(
+ (setenv("TARGET_FILE", "delete_file_test"),
+ shell("touch delete_file_test", 0),
+ check),
+ shell("test -e delete_file_test && rm delete_file_test || true", 0)
+ ).
+
+:- initialization(main).
--- /dev/null
+:- use_module(library(files)).
+:- use_module(library(os), [setenv/2, getenv/2]).
+
+check :-
+ act(TargetDir),
+ ground(TargetDir).
+
+act(TargetDir) :-
+ getenv("TARGET_DIRECTORY", TargetDir),
+ \+ directory_exists(TargetDir),
+ throw(existence_error(directory,TargetDir)).
+act(TargetDir) :-
+ getenv("TARGET_DIRECTORY", TargetDir),
+ directory_exists(TargetDir).
+
+main :-
+ setenv("TARGET_DIRECTORY", "."),
+ check.
+
+:- initialization(main).
--- /dev/null
+:- use_module(library(files)).
+:- use_module(library(iso_ext)).
+:- use_module(library(lists)).
+:- use_module(library(os), [setenv/2, getenv/2, shell/2]).
+
+check :-
+ act(TargetDirectory, Files),
+ ground(TargetDirectory),
+ length(Files, N),
+ write(N).
+
+act(TargetDirectory, Files) :-
+ getenv("TARGET_DIRECTORY", TargetDirectory),
+ directory_files(TargetDirectory, Files).
+
+main :-
+ path_segments(Path, ["directory_files_test_parent", "directory_files_test_file"]),
+ call_cleanup(
+ (setenv("TARGET_DIRECTORY", "directory_files_test_parent"),
+ shell("test -d directory_files_test_parent || mkdir directory_files_test_parent", 0),
+ append(["test -e ", Path, " || touch ", Path], Cmd),
+ shell(Cmd, 0),
+ check),
+ (append(["rm -f ", Path, " || true"], Cmd1),
+ shell(Cmd1, 0),
+ shell("rmdir directory_files_test_parent || true", 0),
+ shell("ls directory_files_test_parent", 1))
+ ).
+
+:- initialization(main).
--- /dev/null
+:- use_module(library(files)).
+:- use_module(library(iso_ext)).
+:- use_module(library(lists)).
+:- use_module(library(os), [setenv/2, getenv/2, shell/2]).
+
+check :-
+ act(Source, Destination),
+ ground(Source),
+ ground(Destination).
+
+act(Source, Destination) :-
+ getenv("SOURCE", Source),
+ getenv("DESTINATION", Destination),
+ append("ls ", Source, Cmd),
+ shell(Cmd, 0),
+ file_copy(Source, Destination),
+ append("ls ", Destination, Cmd),
+ \+ shell(Cmd, 0),
+ throw(existence_error(directory,Destination)).
+act(Source, Destination) :-
+ getenv("SOURCE", Source),
+ getenv("DESTINATION", Destination),
+ append("ls ", Destination, Cmd),
+ shell(Cmd, 0),
+ write(file_copied).
+
+main :-
+ call_cleanup(
+ (setenv("SOURCE", "file_copy_test_source"),
+ setenv("DESTINATION", "file_copy_test_destination"),
+ shell("touch file_copy_test_source", 0),
+ check),
+ shell("rm -f file_copy_test_source file_copy_test_destination", 0)
+ ).
+
+:- initialization(main).
--- /dev/null
+:- use_module(library(files)).
+:- use_module(library(iso_ext)).
+:- use_module(library(os), [setenv/2, getenv/2, shell/2]).
+
+check :-
+ act(TargetFile),
+ ground(TargetFile).
+
+act(TargetFile) :-
+ getenv("TARGET_FILE", TargetFile),
+ \+ file_exists(TargetFile),
+ throw(existence_error(file,TargetFile)).
+act(TargetFile) :-
+ getenv("TARGET_FILE", TargetFile),
+ file_exists(TargetFile).
+
+main :-
+ call_cleanup(
+ (setenv("TARGET_FILE", "file_exists_test"),
+ shell("touch file_exists_test", 0),
+ check),
+ shell("rm -f file_exists_test", 0)
+ ).
+
+:- initialization(main).
--- /dev/null
+:- use_module(library(files)).
+:- use_module(library(iso_ext)).
+:- use_module(library(lists)).
+:- use_module(library(os), [setenv/2, getenv/2, shell/2]).
+
+check :-
+ act(TargetFile, Size),
+ ground(TargetFile),
+ integer(Size).
+
+act(TargetFile, Size) :-
+ getenv("TARGET_FILE", TargetFile),
+ file_size(TargetFile, Size).
+
+main :-
+ call_cleanup(
+ (setenv("TARGET_FILE", "file_size_test"),
+ shell("echo '1' > file_size_test", 0),
+ check),
+ shell("rm -f file_size_test", 0)
+ ).
+
+:- initialization(main).
--- /dev/null
+:- use_module(library(files)).
+:- use_module(library(iso_ext)).
+:- use_module(library(lists)).
+:- use_module(library(os), [setenv/2, getenv/2, shell/2]).
+
+check(Time) :-
+ act(TargetFile, Time),
+ ground(TargetFile),
+ ground(Time).
+
+act(TargetFile, Time) :-
+ getenv("TARGET_FILE", TargetFile),
+ ( file_access_time(TargetFile, Time)
+ ; file_creation_time(TargetFile, Time)
+ ; file_modification_time(TargetFile, Time) ).
+
+main :-
+ call_cleanup(
+ (setenv("TARGET_FILE", "file_time_test"),
+ shell("touch file_time_test", 0),
+ findall(T, check(T), Ts),
+ length(Ts, 3)),
+ shell("rm -f file_time_test", 0)
+ ).
+
+:- initialization(main).
--- /dev/null
+:- use_module(library(files)).
+:- use_module(library(iso_ext)).
+:- use_module(library(lists)).
+:- use_module(library(os), [setenv/2, getenv/2, shell/2]).
+
+check :-
+ act(TargetDir),
+ ground(TargetDir).
+
+act(TargetDir) :-
+ getenv("TARGET_DIRECTORY", TargetDir),
+ make_directory(TargetDir),
+ append(["ls ", TargetDir], ListFilesCmd),
+ \+ shell(ListFilesCmd, 0),
+ throw(system_error).
+act(TargetDir) :-
+ getenv("TARGET_DIRECTORY", TargetDir),
+ append(["ls ", TargetDir], ListFilesCmd),
+ shell(ListFilesCmd, 0),
+ write(directory_made).
+
+main :-
+ call_cleanup(
+ (setenv("TARGET_DIRECTORY", "make_directory_test"),
+ check),
+ shell("test -d make_directory_test && rmdir make_directory_test || true", 0)
+ ).
+
+:- initialization(main).
--- /dev/null
+:- use_module(library(files)).
+:- use_module(library(iso_ext)).
+:- use_module(library(lists)).
+:- use_module(library(os), [setenv/2, getenv/2, shell/2]).
+
+check :-
+ act(TargetPath),
+ ground(TargetPath).
+
+act(TargetPath) :-
+ getenv("TARGET_DIRECTORY", TargetPath),
+ make_directory_path(TargetPath),
+ append(["ls ", TargetPath], ListFilesCmd),
+ \+ shell(ListFilesCmd, 0),
+ throw(system_error).
+act(TargetPath) :-
+ getenv("TARGET_DIRECTORY", TargetPath),
+ append(["ls ", TargetPath], ListFilesCmd),
+ shell(ListFilesCmd, 0),
+ write(directory_path_made).
+
+main :-
+ call_cleanup(
+ (setenv("TARGET_DIRECTORY", "make_directory_test/subdir"),
+ check),
+ (shell("test -d make_directory_test/subdir && rmdir make_directory_test/subdir || true", 0),
+ shell("test -d make_directory_test && rmdir make_directory_test || true", 0))
+ ).
+
+:- initialization(main).
--- /dev/null
+:- use_module(library(files)).
+:- use_module(library(iso_ext)).
+:- use_module(library(os), [setenv/2, getenv/2, shell/2]).
+
+check :-
+ act(Dir),
+ ground(Dir).
+
+act(Dir) :-
+ getenv("TARGET_PATH", Dir),
+ \+ path_canonical(Dir, _CanonicalPath),
+ throw(system_error).
+act(Dir) :-
+ getenv("TARGET_PATH", Dir),
+ path_canonical(Dir, _CanonicalPath),
+ write(path_canonicalized).
+
+main :-
+ path_segments(Path, ["path_canonical_test", "..", "path_canonical_test"]),
+ call_cleanup(
+ (setenv("TARGET_PATH", Path),
+ shell("mkdir path_canonical_test", 0),
+ check),
+ shell("test -d path_canonical_test && rmdir path_canonical_test || true", 0)
+ ).
+
+:- initialization(main).
--- /dev/null
+:- use_module(library(files)).
+:- use_module(library(iso_ext)).
+:- use_module(library(lists)).
+:- use_module(library(os), [setenv/2, getenv/2, shell/2]).
+
+check :-
+ act(Source, Destination),
+ ground(Source),
+ ground(Destination).
+
+act(Source, Destination) :-
+ getenv("SOURCE", Source),
+ getenv("DESTINATION", Destination),
+ \+ rename_file(Source, Destination),
+ throw(system_error).
+act(Source, Destination) :-
+ getenv("SOURCE", Source),
+ getenv("DESTINATION", Destination),
+ append(["ls ", Destination], Cmd),
+ shell(Cmd, 0),
+ write(file_renamed).
+
+main :-
+ call_cleanup(
+ (setenv("SOURCE", "rename_file_test"),
+ setenv("DESTINATION", "rename_file_test_renamed"),
+ shell("touch rename_file_test", 0),
+ check),
+ shell("rm -f rename_file_test_renamed || rm -f rename_file_test", 0)
+ ).
+
+:- initialization(main).
load_module_test("tests-pl/issue2725.pl", "");
}
+#[serial]
+#[test]
+#[cfg_attr(miri, ignore = "it takes too long to run")]
+fn issue_delete_directory() {
+ load_module_test("tests-pl/issue_delete_directory.pl", "directory_deleted");
+}
+
+#[serial]
+#[test]
+#[cfg_attr(miri, ignore = "it takes too long to run")]
+fn issue_delete_file() {
+ load_module_test("tests-pl/issue_delete_file.pl", "file_deleted");
+}
+
+#[serial]
+#[test]
+#[cfg_attr(miri, ignore = "it takes too long to run")]
+fn issue_directory_exists() {
+ load_module_test("tests-pl/issue_directory_exists.pl", "");
+}
+
+#[serial]
+#[test]
+#[cfg_attr(miri, ignore = "it takes too long to run")]
+fn issue_directory_files() {
+ load_module_test("tests-pl/issue_directory_files.pl", "1");
+}
+
+#[serial]
+#[test]
+#[cfg_attr(miri, ignore = "it takes too long to run")]
+fn issue_file_copy() {
+ load_module_test("tests-pl/issue_file_copy.pl", "file_copied");
+}
+
+#[serial]
+#[test]
+#[cfg_attr(miri, ignore = "it takes too long to run")]
+fn issue_file_exists() {
+ load_module_test("tests-pl/issue_file_exists.pl", "");
+}
+
+#[serial]
+#[test]
+#[cfg_attr(miri, ignore = "it takes too long to run")]
+fn issue_file_size() {
+ load_module_test("tests-pl/issue_file_size.pl", "");
+}
+
+#[serial]
+#[test]
+#[cfg_attr(miri, ignore = "it takes too long to run")]
+fn issue_file_time() {
+ load_module_test("tests-pl/issue_file_time.pl", "");
+}
+
+#[serial]
+#[test]
+#[cfg_attr(miri, ignore = "it takes too long to run")]
+fn issue_make_directory() {
+ load_module_test("tests-pl/issue_make_directory.pl", "directory_made");
+}
+
+#[serial]
+#[test]
+#[cfg_attr(miri, ignore = "it takes too long to run")]
+fn issue_make_directory_path() {
+ load_module_test("tests-pl/issue_make_directory_path.pl", "directory_path_made");
+}
+
+#[serial]
+#[test]
+#[cfg_attr(miri, ignore = "it takes too long to run")]
+fn issue_path_canonical() {
+ load_module_test("tests-pl/issue_path_canonical.pl", "path_canonicalized");
+}
+
+#[serial]
+#[test]
+#[cfg_attr(miri, ignore = "it takes too long to run")]
+fn issue_rename_file() {
+ load_module_test("tests-pl/issue_rename_file.pl", "file_renamed");
+}
+
#[test]
#[cfg(feature = "http")]
#[cfg(not(target_arch = "wasm32"))]