feat(terminal): use project name for in-container cwd and clone directory
This commit is contained in:
@@ -53,37 +53,17 @@ class TestModifyComposeFile:
|
||||
class TestGetRepositoryMountName:
|
||||
"""Tests for _get_repository_mount_name."""
|
||||
|
||||
def test_prefers_remote_url_name_over_user_provided_name(self):
|
||||
def test_uses_project_name(self):
|
||||
project = MagicMock()
|
||||
project.name = "My Project"
|
||||
repo = MagicMock()
|
||||
repo.name = "src"
|
||||
repo.remote_url = "git@git.example.com:acme/headquarter.git"
|
||||
assert _get_repository_mount_name(repo) == "headquarter"
|
||||
assert _get_repository_mount_name(project, repo) == "my-project"
|
||||
|
||||
def test_parses_browser_url_to_repo_name(self):
|
||||
def test_slugifies_project_name(self):
|
||||
project = MagicMock()
|
||||
project.name = "Project v2.0!"
|
||||
repo = MagicMock()
|
||||
repo.name = "src"
|
||||
repo.remote_url = "https://github.com/acme/headquarter/tree/main"
|
||||
assert _get_repository_mount_name(repo) == "headquarter"
|
||||
|
||||
def test_uses_workspace_path_basename_when_workspace_provided(self):
|
||||
repo = MagicMock()
|
||||
repo.name = "src"
|
||||
repo.remote_url = "git@git.example.com:acme/headquarter.git"
|
||||
workspace = MagicMock()
|
||||
workspace.path = "/data/working-copies/uuid/headquarter"
|
||||
assert _get_repository_mount_name(repo, workspace) == "headquarter"
|
||||
|
||||
def test_falls_back_to_repo_name_when_remote_url_missing(self):
|
||||
repo = MagicMock()
|
||||
repo.name = "my-cool-repo"
|
||||
repo.remote_url = None
|
||||
assert _get_repository_mount_name(repo) == "my-cool-repo"
|
||||
|
||||
def test_falls_back_to_repo_name_for_unparseable_url(self):
|
||||
repo = MagicMock()
|
||||
repo.name = "my-cool-repo"
|
||||
repo.remote_url = ""
|
||||
assert _get_repository_mount_name(repo) == "my-cool-repo"
|
||||
assert _get_repository_mount_name(project, repo) == "project-v2-0"
|
||||
|
||||
|
||||
@pytest.mark.unit
|
||||
@@ -277,6 +257,9 @@ async def test_prepare_manifest_instance_uses_workspace_path_basename():
|
||||
|
||||
session = AsyncMock()
|
||||
|
||||
project = MagicMock()
|
||||
project.name = "acme"
|
||||
|
||||
async def session_get(model, obj_id):
|
||||
if model.__name__ == "ToolType":
|
||||
return tool_type
|
||||
@@ -286,6 +269,8 @@ async def test_prepare_manifest_instance_uses_workspace_path_basename():
|
||||
return repo
|
||||
if model.__name__ == "Workspace":
|
||||
return workspace
|
||||
if model.__name__ == "Project":
|
||||
return project
|
||||
return None
|
||||
|
||||
session.get.side_effect = session_get
|
||||
@@ -324,5 +309,5 @@ async def test_prepare_manifest_instance_uses_workspace_path_basename():
|
||||
finally:
|
||||
instance_service.subprocess.run = original_run
|
||||
|
||||
assert "WORKSPACE_NAME: headquarter" in compose_content
|
||||
assert "/data/working-copies/workspace-uuid/headquarter:/home/user/headquarter" in compose_content
|
||||
assert "WORKSPACE_NAME: acme" in compose_content
|
||||
assert "/data/working-copies/workspace-uuid/headquarter:/home/user/acme" in compose_content
|
||||
|
||||
Reference in New Issue
Block a user