test_image_agnostic_util.py 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. from unittest.mock import MagicMock, patch
  2. from opendevin.runtime.docker.image_agnostic_util import (
  3. _get_new_image_name,
  4. generate_dockerfile_content,
  5. get_od_sandbox_image,
  6. )
  7. def test_generate_dockerfile_content():
  8. base_image = 'debian:11'
  9. dockerfile_content = generate_dockerfile_content(base_image)
  10. assert base_image in dockerfile_content
  11. assert (
  12. 'RUN apt update && apt install -y openssh-server wget sudo'
  13. in dockerfile_content
  14. )
  15. def test_get_new_image_name():
  16. base_image = 'debian:11'
  17. new_image_name = _get_new_image_name(base_image)
  18. assert new_image_name == 'od_sandbox:debian__11'
  19. base_image = 'ubuntu:22.04'
  20. new_image_name = _get_new_image_name(base_image)
  21. assert new_image_name == 'od_sandbox:ubuntu__22.04'
  22. base_image = 'ubuntu'
  23. new_image_name = _get_new_image_name(base_image)
  24. assert new_image_name == 'od_sandbox:ubuntu__latest'
  25. @patch('opendevin.runtime.docker.image_agnostic_util._build_sandbox_image')
  26. @patch('opendevin.runtime.docker.image_agnostic_util.docker.DockerClient')
  27. def test_get_od_sandbox_image(mock_docker_client, mock_build_sandbox_image):
  28. base_image = 'debian:11'
  29. mock_docker_client.images.list.return_value = [
  30. MagicMock(tags=['od_sandbox:debian__11'])
  31. ]
  32. image_name = get_od_sandbox_image(base_image, mock_docker_client)
  33. assert image_name == 'od_sandbox:debian__11'
  34. mock_docker_client.images.list.return_value = []
  35. image_name = get_od_sandbox_image(base_image, mock_docker_client)
  36. assert image_name == 'od_sandbox:debian__11'
  37. mock_build_sandbox_image.assert_called_once_with(
  38. base_image, 'od_sandbox:debian__11', mock_docker_client
  39. )