Skip to content

Commit 01378de

Browse files
Some build logs are still being swallowed (#504)
closes #503 --------- Co-authored-by: create-issue-branch[bot] <53036503+create-issue-branch[bot]@users.noreply.github.com> Co-authored-by: Dan Halson <[email protected]>
1 parent c13d32a commit 01378de

File tree

3 files changed

+32
-25
lines changed

3 files changed

+32
-25
lines changed

.devcontainer/devcontainer.json

+7-1
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,13 @@
7070
"ninoseki.vscode-mogami"
7171
],
7272
"settings": {
73-
"terminal.integrated.defaultProfile.linux": "zsh"
73+
"terminal.integrated.defaultProfile.linux": "zsh",
74+
"editor.codeActionsOnSave": {
75+
"source.fixAll": "explicit"
76+
},
77+
"rubyLsp.enabledFeatures": {
78+
"diagnostics": true
79+
}
7480
}
7581
}
7682
}

app/jobs/upload_job.rb

+2-24
Original file line numberDiff line numberDiff line change
@@ -40,10 +40,6 @@ class UploadJob < ApplicationJob
4040
def perform(payload)
4141
modified_locales(payload).each do |locale|
4242
projects_data = load_projects_data(locale, repository(payload), owner(payload))
43-
if projects_data.data.repository&.object.nil?
44-
Rails.logger.warn 'Build skipped, does the repo exist?'
45-
break
46-
end
4743

4844
projects_data.data.repository.object.entries.each do |project_dir|
4945
project = format_project(project_dir, locale, repository(payload), owner(payload))
@@ -80,28 +76,10 @@ def load_projects_data(locale, repository, owner)
8076
end
8177

8278
def handle_graphql_errors(response)
83-
errors = response&.errors.presence || response&.data&.errors
79+
errors = response&.errors || response&.data&.errors
8480
return if errors.blank?
8581

86-
error_messages, error_details, error_type = extract_error_info(errors)
87-
88-
# Handle NOT_FOUND errors as a special case, as this can happen when the repo is first created
89-
raise GraphQL::Client::Error, "GraphQL query failed with errors: #{error_messages}. Details: #{error_details}" unless error_type == 'NOT_FOUND'
90-
end
91-
92-
def extract_error_info(errors)
93-
error_type = nil
94-
if errors.is_a?(Array) && errors.first.is_a?(Hash)
95-
# Query level error
96-
error_messages = errors.map { |error| error }
97-
error_details = errors.map { |error| error }
98-
error_type = error_details.dig(0, 1, 0, 'type')
99-
else
100-
# Top level error
101-
error_messages = errors.messages['data'].first
102-
error_details = errors.details['data'].first['message']
103-
end
104-
[error_messages, error_details, error_type]
82+
raise GraphQL::Client::Error, "GraphQL query failed with errors: #{errors.inspect}"
10583
end
10684

10785
def format_project(project_dir, locale, repository, owner)

spec/jobs/upload_job_spec.rb

+23
Original file line numberDiff line numberDiff line change
@@ -206,4 +206,27 @@
206206
expect { described_class.perform_now(payload) }.to change(Project, :count).by(1)
207207
end
208208
end
209+
210+
context 'with a graphql error response' do
211+
let(:raw_response) do
212+
{
213+
errors: [
214+
{
215+
'message' => 'Simulated INTERNAL_SERVER_ERROR message',
216+
'locations' => [{ 'line' => 2, 'column' => 4 }],
217+
'path' => %w[query repository object],
218+
'extensions' => { 'code' => 'INTERNAL_SERVER_ERROR' }
219+
}
220+
]
221+
}
222+
end
223+
224+
before do
225+
stub_request(:post, 'https://api.github.com/graphql').to_return(status: 200, body: raw_response.to_json, headers: {})
226+
end
227+
228+
it 'raises a GraphQL::Client::Error' do
229+
expect { described_class.perform_now(payload) }.to raise_error(GraphQL::Client::Error, /Simulated INTERNAL_SERVER_ERROR message/)
230+
end
231+
end
209232
end

0 commit comments

Comments
 (0)