github.com/terramate-io/tf@v0.0.0-20230830114523-fce866b4dfcd/plans/planfile/config_snapshot_test.go (about) 1 // Copyright (c) HashiCorp, Inc. 2 // SPDX-License-Identifier: MPL-2.0 3 4 package planfile 5 6 import ( 7 "archive/zip" 8 "bytes" 9 "path/filepath" 10 "reflect" 11 "testing" 12 13 "github.com/davecgh/go-spew/spew" 14 15 "github.com/terramate-io/tf/configs/configload" 16 ) 17 18 func TestConfigSnapshotRoundtrip(t *testing.T) { 19 fixtureDir := filepath.Join("testdata", "test-config") 20 loader, err := configload.NewLoader(&configload.Config{ 21 ModulesDir: filepath.Join(fixtureDir, ".terraform", "modules"), 22 }) 23 if err != nil { 24 t.Fatal(err) 25 } 26 27 _, snapIn, diags := loader.LoadConfigWithSnapshot(fixtureDir) 28 if diags.HasErrors() { 29 t.Fatal(diags.Error()) 30 } 31 32 var buf bytes.Buffer 33 zw := zip.NewWriter(&buf) 34 err = writeConfigSnapshot(snapIn, zw) 35 if err != nil { 36 t.Fatalf("failed to write snapshot: %s", err) 37 } 38 zw.Close() 39 40 raw := buf.Bytes() 41 r := bytes.NewReader(raw) 42 zr, err := zip.NewReader(r, int64(len(raw))) 43 if err != nil { 44 t.Fatal(err) 45 } 46 47 snapOut, err := readConfigSnapshot(zr) 48 if err != nil { 49 t.Fatalf("failed to read snapshot: %s", err) 50 } 51 52 if !reflect.DeepEqual(snapIn, snapOut) { 53 t.Errorf("result does not match input\nresult: %sinput: %s", spew.Sdump(snapOut), spew.Sdump(snapIn)) 54 } 55 }