test_fileops.py 1.5 KB

123456789101112131415161718192021222324252627
  1. from pathlib import Path
  2. import pytest
  3. from opendevin import config
  4. from opendevin.action import fileop
  5. from opendevin.schema import ConfigType
  6. def test_resolve_path():
  7. assert fileop.resolve_path('test.txt', '/workspace') == Path(config.get(ConfigType.WORKSPACE_BASE)) / 'test.txt'
  8. assert fileop.resolve_path('subdir/test.txt', '/workspace') == \
  9. Path(config.get(ConfigType.WORKSPACE_BASE)) / 'subdir' / 'test.txt'
  10. assert fileop.resolve_path(Path(fileop.SANDBOX_PATH_PREFIX) / 'test.txt', '/workspace') == \
  11. Path(config.get(ConfigType.WORKSPACE_BASE)) / 'test.txt'
  12. assert fileop.resolve_path(Path(fileop.SANDBOX_PATH_PREFIX) / 'subdir' / 'test.txt',
  13. '/workspace') == Path(config.get(ConfigType.WORKSPACE_BASE)) / 'subdir' / 'test.txt'
  14. assert fileop.resolve_path(Path(fileop.SANDBOX_PATH_PREFIX) / 'subdir' / '..' / 'test.txt',
  15. '/workspace') == Path(config.get(ConfigType.WORKSPACE_BASE)) / 'test.txt'
  16. with pytest.raises(PermissionError):
  17. fileop.resolve_path(Path(fileop.SANDBOX_PATH_PREFIX) / '..' / 'test.txt', '/workspace')
  18. with pytest.raises(PermissionError):
  19. fileop.resolve_path(Path('..') / 'test.txt', '/workspace')
  20. with pytest.raises(PermissionError):
  21. fileop.resolve_path(Path('/') / 'test.txt', '/workspace')
  22. assert fileop.resolve_path('test.txt', '/workspace/test') == \
  23. Path(config.get(ConfigType.WORKSPACE_BASE)) / 'test' / 'test.txt'