From 1bbe928e50f2fc6b21018656978853f1b6582430 Mon Sep 17 00:00:00 2001 From: CismonX Date: Sat, 29 Mar 2025 15:20:04 +0800 Subject: [PATCH] test: add basic tests for filesystem --- tests/Makefile.am | 2 +- tests/fs_basic.at | 69 ++++++++++++++++++++++++++++++++++++++++++++++ tests/testsuite.at | 3 ++ 3 files changed, 73 insertions(+), 1 deletion(-) create mode 100644 tests/fs_basic.at diff --git a/tests/Makefile.am b/tests/Makefile.am index 39ee403..1d5032e 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -9,7 +9,7 @@ EXTRA_DIST = package.m4 testsuite.at $(TESTSUITE) $(TESTS_) TESTS_ = lib_hash.at lib_prng.at lib_watcher.at lib_sandbox.at \ - lib_hashmap.at + lib_hashmap.at fs_basic.at # Helper programs for testing diff --git a/tests/fs_basic.at b/tests/fs_basic.at new file mode 100644 index 0000000..d190227 --- /dev/null +++ b/tests/fs_basic.at @@ -0,0 +1,69 @@ +dnl +dnl Copyright (C) 2025 CismonX +dnl +dnl Copying and distribution of this file, with or without modification, +dnl are permitted in any medium without royalty, +dnl provided the copyright notice and this notice are preserved. +dnl This file is offered as-is, without any warranty. +dnl + +AT_SETUP([fs: basic operations]) +AT_KEYWORDS([fs basic]) + +# Tests for basic filesystem operations (e.g., create, rename, delete) +# which are backend-agnostic. +ATX_CHECK_FS_NEW_ANY([eol], [ + ATX_RUN_REPEAT([8], [ + ATX_RUN([ + name=$(ath_fn_rand_u64_hex) + name_1=${name}_1 + name_2=${name}_2 + + content=foo:$(ath_fn_rand_u64_hex) + content_1=${content}/1 + content_2=${content}/2 + + echo "$content_1" > $name_1 + test "$(cat $name_1)" = "$content_1" + echo "$content_2" > $name_2 + test "$(cat $name_2)" = "$content_2" + + mv $name_1 $name_2 + test ! -e $name_1 + test "$(cat $name_2)" = "$content_1" + + mv $name_2 $name_1 + test ! -e $name_2 + test "$(cat $name_1)" = "$content_1" + + mkdir $name_2 + mv $name_1 $name_2/$name_2 + test ! -e $name_1 + test "$(cat $name_2/$name_2)" = "$content_1" + + ! mkdir $name_2/$name_2 + mkdir $name_2/$name_1 + mv $name_2/$name_2 $name_2/$name_1/$name_1 + test "$(cat $name_2/$name_1/$name_1)" = "$content_1" + + mkdir $name_1 + ! mv $name_1 $name_2/$name_1/$name_1 + ! mv $name_1 $name_2 + + ! mv $name_2/$name_1/$name_1 $name_2 + rm $name_2/$name_1/$name_1 + test ! -e $name_2/$name_1/$name_1 + + mv $name_1 $name_2 + test ! -e $name_1 + test -d $name_2/$name_1 + + ! rmdir $name_2 + rmdir $name_2/$name_1 + rmdir $name_2 + test ! -e $name_2 + ]) + ]) +]) + +AT_CLEANUP diff --git a/tests/testsuite.at b/tests/testsuite.at index 3650d8c..38f2af5 100644 --- a/tests/testsuite.at +++ b/tests/testsuite.at @@ -201,3 +201,6 @@ m4_include([lib_prng.at]) m4_include([lib_watcher.at]) m4_include([lib_sandbox.at]) m4_include([lib_hashmap.at]) + +AT_BANNER([The Filesystem]) +m4_include([fs_basic.at])