Skip to content

Commit 63294e7

Browse files
committed
#898: Enhance README generation with error handling and debug logging
1 parent 475f388 commit 63294e7

File tree

2 files changed

+86
-4
lines changed

2 files changed

+86
-4
lines changed

recipe/dev/build/readme.go

Lines changed: 40 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,21 +26,58 @@ func (z *Readme) Preset() {
2626
}
2727

2828
func (z *Readme) genDoc(path string, doc string, c app_control.Control) error {
29+
l := c.Log()
30+
2931
if c.Feature().IsTest() {
32+
l.Debug("Generating README to stdout (test mode)")
3033
out := es_stdout.NewDefaultOut(c.Feature())
31-
_, _ = fmt.Fprintln(out, doc)
34+
if out == nil {
35+
l.Error("Failed to create stdout output")
36+
return fmt.Errorf("failed to create stdout output")
37+
}
38+
_, err := fmt.Fprintln(out, doc)
39+
if err != nil {
40+
l.Error("Failed to write README to stdout", esl.Error(err))
41+
return err
42+
}
3243
return nil
3344
} else {
34-
return os.WriteFile(path, []byte(doc), 0644)
45+
l.Debug("Writing README to file", esl.String("path", path))
46+
err := os.WriteFile(path, []byte(doc), 0644)
47+
if err != nil {
48+
l.Error("Failed to write README file", esl.Error(err), esl.String("path", path))
49+
return err
50+
}
51+
l.Debug("README file written successfully", esl.String("path", path))
52+
return nil
3553
}
3654
}
3755

3856
func (z *Readme) Exec(c app_control.Control) error {
3957
l := c.Log()
4058
l.Info("Generating README", esl.String("path", z.Path.Path()))
59+
60+
// Add defensive error handling for CI environment
61+
defer func() {
62+
if r := recover(); r != nil {
63+
l.Error("README generation panicked", esl.Any("panic", r))
64+
}
65+
}()
66+
67+
// Generate documentation sections with error handling
4168
sec := dc_readme.New(dc_index.MediaRepository, c.Messages(), false)
69+
if sec == nil {
70+
l.Error("Failed to create README sections")
71+
return fmt.Errorf("failed to create README sections")
72+
}
73+
4274
doc := dc_section.Generate(dc_index.MediaRepository, dc_section.LayoutPage, c.Messages(), sec)
43-
75+
if doc == "" {
76+
l.Error("Generated README document is empty")
77+
return fmt.Errorf("generated README document is empty")
78+
}
79+
80+
l.Debug("README document generated", esl.Int("length", len(doc)))
4481
return z.genDoc(z.Path.Path(), doc, c)
4582
}
4683

recipe/dev/build/readme_test.go

Lines changed: 46 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,55 @@
11
package build
22

33
import (
4-
"github.com/watermint/toolbox/quality/recipe/qtr_endtoend"
4+
"os"
5+
"path/filepath"
56
"testing"
7+
8+
"github.com/watermint/toolbox/essentials/model/mo_path"
9+
"github.com/watermint/toolbox/infra/control/app_control"
10+
"github.com/watermint/toolbox/quality/infra/qt_file"
11+
"github.com/watermint/toolbox/quality/recipe/qtr_endtoend"
612
)
713

814
func TestReadme_Exec(t *testing.T) {
915
qtr_endtoend.TestRecipe(t, &Readme{})
1016
}
17+
18+
func TestReadme_ExecWithDebug(t *testing.T) {
19+
qtr_endtoend.TestWithControl(t, func(c app_control.Control) {
20+
// Create test directory
21+
testDir, err := qt_file.MakeTestFolder("readme_debug", false)
22+
if err != nil {
23+
t.Fatalf("Failed to create test directory: %v", err)
24+
}
25+
defer func() {
26+
if err := os.RemoveAll(testDir); err != nil {
27+
t.Logf("Warning: Failed to clean up test directory: %v", err)
28+
}
29+
}()
30+
31+
// Create readme instance
32+
readme := &Readme{
33+
Path: mo_path.NewFileSystemPath(filepath.Join(testDir, "README.txt")),
34+
}
35+
36+
// Execute with debug info
37+
t.Logf("Starting readme generation in test mode")
38+
err = readme.Exec(c)
39+
if err != nil {
40+
t.Fatalf("Readme execution failed: %v", err)
41+
}
42+
43+
t.Logf("Readme generation completed successfully")
44+
45+
// Verify output when not in test mode
46+
if !c.Feature().IsTest() {
47+
// Check if file was created
48+
if _, err := os.Stat(readme.Path.Path()); os.IsNotExist(err) {
49+
t.Error("README file was not created")
50+
} else {
51+
t.Logf("README file created successfully at: %s", readme.Path.Path())
52+
}
53+
}
54+
})
55+
}

0 commit comments

Comments
 (0)