File tree Expand file tree Collapse file tree 2 files changed +28
-1
lines changed
sdks/python/apache_beam/runners/portability Expand file tree Collapse file tree 2 files changed +28
-1
lines changed Original file line number Diff line number Diff line change 2727import json
2828import logging
2929import os
30+ import posixpath
3031import shutil
3132import subprocess
3233import sys
@@ -81,7 +82,7 @@ def __init__(self, options):
8182
8283 def _build (self ):
8384 container_image_tag = str (uuid .uuid4 ())
84- container_image_name = os . path .join (
85+ container_image_name = posixpath .join (
8586 self ._docker_registry_push_url or '' ,
8687 'beam_python_prebuilt_sdk:%s' % container_image_tag )
8788 with tempfile .TemporaryDirectory () as temp_folder :
Original file line number Diff line number Diff line change @@ -94,6 +94,32 @@ def test_build_container_image_locates_subclass_invokes_build(
9494 mocked_local_builder .assert_called_once_with (options )
9595 mocked_local_builder .return_value ._build .assert_called_once_with ()
9696
97+ def test_container_image_name_uses_forward_slashes (self ):
98+ """Verify container image names use forward slashes as URI separators."""
99+ options = pipeline_options .PipelineOptions ([
100+ '--docker_registry_push_url=europe-west1-docker.pkg.dev/project-id' \
101+ '/repo-name' ,
102+ ])
103+ builder = sdk_container_builder ._SdkContainerImageLocalBuilder (options )
104+
105+ # Mock the file and docker operations
106+ with unittest .mock .patch (
107+ 'apache_beam.runners.portability.sdk_container_builder.tempfile.' \
108+ 'TemporaryDirectory'
109+ ):
110+ with unittest .mock .patch .object (builder , '_prepare_dependencies' ):
111+ with unittest .mock .patch .object (builder ,
112+ '_invoke_docker_build_and_push' ):
113+ container_image_name = builder ._build ()
114+
115+ expected_prefix = 'europe-west1-docker.pkg.dev/project-id/repo-name/' \
116+ 'beam_python_prebuilt_sdk:'
117+ self .assertTrue (
118+ container_image_name .startswith (expected_prefix ),
119+ f'Expected image name to start with { expected_prefix } ,' \
120+ f' got: { container_image_name } '
121+ )
122+
97123
98124if __name__ == '__main__' :
99125 # Run the tests.
You can’t perform that action at this time.
0 commit comments