kpm 0.7.2 → 0.10.0
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.
- checksums.yaml +5 -5
- data/.gitignore +2 -0
- data/.rubocop.yml +138 -0
- data/Gemfile +2 -0
- data/README.adoc +144 -107
- data/Rakefile +2 -1
- data/bin/kpm +4 -2
- data/kpm.gemspec +11 -8
- data/lib/kpm.rb +3 -0
- data/lib/kpm/account.rb +268 -338
- data/lib/kpm/base_artifact.rb +33 -39
- data/lib/kpm/base_installer.rb +69 -83
- data/lib/kpm/blob.rb +29 -0
- data/lib/kpm/cli.rb +3 -1
- data/lib/kpm/coordinates.rb +10 -12
- data/lib/kpm/database.rb +94 -113
- data/lib/kpm/diagnostic_file.rb +126 -147
- data/lib/kpm/formatter.rb +76 -48
- data/lib/kpm/inspector.rb +24 -34
- data/lib/kpm/installer.rb +53 -46
- data/lib/kpm/kaui_artifact.rb +4 -3
- data/lib/kpm/killbill_plugin_artifact.rb +10 -7
- data/lib/kpm/killbill_server_artifact.rb +13 -12
- data/lib/kpm/migrations.rb +26 -11
- data/lib/kpm/nexus_helper/actions.rb +52 -9
- data/lib/kpm/nexus_helper/cloudsmith_api_calls.rb +83 -0
- data/lib/kpm/nexus_helper/github_api_calls.rb +70 -0
- data/lib/kpm/nexus_helper/nexus_api_calls_v2.rb +130 -108
- data/lib/kpm/nexus_helper/nexus_facade.rb +5 -3
- data/lib/kpm/plugins_directory.rb +9 -8
- data/lib/kpm/plugins_directory.yml +14 -173
- data/lib/kpm/plugins_manager.rb +29 -24
- data/lib/kpm/sha1_checker.rb +31 -18
- data/lib/kpm/system.rb +104 -135
- data/lib/kpm/system_helpers/cpu_information.rb +56 -55
- data/lib/kpm/system_helpers/disk_space_information.rb +60 -63
- data/lib/kpm/system_helpers/entropy_available.rb +37 -39
- data/lib/kpm/system_helpers/memory_information.rb +52 -51
- data/lib/kpm/system_helpers/os_information.rb +45 -47
- data/lib/kpm/system_helpers/system_proxy.rb +10 -10
- data/lib/kpm/tasks.rb +381 -438
- data/lib/kpm/tenant_config.rb +68 -83
- data/lib/kpm/tomcat_manager.rb +10 -8
- data/lib/kpm/trace_logger.rb +18 -16
- data/lib/kpm/uninstaller.rb +81 -14
- data/lib/kpm/utils.rb +13 -14
- data/lib/kpm/version.rb +3 -1
- data/packaging/Gemfile +2 -0
- data/pom.xml +211 -40
- data/spec/kpm/remote/base_artifact_spec.rb +20 -20
- data/spec/kpm/remote/base_installer_spec.rb +35 -34
- data/spec/kpm/remote/cloudsmith_api_calls_spec.rb +40 -0
- data/spec/kpm/remote/github_api_calls_spec.rb +40 -0
- data/spec/kpm/remote/installer_spec.rb +80 -79
- data/spec/kpm/remote/kaui_artifact_spec.rb +7 -6
- data/spec/kpm/remote/killbill_plugin_artifact_spec.rb +25 -30
- data/spec/kpm/remote/killbill_server_artifact_spec.rb +17 -16
- data/spec/kpm/remote/migrations_spec.rb +12 -11
- data/spec/kpm/remote/nexus_facade_spec.rb +32 -28
- data/spec/kpm/remote/tenant_config_spec.rb +30 -29
- data/spec/kpm/remote/tomcat_manager_spec.rb +4 -3
- data/spec/kpm/unit/actions_spec.rb +52 -0
- data/spec/kpm/unit/base_artifact_spec.rb +19 -18
- data/spec/kpm/unit/cpu_information_spec.rb +67 -0
- data/spec/kpm/unit/disk_space_information_spec.rb +47 -0
- data/spec/kpm/unit/entropy_information_spec.rb +36 -0
- data/spec/kpm/unit/formatter_spec.rb +163 -0
- data/spec/kpm/unit/inspector_spec.rb +34 -42
- data/spec/kpm/unit/installer_spec.rb +7 -6
- data/spec/kpm/unit/memory_information_spec.rb +102 -0
- data/spec/kpm/unit/os_information_spec.rb +38 -0
- data/spec/kpm/unit/plugins_directory_spec.rb +38 -22
- data/spec/kpm/unit/plugins_manager_spec.rb +62 -66
- data/spec/kpm/unit/sha1_checker_spec.rb +107 -60
- data/spec/kpm/unit/uninstaller_spec.rb +118 -72
- data/spec/kpm/unit_mysql/account_spec.rb +127 -142
- data/spec/spec_helper.rb +20 -18
- data/tasks/package.rake +18 -18
- metadata +42 -22
data/lib/kpm/utils.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'pathname'
|
2
4
|
require 'rubygems/package'
|
3
5
|
require 'zlib'
|
@@ -7,7 +9,7 @@ module KPM
|
|
7
9
|
class << self
|
8
10
|
TAR_LONGLINK = '././@LongLink'
|
9
11
|
|
10
|
-
def unpack_tgz(tar_gz_archive, destination, skip_top_dir=false)
|
12
|
+
def unpack_tgz(tar_gz_archive, destination, skip_top_dir = false)
|
11
13
|
top_dir = nil
|
12
14
|
Gem::Package::TarReader.new(Zlib::GzipReader.open(tar_gz_archive)) do |tar|
|
13
15
|
dest = nil
|
@@ -20,17 +22,17 @@ module KPM
|
|
20
22
|
|
21
23
|
if entry.directory?
|
22
24
|
File.delete dest if File.file? dest
|
23
|
-
FileUtils.mkdir_p dest, :
|
25
|
+
FileUtils.mkdir_p dest, mode: entry.header.mode, verbose: false
|
24
26
|
elsif entry.file?
|
25
27
|
FileUtils.rm_rf dest if File.directory? dest
|
26
|
-
FileUtils.mkdir_p File.dirname(dest), :
|
27
|
-
File.open dest,
|
28
|
+
FileUtils.mkdir_p File.dirname(dest), verbose: false
|
29
|
+
File.open dest, 'wb' do |f|
|
28
30
|
f.print entry.read
|
29
31
|
end
|
30
|
-
FileUtils.chmod entry.header.mode, dest, :
|
32
|
+
FileUtils.chmod entry.header.mode, dest, verbose: false
|
31
33
|
current_dir = File.dirname(dest)
|
32
34
|
# In case there are two top dirs, keep the last one by convention
|
33
|
-
top_dir = current_dir if
|
35
|
+
top_dir = current_dir if top_dir.nil? || top_dir.size >= current_dir.size
|
34
36
|
elsif entry.header.typeflag == '2' # Symlink
|
35
37
|
File.symlink entry.header.linkname, dest
|
36
38
|
end
|
@@ -48,9 +50,7 @@ module KPM
|
|
48
50
|
file_names = []
|
49
51
|
Gem::Package::TarReader.new(Zlib::GzipReader.open(tar_gz_archive)) do |tar|
|
50
52
|
tar.each do |entry|
|
51
|
-
if entry.file?
|
52
|
-
file_names.push entry.full_name
|
53
|
-
end
|
53
|
+
file_names.push entry.full_name if entry.file?
|
54
54
|
end
|
55
55
|
end
|
56
56
|
|
@@ -62,17 +62,17 @@ module KPM
|
|
62
62
|
ver = get_version_from_file_path(file_path)
|
63
63
|
ext = File.extname(base)
|
64
64
|
|
65
|
-
name = base.gsub(ext,'')
|
65
|
+
name = base.gsub(ext, '')
|
66
66
|
if ver.nil?
|
67
67
|
# this will remove SNAPSHOT and any dash that appear before it (ex --SNAPSHOT).
|
68
|
-
name = name.gsub(/((-+){,1}SNAPSHOT){,1}/,'')
|
68
|
+
name = name.gsub(/((-+){,1}SNAPSHOT){,1}/, '')
|
69
69
|
last_dash = name.rindex('-')
|
70
70
|
name = name[0..last_dash] unless last_dash.nil?
|
71
71
|
else
|
72
|
-
name = name.gsub(ver,'')
|
72
|
+
name = name.gsub(ver, '')
|
73
73
|
end
|
74
74
|
|
75
|
-
name = name[0..name.length-2] if name[-1].match(/[a-zA-z]/).nil?
|
75
|
+
name = name[0..name.length - 2] if name[-1].match(/[a-zA-z]/).nil?
|
76
76
|
name
|
77
77
|
end
|
78
78
|
|
@@ -84,7 +84,6 @@ module KPM
|
|
84
84
|
|
85
85
|
ver[0]
|
86
86
|
end
|
87
|
-
|
88
87
|
end
|
89
88
|
end
|
90
89
|
end
|
data/lib/kpm/version.rb
CHANGED
data/packaging/Gemfile
CHANGED
data/pom.xml
CHANGED
@@ -1,45 +1,216 @@
|
|
1
1
|
<?xml version="1.0" encoding="UTF-8"?>
|
2
2
|
<!--
|
3
|
-
~ Copyright 2014
|
4
|
-
~
|
5
|
-
~
|
6
|
-
~
|
7
|
-
~
|
8
|
-
~
|
9
|
-
~
|
10
|
-
~
|
11
|
-
~
|
12
|
-
~
|
13
|
-
~
|
14
|
-
~
|
15
|
-
~
|
16
|
-
|
17
|
-
|
3
|
+
~ Copyright 2010-2014 Ning, Inc.
|
4
|
+
~ Copyright 2014-2020 Groupon, Inc
|
5
|
+
~ Copyright 2020-2020 Equinix, Inc
|
6
|
+
~ Copyright 2014-2020 The Billing Project, LLC
|
7
|
+
~
|
8
|
+
~ The Billing Project licenses this file to you under the Apache License, version 2.0
|
9
|
+
~ (the "License"); you may not use this file except in compliance with the
|
10
|
+
~ License. You may obtain a copy of the License at:
|
11
|
+
~
|
12
|
+
~ http://www.apache.org/licenses/LICENSE-2.0
|
13
|
+
~
|
14
|
+
~ Unless required by applicable law or agreed to in writing, software
|
15
|
+
~ distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
16
|
+
~ WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
17
|
+
~ License for the specific language governing permissions and limitations
|
18
|
+
~ under the License.
|
19
|
+
-->
|
18
20
|
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
19
21
|
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
20
|
-
|
21
|
-
<groupId>org.
|
22
|
-
<artifactId>
|
23
|
-
<version>
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
22
|
+
<modelVersion>4.0.0</modelVersion>
|
23
|
+
<groupId>org.kill-bill.billing.installer</groupId>
|
24
|
+
<artifactId>kpm</artifactId>
|
25
|
+
<version>0.10.0</version>
|
26
|
+
<packaging>pom</packaging>
|
27
|
+
<name>KPM</name>
|
28
|
+
<description>KPM: the Kill Bill Package Manager</description>
|
29
|
+
<url>http://github.com/killbill/killbill-cloud</url>
|
30
|
+
<inceptionYear>2010</inceptionYear>
|
31
|
+
<licenses>
|
32
|
+
<license>
|
33
|
+
<name>Apache License 2.0</name>
|
34
|
+
<url>http://www.apache.org/licenses/LICENSE-2.0.html</url>
|
35
|
+
<distribution>repo</distribution>
|
36
|
+
</license>
|
37
|
+
</licenses>
|
38
|
+
<developers>
|
39
|
+
<developer>
|
40
|
+
<id>pierre</id>
|
41
|
+
<name>Pierre-Alexandre Meyer</name>
|
42
|
+
<email>pierre@mouraf.org</email>
|
43
|
+
</developer>
|
44
|
+
<developer>
|
45
|
+
<id>stephane</id>
|
46
|
+
<name>Stephane Brossier</name>
|
47
|
+
</developer>
|
48
|
+
</developers>
|
49
|
+
<mailingLists>
|
50
|
+
<mailingList>
|
51
|
+
<name>Kill Bill users</name>
|
52
|
+
<subscribe>killbilling-users+subscribe@googlegroups.com</subscribe>
|
53
|
+
<unsubscribe>killbilling-users+unsubscribe@googlegroups.com</unsubscribe>
|
54
|
+
<post>killbilling-users@googlegroups.com</post>
|
55
|
+
<archive>http://groups.google.com/group/killbilling-users</archive>
|
56
|
+
</mailingList>
|
57
|
+
</mailingLists>
|
58
|
+
<scm>
|
59
|
+
<connection>scm:git:git://github.com/killbill/killbill-cloud.git</connection>
|
60
|
+
<url>https://github.com/killbill/killbill-cloud/</url>
|
61
|
+
<developerConnection>scm:git:git@github.com:killbill/killbill-cloud.git</developerConnection>
|
62
|
+
</scm>
|
63
|
+
<issueManagement>
|
64
|
+
<system>Github</system>
|
65
|
+
<url>https://github.com/killbill/killbill-cloud/issues</url>
|
66
|
+
</issueManagement>
|
67
|
+
<distributionManagement>
|
68
|
+
<repository>
|
69
|
+
<id>${repository.release.id}</id>
|
70
|
+
<name>${repository.release.name}</name>
|
71
|
+
<url>${repository.release.url}</url>
|
72
|
+
</repository>
|
73
|
+
<snapshotRepository>
|
74
|
+
<id>${repository.snapshot.id}</id>
|
75
|
+
<name>${repository.snapshot.name}</name>
|
76
|
+
<url>${repository.snapshot.url}</url>
|
77
|
+
</snapshotRepository>
|
78
|
+
</distributionManagement>
|
79
|
+
<properties>
|
80
|
+
<repository.release.id>sonatype-nexus-staging</repository.release.id>
|
81
|
+
<repository.release.name>Nexus Release Repository</repository.release.name>
|
82
|
+
<repository.release.url>https://oss.sonatype.org/service/local/staging/deploy/maven2/</repository.release.url>
|
83
|
+
<repository.snapshot.id>sonatype-nexus-snapshots</repository.snapshot.id>
|
84
|
+
<repository.snapshot.name>Sonatype Nexus Snapshots</repository.snapshot.name>
|
85
|
+
<repository.snapshot.url>https://oss.sonatype.org/content/repositories/snapshots/</repository.snapshot.url>
|
86
|
+
</properties>
|
87
|
+
<build>
|
88
|
+
<pluginManagement>
|
89
|
+
<plugins>
|
90
|
+
<plugin>
|
91
|
+
<artifactId>maven-compiler-plugin</artifactId>
|
92
|
+
<executions>
|
93
|
+
<execution>
|
94
|
+
<id>default-compile</id>
|
95
|
+
<phase>none</phase>
|
96
|
+
</execution>
|
97
|
+
<execution>
|
98
|
+
<id>default-testCompile</id>
|
99
|
+
<phase>none</phase>
|
100
|
+
</execution>
|
101
|
+
</executions>
|
102
|
+
</plugin>
|
103
|
+
<plugin>
|
104
|
+
<artifactId>maven-install-plugin</artifactId>
|
105
|
+
<executions>
|
106
|
+
<execution>
|
107
|
+
<id>default-install</id>
|
108
|
+
<phase>none</phase>
|
109
|
+
</execution>
|
110
|
+
</executions>
|
111
|
+
</plugin>
|
112
|
+
<plugin>
|
113
|
+
<artifactId>maven-resources-plugin</artifactId>
|
114
|
+
<executions>
|
115
|
+
<execution>
|
116
|
+
<id>default-resources</id>
|
117
|
+
<phase>none</phase>
|
118
|
+
</execution>
|
119
|
+
<execution>
|
120
|
+
<id>default-testResources</id>
|
121
|
+
<phase>none</phase>
|
122
|
+
</execution>
|
123
|
+
</executions>
|
124
|
+
</plugin>
|
125
|
+
<plugin>
|
126
|
+
<artifactId>maven-surefire-plugin</artifactId>
|
127
|
+
<executions>
|
128
|
+
<execution>
|
129
|
+
<id>default-test</id>
|
130
|
+
<phase>none</phase>
|
131
|
+
</execution>
|
132
|
+
</executions>
|
133
|
+
</plugin>
|
134
|
+
</plugins>
|
135
|
+
</pluginManagement>
|
136
|
+
<plugins>
|
137
|
+
<plugin>
|
138
|
+
<groupId>org.codehaus.mojo</groupId>
|
139
|
+
<artifactId>build-helper-maven-plugin</artifactId>
|
140
|
+
<version>3.2.0</version>
|
141
|
+
<executions>
|
142
|
+
<execution>
|
143
|
+
<id>attach-artifacts</id>
|
144
|
+
<phase>package</phase>
|
145
|
+
<goals>
|
146
|
+
<goal>attach-artifact</goal>
|
147
|
+
</goals>
|
148
|
+
<configuration>
|
149
|
+
<artifacts>
|
150
|
+
<artifact>
|
151
|
+
<file>kpm-${project.version}-linux-x86.tar.gz</file>
|
152
|
+
<type>tar.gz</type>
|
153
|
+
<classifier>linux-x86</classifier>
|
154
|
+
</artifact>
|
155
|
+
<artifact>
|
156
|
+
<file>kpm-${project.version}-linux-x86_64.tar.gz</file>
|
157
|
+
<type>tar.gz</type>
|
158
|
+
<classifier>linux-x86_64</classifier>
|
159
|
+
</artifact>
|
160
|
+
<artifact>
|
161
|
+
<file>kpm-${project.version}-osx.tar.gz</file>
|
162
|
+
<type>tar.gz</type>
|
163
|
+
<classifier>osx</classifier>
|
164
|
+
</artifact>
|
165
|
+
</artifacts>
|
166
|
+
</configuration>
|
167
|
+
</execution>
|
168
|
+
</executions>
|
169
|
+
</plugin>
|
170
|
+
</plugins>
|
171
|
+
</build>
|
172
|
+
<profiles>
|
173
|
+
<profile>
|
174
|
+
<id>sonatype-oss-release</id>
|
175
|
+
<build>
|
176
|
+
<plugins>
|
177
|
+
<plugin>
|
178
|
+
<groupId>org.apache.maven.plugins</groupId>
|
179
|
+
<artifactId>maven-gpg-plugin</artifactId>
|
180
|
+
<version>1.6</version>
|
181
|
+
<executions>
|
182
|
+
<execution>
|
183
|
+
<id>sign-artifacts</id>
|
184
|
+
<phase>verify</phase>
|
185
|
+
<goals>
|
186
|
+
<goal>sign</goal>
|
187
|
+
</goals>
|
188
|
+
<configuration>
|
189
|
+
<!-- Prevent `gpg` from using pinentry programs -->
|
190
|
+
<gpgArguments>
|
191
|
+
<arg>--pinentry-mode</arg>
|
192
|
+
<arg>loopback</arg>
|
193
|
+
</gpgArguments>
|
194
|
+
</configuration>
|
195
|
+
</execution>
|
196
|
+
</executions>
|
197
|
+
</plugin>
|
198
|
+
<plugin>
|
199
|
+
<groupId>org.sonatype.plugins</groupId>
|
200
|
+
<artifactId>nexus-staging-maven-plugin</artifactId>
|
201
|
+
<version>1.6.8</version>
|
202
|
+
<extensions>true</extensions>
|
203
|
+
<configuration>
|
204
|
+
<serverId>ossrh-releases</serverId>
|
205
|
+
<nexusUrl>https://oss.sonatype.org/</nexusUrl>
|
206
|
+
<keepStagingRepositoryOnFailure>true</keepStagingRepositoryOnFailure>
|
207
|
+
<keepStagingRepositoryOnCloseRuleFailure>true</keepStagingRepositoryOnCloseRuleFailure>
|
208
|
+
<autoReleaseAfterClose>true</autoReleaseAfterClose>
|
209
|
+
<stagingProgressTimeoutMinutes>10</stagingProgressTimeoutMinutes>
|
210
|
+
</configuration>
|
211
|
+
</plugin>
|
212
|
+
</plugins>
|
213
|
+
</build>
|
214
|
+
</profile>
|
215
|
+
</profiles>
|
45
216
|
</project>
|
@@ -1,7 +1,8 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'spec_helper'
|
2
4
|
|
3
5
|
describe KPM::BaseArtifact do
|
4
|
-
|
5
6
|
before(:all) do
|
6
7
|
@logger = Logger.new(STDOUT)
|
7
8
|
@logger.level = Logger::INFO
|
@@ -26,7 +27,7 @@ describe KPM::BaseArtifact do
|
|
26
27
|
end
|
27
28
|
|
28
29
|
it 'should be able to handle download errors' do
|
29
|
-
nexus_down = {:
|
30
|
+
nexus_down = { url: 'https://does.not.exist' }
|
30
31
|
Dir.mktmpdir do |dir|
|
31
32
|
sha1_file = "#{dir}/sha1.yml"
|
32
33
|
test_download dir, 'foo-oss.pom.xml', false, false, sha1_file
|
@@ -35,10 +36,12 @@ describe KPM::BaseArtifact do
|
|
35
36
|
# Verify the download is skipped gracefully when Nexus isn't reachable
|
36
37
|
test_download dir, 'foo-oss.pom.xml', true, false, sha1_file, nexus_down
|
37
38
|
# Verify the download fails when Nexus isn't reachable and force_download is set
|
38
|
-
expect { test_download dir, 'foo-oss.pom.xml', nil, true, sha1_file, nexus_down }.to
|
39
|
+
expect { test_download dir, 'foo-oss.pom.xml', nil, true, sha1_file, nexus_down }.to raise_exception(SocketError, /(Failed to open TCP connection to does.not.exist:443|getaddrinfo)/)
|
39
40
|
# Verify the download fails when Nexus isn't reachable and the Nexus cache is empty
|
40
|
-
KPM::Sha1Checker.from_file(sha1_file).
|
41
|
-
|
41
|
+
expect(KPM::Sha1Checker.from_file(sha1_file).artifact_info('org.kill-bill.billing:killbill-oss-parent:pom:0.143.33')).to_not be_nil
|
42
|
+
KPM::Sha1Checker.from_file(sha1_file).remove_entry!('org.kill-bill.billing:killbill-oss-parent:pom:0.143.33')
|
43
|
+
expect(KPM::Sha1Checker.from_file(sha1_file).artifact_info('org.kill-bill.billing:killbill-oss-parent:pom:0.143.33')).to be_nil
|
44
|
+
expect { test_download dir, 'foo-oss.pom.xml', nil, false, sha1_file, nexus_down }.to raise_exception(SocketError, /(Failed to open TCP connection to does.not.exist:443|getaddrinfo)/)
|
42
45
|
end
|
43
46
|
end
|
44
47
|
|
@@ -52,14 +55,14 @@ describe KPM::BaseArtifact do
|
|
52
55
|
|
53
56
|
Dir.mktmpdir do |dir|
|
54
57
|
info = KPM::BaseArtifact.pull(@logger, group_id, artifact_id, packaging, classifier, version, dir)
|
55
|
-
info[:file_name].
|
58
|
+
expect(info[:file_name]).to be_nil
|
56
59
|
|
57
60
|
files_in_dir = Dir[info[:file_path] + '/*']
|
58
|
-
files_in_dir.size.
|
61
|
+
expect(files_in_dir.size).to eq 20
|
59
62
|
|
60
|
-
File.file?(info[:file_path] + '/killbill-osgi-bundles-jruby-0.11.3.jar').
|
63
|
+
expect(File.file?(info[:file_path] + '/killbill-osgi-bundles-jruby-0.11.3.jar')).to be_truthy
|
61
64
|
|
62
|
-
info[:bundle_dir].
|
65
|
+
expect(info[:bundle_dir]).to eq info[:file_path]
|
63
66
|
end
|
64
67
|
end
|
65
68
|
|
@@ -74,23 +77,20 @@ describe KPM::BaseArtifact do
|
|
74
77
|
|
75
78
|
Dir.mktmpdir do |dir|
|
76
79
|
first_take = KPM::BaseArtifact.pull(@logger, group_id, artifact_id, packaging, classifier, version, dir)
|
77
|
-
File.file?(first_take[:file_path] + '/killbill-platform-osgi-bundles-jruby-0.36.2.jar').
|
80
|
+
expect(File.file?(first_take[:file_path] + '/killbill-platform-osgi-bundles-jruby-0.36.2.jar')).to be_truthy
|
78
81
|
|
79
82
|
second_take = KPM::BaseArtifact.pull(@logger, group_id, artifact_id, packaging, classifier, second_bundle_version, dir)
|
80
|
-
File.file?(first_take[:file_path] + '/killbill-platform-osgi-bundles-jruby-0.36.2.jar').
|
81
|
-
File.file?(second_take[:file_path] + '/killbill-platform-osgi-bundles-jruby-0.36.10.jar').
|
82
|
-
|
83
|
+
expect(File.file?(first_take[:file_path] + '/killbill-platform-osgi-bundles-jruby-0.36.2.jar')).to be_falsey
|
84
|
+
expect(File.file?(second_take[:file_path] + '/killbill-platform-osgi-bundles-jruby-0.36.10.jar')).to be_truthy
|
83
85
|
end
|
84
86
|
end
|
85
87
|
|
86
|
-
def test_download(dir, filename=nil, verify_is_skipped=false, force_download=false, sha1_file=nil, overrides={})
|
88
|
+
def test_download(dir, filename = nil, verify_is_skipped = false, force_download = false, sha1_file = nil, overrides = {})
|
87
89
|
path = filename.nil? ? dir : dir + '/' + filename
|
88
90
|
|
89
|
-
info = KPM::BaseArtifact.pull(@logger, 'org.kill-bill.billing', 'killbill-oss-parent', 'pom', nil, '
|
90
|
-
info[:file_name].
|
91
|
-
info[:skipped].
|
92
|
-
|
93
|
-
info[:size].should == File.size(info[:file_path])
|
94
|
-
end
|
91
|
+
info = KPM::BaseArtifact.pull(@logger, 'org.kill-bill.billing', 'killbill-oss-parent', 'pom', nil, '0.143.33', path, sha1_file, force_download, true, overrides, true)
|
92
|
+
expect(info[:file_name]).to eq(filename.nil? ? "killbill-oss-parent-#{info[:version]}.pom" : filename)
|
93
|
+
expect(info[:skipped]).to eq verify_is_skipped
|
94
|
+
expect(info[:size]).to eq File.size(info[:file_path]) unless info[:skipped]
|
95
95
|
end
|
96
96
|
end
|
@@ -1,8 +1,9 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'spec_helper'
|
2
4
|
require 'json'
|
3
5
|
|
4
6
|
describe KPM::BaseInstaller do
|
5
|
-
|
6
7
|
before(:all) do
|
7
8
|
@logger = Logger.new(STDOUT)
|
8
9
|
@logger.level = Logger::INFO
|
@@ -13,7 +14,7 @@ describe KPM::BaseInstaller do
|
|
13
14
|
bundles_dir = dir + '/bundles'
|
14
15
|
installer = KPM::BaseInstaller.new(@logger)
|
15
16
|
|
16
|
-
|
17
|
+
installer.install_plugin('analytics', nil, nil, nil, nil, nil, '0.7.1', bundles_dir)
|
17
18
|
|
18
19
|
check_installation(bundles_dir)
|
19
20
|
|
@@ -46,25 +47,25 @@ describe KPM::BaseInstaller do
|
|
46
47
|
|
47
48
|
begin
|
48
49
|
installer.install_plugin('invalid', nil, nil, nil, nil, nil, '1.2.3', bundles_dir)
|
49
|
-
|
50
|
-
rescue ArgumentError
|
50
|
+
raise 'Should not succeed to install invalid plugin'
|
51
|
+
rescue ArgumentError
|
52
|
+
# Expected
|
51
53
|
end
|
52
54
|
end
|
53
55
|
end
|
54
56
|
|
55
57
|
it 'should extract plugin name from file path' do
|
56
|
-
|
57
58
|
[
|
58
|
-
{:
|
59
|
-
{:
|
60
|
-
{:
|
61
|
-
{:
|
62
|
-
{:
|
63
|
-
{:
|
64
|
-
{:
|
65
|
-
{:
|
59
|
+
{ file_path: '/Somewhere/xxx-foo/target/xxx-1.0.0.jar', expected: 'xxx' },
|
60
|
+
{ file_path: '/Somewhere/xxx-foo/target/xxx-foo-bar-1.0.0.jar', expected: 'xxx-foo-bar' },
|
61
|
+
{ file_path: '/Somewhere/xxx-foo/target/xxx-foo-1.0.0.jar', expected: 'xxx-foo' },
|
62
|
+
{ file_path: '/Somewhere/xxx-foo/target/xxx-foo-1.0.0-SNAPSHOT.jar', expected: 'xxx-foo' },
|
63
|
+
{ file_path: '/Somewhere/xxx-foo/target/xxx-foo-1.0.jar', expected: 'xxx-foo' },
|
64
|
+
{ file_path: '/Somewhere/xxx-foo/target/xxx-foo-1.jar', expected: 'xxx-foo' },
|
65
|
+
{ file_path: '/Somewhere/xxx-foo/target/xxx-foo-abc-SNAPSHOT.jar', expected: 'xxx-foo' },
|
66
|
+
{ file_path: '/Somewhere/xxx-foo/target/xxx-foo-abc.jar', expected: 'xxx-foo' }
|
66
67
|
].each do |test|
|
67
|
-
KPM::Utils.get_plugin_name_from_file_path(test[:file_path]).
|
68
|
+
expect(KPM::Utils.get_plugin_name_from_file_path(test[:file_path])).to eq test[:expected]
|
68
69
|
end
|
69
70
|
end
|
70
71
|
|
@@ -75,16 +76,16 @@ describe KPM::BaseInstaller do
|
|
75
76
|
|
76
77
|
plugin_identifiers = read_plugin_identifiers(plugins_dir)
|
77
78
|
|
78
|
-
plugin_identifiers.size.
|
79
|
+
expect(plugin_identifiers.size).to eq 1
|
79
80
|
|
80
|
-
plugin_identifiers['analytics']['plugin_name'].
|
81
|
-
plugin_identifiers['analytics']['group_id'].
|
82
|
-
plugin_identifiers['analytics']['artifact_id'].
|
83
|
-
plugin_identifiers['analytics']['packaging'].
|
84
|
-
plugin_identifiers['analytics']['version'].
|
85
|
-
plugin_identifiers['analytics']['language'].
|
81
|
+
expect(plugin_identifiers['analytics']['plugin_name']).to eq 'analytics-plugin'
|
82
|
+
expect(plugin_identifiers['analytics']['group_id']).to eq 'org.kill-bill.billing.plugin.java'
|
83
|
+
expect(plugin_identifiers['analytics']['artifact_id']).to eq 'analytics-plugin'
|
84
|
+
expect(plugin_identifiers['analytics']['packaging']).to eq 'jar'
|
85
|
+
expect(plugin_identifiers['analytics']['version']).to eq '0.7.1'
|
86
|
+
expect(plugin_identifiers['analytics']['language']).to eq 'java'
|
86
87
|
|
87
|
-
File.file?(plugins_dir + '/plugins/java/analytics-plugin/0.7.1/tmp/disabled.txt').
|
88
|
+
expect(File.file?(plugins_dir + '/plugins/java/analytics-plugin/0.7.1/tmp/disabled.txt')).to be_falsey
|
88
89
|
end
|
89
90
|
|
90
91
|
def check_uninstallation(plugins_dir)
|
@@ -92,28 +93,28 @@ describe KPM::BaseInstaller do
|
|
92
93
|
|
93
94
|
plugin_identifiers = read_plugin_identifiers(plugins_dir)
|
94
95
|
|
95
|
-
plugin_identifiers.size.
|
96
|
+
expect(plugin_identifiers.size).to eq 0
|
96
97
|
|
97
|
-
File.file?(plugins_dir + '/plugins/java/analytics-plugin/0.7.1/tmp/disabled.txt').
|
98
|
+
expect(File.file?(plugins_dir + '/plugins/java/analytics-plugin/0.7.1/tmp/disabled.txt')).to be_truthy
|
98
99
|
end
|
99
100
|
|
100
101
|
def common_checks(plugins_dir)
|
101
102
|
[
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
103
|
+
plugins_dir,
|
104
|
+
plugins_dir + '/plugins',
|
105
|
+
plugins_dir + '/plugins/java',
|
106
|
+
plugins_dir + '/plugins/java/analytics-plugin',
|
107
|
+
plugins_dir + '/plugins/java/analytics-plugin/0.7.1',
|
108
|
+
plugins_dir + '/plugins/java/analytics-plugin/0.7.1/tmp'
|
108
109
|
].each do |dir|
|
109
|
-
File.directory?(dir).
|
110
|
+
expect(File.directory?(dir)).to be_truthy
|
110
111
|
end
|
111
112
|
|
112
113
|
[
|
113
|
-
|
114
|
-
|
114
|
+
plugins_dir + '/plugins/plugin_identifiers.json',
|
115
|
+
plugins_dir + '/plugins/java/analytics-plugin/0.7.1/analytics-plugin-0.7.1.jar'
|
115
116
|
].each do |file|
|
116
|
-
File.file?(file).
|
117
|
+
expect(File.file?(file)).to be_truthy
|
117
118
|
end
|
118
119
|
end
|
119
120
|
|