diff --git a/test_tools/fs_utils.py b/test_tools/fs_utils.py index 40b1b7d..648f1b3 100644 --- a/test_tools/fs_utils.py +++ b/test_tools/fs_utils.py @@ -108,17 +108,18 @@ def copy(source: str, destination: str, force: bool = False, recursive: bool = False, - dereference: bool = False): + dereference: bool = False, + timeout: timedelta = timedelta(minutes=30)): cmd = f"cp{' --force' if force else ''}" \ f"{' --recursive' if recursive else ''}" \ f"{' --dereference' if dereference else ''} " \ f"{source} {destination}" - return TestRun.executor.run_expect_success(cmd) + return TestRun.executor.run_expect_success(cmd, timeout) -def move(source, destination, force: bool = False): +def move(source, destination, force: bool = False, timeout: timedelta = timedelta(minutes=30)): cmd = f"mv{' --force' if force else ''} \"{source}\" \"{destination}\"" - return TestRun.executor.run_expect_success(cmd) + return TestRun.executor.run_expect_success(cmd, timeout) def remove(path: str, force: bool = False, recursive: bool = False, ignore_errors: bool = False): @@ -191,6 +192,13 @@ def md5sum(file, binary=True, timeout: timedelta = timedelta(minutes=30)): return output.stdout.split()[0] +def crc32sum(file, timeout: timedelta = timedelta(minutes=30)): + output = TestRun.executor.run(f"crc32 {file}", timeout) + if output.exit_code != 0: + raise Exception(f"crc32 command execution failed! {output.stdout}\n{output.stderr}") + return output.stdout + + # For some reason separators other than '/' don't work when using sed on system paths # This requires escaping '/' in pattern and target string def escape_sed_string(string: str, sed_replace: bool = False): diff --git a/test_utils/filesystem/file.py b/test_utils/filesystem/file.py index 9554222..6848598 100644 --- a/test_utils/filesystem/file.py +++ b/test_utils/filesystem/file.py @@ -23,6 +23,9 @@ class File(FsItem): def md5sum(self, binary=True, timeout: timedelta = timedelta(minutes=30)): return fs_utils.md5sum(str(self), binary, timeout) + def crc32sum(self, timeout: timedelta = timedelta(minutes=30)): + return fs_utils.crc32sum(str(self), timeout) + def read(self): return fs_utils.read_file(str(self)) @@ -51,8 +54,9 @@ class File(FsItem): destination, force: bool = False, recursive: bool = False, - dereference: bool = False): - fs_utils.copy(str(self), destination, force, recursive, dereference) + dereference: bool = False, + timeout: timedelta = timedelta(minutes=30)): + fs_utils.copy(str(self), destination, force, recursive, dereference, timeout) if fs_utils.check_if_directory_exists(destination): path = f"{destination}{'/' if destination[-1] != '/' else ''}{self.name}" else: