|
8 | 8 | "github.com/stretchr/testify/require"
|
9 | 9 |
|
10 | 10 | "github.com/coder/coder/v2/cli"
|
| 11 | + "github.com/coder/coder/v2/codersdk" |
11 | 12 | )
|
12 | 13 |
|
13 | 14 | func TestDiscoverVarsFiles(t *testing.T) {
|
@@ -60,3 +61,56 @@ func TestDiscoverVarsFiles(t *testing.T) {
|
60 | 61 | }
|
61 | 62 | require.EqualValues(t, expected, found)
|
62 | 63 | }
|
| 64 | + |
| 65 | +func TestParseVariableValuesFromVarsFiles(t *testing.T) { |
| 66 | + t.Parallel() |
| 67 | + |
| 68 | + // Given |
| 69 | + const ( |
| 70 | + hclFilename1 = "file1.tfvars" |
| 71 | + hclFilename2 = "file2.tfvars" |
| 72 | + jsonFilename3 = "file3.tfvars.json" |
| 73 | + jsonFilename4 = "file4.tfvars.json" |
| 74 | + |
| 75 | + hclContent1 = `region = "us-east-1" |
| 76 | +cores = 2` |
| 77 | + hclContent2 = `region = "us-west-2" |
| 78 | +go_image = ["1.19","1.20","1.21"]` |
| 79 | + jsonContent3 = `{"cat": "foobar", "cores": 3}` |
| 80 | + jsonContent4 = `{"dog": 4, "go_image": "[\"1.19\",\"1.20\"]"}` |
| 81 | + ) |
| 82 | + |
| 83 | + // Prepare the .tfvars files |
| 84 | + tempDir, err := os.MkdirTemp(os.TempDir(), "test-parse-variable-values-from-vars-files-*") |
| 85 | + require.NoError(t, err) |
| 86 | + t.Cleanup(func() { |
| 87 | + _ = os.RemoveAll(tempDir) |
| 88 | + }) |
| 89 | + |
| 90 | + err = os.WriteFile(filepath.Join(tempDir, hclFilename1), []byte(hclContent1), 0o600) |
| 91 | + require.NoError(t, err) |
| 92 | + err = os.WriteFile(filepath.Join(tempDir, hclFilename2), []byte(hclContent2), 0o600) |
| 93 | + require.NoError(t, err) |
| 94 | + err = os.WriteFile(filepath.Join(tempDir, jsonFilename3), []byte(jsonContent3), 0o600) |
| 95 | + require.NoError(t, err) |
| 96 | + err = os.WriteFile(filepath.Join(tempDir, jsonFilename4), []byte(jsonContent4), 0o600) |
| 97 | + require.NoError(t, err) |
| 98 | + |
| 99 | + // When |
| 100 | + actual, err := cli.ParseUserVariableValues([]string{ |
| 101 | + filepath.Join(tempDir, hclFilename1), |
| 102 | + filepath.Join(tempDir, hclFilename2), |
| 103 | + filepath.Join(tempDir, jsonFilename3), |
| 104 | + filepath.Join(tempDir, jsonFilename4), |
| 105 | + }, "", nil) |
| 106 | + require.NoError(t, err) |
| 107 | + |
| 108 | + // Then |
| 109 | + expected := []codersdk.VariableValue{ |
| 110 | + {Name: "cat", Value: "foobar"}, |
| 111 | + {Name: "cores", Value: "3"}, |
| 112 | + {Name: "dog", Value: "4"}, |
| 113 | + {Name: "go_image", Value: "[\"1.19\",\"1.20\"]"}, |
| 114 | + {Name: "region", Value: "us-west-2"}} |
| 115 | + require.Equal(t, expected, actual) |
| 116 | +} |
0 commit comments