|
14 | 14 | package sitesmatrix_test |
15 | 15 |
|
16 | 16 | import ( |
| 17 | + "encoding/json" |
17 | 18 | "fmt" |
18 | 19 | "strings" |
19 | 20 | "testing" |
@@ -1100,6 +1101,87 @@ title: "P%d" |
1100 | 1101 | return b |
1101 | 1102 | } |
1102 | 1103 |
|
| 1104 | +// See #14132. We recently reworked the config structs for languages, versions, and roles, |
| 1105 | +// which made them incomplete when generating the docshelper YAML file. |
| 1106 | +// Add a test here to ensure we don't regress. |
| 1107 | +func TestUnmarshalSitesMatrixConfig(t *testing.T) { |
| 1108 | + t.Parallel() |
| 1109 | + |
| 1110 | + files := ` |
| 1111 | +-- hugo.toml -- |
| 1112 | +defaultContentLanguage = "en" |
| 1113 | +defaultContentLanguageInSubDir = true |
| 1114 | +defaultCOntentVersionInSubDir = true |
| 1115 | +defaultContentVersion = "v1.0.0" |
| 1116 | +defaultContentRole = "guest" |
| 1117 | +defaultContentRoleInSubDir = true |
| 1118 | +
|
| 1119 | +[moule.mounts] |
| 1120 | +source = 'content' |
| 1121 | +target = 'content' |
| 1122 | +
|
| 1123 | +
|
| 1124 | +[languages] |
| 1125 | +[languages.en] |
| 1126 | +
|
| 1127 | +[versions] |
| 1128 | +[versions."v1.0.0"] |
| 1129 | +
|
| 1130 | +[roles] |
| 1131 | +[roles.guest] |
| 1132 | +
|
| 1133 | +` |
| 1134 | + |
| 1135 | + b := hugolib.Test(t, files) |
| 1136 | + |
| 1137 | + toJSONAndMap := func(v any) map[string]any { |
| 1138 | + bb, err := json.Marshal(v) |
| 1139 | + b.Assert(err, qt.IsNil) |
| 1140 | + var m map[string]any |
| 1141 | + err = json.Unmarshal(bb, &m) |
| 1142 | + b.Assert(err, qt.IsNil) |
| 1143 | + return m |
| 1144 | + } |
| 1145 | + |
| 1146 | + conf := b.H.Configs.Base |
| 1147 | + |
| 1148 | + b.Assert(toJSONAndMap(conf.Languages), qt.DeepEquals, |
| 1149 | + map[string]any{ |
| 1150 | + "en": map[string]any{ |
| 1151 | + "Disabled": bool(false), |
| 1152 | + "LanguageCode": "", |
| 1153 | + "LanguageDirection": "", |
| 1154 | + "LanguageName": "", |
| 1155 | + "Title": "", |
| 1156 | + "Weight": float64(0), |
| 1157 | + }, |
| 1158 | + }) |
| 1159 | + |
| 1160 | + b.Assert(toJSONAndMap(conf.Versions), qt.DeepEquals, map[string]any{ |
| 1161 | + "v1.0.0": map[string]any{ |
| 1162 | + "Weight": float64(0), |
| 1163 | + }, |
| 1164 | + }) |
| 1165 | + |
| 1166 | + b.Assert(toJSONAndMap(conf.Roles), qt.DeepEquals, map[string]any{ |
| 1167 | + "guest": map[string]any{ |
| 1168 | + "Weight": float64(0), |
| 1169 | + }, |
| 1170 | + }) |
| 1171 | + |
| 1172 | + firstMount := conf.Module.Mounts[0] |
| 1173 | + b.Assert(toJSONAndMap(firstMount.Sites.Matrix), qt.DeepEquals, map[string]any{ |
| 1174 | + "languages": nil, |
| 1175 | + "versions": nil, |
| 1176 | + "roles": nil, |
| 1177 | + }) |
| 1178 | + b.Assert(toJSONAndMap(firstMount.Sites.Complements), qt.DeepEquals, map[string]any{ |
| 1179 | + "languages": nil, |
| 1180 | + "versions": nil, |
| 1181 | + "roles": nil, |
| 1182 | + }) |
| 1183 | +} |
| 1184 | + |
1103 | 1185 | func TestSitesMatrixContentBenchmark(t *testing.T) { |
1104 | 1186 | const numPages = 3 |
1105 | 1187 | b := newSitesMatrixContentBenchmarkBuilder(t, numPages, false, true) |
|
0 commit comments