puppetfile-resolver 0.4.0 → 0.6.1

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.
@@ -0,0 +1,49 @@
1
+ require 'spec_helper'
2
+
3
+ require 'puppetfile-resolver/resolver'
4
+ require 'puppetfile-resolver/puppetfile'
5
+
6
+ describe 'KitchenSink Tests' do
7
+ it 'should resolve a complete Puppetfile' do
8
+ content = <<-PUPFILE
9
+ forge 'https://forge.puppet.com'
10
+
11
+ mod 'powershell',
12
+ :git => 'https://github.com/puppetlabs/puppetlabs-powershell',
13
+ :tag => 'v4.0.0'
14
+
15
+ mod 'simpkv',
16
+ :git => 'https://gitlab.com/simp/pupmod-simp-simpkv.git',
17
+ :tag => '0.7.1'
18
+
19
+ mod 'puppetlabs/stdlib', '6.3.0'
20
+
21
+ # Local module path module
22
+ mod 'testfixture/test_module', :latest
23
+
24
+ PUPFILE
25
+
26
+ puppetfile = ::PuppetfileResolver::Puppetfile::Parser::R10KEval.parse(content)
27
+
28
+ config = PuppetfileResolver::SpecSearchers::Configuration.new
29
+ config.local.puppet_module_paths = [File.join(FIXTURES_DIR, 'modulepath')]
30
+
31
+ resolver = PuppetfileResolver::Resolver.new(puppetfile)
32
+ result = resolver.resolve({
33
+ allow_missing_modules: false,
34
+ spec_searcher_configuration: config,
35
+ })
36
+
37
+ expect(result.specifications).to include('powershell')
38
+ expect(result.specifications['powershell'].version.to_s).to eq('4.0.0')
39
+
40
+ expect(result.specifications).to include('simpkv')
41
+ expect(result.specifications['simpkv'].version.to_s).to eq('0.7.1')
42
+
43
+ expect(result.specifications).to include('stdlib')
44
+ expect(result.specifications['stdlib'].version.to_s).to eq('6.3.0')
45
+
46
+ expect(result.specifications).to include('test_module')
47
+ expect(result.specifications['test_module'].version.to_s).to eq('0.1.0')
48
+ end
49
+ end
@@ -0,0 +1,91 @@
1
+ require 'spec_helper'
2
+ require 'open3'
3
+ require 'puppetfile-resolver/resolver'
4
+ require 'puppetfile-resolver/puppetfile'
5
+
6
+ describe 'Proxy Tests' do
7
+ let(:content) do <<-PUPFILE
8
+ forge 'https://forge.puppet.com'
9
+
10
+ mod 'powershell',
11
+ :git => 'https://github.com/puppetlabs/puppetlabs-powershell',
12
+ :tag => 'v4.0.0'
13
+
14
+ mod 'puppetlabs/stdlib', '6.3.0'
15
+ PUPFILE
16
+ end
17
+ let(:puppetfile) { ::PuppetfileResolver::Puppetfile::Parser::R10KEval.parse(content) }
18
+ let(:resolver_config) do
19
+ PuppetfileResolver::SpecSearchers::Configuration.new.tap do |obj|
20
+ obj.git.proxy = 'http://localhost:32768'
21
+ obj.forge.proxy = 'http://localhost:32768'
22
+ end
23
+ end
24
+
25
+ context 'with an invalid proxy server' do
26
+ it 'should not resolve a complete Puppetfile' do
27
+ resolver = PuppetfileResolver::Resolver.new(puppetfile)
28
+ result = resolver.resolve({
29
+ allow_missing_modules: true,
30
+ spec_searcher_configuration: resolver_config,
31
+ })
32
+
33
+ expect(result.specifications).to include('powershell')
34
+ expect(result.specifications['powershell']).to be_a(PuppetfileResolver::Models::MissingModuleSpecification)
35
+
36
+ expect(result.specifications).to include('stdlib')
37
+ expect(result.specifications['stdlib']).to be_a(PuppetfileResolver::Models::MissingModuleSpecification)
38
+ end
39
+ end
40
+
41
+ context 'with a valid proxy server' do
42
+ def start_proxy_server(start_options = ['--timeout=5'])
43
+ cmd = "ruby \"#{File.join(FIXTURES_DIR, 'proxy.rb')}\" 32768"
44
+
45
+ stdin, stdout, stderr, wait_thr = Open3.popen3(cmd)
46
+ # Wait for the Proxy server to indicate it started
47
+ line = nil
48
+ begin
49
+ line = stderr.readline
50
+ end until line =~ /#start/
51
+ stdout.close
52
+ stdin.close
53
+ [wait_thr, stderr]
54
+ end
55
+
56
+ before(:each) do
57
+ @server_thr, @server_pipe = start_proxy_server
58
+ end
59
+
60
+ after(:each) do
61
+ begin
62
+ Process.kill("KILL", @server_thr[:pid])
63
+ Process.wait(@server_thr[:pid])
64
+ rescue
65
+ # The server process may not exist and checking in a cross platform way in ruby is difficult
66
+ # Instead just swallow any errors
67
+ end
68
+
69
+ begin
70
+ @server_pipe.close
71
+ rescue
72
+ # The server process may not exist and checking in a cross platform way in ruby is difficult
73
+ # Instead just swallow any errors
74
+ end
75
+ end
76
+
77
+ it 'should resolve a complete Puppetfile' do
78
+ resolver = PuppetfileResolver::Resolver.new(puppetfile)
79
+ result = resolver.resolve({
80
+ allow_missing_modules: false,
81
+ spec_searcher_configuration: resolver_config,
82
+ })
83
+
84
+ expect(result.specifications).to include('powershell')
85
+ expect(result.specifications['powershell'].version.to_s).to eq('4.0.0')
86
+
87
+ expect(result.specifications).to include('stdlib')
88
+ expect(result.specifications['stdlib'].version.to_s).to eq('6.3.0')
89
+ end
90
+ end
91
+ end
data/spec/spec_helper.rb CHANGED
@@ -4,6 +4,8 @@ root = File.join(__dir__,'..',)
4
4
  # Add the language server into the load path
5
5
  $LOAD_PATH.unshift(File.join(root,'lib'))
6
6
 
7
+ FIXTURES_DIR = File.join(__dir__,'fixtures')
8
+
7
9
  # A cache which we can preload for the purposes of testing, mimicing
8
10
  # Local modules
9
11
  require 'puppetfile-resolver/cache/base'
@@ -7,7 +7,7 @@ describe PuppetfileResolver::Resolver do
7
7
  let(:puppet_version) { nil }
8
8
  let(:subject) { PuppetfileResolver::Resolver.new(puppetfile_document, puppet_version) }
9
9
  let(:cache) { MockLocalModuleCache.new }
10
- let(:default_resolve_options) { { cache: cache, module_paths: ['??does/not/exist'] } }
10
+ let(:default_resolve_options) { { cache: cache } }
11
11
  let(:resolve_options) { default_resolve_options }
12
12
 
13
13
  RSpec.shared_examples 'a resolver flag' do |flag|
@@ -0,0 +1,49 @@
1
+ require 'spec_helper'
2
+ require 'puppetfile-resolver/spec_searchers/git/gclone'
3
+ require 'puppetfile-resolver/spec_searchers/git_configuration'
4
+ require 'logger'
5
+ require 'json'
6
+
7
+ describe PuppetfileResolver::SpecSearchers::Git::GClone do
8
+ PuppetfileModule = Struct.new(:remote, :ref, :branch, :commit, :tag, keyword_init: true)
9
+ config = PuppetfileResolver::SpecSearchers::GitConfiguration.new
10
+
11
+ let(:url) do
12
+ 'https://github.com/puppetlabs/puppetlabs-powershell'
13
+ end
14
+
15
+ let(:puppetfile_module) do
16
+ PuppetfileModule.new(remote: url)
17
+ end
18
+
19
+
20
+ context 'valid url' do
21
+ it 'reads metadata' do
22
+ content = subject.metadata(puppetfile_module, Logger.new(STDERR), config)
23
+ expect(JSON.parse(content)['name']).to eq('puppetlabs-powershell')
24
+ end
25
+
26
+ context 'with ref' do
27
+
28
+ let(:puppetfile_module) do
29
+ PuppetfileModule.new(remote: url, ref: '2.1.2')
30
+ end
31
+
32
+ it 'reads metadata' do
33
+ content = subject.metadata(puppetfile_module, Logger.new(STDERR), config)
34
+ expect(JSON.parse(content)['name']).to eq('puppetlabs-powershell')
35
+ end
36
+ end
37
+ end
38
+
39
+ context 'invalid url' do
40
+ let(:url) do
41
+ 'https://user:password@github.com/puppetlabs/puppetlabs-powershellbad'
42
+ end
43
+
44
+ it 'throws exception' do
45
+ expect{subject.metadata(puppetfile_module, Logger.new(STDERR), config)}
46
+ .to raise_exception(RuntimeError)
47
+ end
48
+ end
49
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: puppetfile-resolver
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.0
4
+ version: 0.6.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Glenn Sarti
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-09-09 00:00:00.000000000 Z
11
+ date: 2022-06-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: molinillo
@@ -39,7 +39,7 @@ dependencies:
39
39
  - !ruby/object:Gem::Version
40
40
  version: '1.0'
41
41
  description: Resolves the Puppet Modules in a Puppetfile with a full dependency graph,
42
- including Puppet version checkspec.
42
+ including Puppet version checks.
43
43
  email:
44
44
  - glennsarti@users.noreply.github.com
45
45
  executables: []
@@ -81,18 +81,32 @@ files:
81
81
  - lib/puppetfile-resolver/resolution_result.rb
82
82
  - lib/puppetfile-resolver/resolver.rb
83
83
  - lib/puppetfile-resolver/spec_searchers/common.rb
84
+ - lib/puppetfile-resolver/spec_searchers/configuration.rb
84
85
  - lib/puppetfile-resolver/spec_searchers/forge.rb
86
+ - lib/puppetfile-resolver/spec_searchers/forge_configuration.rb
85
87
  - lib/puppetfile-resolver/spec_searchers/git.rb
88
+ - lib/puppetfile-resolver/spec_searchers/git/gclone.rb
89
+ - lib/puppetfile-resolver/spec_searchers/git/github.rb
90
+ - lib/puppetfile-resolver/spec_searchers/git/gitlab.rb
91
+ - lib/puppetfile-resolver/spec_searchers/git_configuration.rb
86
92
  - lib/puppetfile-resolver/spec_searchers/local.rb
93
+ - lib/puppetfile-resolver/spec_searchers/local_configuration.rb
87
94
  - lib/puppetfile-resolver/ui/debug_ui.rb
88
95
  - lib/puppetfile-resolver/ui/null_ui.rb
89
96
  - lib/puppetfile-resolver/util.rb
90
97
  - lib/puppetfile-resolver/version.rb
91
98
  - puppetfile-cli.rb
99
+ - spec/fixtures/modulepath/test_module/README.md
100
+ - spec/fixtures/modulepath/test_module/metadata.json
101
+ - spec/fixtures/proxy.rb
102
+ - spec/integration/deprecation_spec.rb
103
+ - spec/integration/kitchensink_spec.rb
104
+ - spec/integration/proxy_spec.rb
92
105
  - spec/spec_helper.rb
93
106
  - spec/unit/puppetfile-resolver/puppetfile/document_spec.rb
94
107
  - spec/unit/puppetfile-resolver/puppetfile/parser/r10k_eval_spec.rb
95
108
  - spec/unit/puppetfile-resolver/resolver_spec.rb
109
+ - spec/unit/puppetfile-resolver/spec_searchers/git/gclone_spec.rb
96
110
  homepage: https://glennsarti.github.io/puppetfile-resolver/
97
111
  licenses:
98
112
  - Apache-2.0
@@ -105,19 +119,26 @@ required_ruby_version: !ruby/object:Gem::Requirement
105
119
  requirements:
106
120
  - - ">="
107
121
  - !ruby/object:Gem::Version
108
- version: 2.1.9
122
+ version: 2.5.3
109
123
  required_rubygems_version: !ruby/object:Gem::Requirement
110
124
  requirements:
111
125
  - - ">="
112
126
  - !ruby/object:Gem::Version
113
127
  version: '0'
114
128
  requirements: []
115
- rubygems_version: 3.1.2
129
+ rubygems_version: 3.0.3
116
130
  signing_key:
117
131
  specification_version: 4
118
132
  summary: Dependency resolver for Puppetfiles
119
133
  test_files:
120
- - spec/spec_helper.rb
121
- - spec/unit/puppetfile-resolver/puppetfile/document_spec.rb
134
+ - spec/fixtures/proxy.rb
135
+ - spec/fixtures/modulepath/test_module/README.md
136
+ - spec/fixtures/modulepath/test_module/metadata.json
122
137
  - spec/unit/puppetfile-resolver/puppetfile/parser/r10k_eval_spec.rb
138
+ - spec/unit/puppetfile-resolver/puppetfile/document_spec.rb
123
139
  - spec/unit/puppetfile-resolver/resolver_spec.rb
140
+ - spec/unit/puppetfile-resolver/spec_searchers/git/gclone_spec.rb
141
+ - spec/spec_helper.rb
142
+ - spec/integration/proxy_spec.rb
143
+ - spec/integration/kitchensink_spec.rb
144
+ - spec/integration/deprecation_spec.rb