summaryrefslogtreecommitdiff
path: root/spec/integration/java/gradle_spec.rb
blob: fcc43475f2d0f43adf1aaa3f1ba2ea2dbdd678d4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
# frozen_string_literal: true

require 'spec_helper'

RSpec.describe 'gradle' do
  include_examples 'each report version', 'java', 'gradle'

  context 'when running a default gradle build' do
    it 'scans a gradle project' do
      content = <<~GRADLE
        /*
         * This file was generated by the Gradle 'init' task.
         *
         * This is a general purpose Gradle build.
         * Learn how to create Gradle builds at https://guides.gradle.org/creating-new-gradle-builds
         */
        plugins {
          id "com.github.hierynomus.license" version "0.15.0"
        }
      GRADLE
      runner.add_file('build.gradle', content)

      report = runner.scan
      expect(report).to match_schema(version: '2.0')
      expect(report[:licenses]).to be_empty
      expect(report[:dependencies]).to be_empty
    end
  end

  context 'when scanning a gradle project that does not include the `com.github.hierynomus.license` plugin' do
    let(:project_url) { 'https://gitlab.com/one-touch-pipeline/otp.git' }
    let(:result) { runner.scan }

    before do
      runner.clone(project_url)
    end

    it 'is able to detect licenses' do
      expect(result).to match_schema(version: '2.0')
      expect(result[:licenses]).not_to be_empty

      [
        { name: 'ant', licenses: ['Apache-2.0'] },
        { name: 'activation', licenses: ['CDDL-1.0'] },
        { name: 'xml-apis', licenses: ['Apache-2.0', 'SAX-PD', 'W3C-20150513'] },
        { name: 'sitemesh', licenses: ['Apache-1.1'] },
        { name: 'hibernate-jpa-2.1-api', licenses: ['BSD-3-Clause', 'EPL-1.0'] }
      ].each do |dependency|
        expect(result.licenses_for(dependency[:name])).to match_array(dependency[:licenses])
      end
    end
  end

  [
    '6.2',
    '5.6',
    '4.9',
    '3.5',
    '2.9',
    '1.9'
  ].each do |gradle_version|
    %w[8 11].each do |java_version|
      context "when scanning a gradle (v#{gradle_version}) project that uses a kotlin build script" do
        let(:build_file_content) { fixture_file_content('java/build.gradle.kts') }

        it 'scans a gradle project' do
          runner.add_file('build.gradle.kts', build_file_content)
          runner.add_file('settings.gradle.kts', 'rootProject.name = "example"')
          runner.add_file('.tool-versions', "gradle #{gradle_version}")

          report = runner.scan(env: { 'LM_JAVA_VERSION' => java_version })
          expect(report).to match_schema(version: '2.0')
          expect(report[:licenses]).to be_empty
          expect(report[:dependencies]).to be_empty
        end
      end
    end
  end
end