TestGetDBVersionFromVolumeScript tests the shell script logic used in GetDBVersionFromVolume to ensure it properly detects PostgreSQL 18+ directory structures
(t *testing.T)
| 64 | // TestGetDBVersionFromVolumeScript tests the shell script logic used in GetDBVersionFromVolume |
| 65 | // to ensure it properly detects PostgreSQL 18+ directory structures |
| 66 | func TestGetDBVersionFromVolumeScript(t *testing.T) { |
| 67 | // Create temporary directory structure to simulate different DB volume layouts |
| 68 | tempDir := testcommon.CreateTmpDir("ddev-db-test-" + t.Name()) |
| 69 | |
| 70 | t.Cleanup(func() { |
| 71 | _ = os.RemoveAll(tempDir) |
| 72 | }) |
| 73 | |
| 74 | tests := []struct { |
| 75 | name string |
| 76 | setupFunc func() string // Returns expected output |
| 77 | expectedOutput string |
| 78 | }{ |
| 79 | { |
| 80 | name: "MySQL/MariaDB version file", |
| 81 | setupFunc: func() string { |
| 82 | mysqlDir := filepath.Join(tempDir, "mysql") |
| 83 | err := os.MkdirAll(mysqlDir, 0755) |
| 84 | require.NoError(t, err) |
| 85 | err = os.WriteFile(filepath.Join(mysqlDir, "db_mariadb_version.txt"), []byte("mariadb_10.11"), 0644) |
| 86 | require.NoError(t, err) |
| 87 | return "mariadb_10.11" |
| 88 | }, |
| 89 | expectedOutput: "mariadb_10.11", |
| 90 | }, |
| 91 | { |
| 92 | name: "PostgreSQL 17 (pre-18 structure)", |
| 93 | setupFunc: func() string { |
| 94 | postgresDir := filepath.Join(tempDir, "postgres") |
| 95 | err := os.MkdirAll(postgresDir, 0755) |
| 96 | require.NoError(t, err) |
| 97 | err = os.WriteFile(filepath.Join(postgresDir, "PG_VERSION"), []byte("17"), 0644) |
| 98 | require.NoError(t, err) |
| 99 | return "17" |
| 100 | }, |
| 101 | expectedOutput: "17", |
| 102 | }, |
| 103 | { |
| 104 | name: "PostgreSQL 18 (new structure)", |
| 105 | setupFunc: func() string { |
| 106 | postgresDir := filepath.Join(tempDir, "postgres", "18", "docker") |
| 107 | err := os.MkdirAll(postgresDir, 0755) |
| 108 | require.NoError(t, err) |
| 109 | err = os.WriteFile(filepath.Join(postgresDir, "PG_VERSION"), []byte("18"), 0644) |
| 110 | require.NoError(t, err) |
| 111 | return "18" |
| 112 | }, |
| 113 | expectedOutput: "18", |
| 114 | }, |
| 115 | { |
| 116 | name: "PostgreSQL 19 (future version)", |
| 117 | setupFunc: func() string { |
| 118 | postgresDir := filepath.Join(tempDir, "postgres", "19", "docker") |
| 119 | err := os.MkdirAll(postgresDir, 0755) |
| 120 | require.NoError(t, err) |
| 121 | err = os.WriteFile(filepath.Join(postgresDir, "PG_VERSION"), []byte("19"), 0644) |
| 122 | require.NoError(t, err) |
| 123 | return "19" |
nothing calls this directly
no test coverage detected