github.com/wata727/tflint@v0.12.2-0.20191013070026-96dd0d36f385/tflint/tflint_test.go (about)

     1  package tflint
     2  
     3  import (
     4  	"io/ioutil"
     5  	"log"
     6  	"os"
     7  	"path/filepath"
     8  	"runtime"
     9  	"testing"
    10  
    11  	"github.com/hashicorp/terraform/terraform"
    12  	"github.com/spf13/afero"
    13  )
    14  
    15  func TestMain(m *testing.M) {
    16  	log.SetOutput(ioutil.Discard)
    17  	os.Exit(m.Run())
    18  }
    19  
    20  func testRunnerWithInputVariables(t *testing.T, files map[string]string, variables ...terraform.InputValues) *Runner {
    21  	config := EmptyConfig()
    22  	fs := afero.Afero{Fs: afero.NewMemMapFs()}
    23  	for name, src := range files {
    24  		err := fs.WriteFile(name, []byte(src), os.ModePerm)
    25  		if err != nil {
    26  			t.Fatal(err)
    27  		}
    28  	}
    29  
    30  	loader, err := NewLoader(fs, config)
    31  	if err != nil {
    32  		t.Fatal(err)
    33  	}
    34  
    35  	cfg, err := loader.LoadConfig(".")
    36  	if err != nil {
    37  		t.Fatal(err)
    38  	}
    39  
    40  	runner, err := NewRunner(config, map[string]Annotations{}, cfg, variables...)
    41  	if err != nil {
    42  		t.Fatal(err)
    43  	}
    44  
    45  	return runner
    46  }
    47  
    48  func withEnvVars(t *testing.T, envVars map[string]string, test func()) {
    49  	for key, value := range envVars {
    50  		err := os.Setenv(key, value)
    51  		if err != nil {
    52  			t.Fatal(err)
    53  		}
    54  	}
    55  	defer func() {
    56  		for key := range envVars {
    57  			err := os.Unsetenv(key)
    58  			if err != nil {
    59  				t.Fatal(err)
    60  			}
    61  		}
    62  	}()
    63  
    64  	test()
    65  }
    66  
    67  func withinFixtureDir(t *testing.T, dir string, test func()) {
    68  	currentDir, err := os.Getwd()
    69  	if err != nil {
    70  		t.Fatal(err)
    71  	}
    72  	defer os.Chdir(currentDir)
    73  
    74  	err = os.Chdir(filepath.Join(currentDir, "test-fixtures", dir))
    75  	if err != nil {
    76  		t.Fatal(err)
    77  	}
    78  
    79  	test()
    80  }
    81  
    82  func testRunnerWithOsFs(t *testing.T, config *Config) *Runner {
    83  	loader, err := NewLoader(afero.Afero{Fs: afero.NewOsFs()}, config)
    84  	if err != nil {
    85  		t.Fatal(err)
    86  	}
    87  
    88  	cfg, err := loader.LoadConfig(".")
    89  	if err != nil {
    90  		t.Fatal(err)
    91  	}
    92  
    93  	runner, err := NewRunner(config, map[string]Annotations{}, cfg, map[string]*terraform.InputValue{})
    94  	if err != nil {
    95  		t.Fatal(err)
    96  	}
    97  
    98  	return runner
    99  }
   100  
   101  func testRunnerWithAnnotations(t *testing.T, files map[string]string, annotations map[string]Annotations) *Runner {
   102  	config := EmptyConfig()
   103  	fs := afero.Afero{Fs: afero.NewMemMapFs()}
   104  	for name, src := range files {
   105  		err := fs.WriteFile(name, []byte(src), os.ModePerm)
   106  		if err != nil {
   107  			t.Fatal(err)
   108  		}
   109  	}
   110  
   111  	loader, err := NewLoader(fs, config)
   112  	if err != nil {
   113  		t.Fatal(err)
   114  	}
   115  
   116  	cfg, err := loader.LoadConfig(".")
   117  	if err != nil {
   118  		t.Fatal(err)
   119  	}
   120  
   121  	runner, err := NewRunner(config, annotations, cfg, map[string]*terraform.InputValue{})
   122  	if err != nil {
   123  		t.Fatal(err)
   124  	}
   125  
   126  	return runner
   127  }
   128  
   129  func moduleConfig() *Config {
   130  	c := EmptyConfig()
   131  	c.Module = true
   132  	return c
   133  }
   134  
   135  func newLine() string {
   136  	if runtime.GOOS == "windows" {
   137  		return "\r\n"
   138  	}
   139  	return "\n"
   140  }