Skip to content

Commit c9d075e

Browse files
authored
fix(internal/librarian): support local language repos better (#1756)
Fixes: #1749 Updates: #1751
1 parent 5a70ec1 commit c9d075e

File tree

3 files changed

+37
-6
lines changed

3 files changed

+37
-6
lines changed

generate_e2e_test.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -215,6 +215,7 @@ func initRepo(t *testing.T, dir, source string) error {
215215
runGit(t, dir, "config", "user.email", "[email protected]")
216216
runGit(t, dir, "config", "user.name", "Test User")
217217
runGit(t, dir, "commit", "-m", "init test repo")
218+
runGit(t, dir, "remote", "add", "origin", "https://github.com/googleapis/librarian.git")
218219
return nil
219220
}
220221

internal/librarian/generate.go

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -117,18 +117,23 @@ func newGenerateRunner(cfg *config.Config) (*generateRunner, error) {
117117
}
118118
image := deriveImage(cfg.Image, state)
119119

120-
var ghClient GitHubClient
120+
var gitRepo *github.Repository
121121
if isURL(cfg.Repo) {
122-
// repo is a URL
123-
languageRepo, err := github.ParseURL(cfg.Repo)
122+
gitRepo, err = github.ParseURL(cfg.Repo)
124123
if err != nil {
125124
return nil, fmt.Errorf("failed to parse repo url: %w", err)
126125
}
127-
ghClient, err = github.NewClient(cfg.GitHubToken, languageRepo)
126+
} else {
127+
gitRepo, err = github.FetchGitHubRepoFromRemote(languageRepo)
128128
if err != nil {
129-
return nil, fmt.Errorf("failed to create GitHub client: %w", err)
129+
return nil, fmt.Errorf("failed to get GitHub repo from remote: %w", err)
130130
}
131131
}
132+
ghClient, err := github.NewClient(cfg.GitHubToken, gitRepo)
133+
if err != nil {
134+
return nil, fmt.Errorf("failed to create GitHub client: %w", err)
135+
}
136+
132137
container, err := docker.New(cfg.WorkRoot, image, cfg.UserUID, cfg.UserGID)
133138
if err != nil {
134139
return nil, err

internal/librarian/generate_test.go

Lines changed: 26 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -440,6 +440,16 @@ func TestNewGenerateRunner(t *testing.T) {
440440
},
441441
wantErr: true,
442442
},
443+
{
444+
name: "valid config with local repo",
445+
cfg: &config.Config{
446+
API: "some/api",
447+
APISource: newTestGitRepo(t).GetDir(),
448+
Repo: newTestGitRepo(t).GetDir(),
449+
WorkRoot: t.TempDir(),
450+
Image: "gcr.io/test/test-image",
451+
},
452+
},
443453
} {
444454
t.Run(test.name, func(t *testing.T) {
445455
t.Parallel()
@@ -512,10 +522,25 @@ func TestNewGenerateRunner(t *testing.T) {
512522
}
513523
}
514524

515-
_, err := newGenerateRunner(test.cfg)
525+
r, err := newGenerateRunner(test.cfg)
516526
if (err != nil) != test.wantErr {
517527
t.Errorf("newGenerateRunner() error = %v, wantErr %v", err, test.wantErr)
518528
}
529+
if test.wantErr {
530+
return
531+
}
532+
if r.ghClient == nil {
533+
t.Errorf("newGenerateRunner() ghClient is nil")
534+
}
535+
if r.containerClient == nil {
536+
t.Errorf("newGenerateRunner() containerClient is nil")
537+
}
538+
if r.repo == nil {
539+
t.Errorf("newGenerateRunner() repo is nil")
540+
}
541+
if r.sourceRepo == nil {
542+
t.Errorf("newGenerateRunner() sourceRepo is nil")
543+
}
519544
})
520545
}
521546
}

0 commit comments

Comments
 (0)