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