diff --git a/app/assets/javascripts/editor/editor.js.erb b/app/assets/javascripts/editor/editor.js.erb index 4b4c8810..2c0696e4 100644 --- a/app/assets/javascripts/editor/editor.js.erb +++ b/app/assets/javascripts/editor/editor.js.erb @@ -833,8 +833,7 @@ var CodeOceanEditor = { this.initializeDeadlines(); CodeOceanEditorTips.initializeEventHandlers(); - window.addEventListener("beforeunload", this.unloadAutoSave.bind(this)); - window.addEventListener("page:before-change", this.unloadAutoSave.bind(this)); + window.addEventListener("turbolinks:request-start", this.unloadAutoSave.bind(this)); // create autosave when the editor is opened the first time this.autosave(); } diff --git a/app/controllers/submissions_controller.rb b/app/controllers/submissions_controller.rb index 7035de30..fff49cc3 100644 --- a/app/controllers/submissions_controller.rb +++ b/app/controllers/submissions_controller.rb @@ -220,7 +220,9 @@ class SubmissionsController < ApplicationController # save the output of this "run" as a "testrun" (scoring runs are saved in submission_scoring.rb) save_run_output - if @run_output.blank? + # For Python containers, the @run_output is '{"cmd":"exit"}' as a string. + # If this is the case, we should consider it as blank + if @run_output.blank? || @run_output&.strip == '{"cmd":"exit"}' @raw_output ||= '' @run_output ||= '' parse_message t('exercises.implement.no_output', timestamp: l(Time.now, format: :short)), 'stdout', tubesock diff --git a/docs/LOCAL_SETUP.md b/docs/LOCAL_SETUP.md index 7cc69d4f..8ceae0c0 100644 --- a/docs/LOCAL_SETUP.md +++ b/docs/LOCAL_SETUP.md @@ -165,3 +165,13 @@ admin@example.org:admin ```shell script rails s ``` + +## Webpack + +This project uses `webpacker` to integrate Webpack with Rails to deliver Frontend assets. During development, the `webpack-dev-server` automatically launches togehter with the Rails server if not specified otherwise. In case of missing JavaScript or stylesheets or for hot reloading in the browser, you might want to start the `webpack-dev-server` manually *before starting Rails*: + +```shell script +./bin/webpack-dev-server +``` + +This will launch a dedicated server on port 3035 (default setting) and allow incoming WebSocket connections from your browser. diff --git a/lib/assessor.rb b/lib/assessor.rb index 5febbb26..e18661b8 100644 --- a/lib/assessor.rb +++ b/lib/assessor.rb @@ -4,7 +4,7 @@ class Assessor def assess(output) test_outcome = @testing_framework_adapter.test_outcome(output) test_outcome.merge(score: calculate_score(test_outcome)) - rescue + rescue StandardError {score: 0} end diff --git a/lib/python20_course_week.rb b/lib/python20_course_week.rb index 420c40b9..11afd4a1 100644 --- a/lib/python20_course_week.rb +++ b/lib/python20_course_week.rb @@ -8,7 +8,13 @@ class Python20CourseWeek 1 when /Python20 Aufgabe 2/ 2 - when /Python20 Aufgabe 3/ + when /Python20 Aufgabe 3.1/ + nil # Explicitly enable everything (linter + tips if available)! + when /Python20 Aufgabe 3.2/ + 3 + when /Python20 Aufgabe 3.3/ + 3 + when /Python20 Aufgabe 3.4/ 3 when /Python20 Aufgabe 4/ 4