github.com/eliastor/durgaform@v0.0.0-20220816172711-d0ab2d17673e/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  }