Skip to content

Commit d7ce698

Browse files
committed
Test to validate the nil functions
1 parent b68161a commit d7ce698

File tree

3 files changed

+53
-12
lines changed

3 files changed

+53
-12
lines changed

internal/librariangen/languagecontainer/generate/generate.go

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -42,16 +42,16 @@ type Context struct {
4242
// Validate ensures that the context is valid.
4343
func (c *Context) Validate() error {
4444
if c.LibrarianDir == "" {
45-
return errors.New("librariangen: librarian directory must be set")
45+
return errors.New("languagecontainer: librarian directory must be set")
4646
}
4747
if c.InputDir == "" {
48-
return errors.New("librariangen: input directory must be set")
48+
return errors.New("languagecontainer: input directory must be set")
4949
}
5050
if c.OutputDir == "" {
51-
return errors.New("librariangen: output directory must be set")
51+
return errors.New("languagecontainer: output directory must be set")
5252
}
5353
if c.SourceDir == "" {
54-
return errors.New("librariangen: source directory must be set")
54+
return errors.New("languagecontainer: source directory must be set")
5555
}
5656
return nil
5757
}
@@ -69,16 +69,15 @@ type Config struct {
6969
// from the LibrarianDir in the given Context.
7070
func NewConfig(ctx *Context) (*Config, error) {
7171
reqPath := filepath.Join(ctx.LibrarianDir, "generate-request.json")
72-
slog.Debug("librariangen: reading generate request", "path", reqPath)
72+
slog.Debug("languagecontainer: reading generate request", "path", reqPath)
7373

7474
generateReq, err := message.ParseLibrary(reqPath)
7575
if err != nil {
7676
return nil, err
7777
}
78-
slog.Debug("librariangen: successfully unmarshalled request", "library_id", generateReq.ID)
78+
slog.Debug("languagecontainer: successfully unmarshalled request", "library_id", generateReq.ID)
7979
return &Config{
8080
Context: ctx,
8181
Request: generateReq,
8282
}, nil
8383
}
84-

internal/librariangen/languagecontainer/languagecontainer.go

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -55,17 +55,25 @@ func Run(args []string, container *LanguageContainer) int {
5555
flags := args[1:]
5656
switch cmd {
5757
case "generate":
58+
if container.Generate == nil {
59+
slog.Error("languagecontainer: generate command is not implemented")
60+
return 1
61+
}
5862
return handleGenerate(flags, container)
5963
case "configure":
60-
slog.Warn("librariangen: configure command is not yet implemented")
64+
slog.Warn("languagecontainer: configure command is missing")
6165
return 1
6266
case "release-init":
67+
if container.ReleaseInit == nil {
68+
slog.Error("languagecontainer: generate command is missing")
69+
return 1
70+
}
6371
return handleReleaseInit(flags, container)
6472
case "build":
65-
slog.Warn("librariangen: build command is not yet implemented")
73+
slog.Warn("languagecontainer: build command is not yet implemented")
6674
return 1
6775
default:
68-
slog.Error(fmt.Sprintf("librariangen: unknown command: %s (with flags %v)", cmd, flags))
76+
slog.Error(fmt.Sprintf("languagecontainer: unknown command: %s (with flags %v)", cmd, flags))
6977
return 1
7078
}
7179
}
@@ -90,7 +98,7 @@ func handleGenerate(flags []string, container *LanguageContainer) int {
9098
slog.Error("generate failed", "error", err)
9199
return 1
92100
}
93-
slog.Info("librariangen: generate command executed successfully")
101+
slog.Info("languagecontainer: generate command executed successfully")
94102
return 0
95103
}
96104

@@ -134,6 +142,6 @@ func handleReleaseInit(flags []string, container *LanguageContainer) int {
134142
slog.Error("failed to write response file", "path", responsePath, "error", err)
135143
return 1
136144
}
137-
slog.Info("librariangen: release-init command executed successfully")
145+
slog.Info("languagecontainer: release-init command executed successfully")
138146
return 0
139147
}

internal/librariangen/languagecontainer/languagecontainer_test.go

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -233,3 +233,37 @@ func TestRun_GenerateReadsContextArgs(t *testing.T) {
233233
t.Errorf("gotConfig.Context.SourceDir = %q, want %q", got, want)
234234
}
235235
}
236+
237+
func TestRun_unimplementedCommands(t *testing.T) {
238+
tests := []struct {
239+
name string
240+
args []string
241+
container *LanguageContainer
242+
}{
243+
{
244+
name: "generate is nil",
245+
args: []string{"generate"},
246+
container: &LanguageContainer{
247+
ReleaseInit: func(context.Context, *release.Config) (*message.ReleaseInitResponse, error) {
248+
return nil, nil
249+
},
250+
},
251+
},
252+
{
253+
name: "release-init is nil",
254+
args: []string{"release-init"},
255+
container: &LanguageContainer{
256+
Generate: func(context.Context, *generate.Config) error {
257+
return nil
258+
},
259+
},
260+
},
261+
}
262+
for _, tt := range tests {
263+
t.Run(tt.name, func(t *testing.T) {
264+
if gotCode := Run(tt.args, tt.container); gotCode != 1 {
265+
t.Errorf("Run() = %v, want 1", gotCode)
266+
}
267+
})
268+
}
269+
}

0 commit comments

Comments
 (0)