test_image_agnostic_util.py 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. from unittest.mock import MagicMock, patch
  2. from opendevin.runtime.docker.image_agnostic_util import (
  3. generate_dockerfile_content,
  4. _get_new_image_name,
  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 "RUN apt update && apt install -y openssh-server wget sudo" in dockerfile_content
  12. def test_get_new_image_name():
  13. base_image = "debian:11"
  14. new_image_name = _get_new_image_name(base_image)
  15. assert new_image_name == "od_sandbox:debian__11"
  16. base_image = "ubuntu:22.04"
  17. new_image_name = _get_new_image_name(base_image)
  18. assert new_image_name == "od_sandbox:ubuntu__22.04"
  19. base_image = "ubuntu"
  20. new_image_name = _get_new_image_name(base_image)
  21. assert new_image_name == "od_sandbox:ubuntu__latest"
  22. @patch("opendevin.runtime.docker.image_agnostic_util._build_sandbox_image")
  23. @patch("opendevin.runtime.docker.image_agnostic_util.docker.DockerClient")
  24. def test_get_od_sandbox_image(mock_docker_client, mock_build_sandbox_image):
  25. base_image = "debian:11"
  26. mock_docker_client.images.list.return_value = [MagicMock(tags=["od_sandbox:debian__11"])]
  27. image_name = get_od_sandbox_image(base_image, mock_docker_client)
  28. assert image_name == "od_sandbox:debian__11"
  29. mock_docker_client.images.list.return_value = []
  30. image_name = get_od_sandbox_image(base_image, mock_docker_client)
  31. assert image_name == "od_sandbox:debian__11"
  32. mock_build_sandbox_image.assert_called_once_with(base_image, "od_sandbox:debian__11", mock_docker_client)