From 2363c1e22f8020347e72aa4440e4674155d87514 Mon Sep 17 00:00:00 2001 From: dd di cesare Date: Mon, 15 Oct 2018 19:00:04 +0200 Subject: [PATCH 1/2] [wip] [xml report] Xml Report --- lib/license_finder/cli/main.rb | 3 +- lib/license_finder/report.rb | 1 + .../reports/templates/xml_report.erb | 19 +++++++++ lib/license_finder/reports/xml_report.rb | 19 +++++++++ .../license_finder/reports/xml_report_spec.rb | 41 +++++++++++++++++++ 5 files changed, 82 insertions(+), 1 deletion(-) create mode 100644 lib/license_finder/reports/templates/xml_report.erb create mode 100644 lib/license_finder/reports/xml_report.rb create mode 100644 spec/lib/license_finder/reports/xml_report_spec.rb diff --git a/lib/license_finder/cli/main.rb b/lib/license_finder/cli/main.rb index 93fad3ecf..ee1eed2cd 100644 --- a/lib/license_finder/cli/main.rb +++ b/lib/license_finder/cli/main.rb @@ -16,7 +16,8 @@ class Main < Base 'text' => TextReport, 'html' => HtmlReport, 'markdown' => MarkdownReport, - 'csv' => CsvReport + 'csv' => CsvReport, + 'xml' => XmlReport }.freeze class_option :go_full_version, desc: 'Whether dependency version should include full version. Only meaningful if used with a Go project. Defaults to false.' diff --git a/lib/license_finder/report.rb b/lib/license_finder/report.rb index 277282eb6..bd46e43f6 100644 --- a/lib/license_finder/report.rb +++ b/lib/license_finder/report.rb @@ -28,3 +28,4 @@ def sorted_dependencies require 'license_finder/reports/merged_report' require 'license_finder/reports/html_report' require 'license_finder/reports/markdown_report' +require 'license_finder/reports/xml_report' diff --git a/lib/license_finder/reports/templates/xml_report.erb b/lib/license_finder/reports/templates/xml_report.erb new file mode 100644 index 000000000..d3c3a57d6 --- /dev/null +++ b/lib/license_finder/reports/templates/xml_report.erb @@ -0,0 +1,19 @@ + + + + <% sorted_dependencies.each do |dependency| -%> + + <%= dependency.name %> + <%= dependency.version %> + + <% dependency.licenses.each do |license| -%> + + <%= license.name %> + <%= license.url %> + + <% end -%> + + + <% end -%> + + diff --git a/lib/license_finder/reports/xml_report.rb b/lib/license_finder/reports/xml_report.rb new file mode 100644 index 000000000..c23f685a5 --- /dev/null +++ b/lib/license_finder/reports/xml_report.rb @@ -0,0 +1,19 @@ +require 'license_finder/reports/erb_report' + +module LicenseFinder + class XmlReport < ErbReport + ROOT_PATH = Pathname.new(__FILE__).dirname + TEMPLATE_PATH = ROOT_PATH.join('templates') + + def to_s(filename = TEMPLATE_PATH.join("#{template_name}.erb")) + template = ERB.new(filename.read, nil, '-') + template.result(binding) + end + + private + + def template_name + 'xml_report' + end + end +end diff --git a/spec/lib/license_finder/reports/xml_report_spec.rb b/spec/lib/license_finder/reports/xml_report_spec.rb new file mode 100644 index 000000000..994232bbf --- /dev/null +++ b/spec/lib/license_finder/reports/xml_report_spec.rb @@ -0,0 +1,41 @@ +# frozen_string_literal: true + +require 'spec_helper' + +module LicenseFinder + describe XmlReport do + it 'should generate the correct xml report with name, version and license' do + dep = Package.new('dep_1', '1.0', {spec_licenses: 'MIT'}) + dep2 = Package.new('dep_2', '2.0', {spec_licenses: 'BSD'}) + subject = described_class.new([dep, dep2], {}) + expected_report = <<-XML + + + + + dep_1 + 1.0 + + + unknown + + + + + + dep_2 + 2.0 + + + unknown + + + + + + + XML + expect(subject.to_s.gsub(/\s/,'')).to eq(expected_report.gsub('/\s/,')) + end + end +end From 301b513597c87609f476289c8c7063f4568f8df3 Mon Sep 17 00:00:00 2001 From: Marta Noya Date: Tue, 16 Oct 2018 14:21:59 +0200 Subject: [PATCH 2/2] Spec XML Report passing --- .../license_finder/reports/xml_report_spec.rb | 62 ++++++++++++------- 1 file changed, 38 insertions(+), 24 deletions(-) diff --git a/spec/lib/license_finder/reports/xml_report_spec.rb b/spec/lib/license_finder/reports/xml_report_spec.rb index 994232bbf..154e7266d 100644 --- a/spec/lib/license_finder/reports/xml_report_spec.rb +++ b/spec/lib/license_finder/reports/xml_report_spec.rb @@ -4,38 +4,52 @@ module LicenseFinder describe XmlReport do - it 'should generate the correct xml report with name, version and license' do - dep = Package.new('dep_1', '1.0', {spec_licenses: 'MIT'}) - dep2 = Package.new('dep_2', '2.0', {spec_licenses: 'BSD'}) - subject = described_class.new([dep, dep2], {}) - expected_report = <<-XML + let(:dep1) do + result = Package.new('dep_1', '1.0') + result.decide_on_license(License.find_by_name('MIT')) + result + end + + let(:dep2) do + result = Package.new('dep_2', '2.0') + result.decide_on_license(License.find_by_name('BSD')) + result + end + + let(:expected_report) do + <<-XML - - - dep_1 - 1.0 - - - unknown - - - + + + dep_1 + 1.0 + + + MIT + http://opensource.org/licenses/mit-license + + - + dep_2 2.0 - - unknown - - - - - + + BSD + http://en.wikipedia.org/wiki/BSD_licenses#4-clause_license_.28original_.22BSD_License.22.29 + + + + XML - expect(subject.to_s.gsub(/\s/,'')).to eq(expected_report.gsub('/\s/,')) + end + + subject { described_class.new([dep1, dep2], {}) } + + it 'should generate the correct xml report with name, version and license' do + expect(subject.to_s.gsub(/\s/, '')).to eq(expected_report.gsub(/\s/, '')) end end end