@@ -137,72 +137,118 @@ func Test_GenerateAPIDocs(t *testing.T) {
137137
138138 fset := token .NewFileSet ()
139139
140- sharedFields := parseSourceFiles (t , root , fset , fmt .Sprintf ("%s/pkg/apis/shared/v1" , root ))
140+ type inputPackageTypes map [string ]map [string ]any
141+
142+ type inputPackage struct {
143+ Types inputPackageTypes
144+
145+ Shared []string
146+ }
147+
148+ type inputPackages map [string ]map [string ]inputPackage
141149
142150 // package path -> result doc file name -> name of the top-level field to be described -> field instance for reflection
143- input := map [string ]map [string ]map [string ]interface {}{
144- fmt .Sprintf ("%s/pkg/apis/deployment/v1" , root ): {
145- "ArangoDeployment.V1" : {
146- "Spec" : deploymentApi.ArangoDeployment {}.Spec ,
147- },
148- "ArangoMember.V1" : {
149- "Spec" : deploymentApi.ArangoMember {}.Spec ,
151+ input := inputPackages {
152+ "deployment" : map [string ]inputPackage {
153+ "v1" : {
154+ Types : inputPackageTypes {
155+ "ArangoDeployment.V1" : {
156+ "Spec" : deploymentApi.ArangoDeployment {}.Spec ,
157+ },
158+ "ArangoMember.V1" : {
159+ "Spec" : deploymentApi.ArangoMember {}.Spec ,
160+ },
161+ },
150162 },
151163 },
152- fmt .Sprintf ("%s/pkg/apis/apps/v1" , root ): {
153- "ArangoJob.V1" : {
154- "Spec" : appsApi.ArangoJob {}.Spec ,
164+ "apps" : map [string ]inputPackage {
165+ "v1" : {
166+ Types : inputPackageTypes {
167+ "ArangoJob.V1" : {
168+ "Spec" : appsApi.ArangoJob {}.Spec ,
169+ },
170+ },
155171 },
156172 },
157- fmt .Sprintf ("%s/pkg/apis/backup/v1" , root ): {
158- "ArangoBackup.V1" : {
159- "Spec" : backupApi.ArangoBackup {}.Spec ,
160- "Status" : backupApi.ArangoBackup {}.Status ,
161- },
162- "ArangoBackupPolicy.V1" : {
163- "Spec" : backupApi.ArangoBackupPolicy {}.Spec ,
164- "Status" : backupApi.ArangoBackupPolicy {}.Status ,
173+ "backup" : map [string ]inputPackage {
174+ "v1" : {
175+ Types : inputPackageTypes {
176+ "ArangoBackup.V1" : {
177+ "Spec" : backupApi.ArangoBackup {}.Spec ,
178+ "Status" : backupApi.ArangoBackup {}.Status ,
179+ },
180+ "ArangoBackupPolicy.V1" : {
181+ "Spec" : backupApi.ArangoBackupPolicy {}.Spec ,
182+ "Status" : backupApi.ArangoBackupPolicy {}.Status ,
183+ },
184+ },
165185 },
166186 },
167- fmt .Sprintf ("%s/pkg/apis/ml/v1alpha1" , root ): {
168- "ArangoMLExtension.V1Alpha1" : {
169- "Spec" : mlApi.ArangoMLExtension {}.Spec ,
170- "Status" : mlApi.ArangoMLExtension {}.Status ,
171- },
172- "ArangoMLStorage.V1Alpha1" : {
173- "Spec" : mlApi.ArangoMLStorage {}.Spec ,
174- "Status" : mlApi.ArangoMLStorage {}.Status ,
175- },
176- "ArangoMLCronJob.V1Alpha1" : {
177- "Spec" : mlApi.ArangoMLCronJob {}.Spec ,
178- "Status" : mlApi.ArangoMLCronJob {}.Status ,
179- },
180- "ArangoMLBatchJob.V1Alpha1" : {
181- "Spec" : mlApi.ArangoMLBatchJob {}.Spec ,
182- "Status" : mlApi.ArangoMLBatchJob {}.Status ,
187+ "ml" : map [string ]inputPackage {
188+ "v1alpha1" : {
189+ Types : inputPackageTypes {
190+ "ArangoMLExtension.V1Alpha1" : {
191+ "Spec" : mlApi.ArangoMLExtension {}.Spec ,
192+ "Status" : mlApi.ArangoMLExtension {}.Status ,
193+ },
194+ "ArangoMLStorage.V1Alpha1" : {
195+ "Spec" : mlApi.ArangoMLStorage {}.Spec ,
196+ "Status" : mlApi.ArangoMLStorage {}.Status ,
197+ },
198+ "ArangoMLCronJob.V1Alpha1" : {
199+ "Spec" : mlApi.ArangoMLCronJob {}.Spec ,
200+ "Status" : mlApi.ArangoMLCronJob {}.Status ,
201+ },
202+ "ArangoMLBatchJob.V1Alpha1" : {
203+ "Spec" : mlApi.ArangoMLBatchJob {}.Spec ,
204+ "Status" : mlApi.ArangoMLBatchJob {}.Status ,
205+ },
206+ },
207+ Shared : []string {
208+ "shared/v1" ,
209+ "scheduler/v1alpha1" ,
210+ "scheduler/v1alpha1/container" ,
211+ "scheduler/v1alpha1/container/resources" ,
212+ "scheduler/v1alpha1/pod" ,
213+ "scheduler/v1alpha1/pod/resources" ,
214+ },
183215 },
184216 },
185- fmt .Sprintf ("%s/pkg/apis/replication/v1" , root ): {
186- "ArangoDeploymentReplication.V1" : {
187- "Spec" : replicationApi.ArangoDeploymentReplication {}.Spec ,
217+ "replication" : map [string ]inputPackage {
218+ "v1" : {
219+ Types : inputPackageTypes {
220+ "ArangoDeploymentReplication.V1" : {
221+ "Spec" : replicationApi.ArangoDeploymentReplication {}.Spec ,
222+ },
223+ },
188224 },
189225 },
190- fmt .Sprintf ("%s/pkg/apis/storage/v1alpha" , root ): {
191- "ArangoLocalStorage.V1Alpha" : {
192- "Spec" : storageApi.ArangoLocalStorage {}.Spec ,
226+ "storage" : map [string ]inputPackage {
227+ "v1alpha" : {
228+ Types : inputPackageTypes {
229+ "ArangoLocalStorage.V1Alpha" : {
230+ "Spec" : storageApi.ArangoLocalStorage {}.Spec ,
231+ },
232+ },
193233 },
194234 },
195235 }
196236
197- for apiDir , docs := range input {
198- fields := parseSourceFiles (t , root , fset , apiDir )
237+ for name , versions := range input {
238+ for version , docs := range versions {
239+ fields := parseSourceFiles (t , root , fset , path .Join (root , "pkg/apis" , name , version ))
199240
200- for n , f := range sharedFields {
201- require .NotContains (t , fields , n )
202- fields [n ] = f
203- }
241+ for _ , p := range docs .Shared {
242+ sharedFields := parseSourceFiles (t , root , fset , path .Join (root , "pkg/apis" , p ))
204243
205- generateDocs (t , docs , fields , fset )
244+ for n , f := range sharedFields {
245+ require .NotContains (t , fields , n )
246+ fields [n ] = f
247+ }
248+ }
249+
250+ generateDocs (t , docs .Types , fields , fset )
251+ }
206252 }
207253}
208254
0 commit comments