From a47d60d7dbedc71408021ae9ea01e859a44b2b02 Mon Sep 17 00:00:00 2001 From: fonglh Date: Thu, 1 Sep 2016 10:05:16 +0800 Subject: [PATCH] Add spec for nil report file. Check that it does not crash. Refactor copy_report function to accept different inputs. --- .../evaluate_programming_package_service_spec.rb | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/spec/coursemology/evaluator/services/evaluate_programming_package_service_spec.rb b/spec/coursemology/evaluator/services/evaluate_programming_package_service_spec.rb index 8a4e02d..f154eb5 100644 --- a/spec/coursemology/evaluator/services/evaluate_programming_package_service_spec.rb +++ b/spec/coursemology/evaluator/services/evaluate_programming_package_service_spec.rb @@ -107,24 +107,31 @@ def evaluate_result let(:report_contents) { File.read(report_path) } let(:container) { subject.send(:create_container, image) } - def copy_dummy_report + def copy_report(contents) container.start! container.wait - tar = StringIO.new(Docker::Util.create_tar('report.xml' => report_contents)) + tar = StringIO.new(Docker::Util.create_tar('report.xml' => contents)) container.archive_in_stream(Coursemology::Evaluator::Services:: EvaluateProgrammingPackageService::PACKAGE_PATH) do tar.read end end + after { subject.send(:destroy_container, container) } it 'returns the test report' do - copy_dummy_report + copy_report(report_contents) test_report = subject.send(:extract_test_report, container) expect(test_report).to eq(report_contents) expect(test_report.encoding).to eq Encoding::UTF_8 end + it 'does not crash when report is nil' do + copy_report(nil) + test_report = subject.send(:extract_test_report, container) + expect(test_report).to be_nil + end + context 'when running the tests fails' do it 'returns nil' do expect(subject.send(:extract_test_report, container)).to be_nil