license_finder 0.8.0-java → 0.8.1-java

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/CHANGELOG.rdoc ADDED
@@ -0,0 +1,98 @@
1
+ === 0.8.1 / 2013-04-14
2
+
3
+ * Features
4
+
5
+ * Add spinner to show that the binary is actually doing something.
6
+ * JRuby version of the gem.
7
+ * Official ruby 2.0 support.
8
+ * CLI interface for moving dependencies.* files to `doc/`.
9
+
10
+ * Bugfixes
11
+
12
+ * Fix ruby 1.9.2 support.
13
+
14
+ === 0.8.0 / 2013-04-03
15
+
16
+ * Features
17
+
18
+ * Add spinner to show that the binary is actually doing something.
19
+ * Add action items to dependencies.html.
20
+ * Add generation timestamp to dependencies.html.
21
+ * Default location for dependencies.* files is now `doc/`.
22
+ * Temporarily remove non-bundler (e.g. JavaScript) dependencies. This will
23
+ be readded in a more sustainable way soon.
24
+ * Use sqlite, not YAML, for dependencies.
25
+ * Officially deprecate rake tasks.
26
+
27
+ * Bugfixes
28
+
29
+ * Don't blow away manually set licenses when dependencies are rescanned.
30
+ * Ignore empty `readme_files` section in dependencies.yml.
31
+ * Clean up HTML generation for dependencies.html.
32
+ * Add an option to silence the binary's spinner so as not to fill up log
33
+ files.
34
+
35
+ === 0.7.2 / 2013-02-18
36
+
37
+ * Features
38
+
39
+ * Dependency cleanup.
40
+
41
+ === 0.7.1 / 2013-02-18
42
+
43
+ * Features
44
+
45
+ * Add variants to detectable licenses.
46
+ * Remove README files from data persistence.
47
+
48
+ === 0.7.0 / 2012-09-25
49
+
50
+ * Features
51
+
52
+ * Dependencies can be approved via CLI.
53
+ * Dependencies licenses can be set via CLI.
54
+
55
+ === 0.6.0 / 2012-09-15
56
+
57
+ * Features
58
+
59
+ * Create a dependencies.html containing a nicely formatted version of
60
+ dependencies.txt, with lots of extra information.
61
+ * All rake tasks, and the binary, run the init task automatically.
62
+ * Simplify dependencies.txt file since more detail can now go into
63
+ dependencies.html.
64
+ * Promote binary to be the default, take first steps to deprecate rake task.
65
+
66
+ * Bugfixes
67
+
68
+ * Fix formatting of `rake license:action_items` output.
69
+
70
+ === 0.5.0 / 2012-09-12
71
+
72
+ * Features
73
+
74
+ * `rake license:action_items` exits with a non-zero status if there are
75
+ non-approved dependencies.
76
+ * New binary, eventual replacement for rake tasks.
77
+ * Initial implementation of non-gem dependencies.
78
+ * Support BSD, New BSD, and Simplified BSD licenses.
79
+ * Improve ruby license detection.
80
+ * Add dependency's bundler group to dependencies.txt output.
81
+ * Add description and summary to dependencies.txt output.
82
+
83
+ * Bugfixes
84
+
85
+ * Create `config/` director if it doesn't exist, don't blow up.
86
+ * Better support for non-US word spellings.
87
+
88
+ === 0.4.5 / 2012-09-09
89
+
90
+ * Features
91
+
92
+ * Allow dependencies.* files to be written to a custom directory.
93
+ * Detect LGPL licenses
94
+ * Detect ISC licenses
95
+
96
+ * Bugfixes
97
+
98
+ * Fix blow up if there's not `ignore_groups` setting in the config file.
data/bin/license_finder CHANGED
@@ -28,6 +28,7 @@ end
28
28
 
29
29
  options = {}
30
30
  spinner = SpinnerStrategy::Spin
31
+ skip = false
31
32
 
32
33
  OptionParser.new do |opts|
33
34
  opts.banner = "Usage: license_finder [options] [dependency]"
@@ -43,6 +44,16 @@ OptionParser.new do |opts|
43
44
  opts.on("-q", "--quiet") do
44
45
  spinner = SpinnerStrategy::Noop
45
46
  end
47
+
48
+ opts.on("-m", "--move") do
49
+ skip = true
50
+ `sed '$d' < config/license_finder.yml > tmp34567.txt`
51
+ `mv tmp34567.txt config/license_finder.yml`
52
+ `echo "dependencies_file_dir: './doc/'" >> config/license_finder.yml`
53
+ `mkdir doc`
54
+ `mv dependencies.* doc/`
55
+ puts "Congratulations, you have cleaned up your root directory!'"
56
+ end
46
57
  end.parse!
47
58
 
48
59
  unless options.empty?
@@ -50,5 +61,5 @@ unless options.empty?
50
61
  end
51
62
 
52
63
  spinner.run {
53
- LicenseFinder::CLI.execute! options
54
- }
64
+ LicenseFinder::CLI.execute!(options)
65
+ } unless skip
@@ -4,11 +4,7 @@ Feature: Approving non-whitelisted Dependencies
4
4
  I want to be able to manually approve dependencies that have licenses which fall outside of my whitelist
5
5
 
6
6
  Scenario: Approving a non-whitelisted dependency via the `license_finder` command
7
- Given I have an app with license finder
8
- And my app depends on a gem "gpl_gem" licensed with "GPL"
9
- When I run "license_finder"
10
- Then I should see "gpl_gem" in its output
11
- When I run "license_finder -a gpl_gem"
12
- When I run "license_finder"
13
- Then I should not see "gpl_gem" in its output
14
- Then I should see the "gpl_gem" in the html flagged as "approved"
7
+ Given I have an app with license finder that depends on a GPL licensed gem
8
+ When I approve that gem
9
+ Then I should not see that gem in the console output
10
+ And I should see that gem approved in dependencies.html
@@ -0,0 +1,26 @@
1
+ Feature: License Finder command line executable
2
+ So that I can report and manage my application's dependencies and licenses to my business
3
+ As an application developer
4
+ I want a command-line interface
5
+
6
+ Scenario: Running without a configuration file
7
+ Given I have an app with license finder that has no config directory
8
+ When I run license_finder
9
+ Then it creates a config directory with the license_finder config
10
+
11
+ Scenario: Auditing an application with non-whitelisted licenses
12
+ Given I have an app with license finder that depends on a MIT licensed gem
13
+ When I run license_finder
14
+ Then it should exit with status code 1
15
+ And should list my MIT gem in the output
16
+
17
+ Scenario: Auditing an application with whitelisted licenses
18
+ Given I have an app with license finder that depends on a MIT licensed gem
19
+ When I whitelist MIT and 'other' licenses
20
+ Then it should exit with status code 0
21
+ And I should see all gems approved for use
22
+
23
+ Scenario: Keep manually set license dependencies
24
+ Given I have a project that depends on mime-types with a manual license type
25
+ When I run license_finder
26
+ Then the mime-types license remains set with my manual license type
@@ -7,32 +7,17 @@ Feature: HTML Report
7
7
  Given I have an app with license finder
8
8
 
9
9
  Scenario: Dependency details listed in HTML report
10
- Given my application depends on a gem "mit_licensed_gem" with:
11
- | license | summary | description | version | homepage | bundler_groups |
12
- | MIT | mit is cool | seriously | 0.0.1 | http://mit_licensed_gem.github.com | test |
13
- When I run "license_finder"
14
- And I should see the "mit_licensed_gem" in the html with the following details:
15
- | license | summary | description | name | bundler_groups |
16
- | MIT | mit is cool | seriously | mit_licensed_gem v0.0.1 | test |
17
- And the text "MIT" should link to "http://opensource.org/licenses/mit-license"
18
- And the text "mit_licensed_gem" should link to "http://mit_licensed_gem.github.com"
10
+ And my app depends on a gem with specific details
11
+ When I run license_finder
12
+ Then I should see my specific gem details listed in the html
19
13
 
20
14
  Scenario: Approval status of dependencies indicated in HTML report
21
- Given my app depends on a gem "gpl_licensed_gem" licensed with "GPL"
22
- And my app depends on a gem "mit_licensed_gem" licensed with "MIT"
23
- And I whitelist the "MIT" license
24
- When I run "license_finder"
25
- Then I should see the "gpl_licensed_gem" in the html flagged as "unapproved"
26
- And I should see the "mit_licensed_gem" in the html flagged as "approved"
15
+ And my app depends on MIT and GPL licensed gems
16
+ When I whitelist the MIT license
17
+ Then I should see the GPL gem unapproved in html
18
+ And the MIT gem approved in html
27
19
 
28
20
  Scenario: Dependency summary
29
- Given my app depends on a gem "gpl_licensed_gem" licensed with "GPL"
30
- And my app depends on a gem "mit_licensed_gem" licensed with "MIT"
31
- And I whitelist the following licenses: "MIT, other"
32
- When I run "license_finder"
33
- # rake, bundler, license_finder, my_app, gpl_licensed_gem, mit_licensed_gem
34
- Then I should see "8 total" in the html
35
- # gpl_licensed_gem
36
- And I should see "1 unapproved" in the html
37
- # gpl_licensed_gem
38
- And I should see "1 GPL" in the html
21
+ And my app depends on MIT and GPL licensed gems
22
+ When I whitelist MIT and 'other' licenses
23
+ Then I should see only see GPL liceneses as unapproved in the html
@@ -4,8 +4,7 @@ Feature: Ignore Bundle Groups
4
4
  So that any gems I use in development, or for testing, are automatically approved for use
5
5
 
6
6
  Scenario:
7
- Given I have an app with license finder
8
- And my application depends on a gem "gpl_gem" licensed with "GPL" in the "test" bundler groups
9
- And I whitelist the "test" bundler group
10
- When I run "license_finder"
11
- Then I should not see "gpl_gem" in its output
7
+ Given I have an app with license finder that depends on a GPL licensed gem in the test bundler group
8
+ And I ignore the test group
9
+ When I run license_finder
10
+ Then I should not see the GPL licensed gem in the output
@@ -3,7 +3,7 @@ Feature: The rake task is automatically made available in Rails project
3
3
  As an application developer
4
4
  I want the license_finder rake task automatically loaded for me in a rails project
5
5
 
6
- Scenario: The application is a Rails app
6
+ Scenario: The application is a Rails app #THIS FEATURE SHOULD BE REMOVED FOR 1.0.0 release
7
7
  Given I have a rails app with license finder
8
- When I run "rake license_finder"
9
- Then I should see "Dependencies that need approval:" in its output
8
+ When I run rake license_finder
9
+ Then I should see a normal output
@@ -4,9 +4,6 @@ Feature: Set a dependency's license through a command line interface
4
4
  I want a command line interface to set licenses for specific dependencies
5
5
 
6
6
  Scenario: Setting a license for a dependency
7
- Given I have an app with license finder
8
- And my app depends on a gem "other_license_gem" licensed with "other"
9
- When I run "license_finder"
10
- When I run "license_finder -l MIT other_license_gem"
11
- And I run license_finder again
12
- Then I should see other_license_gem set to MIT license
7
+ Given I have an app with license finder that depends on an other licensed gem
8
+ When I set that gems license to MIT from the command line
9
+ Then I should see that other gems license set to MIT
@@ -0,0 +1,25 @@
1
+ Given(/^I have an app with license finder that depends on a GPL licensed gem$/) do
2
+ @user = ::DSL::User.new
3
+ @user.create_nonrails_app
4
+ @user.add_dependency_to_app "gpl_gem", :license => "GPL"
5
+ end
6
+
7
+ When(/^I approve that gem$/) do
8
+ @output = @user.execute_command "license_finder"
9
+ @output.should include "gpl_gem"
10
+ @output = @user.execute_command "license_finder -a gpl_gem"
11
+ @output = @user.execute_command "license_finder -q"
12
+ end
13
+
14
+ Then(/^I should not see that gem in the console output$/) do
15
+ @output.should_not include "gpl_gem"
16
+ end
17
+
18
+ Then(/^I should see that gem approved in dependencies\.html$/) do
19
+ gem_name = "gpl_gem"
20
+ css_class = "approved"
21
+ html = File.read(@user.dependencies_html_path)
22
+ page = Capybara.string(html)
23
+ gpl_gem = page.find("##{gem_name}")
24
+ gpl_gem[:class].should == css_class
25
+ end
@@ -0,0 +1,45 @@
1
+ Given(/^I have an app with license finder that has no config directory$/) do
2
+ @user = ::DSL::User.new
3
+ @user.create_nonrails_app
4
+ path = @user.app_path('config')
5
+ FileUtils.rm_rf(path)
6
+ File.should_not be_exists(path)
7
+ end
8
+
9
+ Given(/^I have an app with license finder that depends on a MIT licensed gem$/) do
10
+ @user = ::DSL::User.new
11
+ @user.create_nonrails_app
12
+ @user.add_dependency_to_app 'mit_gem', :license => 'MIT'
13
+ end
14
+
15
+ Given(/^I have a project that depends on mime\-types with a manual license type$/) do
16
+ @user = ::DSL::User.new
17
+ @user.create_rails_app
18
+ @user.add_gem_dependency('mime-types')
19
+ @user.bundle_app
20
+ @user.execute_command "license_finder -q"
21
+ @output = @user.execute_command "license_finder -l Ruby mime-types"
22
+ @output.should =~ /mime-types.*Ruby/
23
+ end
24
+
25
+ Then(/^it creates a config directory with the license_finder config$/) do
26
+ File.should be_exists(@user.app_path('config'))
27
+ text = "---\nwhitelist:\n#- MIT\n#- Apache 2.0\nignore_groups:\n#- test\n#- development\ndependencies_file_dir: './doc/'\n"
28
+ File.read(@user.app_path('config/license_finder.yml')).should == text.gsub(/^\s+/, "")
29
+ end
30
+
31
+ Then /^it should exit with status code (\d)$/ do |status|
32
+ $?.exitstatus.should == status.to_i
33
+ end
34
+
35
+ Then(/^should list my MIT gem in the output$/) do
36
+ @output.should include 'mit_gem'
37
+ end
38
+
39
+ Then(/^I should see all gems approved for use$/) do
40
+ @output.should include 'All gems are approved for use'
41
+ end
42
+
43
+ Then(/^the mime\-types license remains set with my manual license type$/) do
44
+ @output.should =~ /mime-types.*Ruby/
45
+ end
@@ -0,0 +1,67 @@
1
+ Given(/^I have an app with license finder$/) do
2
+ @user = ::DSL::User.new
3
+ @user.create_nonrails_app
4
+ end
5
+
6
+ Given(/^my app depends on a gem with specific details$/) do
7
+ @gem_name = "mit_licensed_gem"
8
+ @table = {
9
+ license: "MIT",
10
+ summary: "mit is cool",
11
+ description: "seriously",
12
+ version: "0.0.1",
13
+ homepage: "http://mit_licensed_gem.github.com",
14
+ bundler_groups: "test"
15
+ }
16
+ @user.add_dependency_to_app(@gem_name,
17
+ :license => @table[:license],
18
+ :summary => @table[:summary],
19
+ :description => @table[:description],
20
+ :version => @table[:version],
21
+ :homepage => @table[:homepage],
22
+ :bundler_groups => @table[:bundler_groups]
23
+ )
24
+ end
25
+
26
+ Given(/^my app depends on MIT and GPL licensed gems$/) do
27
+ @user.add_dependency_to_app 'gpl_licensed_gem', :license => "GPL"
28
+ @user.add_dependency_to_app 'mit_licensed_gem', :license => "MIT"
29
+ end
30
+
31
+ When(/^I whitelist the MIT license$/) do
32
+ @user.configure_license_finder_whitelist ["MIT"]
33
+ @user.execute_command "license_finder -q"
34
+ end
35
+
36
+ Then(/^I should see my specific gem details listed in the html$/) do
37
+ html = File.read(@user.dependencies_html_path)
38
+ page = Capybara.string(html)
39
+ section = page.find("##{@gem_name}")
40
+
41
+ @table.first.each do |property_name, property_value|
42
+ section.should have_content property_value
43
+ end
44
+ end
45
+
46
+ Then(/^I should see the GPL gem unapproved in html$/) do
47
+ is_html_status?('gpl_licensed_gem', 'unapproved')
48
+ end
49
+
50
+ Then(/^the MIT gem approved in html$/) do
51
+ is_html_status?('mit_licensed_gem', 'approved')
52
+ end
53
+
54
+ Then(/^I should see only see GPL liceneses as unapproved in the html$/) do
55
+ html = File.read(@user.dependencies_html_path)
56
+ page = Capybara.string(html)
57
+ page.should have_content '8 total'
58
+ page.should have_content '1 unapproved'
59
+ page.should have_content '1 GPL'
60
+ end
61
+
62
+ def is_html_status?(gem, approval)
63
+ html = File.read(@user.dependencies_html_path)
64
+ page = Capybara.string(html)
65
+ gpl_gem = page.find("##{gem}")
66
+ gpl_gem[:class].should == approval
67
+ end
@@ -0,0 +1,13 @@
1
+ Given(/^I have an app with license finder that depends on a GPL licensed gem in the test bundler group$/) do
2
+ @user = ::DSL::User.new
3
+ @user.create_nonrails_app
4
+ @user.add_dependency_to_app 'gpl_gem', :license => 'GPL', :bundler_groups => 'test'
5
+ end
6
+
7
+ And(/^I ignore the test group$/) do
8
+ @user.configure_license_finder_bundler_whitelist('test')
9
+ end
10
+
11
+ Then(/^I should not see the GPL licensed gem in the output$/) do
12
+ @output.should_not include 'gpl_gem'
13
+ end
@@ -0,0 +1,12 @@
1
+ Given /^I have a rails app(?:lication)? with license finder$/ do
2
+ @user = ::DSL::User.new
3
+ @user.create_rails_app
4
+ end
5
+
6
+ When(/^I run rake license_finder$/) do
7
+ @output = @user.execute_command "rake license_finder -q"
8
+ end
9
+
10
+ Then(/^I should see a normal output$/) do
11
+ @output.should include "Dependencies that need approval:"
12
+ end
@@ -0,0 +1,16 @@
1
+ Given(/^I have an app with license finder that depends on an other licensed gem$/) do
2
+ @user = ::DSL::User.new
3
+ @user.create_nonrails_app
4
+ @user.add_license_finder_to_rakefile
5
+ @user.add_dependency_to_app 'other_gem', :license => 'other'
6
+ end
7
+
8
+ When(/^I set that gems license to MIT from the command line$/) do
9
+ @output = @user.execute_command 'license_finder -q'
10
+ @output = @user.execute_command 'license_finder -lq MIT other_gem'
11
+ @output = @user.execute_command 'license_finder -q'
12
+ end
13
+
14
+ Then(/^I should see that other gems license set to MIT$/) do
15
+ @output.should include 'other_gem'
16
+ end