Skip to content

Commit bfaf8da

Browse files
authored
[mdatagen] delete generated_status.go in case it is not required (#12348)
<!--Ex. Fixing a bug - Describe the bug and how this fixes the issue. Ex. Adding a feature - Explain what this achieves.--> #### Description Delete generated_status.go if the component type doesn't require it. <!-- Issue number if applicable --> #### Link to tracking issue Fixes #12346
1 parent 4f9fc6b commit bfaf8da

File tree

4 files changed

+175
-60
lines changed

4 files changed

+175
-60
lines changed

.chloggen/delete_old_status.yaml

+25
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
# Use this changelog template to create an entry for release notes.
2+
3+
# One of 'breaking', 'deprecation', 'new_component', 'enhancement', 'bug_fix'
4+
change_type: enhancement
5+
6+
# The name of the component, or a single word describing the area of concern, (e.g. otlpreceiver)
7+
component: mdatagen
8+
9+
# A brief description of the change. Surround your text with quotes ("") if it needs to start with a backtick (`).
10+
note: Delete generated_status.go if the component type doesn't require it.
11+
12+
# One or more tracking issues or pull requests related to the change
13+
issues: [12346]
14+
15+
# (Optional) One or more lines of additional information to render under the primary note.
16+
# These lines will be padded with 2 spaces and then inserted directly into the document.
17+
# Use pipe (|) for multiline entries.
18+
subtext:
19+
20+
# Optional: The change log or logs in which this entry should be included.
21+
# e.g. '[user]' or '[user, api]'
22+
# Include 'user' if the change is relevant to end users.
23+
# Include 'api' if there is a change to a library API.
24+
# Default: '[user]'
25+
change_logs: []

cmd/mdatagen/internal/command.go

+32
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,17 @@ func run(ymlPath string) error {
9292
filepath.Join(ymlDir, "generated_component_test.go"), md, packageName); err != nil {
9393
return err
9494
}
95+
} else {
96+
if _, err = os.Stat(filepath.Join(codeDir, "generated_status.go")); err == nil {
97+
if err = os.Remove(filepath.Join(codeDir, "generated_status.go")); err != nil {
98+
return err
99+
}
100+
}
101+
if _, err = os.Stat(filepath.Join(ymlDir, "generated_component_test.go")); err == nil {
102+
if err = os.Remove(filepath.Join(ymlDir, "generated_component_test.go")); err != nil {
103+
return err
104+
}
105+
}
95106
}
96107

97108
if err = generateFile(filepath.Join(tmplDir, "package_test.go.tmpl"),
@@ -124,6 +135,27 @@ func run(ymlPath string) error {
124135
toGenerate[filepath.Join(tmplDir, "telemetry_test.go.tmpl")] = filepath.Join(codeDir, "generated_telemetry_test.go")
125136
toGenerate[filepath.Join(tmplDir, "telemetrytest.go.tmpl")] = filepath.Join(testDir, "generated_telemetrytest.go")
126137
toGenerate[filepath.Join(tmplDir, "telemetrytest_test.go.tmpl")] = filepath.Join(testDir, "generated_telemetrytest_test.go")
138+
} else {
139+
if _, err = os.Stat(filepath.Join(ymlDir, "generated_telemetry.go")); err == nil {
140+
if err = os.Remove(filepath.Join(ymlDir, "generated_telemetry.go")); err != nil {
141+
return err
142+
}
143+
}
144+
if _, err = os.Stat(filepath.Join(ymlDir, "generated_telemetry_test.go")); err == nil {
145+
if err = os.Remove(filepath.Join(ymlDir, "generated_telemetry_test.go")); err != nil {
146+
return err
147+
}
148+
}
149+
if _, err = os.Stat(filepath.Join(ymlDir, "generated_telemetrytest.go")); err == nil {
150+
if err = os.Remove(filepath.Join(ymlDir, "generated_telemetrytest.go")); err != nil {
151+
return err
152+
}
153+
}
154+
if _, err = os.Stat(filepath.Join(ymlDir, "generated_telemetrytest_test.go")); err == nil {
155+
if err = os.Remove(filepath.Join(ymlDir, "generated_telemetrytest_test.go")); err != nil {
156+
return err
157+
}
158+
}
127159
}
128160

129161
if len(md.Metrics) != 0 || len(md.Telemetry.Metrics) != 0 || len(md.ResourceAttributes) != 0 { // if there's metrics or internal metrics, generate documentation for them

cmd/mdatagen/internal/command_test.go

+112-60
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,9 @@ func TestRunContents(t *testing.T) {
3737
wantConfigGenerated bool
3838
wantTelemetryGenerated bool
3939
wantResourceAttributesGenerated bool
40+
wantReadmeGenerated bool
4041
wantStatusGenerated bool
42+
wantComponentTestGenerated bool
4143
wantGoleakIgnore bool
4244
wantGoleakSkip bool
4345
wantGoleakSetup bool
@@ -49,89 +51,131 @@ func TestRunContents(t *testing.T) {
4951
wantErr: true,
5052
},
5153
{
52-
yml: "basic_connector.yaml",
53-
wantErr: false,
54-
wantStatusGenerated: true,
54+
yml: "basic_connector.yaml",
55+
wantErr: false,
56+
wantStatusGenerated: true,
57+
wantReadmeGenerated: true,
58+
wantComponentTestGenerated: true,
59+
},
60+
{
61+
yml: "basic_receiver.yaml",
62+
wantErr: false,
63+
wantStatusGenerated: true,
64+
wantReadmeGenerated: true,
65+
wantComponentTestGenerated: true,
5566
},
5667
{
57-
yml: "basic_receiver.yaml",
68+
yml: "basic_pkg.yaml",
5869
wantErr: false,
59-
wantStatusGenerated: true,
70+
wantStatusGenerated: false,
71+
wantReadmeGenerated: true,
6072
},
6173
{
62-
yml: "metrics_and_type.yaml",
63-
wantMetricsGenerated: true,
64-
wantConfigGenerated: true,
65-
wantStatusGenerated: true,
74+
yml: "metrics_and_type.yaml",
75+
wantMetricsGenerated: true,
76+
wantConfigGenerated: true,
77+
wantStatusGenerated: true,
78+
wantReadmeGenerated: true,
79+
wantComponentTestGenerated: true,
6680
},
6781
{
6882
yml: "resource_attributes_only.yaml",
6983
wantConfigGenerated: true,
7084
wantStatusGenerated: true,
7185
wantResourceAttributesGenerated: true,
86+
wantReadmeGenerated: true,
87+
wantComponentTestGenerated: true,
7288
},
7389
{
74-
yml: "status_only.yaml",
75-
wantStatusGenerated: true,
90+
yml: "status_only.yaml",
91+
wantStatusGenerated: true,
92+
wantReadmeGenerated: true,
93+
wantComponentTestGenerated: true,
7694
},
7795
{
78-
yml: "with_tests_receiver.yaml",
79-
wantStatusGenerated: true,
96+
yml: "with_tests_receiver.yaml",
97+
wantStatusGenerated: true,
98+
wantReadmeGenerated: true,
99+
wantComponentTestGenerated: true,
80100
},
81101
{
82-
yml: "with_tests_exporter.yaml",
83-
wantStatusGenerated: true,
102+
yml: "with_tests_exporter.yaml",
103+
wantStatusGenerated: true,
104+
wantReadmeGenerated: true,
105+
wantComponentTestGenerated: true,
84106
},
85107
{
86-
yml: "with_tests_processor.yaml",
87-
wantStatusGenerated: true,
108+
yml: "with_tests_processor.yaml",
109+
wantStatusGenerated: true,
110+
wantReadmeGenerated: true,
111+
wantComponentTestGenerated: true,
88112
},
89113
{
90-
yml: "with_tests_extension.yaml",
91-
wantStatusGenerated: true,
114+
yml: "with_tests_extension.yaml",
115+
wantStatusGenerated: true,
116+
wantReadmeGenerated: true,
117+
wantComponentTestGenerated: true,
92118
},
93119
{
94-
yml: "with_tests_connector.yaml",
95-
wantStatusGenerated: true,
120+
yml: "with_tests_connector.yaml",
121+
wantStatusGenerated: true,
122+
wantReadmeGenerated: true,
123+
wantComponentTestGenerated: true,
96124
},
97125
{
98-
yml: "with_goleak_ignores.yaml",
99-
wantStatusGenerated: true,
100-
wantGoleakIgnore: true,
126+
yml: "with_goleak_ignores.yaml",
127+
wantStatusGenerated: true,
128+
wantGoleakIgnore: true,
129+
wantReadmeGenerated: true,
130+
wantComponentTestGenerated: true,
101131
},
102132
{
103-
yml: "with_goleak_skip.yaml",
104-
wantStatusGenerated: true,
105-
wantGoleakSkip: true,
133+
yml: "with_goleak_skip.yaml",
134+
wantStatusGenerated: true,
135+
wantGoleakSkip: true,
136+
wantReadmeGenerated: true,
137+
wantComponentTestGenerated: true,
106138
},
107139
{
108-
yml: "with_goleak_setup.yaml",
109-
wantStatusGenerated: true,
110-
wantGoleakSetup: true,
140+
yml: "with_goleak_setup.yaml",
141+
wantStatusGenerated: true,
142+
wantGoleakSetup: true,
143+
wantReadmeGenerated: true,
144+
wantComponentTestGenerated: true,
111145
},
112146
{
113-
yml: "with_goleak_teardown.yaml",
114-
wantStatusGenerated: true,
115-
wantGoleakTeardown: true,
147+
yml: "with_goleak_teardown.yaml",
148+
wantStatusGenerated: true,
149+
wantGoleakTeardown: true,
150+
wantReadmeGenerated: true,
151+
wantComponentTestGenerated: true,
116152
},
117153
{
118-
yml: "with_telemetry.yaml",
119-
wantStatusGenerated: true,
120-
wantTelemetryGenerated: true,
154+
yml: "with_telemetry.yaml",
155+
wantStatusGenerated: true,
156+
wantTelemetryGenerated: true,
157+
wantReadmeGenerated: true,
158+
wantComponentTestGenerated: true,
121159
},
122160
{
123-
yml: "invalid_telemetry_missing_value_type_for_histogram.yaml",
124-
wantErr: true,
161+
yml: "invalid_telemetry_missing_value_type_for_histogram.yaml",
162+
wantErr: true,
163+
wantReadmeGenerated: true,
164+
wantComponentTestGenerated: true,
125165
},
126166
{
127-
yml: "async_metric.yaml",
128-
wantMetricsGenerated: true,
129-
wantConfigGenerated: true,
130-
wantStatusGenerated: true,
167+
yml: "async_metric.yaml",
168+
wantMetricsGenerated: true,
169+
wantConfigGenerated: true,
170+
wantStatusGenerated: true,
171+
wantReadmeGenerated: true,
172+
wantComponentTestGenerated: true,
131173
},
132174
{
133-
yml: "custom_generated_package_name.yaml",
134-
wantStatusGenerated: true,
175+
yml: "custom_generated_package_name.yaml",
176+
wantStatusGenerated: true,
177+
wantReadmeGenerated: true,
178+
wantComponentTestGenerated: true,
135179
},
136180
}
137181
for _, tt := range tests {
@@ -147,17 +191,20 @@ func TestRunContents(t *testing.T) {
147191
<!-- status autogenerated section -->
148192
foo
149193
<!-- end autogenerated section -->`), 0o600))
150-
151-
err = run(metadataFile)
194+
md, err := LoadMetadata(metadataFile)
152195
if tt.wantErr {
153196
require.Error(t, err)
154197
return
155198
}
156199
require.NoError(t, err)
200+
generatedPackageDir := filepath.Join("internal", md.GeneratedPackageName)
201+
require.NoError(t, os.MkdirAll(filepath.Join(tmpdir, generatedPackageDir), 0o700))
202+
require.NoError(t, os.WriteFile(filepath.Join(tmpdir, generatedPackageDir, "generated_status.go"), []byte("status"), 0o600))
203+
require.NoError(t, os.WriteFile(filepath.Join(tmpdir, generatedPackageDir, "generated_telemetry_test.go"), []byte("test"), 0o600))
204+
require.NoError(t, os.WriteFile(filepath.Join(tmpdir, generatedPackageDir, "generated_component_test.go"), []byte("test"), 0o600))
157205

158-
md, err := LoadMetadata(metadataFile)
206+
err = run(metadataFile)
159207
require.NoError(t, err)
160-
generatedPackageDir := filepath.Join("internal", md.GeneratedPackageName)
161208

162209
var contents []byte
163210
if tt.wantMetricsGenerated {
@@ -197,7 +244,6 @@ foo
197244
}
198245
} else {
199246
require.NoFileExists(t, filepath.Join(tmpdir, generatedPackageDir, "generated_telemetry.go"))
200-
require.NoFileExists(t, filepath.Join(tmpdir, generatedPackageDir, "generated_telemetry_test.go"))
201247
}
202248

203249
if !tt.wantMetricsGenerated && !tt.wantTelemetryGenerated && !tt.wantResourceAttributesGenerated {
@@ -206,22 +252,28 @@ foo
206252

207253
if tt.wantStatusGenerated {
208254
require.FileExists(t, filepath.Join(tmpdir, generatedPackageDir, "generated_status.go"))
209-
contents, err = os.ReadFile(filepath.Join(tmpdir, "README.md")) //nolint:gosec
210-
require.NoError(t, err)
211-
require.NotContains(t, string(contents), "foo")
212255
} else {
213256
require.NoFileExists(t, filepath.Join(tmpdir, generatedPackageDir, "generated_status.go"))
214-
contents, err = os.ReadFile(filepath.Join(tmpdir, "README.md")) //nolint:gosec
215-
require.NoError(t, err)
216-
require.Contains(t, string(contents), "foo")
217257
}
218258

219-
require.FileExists(t, filepath.Join(tmpdir, "generated_component_test.go"))
220-
contents, err = os.ReadFile(filepath.Join(tmpdir, "generated_component_test.go")) //nolint:gosec
221-
require.NoError(t, err)
222-
require.Contains(t, string(contents), "func Test")
223-
_, err = parser.ParseFile(token.NewFileSet(), "", contents, parser.DeclarationErrors)
259+
contents, err = os.ReadFile(filepath.Join(tmpdir, "README.md")) //nolint:gosec
224260
require.NoError(t, err)
261+
if tt.wantReadmeGenerated {
262+
require.NotContains(t, string(contents), "foo")
263+
} else {
264+
require.Contains(t, string(contents), "foo")
265+
}
266+
267+
if tt.wantComponentTestGenerated {
268+
require.FileExists(t, filepath.Join(tmpdir, "generated_component_test.go"))
269+
contents, err = os.ReadFile(filepath.Join(tmpdir, "generated_component_test.go")) //nolint:gosec
270+
require.NoError(t, err)
271+
require.Contains(t, string(contents), "func Test")
272+
_, err = parser.ParseFile(token.NewFileSet(), "", contents, parser.DeclarationErrors)
273+
require.NoError(t, err)
274+
} else {
275+
require.NoFileExists(t, filepath.Join(tmpdir, "generated_component_test.go"))
276+
}
225277

226278
require.FileExists(t, filepath.Join(tmpdir, "generated_package_test.go"))
227279
contents, err = os.ReadFile(filepath.Join(tmpdir, "generated_package_test.go")) //nolint:gosec
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
type: test
2+
3+
status:
4+
class: pkg
5+
stability:
6+
beta: [logs]

0 commit comments

Comments
 (0)