MCPcopy Index your code
hub / github.com/ddev/ddev / TestWriteProjectEnvFile

Function TestWriteProjectEnvFile

pkg/ddevapp/envfile_test.go:15–77  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

13)
14
15func TestWriteProjectEnvFile(t *testing.T) {
16 assert := asrt.New(t)
17
18 origDir, _ := os.Getwd()
19
20 site := TestSites[0]
21 app, err := ddevapp.NewApp(site.Dir, false)
22 require.NoError(t, err)
23
24 t.Cleanup(func() {
25 _ = os.RemoveAll(app.GetConfigPath(".env"))
26 })
27
28 testEnvFiles, err := fileutil.ListFilesInDirFullPath(filepath.Join(origDir, "testdata", t.Name()), false)
29 require.NoError(t, err)
30 appEnvFile := filepath.Join(app.AppRoot, ".env")
31 for _, envFileName := range testEnvFiles {
32 _ = os.RemoveAll(appEnvFile)
33 err = fileutil.CopyFile(envFileName, appEnvFile)
34 require.NoError(t, err)
35 readEnvMap, readEnvText, err := ddevapp.ReadProjectEnvFile(appEnvFile)
36 require.NoError(t, err)
37 _ = readEnvMap
38
39 // Override with some new items
40 writeEnvMap := map[string]string{
41 "DB_VAL_DIDNOTEXIST": "new_db_val_didnotexist",
42 "DB_HOST": "newdbhost",
43 "DB_DATABASE": "newdbdatabase",
44 "DB_USERNAME": "newdbusername",
45 "DB_PASSWORD": "newdbpassword",
46 "DB_CONNECTION": "new_mysql://root:root@somehost/somedb",
47 }
48 err = ddevapp.WriteProjectEnvFile(appEnvFile, writeEnvMap, readEnvText)
49 require.NoError(t, err)
50
51 postWriteEnvMap, postWriteEnvText, err := ddevapp.ReadProjectEnvFile(appEnvFile)
52 require.NoError(t, err)
53
54 // Make sure that the values we intended to change got changed
55 for k := range writeEnvMap {
56 assert.Equal(writeEnvMap[k], postWriteEnvMap[k], "Expected values for %s to match but writeEnvMap[%s]='%s' and postWriteEnvMap[%s]='%s' (envfile=%s)", k, k, writeEnvMap[k], k, postWriteEnvMap[k], envFileName)
57 }
58
59 // Now examine all values that should not have been changed
60 for k := range readEnvMap {
61 if _, ok := writeEnvMap[k]; ok {
62 // If we intended to write the var, don't test, as we deliberately overwrite and tested above.
63 continue
64 }
65 assert.Equal(readEnvMap[k], postWriteEnvMap[k], "Expected (unchanged) values for %s to match but readEnvMap[%s]='%s' and postWriteEnvMap[%s]='%s' (envfile=%s)", k, k, readEnvMap[k], k, postWriteEnvMap[k], envFileName)
66 }
67
68 // Look for comments that should have been preserved
69 origLines := strings.Split(readEnvText, "\n")
70 newLines := strings.Split(postWriteEnvText, "\n")
71 for i, l := range origLines {
72 if strings.HasPrefix(l, `#`) {

Callers

nothing calls this directly

Calls 7

NewAppFunction · 0.92
ListFilesInDirFullPathFunction · 0.92
CopyFileFunction · 0.92
ReadProjectEnvFileFunction · 0.92
WriteProjectEnvFileFunction · 0.92
CleanupMethod · 0.80
GetConfigPathMethod · 0.80

Tested by

no test coverage detected