Skip to content

Commit 811eb8e

Browse files
authored
fix: populate configure command pr content (#2591)
This PR includes the fix to correctly populate the PR title, body, and commit for configuring a new library. Fixes: #2378
1 parent 90e0f6e commit 811eb8e

File tree

2 files changed

+110
-1
lines changed

2 files changed

+110
-1
lines changed

internal/librarian/generate_command.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -221,7 +221,7 @@ func (r *generateRunner) generateSingleLibrary(ctx context.Context, libraryID, o
221221
return nil, err
222222
}
223223

224-
prType = pullRequestGenerate
224+
prType = pullRequestOnboard
225225
libraryID = configuredLibraryID
226226
}
227227

internal/librarian/generate_command_test.go

Lines changed: 109 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -950,6 +950,115 @@ func TestGenerateScenarios(t *testing.T) {
950950
}
951951
}
952952

953+
func TestGenerateSingleLibraryCommand(t *testing.T) {
954+
t.Parallel()
955+
for _, test := range []struct {
956+
name string
957+
api string
958+
library string
959+
state *config.LibrarianState
960+
container *mockContainerClient
961+
ghClient GitHubClient
962+
build bool
963+
wantErr bool
964+
wantErrMsg string
965+
wantPRType pullRequestType
966+
}{
967+
{
968+
name: "onboard library returns pullRequestOnboard",
969+
api: "some/api",
970+
library: "some-library",
971+
state: &config.LibrarianState{
972+
Image: "gcr.io/test/image:v1.2.3",
973+
},
974+
container: &mockContainerClient{
975+
wantLibraryGen: true,
976+
configureLibraryPaths: []string{
977+
"src/a",
978+
},
979+
},
980+
ghClient: &mockGitHubClient{},
981+
build: true,
982+
wantPRType: pullRequestOnboard,
983+
},
984+
{
985+
name: "generate existing library returns pullRequestGenerate",
986+
library: "some-library",
987+
state: &config.LibrarianState{
988+
Image: "gcr.io/test/image:v1.2.3",
989+
Libraries: []*config.LibraryState{
990+
{
991+
ID: "some-library",
992+
APIs: []*config.API{{Path: "some/api"}},
993+
SourceRoots: []string{
994+
"src/a",
995+
},
996+
},
997+
},
998+
},
999+
container: &mockContainerClient{
1000+
wantLibraryGen: true,
1001+
},
1002+
ghClient: &mockGitHubClient{},
1003+
build: true,
1004+
wantPRType: pullRequestGenerate,
1005+
},
1006+
} {
1007+
t.Run(test.name, func(t *testing.T) {
1008+
repo := newTestGitRepoWithState(t, test.state, true)
1009+
sourceRepo := newTestGitRepo(t)
1010+
r := &generateRunner{
1011+
api: test.api,
1012+
library: test.library,
1013+
build: test.build,
1014+
repo: repo,
1015+
sourceRepo: sourceRepo,
1016+
state: test.state,
1017+
containerClient: test.container,
1018+
ghClient: test.ghClient,
1019+
workRoot: t.TempDir(),
1020+
}
1021+
1022+
// Create a service config in api path.
1023+
if test.api != "" {
1024+
if err := os.MkdirAll(filepath.Join(r.sourceRepo.GetDir(), test.api), 0755); err != nil {
1025+
t.Fatal(err)
1026+
}
1027+
data := []byte("type: google.api.Service")
1028+
if err := os.WriteFile(filepath.Join(r.sourceRepo.GetDir(), test.api, "example_service_v2.yaml"), data, 0755); err != nil {
1029+
t.Fatal(err)
1030+
}
1031+
// Commit the service config file because configure command needs
1032+
// to find the piper id associated with the commit message.
1033+
if err := r.sourceRepo.AddAll(); err != nil {
1034+
t.Fatal(err)
1035+
}
1036+
message := "feat: add an api\n\nPiperOrigin-RevId: 123456"
1037+
if err := r.sourceRepo.Commit(message); err != nil {
1038+
t.Fatal(err)
1039+
}
1040+
}
1041+
1042+
status, err := r.generateSingleLibrary(context.Background(), r.library, r.workRoot)
1043+
if test.wantErr {
1044+
if err == nil {
1045+
t.Fatalf("%s should return error", test.name)
1046+
}
1047+
if !strings.Contains(err.Error(), test.wantErrMsg) {
1048+
t.Errorf("want error message %s, got %s", test.wantErrMsg, err.Error())
1049+
}
1050+
return
1051+
}
1052+
if err != nil {
1053+
t.Fatal(err)
1054+
}
1055+
if status.prType != test.wantPRType {
1056+
t.Errorf("generateSingleLibrary() prType = %v, want %v", status.prType, test.wantPRType)
1057+
}
1058+
})
1059+
}
1060+
}
1061+
9531062
func TestUpdateLastGeneratedCommitState(t *testing.T) {
9541063
t.Parallel()
9551064
sourceRepo := newTestGitRepo(t)

0 commit comments

Comments
 (0)