github.com/graywolf-at-work-2/terraform-vendor@v1.4.5/internal/configs/configload/copy_dir_test.go (about) 1 package configload 2 3 import ( 4 "io/ioutil" 5 "os" 6 "path/filepath" 7 "testing" 8 ) 9 10 // TestCopyDir_symlinks sets up a directory with two submodules, 11 // one being a symlink to the other 12 // 13 // The resultant file structure is as follows: 14 // ├── modules 15 // │ ├── symlink-module -> test-module 16 // │ └── test-module 17 // │ └── main.tf 18 // └── target 19 // ├── symlink-module -> test-module 20 // └── test-module 21 // └── main.tf 22 23 func TestCopyDir_symlinks(t *testing.T) { 24 tmpdir := t.TempDir() 25 26 moduleDir := filepath.Join(tmpdir, "modules") 27 err := os.Mkdir(moduleDir, os.ModePerm) 28 if err != nil { 29 t.Fatal(err) 30 } 31 32 subModuleDir := filepath.Join(moduleDir, "test-module") 33 err = os.Mkdir(subModuleDir, os.ModePerm) 34 if err != nil { 35 t.Fatal(err) 36 } 37 38 err = ioutil.WriteFile(filepath.Join(subModuleDir, "main.tf"), []byte("hello"), 0644) 39 if err != nil { 40 t.Fatal(err) 41 } 42 43 err = os.Symlink("test-module", filepath.Join(moduleDir, "symlink-module")) 44 if err != nil { 45 t.Fatal(err) 46 } 47 48 targetDir := filepath.Join(tmpdir, "target") 49 os.Mkdir(targetDir, os.ModePerm) 50 51 err = copyDir(targetDir, moduleDir) 52 if err != nil { 53 t.Fatal(err) 54 } 55 56 if _, err = os.Lstat(filepath.Join(targetDir, "test-module", "main.tf")); os.IsNotExist(err) { 57 t.Fatal("target test-module/main.tf was not created") 58 } 59 60 if _, err = os.Lstat(filepath.Join(targetDir, "symlink-module", "main.tf")); os.IsNotExist(err) { 61 t.Fatal("target symlink-module/main.tf was not created") 62 } 63 } 64 65 func TestCopyDir_symlink_file(t *testing.T) { 66 tmpdir := t.TempDir() 67 68 moduleDir := filepath.Join(tmpdir, "modules") 69 err := os.Mkdir(moduleDir, os.ModePerm) 70 if err != nil { 71 t.Fatal(err) 72 } 73 74 err = ioutil.WriteFile(filepath.Join(moduleDir, "main.tf"), []byte("hello"), 0644) 75 if err != nil { 76 t.Fatal(err) 77 } 78 79 err = os.Symlink("main.tf", filepath.Join(moduleDir, "symlink.tf")) 80 if err != nil { 81 t.Fatal(err) 82 } 83 84 targetDir := filepath.Join(tmpdir, "target") 85 os.Mkdir(targetDir, os.ModePerm) 86 87 err = copyDir(targetDir, moduleDir) 88 if err != nil { 89 t.Fatal(err) 90 } 91 92 if _, err = os.Lstat(filepath.Join(targetDir, "main.tf")); os.IsNotExist(err) { 93 t.Fatal("target/main.tf was not created") 94 } 95 96 if _, err = os.Lstat(filepath.Join(targetDir, "symlink.tf")); os.IsNotExist(err) { 97 t.Fatal("target/symlink.tf was not created") 98 } 99 }