@@ -426,6 +426,70 @@ func Test_resolveIfSymlink(t *testing.T) {
426426 }
427427}
428428
429+ func Test_CopyEnvAndWildcards (t * testing.T ) {
430+ setupDirs := func (t * testing.T ) (string , string ) {
431+ testDir := t .TempDir ()
432+
433+ dir := filepath .Join (testDir , "bar" )
434+
435+ if err := os .MkdirAll (dir , 0777 ); err != nil {
436+ t .Fatal (err )
437+ }
438+ file := filepath .Join (dir , "bam.txt" )
439+
440+ if err := os .WriteFile (file , []byte ("meow" ), 0777 ); err != nil {
441+ t .Fatal (err )
442+ }
443+ targetPath := filepath .Join (dir , "dam.txt" )
444+ if err := os .WriteFile (targetPath , []byte ("woof" ), 0777 ); err != nil {
445+ t .Fatal (err )
446+ }
447+ if err := os .Symlink ("dam.txt" , filepath .Join (dir , "sym.link" )); err != nil {
448+ t .Fatal (err )
449+ }
450+
451+ return testDir , filepath .Base (dir )
452+ }
453+ testDir , srcDir := setupDirs (t )
454+ t .Run ("copy sources into a dir defined in env variable" , func (t * testing.T ) {
455+ defer os .RemoveAll (testDir )
456+ expected , err := readDirectory (filepath .Join (testDir , srcDir ))
457+ if err != nil {
458+ t .Fatal (err )
459+ }
460+
461+ targetPath := filepath .Join (testDir , "target" ) + "/"
462+
463+ cmd := CopyCommand {
464+ cmd : & instructions.CopyCommand {
465+ SourcesAndDest : instructions.SourcesAndDest {SourcePaths : []string {srcDir + "/*" }, DestPath : "$TARGET_PATH" },
466+ },
467+ fileContext : util.FileContext {Root : testDir },
468+ }
469+
470+ cfg := & v1.Config {
471+ Cmd : nil ,
472+ Env : []string {"TARGET_PATH=" + targetPath },
473+ WorkingDir : testDir ,
474+ }
475+
476+ err = cmd .ExecuteCommand (cfg , dockerfile .NewBuildArgs ([]string {}))
477+ if err != nil {
478+ t .Fatal (err )
479+ }
480+ testutil .CheckNoError (t , err )
481+
482+ actual , err := readDirectory (targetPath )
483+ if err != nil {
484+ t .Fatal (err )
485+ }
486+ for i , f := range actual {
487+ testutil .CheckDeepEqual (t , expected [i ].Name (), f .Name ())
488+ testutil .CheckDeepEqual (t , expected [i ].Mode (), f .Mode ())
489+ }
490+ })
491+ }
492+
429493func TestCopyCommand_ExecuteCommand_Extended (t * testing.T ) {
430494 setupDirs := func (t * testing.T ) (string , string ) {
431495 testDir := t .TempDir ()
0 commit comments