diff --git a/Rakefile b/Rakefile index d700d545a..f11c43b82 100644 --- a/Rakefile +++ b/Rakefile @@ -6,33 +6,42 @@ Bundler::GemHelper.install_tasks require './lib/license_finder/platform' require 'rspec/core/rake_task' -desc 'Run all specs in spec/' -task :spec do - RSpec::Core::RakeTask.new(:spec) do |t| +namespace :spec do + desc 'Run test tagged \'focus\'' + RSpec::Core::RakeTask.new(:focus) do |t| t.fail_on_error = true t.pattern = './spec/**/*_spec.rb' - t.rspec_opts = %w[--color] + t.rspec_opts = %w[--color --tag focus] end end -desc 'Only run cocoapods specs' -RSpec::Core::RakeTask.new('spec:cocoapods') do |t| +desc 'Run all specs in spec/' +RSpec::Core::RakeTask.new(:spec) do |t| t.fail_on_error = true - t.pattern = './spec/lib/license_finder/package_managers/cocoa_pods_*spec.rb' + t.pattern = './spec/**/*_spec.rb' t.rspec_opts = %w[--color] end -desc 'Run all specs in features/' -task :features do - RSpec::Core::RakeTask.new(:features) do |t| +namespace :features do + desc 'Run test tagged \'focus\'' + RSpec::Core::RakeTask.new(:focus) do |t| t.fail_on_error = true t.pattern = './features/**/*_spec.rb' - opts = %w[--color --format d] + opts = %w[--color --format d --tag focus] opts += LicenseFinder::Platform.darwin? ? [] : %w[--tag ~ios] t.rspec_opts = opts end end +desc 'Run all specs in features/' +RSpec::Core::RakeTask.new(:features) do |t| + t.fail_on_error = true + t.pattern = './features/**/*_spec.rb' + opts = %w[--color --format d] + opts += LicenseFinder::Platform.darwin? ? [] : %w[--tag ~ios] + t.rspec_opts = opts +end + desc 'Check for non-Ruby development dependencies.' task :check_dependencies do require './lib/license_finder' @@ -77,7 +86,8 @@ task :update_release_pipeline do system(cmd) end +task default: %i[spec features] task spec: :check_dependencies task features: :check_dependencies - -task default: %i[spec features] +task 'spec:focus': :check_dependencies +task 'features:focus': :check_dependencies \ No newline at end of file diff --git a/features/features/package_managers/gradle_spec.rb b/features/features/package_managers/gradle_spec.rb index e59835192..659f0bb4f 100644 --- a/features/features/package_managers/gradle_spec.rb +++ b/features/features/package_managers/gradle_spec.rb @@ -33,4 +33,10 @@ java_developer.run_license_finder('alternate-build-file-gradle') expect(java_developer).to be_seeing_line 'junit, 4.11, "Common Public License Version 1.0"' end + + specify 'are shown in reports for a project with an kotlin build.gradle.kts file' do + LicenseFinder::TestingDSL::KtsBuildFileGradleProject.create + java_developer.run_license_finder('kts-build-file-gradle') + expect(java_developer).to be_seeing_line 'kotlin-stdlib, 1.2.61, "Apache 2.0"' + end end diff --git a/features/fixtures/kts-build-file-gradle/build.gradle.kts b/features/fixtures/kts-build-file-gradle/build.gradle.kts new file mode 100644 index 000000000..70b0082b2 --- /dev/null +++ b/features/fixtures/kts-build-file-gradle/build.gradle.kts @@ -0,0 +1,27 @@ +gradle.startParameter.excludedTaskNames += "licenseMain" +gradle.startParameter.excludedTaskNames += "licenseTest" + +plugins { + application + kotlin("jvm") version "1.2.61" + id ("com.github.hierynomus.license") version "0.14.0" +} + +application { + mainClassName = "hello.HelloWorldKt" +} + +dependencies { + compile(kotlin("stdlib")) + testCompile ("junit:junit:4.11") + compile("org.springframework:spring-jdbc:5.0.7.RELEASE") + compile("org.postgresql:postgresql:42.2.2") +} + +repositories { + jcenter() +} + +tasks.withType { + gradleVersion = "4.10.2" +} \ No newline at end of file diff --git a/features/support/testing_dsl.rb b/features/support/testing_dsl.rb index f458b4377..e66f70a4c 100644 --- a/features/support/testing_dsl.rb +++ b/features/support/testing_dsl.rb @@ -207,6 +207,12 @@ def add_dep end end + class KtsBuildFileGradleProject < Project + def add_dep + clone('kts-build-file-gradle') + end + end + class GoProject < Project def add_dep clone('gopath') diff --git a/lib/license_finder/package_managers/gradle.rb b/lib/license_finder/package_managers/gradle.rb index d314fbee6..2ce44595f 100644 --- a/lib/license_finder/package_managers/gradle.rb +++ b/lib/license_finder/package_managers/gradle.rb @@ -48,6 +48,13 @@ def detected_package_path alternate_build_file = build_file_from_settings(project_path) return alternate_build_file if alternate_build_file + build_gradle_file + end + + def build_gradle_file + kotlin_gradle_path = project_path.join('build.gradle.kts') + return kotlin_gradle_path if File.exist? kotlin_gradle_path + project_path.join('build.gradle') end diff --git a/spec/lib/license_finder/package_managers/gradle_spec.rb b/spec/lib/license_finder/package_managers/gradle_spec.rb index 9a5892d49..9aadf244b 100644 --- a/spec/lib/license_finder/package_managers/gradle_spec.rb +++ b/spec/lib/license_finder/package_managers/gradle_spec.rb @@ -156,12 +156,23 @@ module LicenseFinder end end - context "when there's no build.gradle" do + context "when there's no build.gradle or build.gradle.kts" do it 'returns false' do expect(subject.active?).to be false end end + context "when there's build.gradle.kts" do + it 'return true' do + FakeFS do + FileUtils.mkdir_p '/fake/path' + FileUtils.touch '/fake/path/build.gradle.kts' + + expect(subject.active?).to be true + end + end + end + context "when there's a settings.gradle" do it 'uses the build.gradle referenced inside' do SETTINGS_DOT_GRADLE = <<-GRADLE