github.com/jpreese/tflint@v0.19.2-0.20200908152133-b01686250fb6/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  	f, err := loader.Files()
    40  	if err != nil {
    41  		t.Fatal(err)
    42  	}
    43  
    44  	runner, err := NewRunner(config, f, map[string]Annotations{}, cfg, variables...)
    45  	if err != nil {
    46  		t.Fatal(err)
    47  	}
    48  
    49  	return runner
    50  }
    51  
    52  func withEnvVars(t *testing.T, envVars map[string]string, test func()) {
    53  	for key, value := range envVars {
    54  		err := os.Setenv(key, value)
    55  		if err != nil {
    56  			t.Fatal(err)
    57  		}
    58  	}
    59  	defer func() {
    60  		for key := range envVars {
    61  			err := os.Unsetenv(key)
    62  			if err != nil {
    63  				t.Fatal(err)
    64  			}
    65  		}
    66  	}()
    67  
    68  	test()
    69  }
    70  
    71  func withinFixtureDir(t *testing.T, dir string, test func()) {
    72  	currentDir, err := os.Getwd()
    73  	if err != nil {
    74  		t.Fatal(err)
    75  	}
    76  	defer os.Chdir(currentDir)
    77  
    78  	err = os.Chdir(filepath.Join(currentDir, "test-fixtures", dir))
    79  	if err != nil {
    80  		t.Fatal(err)
    81  	}
    82  
    83  	test()
    84  }
    85  
    86  func testRunnerWithOsFs(t *testing.T, config *Config) *Runner {
    87  	loader, err := NewLoader(afero.Afero{Fs: afero.NewOsFs()}, config)
    88  	if err != nil {
    89  		t.Fatal(err)
    90  	}
    91  
    92  	cfg, err := loader.LoadConfig(".")
    93  	if err != nil {
    94  		t.Fatal(err)
    95  	}
    96  	f, err := loader.Files()
    97  	if err != nil {
    98  		t.Fatal(err)
    99  	}
   100  
   101  	runner, err := NewRunner(config, f, map[string]Annotations{}, cfg, map[string]*terraform.InputValue{})
   102  	if err != nil {
   103  		t.Fatal(err)
   104  	}
   105  
   106  	return runner
   107  }
   108  
   109  func testRunnerWithAnnotations(t *testing.T, files map[string]string, annotations map[string]Annotations) *Runner {
   110  	config := EmptyConfig()
   111  	fs := afero.Afero{Fs: afero.NewMemMapFs()}
   112  	for name, src := range files {
   113  		err := fs.WriteFile(name, []byte(src), os.ModePerm)
   114  		if err != nil {
   115  			t.Fatal(err)
   116  		}
   117  	}
   118  
   119  	loader, err := NewLoader(fs, config)
   120  	if err != nil {
   121  		t.Fatal(err)
   122  	}
   123  
   124  	cfg, err := loader.LoadConfig(".")
   125  	if err != nil {
   126  		t.Fatal(err)
   127  	}
   128  
   129  	f, err := loader.Files()
   130  	if err != nil {
   131  		t.Fatal(err)
   132  	}
   133  
   134  	runner, err := NewRunner(config, f, annotations, cfg, map[string]*terraform.InputValue{})
   135  	if err != nil {
   136  		t.Fatal(err)
   137  	}
   138  
   139  	return runner
   140  }
   141  
   142  func moduleConfig() *Config {
   143  	c := EmptyConfig()
   144  	c.Module = true
   145  	return c
   146  }
   147  
   148  func newLine() string {
   149  	if runtime.GOOS == "windows" {
   150  		return "\r\n"
   151  	}
   152  	return "\n"
   153  }