github.com/alexissmirnov/terraform@v0.4.3-0.20150423153700-1ef9731a2f14/command/meta_test.go (about)

     1  package command
     2  
     3  import (
     4  	"io/ioutil"
     5  	"os"
     6  	"path/filepath"
     7  	"reflect"
     8  	"testing"
     9  
    10  	"github.com/hashicorp/terraform/terraform"
    11  )
    12  
    13  func TestMetaColorize(t *testing.T) {
    14  	var m *Meta
    15  	var args, args2 []string
    16  
    17  	// Test basic, color
    18  	m = new(Meta)
    19  	m.Color = true
    20  	args = []string{"foo", "bar"}
    21  	args2 = []string{"foo", "bar"}
    22  	args = m.process(args, false)
    23  	if !reflect.DeepEqual(args, args2) {
    24  		t.Fatalf("bad: %#v", args)
    25  	}
    26  	if m.Colorize().Disable {
    27  		t.Fatal("should not be disabled")
    28  	}
    29  
    30  	// Test basic, no change
    31  	m = new(Meta)
    32  	args = []string{"foo", "bar"}
    33  	args2 = []string{"foo", "bar"}
    34  	args = m.process(args, false)
    35  	if !reflect.DeepEqual(args, args2) {
    36  		t.Fatalf("bad: %#v", args)
    37  	}
    38  	if !m.Colorize().Disable {
    39  		t.Fatal("should be disabled")
    40  	}
    41  
    42  	// Test disable #1
    43  	m = new(Meta)
    44  	m.Color = true
    45  	args = []string{"foo", "-no-color", "bar"}
    46  	args2 = []string{"foo", "bar"}
    47  	args = m.process(args, false)
    48  	if !reflect.DeepEqual(args, args2) {
    49  		t.Fatalf("bad: %#v", args)
    50  	}
    51  	if !m.Colorize().Disable {
    52  		t.Fatal("should be disabled")
    53  	}
    54  }
    55  
    56  func TestMetaInputMode(t *testing.T) {
    57  	test = false
    58  	defer func() { test = true }()
    59  
    60  	m := new(Meta)
    61  	args := []string{}
    62  
    63  	fs := m.flagSet("foo")
    64  	if err := fs.Parse(args); err != nil {
    65  		t.Fatalf("err: %s", err)
    66  	}
    67  
    68  	if m.InputMode() != terraform.InputModeStd|terraform.InputModeVarUnset {
    69  		t.Fatalf("bad: %#v", m.InputMode())
    70  	}
    71  }
    72  
    73  func TestMetaInputMode_disable(t *testing.T) {
    74  	test = false
    75  	defer func() { test = true }()
    76  
    77  	m := new(Meta)
    78  	args := []string{"-input=false"}
    79  
    80  	fs := m.flagSet("foo")
    81  	if err := fs.Parse(args); err != nil {
    82  		t.Fatalf("err: %s", err)
    83  	}
    84  
    85  	if m.InputMode() > 0 {
    86  		t.Fatalf("bad: %#v", m.InputMode())
    87  	}
    88  }
    89  
    90  func TestMetaInputMode_defaultVars(t *testing.T) {
    91  	test = false
    92  	defer func() { test = true }()
    93  
    94  	// Create a temporary directory for our cwd
    95  	d := tempDir(t)
    96  	if err := os.MkdirAll(d, 0755); err != nil {
    97  		t.Fatalf("err: %s", err)
    98  	}
    99  	cwd, err := os.Getwd()
   100  	if err != nil {
   101  		t.Fatalf("err: %s", err)
   102  	}
   103  	if err := os.Chdir(d); err != nil {
   104  		t.Fatalf("err: %s", err)
   105  	}
   106  	defer os.Chdir(cwd)
   107  
   108  	// Create the default vars file
   109  	err = ioutil.WriteFile(
   110  		filepath.Join(d, DefaultVarsFilename),
   111  		[]byte(""),
   112  		0644)
   113  	if err != nil {
   114  		t.Fatalf("err: %s", err)
   115  	}
   116  
   117  	m := new(Meta)
   118  	args := []string{}
   119  	args = m.process(args, true)
   120  
   121  	fs := m.flagSet("foo")
   122  	if err := fs.Parse(args); err != nil {
   123  		t.Fatalf("err: %s", err)
   124  	}
   125  
   126  	if m.InputMode()&terraform.InputModeVar != 0 {
   127  		t.Fatalf("bad: %#v", m.InputMode())
   128  	}
   129  }
   130  
   131  func TestMetaInputMode_vars(t *testing.T) {
   132  	test = false
   133  	defer func() { test = true }()
   134  
   135  	m := new(Meta)
   136  	args := []string{"-var", "foo=bar"}
   137  
   138  	fs := m.flagSet("foo")
   139  	if err := fs.Parse(args); err != nil {
   140  		t.Fatalf("err: %s", err)
   141  	}
   142  
   143  	if m.InputMode()&terraform.InputModeVar != 0 {
   144  		t.Fatalf("bad: %#v", m.InputMode())
   145  	}
   146  }
   147  
   148  func TestMeta_initStatePaths(t *testing.T) {
   149  	m := new(Meta)
   150  	m.initStatePaths()
   151  
   152  	if m.statePath != DefaultStateFilename {
   153  		t.Fatalf("bad: %#v", m)
   154  	}
   155  	if m.stateOutPath != DefaultStateFilename {
   156  		t.Fatalf("bad: %#v", m)
   157  	}
   158  	if m.backupPath != DefaultStateFilename+DefaultBackupExtention {
   159  		t.Fatalf("bad: %#v", m)
   160  	}
   161  
   162  	m = new(Meta)
   163  	m.statePath = "foo"
   164  	m.initStatePaths()
   165  
   166  	if m.stateOutPath != "foo" {
   167  		t.Fatalf("bad: %#v", m)
   168  	}
   169  	if m.backupPath != "foo"+DefaultBackupExtention {
   170  		t.Fatalf("bad: %#v", m)
   171  	}
   172  
   173  	m = new(Meta)
   174  	m.stateOutPath = "foo"
   175  	m.initStatePaths()
   176  
   177  	if m.statePath != DefaultStateFilename {
   178  		t.Fatalf("bad: %#v", m)
   179  	}
   180  	if m.backupPath != "foo"+DefaultBackupExtention {
   181  		t.Fatalf("bad: %#v", m)
   182  	}
   183  }