mirror of https://github.com/hashicorp/terraform
Add GetModule for the cli to initialize from a regisry module source. Storage.GetModule fetches a module using the same detection and discovery as used by the normal module loading. The final copy is still done by module.GetCopy to remove vcs files.pull/16487/head
parent
9df2389ba2
commit
eef2129f1a
@ -0,0 +1,49 @@
|
||||
package module
|
||||
|
||||
import (
|
||||
"io/ioutil"
|
||||
"os"
|
||||
"path/filepath"
|
||||
"testing"
|
||||
)
|
||||
|
||||
func TestGetModule(t *testing.T) {
|
||||
server := mockRegistry()
|
||||
defer server.Close()
|
||||
disco := testDisco(server)
|
||||
|
||||
td, err := ioutil.TempDir("", "tf")
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
defer os.RemoveAll(td)
|
||||
storage := NewStorage(td, disco, nil)
|
||||
|
||||
// this module exists in a test fixture, and is known by the mockRegistry
|
||||
// relative to our cwd.
|
||||
err = storage.GetModule(filepath.Join(td, "foo"), "registry/local/sub")
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
// list everything to make sure nothing else got unpacked in here
|
||||
ls, err := ioutil.ReadDir(td)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
var names []string
|
||||
for _, info := range ls {
|
||||
names = append(names, info.Name())
|
||||
}
|
||||
|
||||
if !(len(names) == 1 && names[0] == "foo") {
|
||||
t.Fatalf("expected only directory 'foo', found entries %q", names)
|
||||
}
|
||||
|
||||
_, err = os.Stat(filepath.Join(td, "foo", "main.tf"))
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
}
|
||||
Loading…
Reference in new issue