| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 |
- import os
- import shutil
- import pytest
- from openhands.storage.local import LocalFileStore
- from openhands.storage.memory import InMemoryFileStore
- @pytest.fixture
- def setup_env():
- os.makedirs('./_test_files_tmp', exist_ok=True)
- yield
- shutil.rmtree('./_test_files_tmp')
- def test_basic_fileops(setup_env):
- filename = 'test.txt'
- for store in [LocalFileStore('./_test_files_tmp'), InMemoryFileStore()]:
- store.write(filename, 'Hello, world!')
- assert store.read(filename) == 'Hello, world!'
- assert store.list('') == [filename]
- store.delete(filename)
- with pytest.raises(FileNotFoundError):
- store.read(filename)
- def test_complex_path_fileops(setup_env):
- filenames = ['foo.bar.baz', './foo/bar/baz', 'foo/bar/baz', '/foo/bar/baz']
- for store in [LocalFileStore('./_test_files_tmp'), InMemoryFileStore()]:
- for filename in filenames:
- store.write(filename, 'Hello, world!')
- assert store.read(filename) == 'Hello, world!'
- store.delete(filename)
- with pytest.raises(FileNotFoundError):
- store.read(filename)
- def test_list(setup_env):
- for store in [LocalFileStore('./_test_files_tmp'), InMemoryFileStore()]:
- store.write('foo.txt', 'Hello, world!')
- store.write('bar.txt', 'Hello, world!')
- store.write('baz.txt', 'Hello, world!')
- assert store.list('').sort() == ['foo.txt', 'bar.txt', 'baz.txt'].sort()
- store.delete('foo.txt')
- store.delete('bar.txt')
- store.delete('baz.txt')
- def test_deep_list(setup_env):
- for store in [LocalFileStore('./_test_files_tmp'), InMemoryFileStore()]:
- store.write('foo/bar/baz.txt', 'Hello, world!')
- store.write('foo/bar/qux.txt', 'Hello, world!')
- store.write('foo/bar/quux.txt', 'Hello, world!')
- assert store.list('') == ['foo/'], f'for class {store.__class__}'
- assert store.list('foo') == ['foo/bar/']
- assert (
- store.list('foo/bar').sort()
- == ['foo/bar/baz.txt', 'foo/bar/qux.txt', 'foo/bar/quux.txt'].sort()
- )
- store.delete('foo/bar/baz.txt')
- store.delete('foo/bar/qux.txt')
- store.delete('foo/bar/quux.txt')
|