Skip to content

Commit

Permalink
Merge pull request #517 from 3scale/xml-report
Browse files Browse the repository at this point in the history
Xml Report
  • Loading branch information
cf-osl-bot committed Oct 22, 2018
2 parents ab535bd + 2722bff commit 26b2c80
Show file tree
Hide file tree
Showing 5 changed files with 96 additions and 1 deletion.
3 changes: 2 additions & 1 deletion lib/license_finder/cli/main.rb
Original file line number Diff line number Diff line change
Expand Up @@ -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.'
Expand Down
1 change: 1 addition & 0 deletions lib/license_finder/report.rb
Original file line number Diff line number Diff line change
Expand Up @@ -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'
19 changes: 19 additions & 0 deletions lib/license_finder/reports/templates/xml_report.erb
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<licenseSummary>
<dependencies>
<% sorted_dependencies.each do |dependency| -%>
<dependency>
<packageName><%= dependency.name %></packageName>
<version><%= dependency.version %></version>
<licenses>
<% dependency.licenses.each do |license| -%>
<license>
<name><%= license.name %></name>
<url><%= license.url %></url>
</license>
<% end -%>
</licenses>
</dependency>
<% end -%>
</dependencies>
</licenseSummary>
19 changes: 19 additions & 0 deletions lib/license_finder/reports/xml_report.rb
Original file line number Diff line number Diff line change
@@ -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
55 changes: 55 additions & 0 deletions spec/lib/license_finder/reports/xml_report_spec.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
# frozen_string_literal: true

require 'spec_helper'

module LicenseFinder
describe XmlReport do
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
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<licenseSummary>
<dependencies>
<dependency>
<packageName>dep_1</packageName>
<version>1.0</version>
<licenses>
<license>
<name>MIT</name>
<url>http://opensource.org/licenses/mit-license</url>
</license>
</licenses>
</dependency>
<dependency>
<packageName>dep_2</packageName>
<version>2.0</version>
<licenses>
<license>
<name>BSD</name>
<url>http://en.wikipedia.org/wiki/BSD_licenses#4-clause_license_.28original_.22BSD_License.22.29</url>
</license>
</licenses>
</dependency>
</dependencies>
</licenseSummary>
XML
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

0 comments on commit 26b2c80

Please sign in to comment.