revamp 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,96 @@
1
+ require 'spec_helper'
2
+ require 'revamp/model/puppet-module'
3
+ require 'revamp/filter/puppetver2rpmreq'
4
+
5
+ describe Revamp::Filter::PuppetVerToRpmReq do
6
+ subject { described_class.new.filter(puppetver) }
7
+ let(:reqname) { 'puppetlabs/stdlib' }
8
+ let(:inputhash) do
9
+ {
10
+ 'name' => reqname,
11
+ 'version_requirement' => version_requirement
12
+ }
13
+ end
14
+ let(:puppetver) { Revamp::Model::PuppetDependency.new(inputhash) }
15
+ let (:version_requirement) { self.class.description }
16
+
17
+ describe '.filter()' do
18
+ subject { described_class.new.filter(puppetver) }
19
+
20
+ context 'for standard greater or equals cases, for ex.:' do
21
+ describe '>=3.0.0 <4.0.0' do
22
+ it do
23
+ expect(subject).to eq([
24
+ 'puppetmodule(puppetlabs-stdlib) >= 3.0.0',
25
+ 'puppetmodule(puppetlabs-stdlib) < 4.0.0'
26
+ ])
27
+ end
28
+ end
29
+ describe '>= 3.0.0 < 4.0.0' do
30
+ it do
31
+ expect(subject).to eq([
32
+ 'puppetmodule(puppetlabs-stdlib) >= 3.0.0',
33
+ 'puppetmodule(puppetlabs-stdlib) < 4.0.0'
34
+ ])
35
+ end
36
+ end
37
+ describe '>=3.0.0' do
38
+ it do
39
+ expect(subject).to eq([
40
+ 'puppetmodule(puppetlabs-stdlib) >= 3.0.0'
41
+ ])
42
+ end
43
+ end
44
+ describe '>3.0' do
45
+ it do
46
+ expect(subject).to eq([
47
+ 'puppetmodule(puppetlabs-stdlib) > 3.0'
48
+ ])
49
+ end
50
+ end
51
+ describe '>3' do
52
+ it do
53
+ expect(subject).to eq([
54
+ 'puppetmodule(puppetlabs-stdlib) > 3'
55
+ ])
56
+ end
57
+ end
58
+ end
59
+ context 'for twiddle-wakka cases, for ex.:' do
60
+ describe '~>3.0.0' do
61
+ it do
62
+ expect(subject).to eq([
63
+ 'puppetmodule(puppetlabs-stdlib) >= 3.0.0',
64
+ 'puppetmodule(puppetlabs-stdlib) < 3.1.0'
65
+ ])
66
+ end
67
+ end
68
+ describe '~>3.0' do
69
+ it do
70
+ expect(subject).to eq([
71
+ 'puppetmodule(puppetlabs-stdlib) >= 3.0',
72
+ 'puppetmodule(puppetlabs-stdlib) < 4.0'
73
+ ])
74
+ end
75
+ end
76
+ end
77
+ context 'for semantic versioning cases, for ex.:' do
78
+ describe '3.x' do
79
+ it do
80
+ expect(subject).to eq([
81
+ 'puppetmodule(puppetlabs-stdlib) >= 3.0',
82
+ 'puppetmodule(puppetlabs-stdlib) < 4.0'
83
+ ])
84
+ end
85
+ end
86
+ describe '3.0.x' do
87
+ it do
88
+ expect(subject).to eq([
89
+ 'puppetmodule(puppetlabs-stdlib) >= 3.0.0',
90
+ 'puppetmodule(puppetlabs-stdlib) < 3.1.0'
91
+ ])
92
+ end
93
+ end
94
+ end
95
+ end
96
+ end
@@ -0,0 +1,53 @@
1
+ require 'spec_helper'
2
+ require 'file_matchers'
3
+ require 'rspec/its'
4
+ require 'revamp/parser/puppet-tarball'
5
+
6
+ describe Revamp::Parser::PuppetTarball do
7
+ let(:sample_file) { 'spec/fixtures/coi-sample-0.1.1.tar.gz' }
8
+ context 'for a sample puppet tarball file' do
9
+ it { expect(sample_file).to be_readable_file }
10
+ let(:parser) { described_class.new(sample_file) }
11
+
12
+ describe '.new' do
13
+ it { expect(parser).not_to be_nil }
14
+ end
15
+
16
+ describe '.parse' do
17
+ let(:model) { parser.parse }
18
+ it { expect(model).not_to be_nil }
19
+
20
+ context 'files' do
21
+ subject { model.files }
22
+ context 'size' do
23
+ let (:size) { subject.size }
24
+ it { expect(size).to eq(3) }
25
+ end
26
+ it { expect(subject.keys).to include 'checksums.json' }
27
+ it { expect(subject.keys).to include 'metadata.json' }
28
+ it { expect(subject.keys).to include 'manifests/init.pp' }
29
+ end
30
+
31
+ context 'model' do
32
+ subject { model }
33
+ it { is_expected.not_to be_nil }
34
+ its(:metadata) { is_expected.to be_a(Hash) }
35
+ its(:name) { is_expected.to eq('coi/sample') }
36
+ its(:summary) { is_expected.to eq 'An example Puppet module' }
37
+ its(:version) { is_expected.to eq '0.1.1' }
38
+ its(:license) { is_expected.to eq 'Apache-2.0' }
39
+ its(:author) { is_expected.to eq 'Krzysztof Suszynski' }
40
+ context 'dependencies' do
41
+ subject { model.dependencies }
42
+ its(:size) { is_expected.to eq(1) }
43
+ context 'pop' do
44
+ subject { model.dependencies.pop }
45
+ its(:name) { is_expected.to eq('puppetlabs/stdlib') }
46
+ its(:version) { is_expected.to eq(Gem::Requirement.new(["< 5.0.0", ">= 3.2.0"])) }
47
+ end
48
+ end
49
+ end
50
+
51
+ end
52
+ end
53
+ end
@@ -0,0 +1,32 @@
1
+ require 'spec_helper'
2
+ require 'revamp/persister/rpm'
3
+ require 'rbconfig'
4
+
5
+ describe Revamp::Persister::Rpm::CommandLine do
6
+ describe '#execute' do
7
+ before :each do
8
+ @level = Revamp.logger.level
9
+ Revamp.logger.level = 100
10
+ end
11
+ after :each do
12
+ Revamp.logger.level = @level
13
+ end
14
+ let(:is_windows) { RbConfig::CONFIG['host_os'] =~ /mswin|mingw|cygwin/ }
15
+ let(:command) do
16
+ is_windows ? 'dir > nul' : 'true'
17
+ end
18
+ let(:directory) { Dir.tmpdir }
19
+ let(:options) do
20
+ {
21
+ release: "1",
22
+ epoch: "6",
23
+ outdir: "/tmp",
24
+ filenames: ["spec/fixtures/coi-sample-0.1.1.tar.gz"],
25
+ verbose: false,
26
+ cleanup: true
27
+ }
28
+ end
29
+ subject { described_class.execute(command, directory, options) }
30
+ it { expect(subject).to be_success }
31
+ end
32
+ end
@@ -0,0 +1,13 @@
1
+ require 'spec_helper'
2
+ require 'revamp'
3
+
4
+ describe Revamp, '.version_prep' do
5
+ context 'on stable version v1.2.3' do
6
+ subject { Revamp::version_prep '1.2.3' }
7
+ it { expect(subject).to eq '1.2.3' }
8
+ end
9
+ context 'on unstable version v1.2.3.pre' do
10
+ subject { Revamp::version_prep '1.2.3.pre' }
11
+ it { expect(subject).to match /^1\.2\.3\.pre\.?(?:v\d+\.\d+\.\d+(?:\.\d+\.g)?)?(?:[0-9a-f]{7})?(?:\.dirty)?$/ }
12
+ end
13
+ end
@@ -0,0 +1,21 @@
1
+ require 'spec_helper'
2
+ require 'revamp'
3
+
4
+ describe Revamp do
5
+ describe '#bug' do
6
+ let(:ex) do
7
+ ex = nil
8
+ begin
9
+ raise ArgumentError, 'Sample error'
10
+ rescue => detail
11
+ ex = detail
12
+ end
13
+ ex
14
+ end
15
+ subject { described_class.bug(ex) }
16
+ after :each do
17
+ Dir.glob(Dir.tmpdir + '/revamp-bug*.log') { |file| Pathname.new(file).unlink }
18
+ end
19
+ it { is_expected.not_to be_nil }
20
+ end
21
+ end
metadata ADDED
@@ -0,0 +1,133 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: revamp
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.0
5
+ platform: ruby
6
+ authors:
7
+ - Centralny Ośrodek Informatyki
8
+ - Suszyński Krzysztof
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2015-11-24 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: bundler
16
+ requirement: !ruby/object:Gem::Requirement
17
+ requirements:
18
+ - - ">="
19
+ - !ruby/object:Gem::Version
20
+ version: '0'
21
+ type: :development
22
+ prerelease: false
23
+ version_requirements: !ruby/object:Gem::Requirement
24
+ requirements:
25
+ - - ">="
26
+ - !ruby/object:Gem::Version
27
+ version: '0'
28
+ - !ruby/object:Gem::Dependency
29
+ name: rake
30
+ requirement: !ruby/object:Gem::Requirement
31
+ requirements:
32
+ - - ">="
33
+ - !ruby/object:Gem::Version
34
+ version: '0'
35
+ type: :development
36
+ prerelease: false
37
+ version_requirements: !ruby/object:Gem::Requirement
38
+ requirements:
39
+ - - ">="
40
+ - !ruby/object:Gem::Version
41
+ version: '0'
42
+ - !ruby/object:Gem::Dependency
43
+ name: micro-optparse
44
+ requirement: !ruby/object:Gem::Requirement
45
+ requirements:
46
+ - - "~>"
47
+ - !ruby/object:Gem::Version
48
+ version: 1.2.0
49
+ type: :runtime
50
+ prerelease: false
51
+ version_requirements: !ruby/object:Gem::Requirement
52
+ requirements:
53
+ - - "~>"
54
+ - !ruby/object:Gem::Version
55
+ version: 1.2.0
56
+ description: |2
57
+ This module can convert standard puppet module file in form of tarball to
58
+ valid RPM or DEB package with all dependencies as references to other
59
+ system packages. The dependencies can be packaged inside the final system
60
+ package or just referenced as dependencies.
61
+ email:
62
+ - krzysztof.suszynski@coi.gov.pl
63
+ executables:
64
+ - revamp
65
+ extensions: []
66
+ extra_rdoc_files: []
67
+ files:
68
+ - ".gitignore"
69
+ - ".rspec"
70
+ - ".rubocop.yml"
71
+ - ".rubocop_todo.yml"
72
+ - ".travis.yml"
73
+ - Gemfile
74
+ - Gemfile.ruby19
75
+ - LICENSE.txt
76
+ - README.md
77
+ - Rakefile
78
+ - bin/revamp
79
+ - lib/revamp.rb
80
+ - lib/revamp/application.rb
81
+ - lib/revamp/cli.rb
82
+ - lib/revamp/filter/puppetver2rpmreq.rb
83
+ - lib/revamp/mapper/puppet-name-slugger.rb
84
+ - lib/revamp/model/puppet-module.rb
85
+ - lib/revamp/parser/puppet-tarball.rb
86
+ - lib/revamp/persister/rpm-spec.erb
87
+ - lib/revamp/persister/rpm.rb
88
+ - lib/revamp/version.rb
89
+ - revamp.gemspec
90
+ - spec/file_matchers.rb
91
+ - spec/fixtures/coi-sample-0.1.1.tar.gz
92
+ - spec/spec_helper.rb
93
+ - spec/unit/revamp/cli_spec.rb
94
+ - spec/unit/revamp/filter/puppetver2rpmreq_spec.rb
95
+ - spec/unit/revamp/parser/puppet-tarball_spec.rb
96
+ - spec/unit/revamp/persister/rpm_spec.rb
97
+ - spec/unit/revamp/version_spec.rb
98
+ - spec/unit/revamp_spec.rb
99
+ homepage: https://github.com/coi-gov-pl/gem-revamp
100
+ licenses:
101
+ - Apache-2.0
102
+ metadata: {}
103
+ post_install_message:
104
+ rdoc_options: []
105
+ require_paths:
106
+ - lib
107
+ required_ruby_version: !ruby/object:Gem::Requirement
108
+ requirements:
109
+ - - ">="
110
+ - !ruby/object:Gem::Version
111
+ version: '1.9'
112
+ required_rubygems_version: !ruby/object:Gem::Requirement
113
+ requirements:
114
+ - - ">="
115
+ - !ruby/object:Gem::Version
116
+ version: '0'
117
+ requirements: []
118
+ rubyforge_project:
119
+ rubygems_version: 2.4.8
120
+ signing_key:
121
+ specification_version: 4
122
+ summary: Converts puppet module file to valid RPM or DEB package
123
+ test_files:
124
+ - spec/file_matchers.rb
125
+ - spec/fixtures/coi-sample-0.1.1.tar.gz
126
+ - spec/spec_helper.rb
127
+ - spec/unit/revamp/cli_spec.rb
128
+ - spec/unit/revamp/filter/puppetver2rpmreq_spec.rb
129
+ - spec/unit/revamp/parser/puppet-tarball_spec.rb
130
+ - spec/unit/revamp/persister/rpm_spec.rb
131
+ - spec/unit/revamp/version_spec.rb
132
+ - spec/unit/revamp_spec.rb
133
+ has_rdoc: