import pytest from e2b.exceptions import FileNotFoundException from e2b import Sandbox, FileType def test_get_info_of_file(sandbox: Sandbox): filename = "test_file.txt" sandbox.files.write(filename, "test") info = sandbox.files.get_info(filename) current_path = sandbox.commands.run("pwd") assert info.name == filename assert info.type == FileType.FILE assert info.path == f"{current_path.stdout.strip()}/{filename}" assert info.size == 4 assert info.mode == 0o644 assert info.permissions == "-rw-r--r--" assert info.owner == "user" assert info.group == "user" assert info.modified_time is not None assert info.modified_time.tzinfo is not None def test_get_info_of_nonexistent_file(sandbox: Sandbox): filename = "test_does_not_exist.txt" with pytest.raises(FileNotFoundException): sandbox.files.get_info(filename) def test_get_info_of_directory(sandbox: Sandbox): dirname = "test_dir" sandbox.files.make_dir(dirname) info = sandbox.files.get_info(dirname) current_path = sandbox.commands.run("pwd") assert info.name == dirname assert info.type == FileType.DIR assert info.path == f"{current_path.stdout.strip()}/{dirname}" assert info.size > 0 assert info.mode == 0o755 assert info.permissions == "drwxr-xr-x" assert info.owner == "user" assert info.group == "user" assert info.modified_time is not None assert info.modified_time.tzinfo is not None def test_get_info_of_nonexistent_directory(sandbox: Sandbox): dirname = "test_does_not_exist_dir" with pytest.raises(FileNotFoundException): sandbox.files.get_info(dirname) def test_file_symlink(sandbox: Sandbox): test_dir = "test-simlink-entry" file_name = "test.txt" content = "Hello, World!" sandbox.files.make_dir(test_dir) sandbox.files.write(f"{test_dir}/{file_name}", content) symlink_name = "symlink_to_test.txt" sandbox.commands.run(f"ln -s {file_name} {symlink_name}", cwd=test_dir) file = sandbox.files.get_info(f"{test_dir}/{symlink_name}") pwd = sandbox.commands.run("pwd") assert file.type == FileType.FILE assert file.symlink_target == f"{pwd.stdout.strip()}/{test_dir}/{file_name}" sandbox.files.remove(test_dir)