diff --git a/app/controllers/submissions_controller.rb b/app/controllers/submissions_controller.rb index e084b7d0..141ffc0b 100644 --- a/app/controllers/submissions_controller.rb +++ b/app/controllers/submissions_controller.rb @@ -147,10 +147,18 @@ class SubmissionsController < ApplicationController end runner_socket.on :exit do |exit_code| - if @output.empty? - client_socket.send_data JSON.dump({cmd: :write, stream: :stdout, data: "#{t('exercises.implement.no_output', timestamp: l(Time.zone.now, format: :short))}\n"}) - end - client_socket.send_data JSON.dump({cmd: :write, stream: :stdout, data: "#{t('exercises.implement.exit', exit_code: exit_code)}\n"}) + exit_statement = + if @output.empty? && exit_code.zero? + t('exercises.implement.no_output_exit_successful', timestamp: l(Time.zone.now, format: :short), exit_code: exit_code) + elsif @output.empty? + t('exercises.implement.no_output_exit_failure', timestamp: l(Time.zone.now, format: :short), exit_code: exit_code) + elsif exit_code.zero? + t('exercises.implement.exit_successful', timestamp: l(Time.zone.now, format: :short), exit_code: exit_code) + else + t('exercises.implement.exit_failure', timestamp: l(Time.zone.now, format: :short), exit_code: exit_code) + end + client_socket.send_data JSON.dump({cmd: :write, stream: :stdout, data: "#{exit_statement}\n"}) + close_client_connection(client_socket) end end diff --git a/config/locales/de.yml b/config/locales/de.yml index 108da7e8..d137d478 100644 --- a/config/locales/de.yml +++ b/config/locales/de.yml @@ -406,7 +406,10 @@ de: hint: Hinweis no_files: Die Aufgabe umfasst noch keine sichtbaren Dateien. no_output: Die letzte Code-Ausführung terminierte am %{timestamp} ohne Ausgabe. - exit: Der Exit-Status war %{exit_code}. + no_output_exit_successful: Die letzte Code-Ausführung terminierte am %{timestamp} ohne Ausgabe and wurde erfolgreich beendet (Statuscode %{exit_code}). + no_output_exit_failure: Die letzte Code-Ausführung terminierte am %{timestamp} ohne Ausgabe und wurde mit einem Fehler beendet (Statuscode %{exit_code}). + exit_successful: Die letzte Code-Ausführung wurde erfolgreich beendet (Statuscode %{exit_code}). + exit_failure: Die letzte Code-Ausführung wurde mit einem Fehler beendet (Statuscode %{exit_code}). no_output_yet: Bisher existiert noch keine Ausgabe. output: Programm-Ausgabe passed_tests: Erfolgreiche Tests diff --git a/config/locales/en.yml b/config/locales/en.yml index 44d0e8df..05127ab7 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -406,7 +406,10 @@ en: hint: Hint no_files: The exercise does not comprise visible files yet. no_output: The last code run finished on %{timestamp} without any output. - exit: The exit status was %{exit_code}. + no_output_exit_successful: The last code run finished on %{timestamp} without any output and exited successfully (status code %{exit_code}). + no_output_exit_failure: The last code run finished on %{timestamp} without any output and exited with a failure (status code %{exit_code}). + exit_successful: The last code run exited successfully (status code %{exit_code}). + exit_failure: The last code run exited with a failure (status code %{exit_code}). no_output_yet: There is no output yet. output: Program Output passed_tests: Passed Tests