Skip to content

Commit 182966c

Browse files
Lint issue newline before return fixed
re write the job run logic for sbt File permission logic changes Test case updated as for logic update for sbt job run()
1 parent e33fd65 commit 182966c

File tree

2 files changed

+91
-30
lines changed

2 files changed

+91
-30
lines changed

internal/resolution/pm/sbt/job.go

Lines changed: 87 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -38,36 +38,63 @@ func NewJob(file string, cmdFactory ICmdFactory, buildService IBuildService, mav
3838
}
3939

4040
func (j *Job) Run() {
41+
if err := j.parseBuildFile(); err != nil {
42+
return
43+
}
44+
45+
if err := j.generatePomFile(); err != nil {
46+
return
47+
}
48+
49+
pomFile, err := j.locatePomFile()
50+
if err != nil {
51+
return
52+
}
53+
54+
pomXml, err := j.convertToPomXml(pomFile)
55+
if err != nil {
56+
return
57+
}
58+
59+
if err := j.parseAndProcessWithMaven(pomXml); err != nil {
60+
return
61+
}
62+
}
63+
64+
func (j *Job) parseBuildFile() error {
4165
status := "parsing SBT build file"
4266
j.SendStatus(status)
4367

4468
file := j.GetFile()
4569
_, err := j.buildService.ParseBuildModules(file)
4670
if err != nil {
4771
doc := err.Error()
48-
4972
if doc == "EOF" {
5073
doc = "This file doesn't contain valid SBT build content"
5174
}
5275

5376
parsingError := util.NewPMJobError(err.Error())
5477
parsingError.SetStatus(status)
5578
parsingError.SetDocumentation(doc)
56-
5779
j.Errors().Critical(parsingError)
5880

59-
return
81+
return err
6082
}
6183

84+
return nil
85+
}
86+
87+
func (j *Job) generatePomFile() error {
88+
file := j.GetFile()
6289
workingDirectory := filepath.Dir(filepath.Clean(file))
6390
cmd, err := j.cmdFactory.MakePomCmd(workingDirectory)
6491
if err != nil {
6592
j.handleError(util.NewPMJobError(err.Error()))
6693

67-
return
94+
return err
6895
}
6996

70-
status = "generating Maven POM file"
97+
status := "generating Maven POM file"
7198
j.SendStatus(status)
7299

73100
output, err := cmd.CombinedOutput()
@@ -79,11 +106,18 @@ func (j *Job) Run() {
79106

80107
cmdErr := util.NewPMJobError(errContent)
81108
cmdErr.SetStatus(status)
82-
83109
j.handleError(cmdErr)
110+
111+
return err
84112
}
85113

86-
status = "locating generated POM file"
114+
return nil
115+
}
116+
117+
func (j *Job) locatePomFile() (string, error) {
118+
file := j.GetFile()
119+
workingDirectory := filepath.Dir(filepath.Clean(file))
120+
status := "locating generated POM file"
87121
j.SendStatus(status)
88122

89123
pomFile, err := j.buildService.FindPomFile(workingDirectory)
@@ -95,56 +129,86 @@ func (j *Job) Run() {
95129

96130
cmdErr := util.NewPMJobError(errorMsg)
97131
cmdErr.SetStatus(status)
98-
99132
j.handleError(cmdErr)
100133

101-
return
134+
return "", err
102135
}
103136

104-
status = "converting POM file to pom.xml"
137+
return pomFile, nil
138+
}
139+
140+
func (j *Job) convertToPomXml(pomFile string) (string, error) {
141+
file := j.GetFile()
142+
workingDirectory := filepath.Dir(filepath.Clean(file))
143+
status := "converting POM file to pom.xml"
105144
j.SendStatus(status)
106145

107146
pomXml, err := j.buildService.RenamePomToXml(pomFile, workingDirectory)
108147
if err != nil {
109148
cmdErr := util.NewPMJobError(err.Error())
110149
cmdErr.SetStatus(status)
111-
112150
j.handleError(cmdErr)
113151

114-
return
152+
return "", err
153+
}
154+
155+
return pomXml, nil
156+
}
157+
158+
func (j *Job) parseAndProcessWithMaven(pomXml string) error {
159+
status := "parsing Maven POM file"
160+
j.SendStatus(status)
161+
162+
if err := j.parseMavenPom(pomXml); err != nil {
163+
return err
164+
}
165+
166+
file := j.GetFile()
167+
workingDirectory := filepath.Dir(filepath.Clean(file))
168+
if err := j.createMavenDependencyGraph(workingDirectory, pomXml); err != nil {
169+
return err
115170
}
116171

117-
status = "parsing Maven POM file"
172+
status = fmt.Sprintf("processing dependencies with Maven resolver using %s", pomXml)
173+
j.SendStatus(status)
174+
175+
return nil
176+
}
177+
178+
func (j *Job) parseMavenPom(pomXml string) error {
179+
status := "parsing Maven POM file"
118180
j.SendStatus(status)
119181

120-
_, err = j.mavenPomService.ParsePomModules(pomXml)
182+
_, err := j.mavenPomService.ParsePomModules(pomXml)
121183
if err != nil {
122184
doc := err.Error()
123-
124185
if doc == "EOF" {
125186
doc = "This file doesn't contain valid XML"
126187
}
127188

128189
parsingError := util.NewPMJobError(err.Error())
129190
parsingError.SetStatus(status)
130191
parsingError.SetDocumentation(doc)
131-
132192
j.Errors().Critical(parsingError)
133193

134-
return
194+
return err
135195
}
136196

137-
status = "creating Maven dependency graph"
197+
return nil
198+
}
199+
200+
func (j *Job) createMavenDependencyGraph(workingDirectory string, pomXml string) error {
201+
status := "creating Maven dependency graph"
138202
j.SendStatus(status)
139203

140-
cmd, err = j.mavenCmdFactory.MakeDependencyTreeCmd(workingDirectory)
204+
cmd, err := j.mavenCmdFactory.MakeDependencyTreeCmd(workingDirectory)
141205
if err != nil {
142206
j.handleError(util.NewPMJobError(err.Error()))
143207

144-
return
208+
return err
145209
}
146210

147-
output, err = cmd.Output()
211+
output, err := cmd.Output()
148212
if err != nil {
149213
errContent := err.Error()
150214
if output != nil {
@@ -153,14 +217,12 @@ func (j *Job) Run() {
153217

154218
cmdErr := util.NewPMJobError(errContent)
155219
cmdErr.SetStatus(status)
156-
157220
j.handleError(cmdErr)
158221

159-
return
222+
return err
160223
}
161224

162-
status = fmt.Sprintf("processing dependencies with Maven resolver using %s", pomXml)
163-
j.SendStatus(status)
225+
return nil
164226
}
165227

166228
func (j *Job) handleError(cmdError job.IError) {

internal/resolution/pm/sbt/job_test.go

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,7 @@ func TestRunCmdOutputErr(t *testing.T) {
106106
assert.True(t, error.HasError())
107107

108108
allErrors := error.GetAll()
109-
assert.Len(t, allErrors, 2)
109+
assert.Len(t, allErrors, 1)
110110
assert.Contains(t, allErrors[0].Error(), "executable file not found")
111111
}
112112

@@ -124,10 +124,9 @@ func TestRunCmdOutputErrNoOutput(t *testing.T) {
124124
j.Run()
125125

126126
errs := j.Errors().GetAll()
127-
assert.Len(t, errs, 2)
127+
assert.Len(t, errs, 1)
128128

129129
assert.Contains(t, errs[0].Error(), "unknown command")
130-
assert.Contains(t, errs[1].Error(), "exec: no command")
131130
}
132131

133132
func TestRun(t *testing.T) {
@@ -140,15 +139,15 @@ lazy val core = project("core-module")
140139
lazy val api = project("api-module")
141140
lazy val util = project("util-module")
142141
`
143-
err := os.WriteFile(buildSbtPath, []byte(buildSbtContent), 0644)
142+
err := os.WriteFile(buildSbtPath, []byte(buildSbtContent), 0600)
144143
assert.NoError(t, err)
145144

146145
targetDir := filepath.Join(tempDir, "target", "scala-3.6.4")
147146
err = os.MkdirAll(targetDir, 0755)
148147
assert.NoError(t, err)
149148

150149
pomFilePath := filepath.Join(targetDir, "project.pom")
151-
err = os.WriteFile(pomFilePath, []byte("<project></project>"), 0644)
150+
err = os.WriteFile(pomFilePath, []byte("<project></project>"), 0600)
152151
assert.NoError(t, err)
153152

154153
// Create the job with the test file and explicit command

0 commit comments

Comments
 (0)