@@ -66,3 +66,81 @@ func TestRefresh(t *testing.T) {
6666 t .Fatalf ("bad: %#v" , actual )
6767 }
6868}
69+
70+ func TestRefresh_outPath (t * testing.T ) {
71+ // Write out some prior state
72+ tf , err := ioutil .TempFile ("" , "tf" )
73+ if err != nil {
74+ t .Fatalf ("err: %s" , err )
75+ }
76+ statePath := tf .Name ()
77+ defer os .Remove (tf .Name ())
78+
79+ // Output path
80+ outf , err := ioutil .TempFile ("" , "tf" )
81+ if err != nil {
82+ t .Fatalf ("err: %s" , err )
83+ }
84+ outPath := outf .Name ()
85+ outf .Close ()
86+ os .Remove (outPath )
87+
88+ state := & terraform.State {}
89+
90+ err = terraform .WriteState (state , tf )
91+ tf .Close ()
92+ if err != nil {
93+ t .Fatalf ("err: %s" , err )
94+ }
95+
96+ p := testProvider ()
97+ ui := new (cli.MockUi )
98+ c := & RefreshCommand {
99+ TFConfig : testTFConfig (p ),
100+ Ui : ui ,
101+ }
102+
103+ p .RefreshFn = nil
104+ p .RefreshReturn = & terraform.ResourceState {ID : "yes" }
105+
106+ args := []string {
107+ "-out" , outPath ,
108+ statePath ,
109+ testFixturePath ("refresh" ),
110+ }
111+ if code := c .Run (args ); code != 0 {
112+ t .Fatalf ("bad: %d\n \n %s" , code , ui .ErrorWriter .String ())
113+ }
114+
115+ f , err := os .Open (statePath )
116+ if err != nil {
117+ t .Fatalf ("err: %s" , err )
118+ }
119+
120+ newState , err := terraform .ReadState (f )
121+ f .Close ()
122+ if err != nil {
123+ t .Fatalf ("err: %s" , err )
124+ }
125+
126+ if ! reflect .DeepEqual (newState , state ) {
127+ t .Fatalf ("bad: %#v" , newState )
128+ }
129+
130+ f , err = os .Open (outPath )
131+ if err != nil {
132+ t .Fatalf ("err: %s" , err )
133+ }
134+
135+ newState , err = terraform .ReadState (f )
136+ f .Close ()
137+ if err != nil {
138+ t .Fatalf ("err: %s" , err )
139+ }
140+
141+ actual := newState .Resources ["test_instance.foo" ]
142+ expected := p .RefreshReturn
143+ if ! reflect .DeepEqual (actual , expected ) {
144+ t .Fatalf ("bad: %#v" , actual )
145+ }
146+ }
0 commit comments