Files
scryer-prolog/tests-pl/issue_make_directory_path.pl
Thierry Marianne 12db664bd9 add tests for file module predicates
reproduce failing `directory_exists/1` with working directory passed as first argument
reproduce failing `delete_directory/1` with ./test directory passed as first argument
reproduce failing `file_size/1` with 2 bytes files passed as first argument
reproduce failing `file_exists/1` with existing file passed as first argument
reproduce failing `file_modification_time/1`, `file_access_time/1` and `file_creation_time/1` with existing file passed as first argument
reproduce failing `directory_files/2` with existing directory passed as first argument
reproduce failing `delete_file/1` with existing file passed as first argument
reproduce failing `make_directory/1` with non-existing directory passed as first argument
reproduce failing `make_directory_path/1` with non-existing path passed as first argument
reproduce failing `path_canonical/2` with non-canonical path passed as first argument
reproduce failing `rename_file/2` with existing file passed as first argument, target file as second arg
revised `directory_exists/1` test case
renamed test files, test directories
use `path_segments/2`, remove path separators
do not write file size to current output
revised `directory_files/2` test
revised `path_canonical/2` test
revised `file_exists/1` test
removed hardcoded expected size
extracted hardcoded directory argument
remove path prefix containing path separator
revised expected ls cmd exit code so that it is platform-agnostic

Signed-off-by: Thierry Marianne <thierry@marianne.io>
2025-09-21 22:52:02 +02:00

31 lines
893 B
Prolog

:- 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).