Skip to content

Commit 97dcff1

Browse files
authored
Merge pull request #428 from Titas-Ghosh/fix-docker-build-subdir-paths
Fix Docker build script path handling for subdirectory node sources in mkconcore
2 parents 145d656 + 7a1f0e2 commit 97dcff1

2 files changed

Lines changed: 33 additions & 2 deletions

File tree

mkconcore.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -759,8 +759,9 @@ def cleanup_script_files():
759759
containername,sourcecode = nodes_dict[node].split(':')
760760
if len(sourcecode)!=0 and sourcecode.find(".")!=-1: #3/28/21
761761
dockername,langext = sourcecode.rsplit(".", 1)
762-
fbuild.write("mkdir docker-"+dockername+"\n")
763-
fbuild.write("cd docker-"+dockername+"\n")
762+
dockerbuilddir = "docker-"+dockername.replace("/", "__").replace("\\", "__")
763+
fbuild.write("mkdir "+dockerbuilddir+"\n")
764+
fbuild.write("cd "+dockerbuilddir+"\n")
764765
fbuild.write("cp ../src/Dockerfile."+dockername+" Dockerfile\n")
765766
#copy sourcefiles from ./src into corresponding directories
766767
fbuild.write("cp ../src/"+sourcecode+" .\n")

tests/test_cli.py

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -153,6 +153,36 @@ def test_run_command_subdir_source(self):
153153
self.assertEqual(result.exit_code, 0)
154154
self.assertTrue(Path('out/src/subdir/script.py').exists())
155155

156+
def test_run_command_docker_subdir_source_build_paths(self):
157+
with self.runner.isolated_filesystem(temp_dir=self.temp_dir):
158+
result = self.runner.invoke(cli, ['init', 'test-project'])
159+
self.assertEqual(result.exit_code, 0)
160+
161+
subdir = Path('test-project/src/subdir')
162+
subdir.mkdir(parents=True, exist_ok=True)
163+
shutil.move('test-project/src/script.py', subdir / 'script.py')
164+
165+
workflow_path = Path('test-project/workflow.graphml')
166+
content = workflow_path.read_text()
167+
content = content.replace('N1:script.py', 'N1:subdir/script.py')
168+
workflow_path.write_text(content)
169+
170+
result = self.runner.invoke(cli, [
171+
'run',
172+
'test-project/workflow.graphml',
173+
'--source', 'test-project/src',
174+
'--output', 'out',
175+
'--type', 'docker'
176+
])
177+
self.assertEqual(result.exit_code, 0)
178+
179+
build_script = Path('out/build').read_text()
180+
self.assertIn('mkdir docker-subdir__script', build_script)
181+
self.assertIn('cp ../src/Dockerfile.subdir/script Dockerfile', build_script)
182+
self.assertIn('cp ../src/subdir/script.py .', build_script)
183+
self.assertIn('cp ../src/subdir/script.iport concore.iport', build_script)
184+
self.assertIn('cd ..', build_script)
185+
156186
def test_run_command_shared_source_specialization_merges_edge_params(self):
157187
with self.runner.isolated_filesystem(temp_dir=self.temp_dir):
158188
Path('src').mkdir()

0 commit comments

Comments
 (0)