From 8d54a21d0b75d68867594b680a40db320cf27ff7 Mon Sep 17 00:00:00 2001 From: Nicholas AJ Clark Date: Tue, 28 Nov 2023 19:40:35 -0500 Subject: [PATCH] Removed name from assessment yml (#1993) * Removed name from assessment yml * Modified test after removing name from assessment yml * Removed unnecessary test for wrong assessment name * Removed yml name check in assessments_controller --------- Co-authored-by: Nicholas Clark (cherry picked from commit 08e97105428d8c9634eddb1363e2e8b9ae29bbe8) --- app/controllers/assessments_controller.rb | 14 +------------- app/models/assessment.rb | 6 +++--- spec/controllers/assessments_controller_spec.rb | 16 +--------------- 3 files changed, 5 insertions(+), 31 deletions(-) diff --git a/app/controllers/assessments_controller.rb b/app/controllers/assessments_controller.rb index 8ed92c79f..c002fd382 100755 --- a/app/controllers/assessments_controller.rb +++ b/app/controllers/assessments_controller.rb @@ -124,19 +124,7 @@ def install_assessment # each assessment must have an associated yaml file, # and it must have a name field that matches its filename - if File.exist?(File.join(dir_path, filename, "#{filename}.yml")) - props = YAML.safe_load(File.open( - File.join(dir_path, filename, "#{filename}.yml"), "r", &:read - )) - unless props["general"] && (props["general"]["name"] == filename) - flash.now[:error] = flash.now[:error] ? "#{flash.now[:error]}
" : "" - flash.now[:error] += "An error occurred while trying to display an existing assessment " \ - "from file directory #{filename}: Name in yaml (#{props['general']['name']}) " \ - "doesn't match #{filename}" - flash.now[:html_safe] = true - next - end - else + unless File.exist?(File.join(dir_path, filename, "#{filename}.yml")) flash.now[:error] = flash.now[:error] ? "#{flash.now[:error]}
" : "" flash.now[:error] += "An error occurred while trying to display an existing assessment " \ "from file directory #{filename}: #{filename}.yml does not exist" diff --git a/app/models/assessment.rb b/app/models/assessment.rb index ab3803d8e..7ac73d7e0 100755 --- a/app/models/assessment.rb +++ b/app/models/assessment.rb @@ -527,7 +527,7 @@ def serialize s end - GENERAL_SERIALIZABLE = Set.new %w[name display_name category_name description handin_filename + GENERAL_SERIALIZABLE = Set.new %w[display_name category_name description handin_filename handin_directory has_svn has_lang max_grace_days handout writeup max_submissions disable_handins max_size version_threshold is_positive_grading embedded_quiz group_size @@ -541,8 +541,8 @@ def serialize_general end def deserialize(s) - unless s["general"] && (s["general"]["name"] == name) - raise "Name in yaml (#{s['general']['name']}) doesn't match #{name}" + unless s["general"] + raise "General section missing in yaml" end if s["dates"] && s["dates"]["start_at"] diff --git a/spec/controllers/assessments_controller_spec.rb b/spec/controllers/assessments_controller_spec.rb index aceabf847..886f6d4f8 100644 --- a/spec/controllers/assessments_controller_spec.rb +++ b/spec/controllers/assessments_controller_spec.rb @@ -84,9 +84,6 @@ tar.seek("#{course_hash[:assessment].name}/#{course_hash[:assessment].name}.yml") do |entry| test = YAML.safe_load(entry.read) - expect( - test["general"]["name"] - ).to eq(course_hash[:assessment].name) expect( test["general"]["display_name"] ).to eq(course_hash[:assessment].display_name) @@ -150,18 +147,7 @@ expect(response).to have_http_status(302) expect(flash[:success]).to be_present end - it "handles broken yaml file" do - file = fixture_file_upload("assessments/homework02-yaml-name-field-wrong.tar") - post :importAsmtFromTar, params: { course_name: course_2_hash[:course].name, - name: course_2_hash[:assessment].name, - tarFile: file } - expect(response).to have_http_status(302) - expect(flash[:error]).to be_present - expect(flash[:error]).to match(/Error loading yaml/m) - end - it "handles any module name" do - # we now support any module name since we just overwrite the module name anyways, - # so this test is now successful + it "handles mismatched module name" do file = fixture_file_upload("assessments/homework02-module-mismatch.tar") post :importAsmtFromTar, params: { course_name: course_2_hash[:course].name, name: course_2_hash[:assessment].name,