puppet-repl 0.2.3 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,170 @@
1
+ require 'spec_helper'
2
+ require 'stringio'
3
+ describe "PuppetRepl" do
4
+
5
+ let(:resource) do
6
+ "service{'httpd': ensure => running}"
7
+ end
8
+
9
+ before(:each) do
10
+ repl.handle_input('reset')
11
+ end
12
+
13
+ let(:output) do
14
+ StringIO.new('', 'w')
15
+ end
16
+
17
+ let(:repl) do
18
+ PuppetRepl::Cli.new(:out_buffer => output)
19
+ end
20
+
21
+ let(:input) do
22
+ "file{'/tmp/test2.txt': ensure => present, mode => '0755'}"
23
+ end
24
+
25
+ let(:resource_types) do
26
+ repl.parser.evaluate_string(repl.scope, input)
27
+ end
28
+
29
+ describe 'remote node' do
30
+ let(:node_obj) do
31
+ YAML.load_file(File.join(fixtures_dir, 'node_obj.yaml'))
32
+ end
33
+ let(:node_name) do
34
+ 'puppetdev.localdomain'
35
+ end
36
+ before :each do
37
+ allow(repl).to receive(:get_remote_node).with(node_name).and_return(node_obj)
38
+ repl.handle_input(":set node #{node_name}")
39
+ end
40
+
41
+ describe 'set' do
42
+ it 'sends message about resetting' do
43
+ expect(output.string).to eq("\n => Resetting to use node puppetdev.localdomain\n")
44
+ end
45
+
46
+ it "return node name" do
47
+ output.reopen # removes previous message
48
+ repl.handle_input('$::hostname')
49
+ expect(output.string).to match(/puppetdev.localdomain/)
50
+ end
51
+
52
+ it "return classification" do
53
+ output.reopen # removes previous message
54
+ repl.handle_input('classification')
55
+ expect(output.string).to match(/stdlib/)
56
+ end
57
+ end
58
+
59
+ describe 'facts' do
60
+ let(:input) do
61
+ "$::facts['os']['family'].downcase == 'debian'"
62
+ end
63
+ it 'fact evaulation should return false' do
64
+ repl_output = /false/
65
+ repl.handle_input(input)
66
+ expect(output.string).to match(repl_output)
67
+ end
68
+
69
+ end
70
+ describe 'use defaults when invalid' do
71
+ let(:node_obj) do
72
+ YAML.load_file(File.join(fixtures_dir, 'invalid_node_obj.yaml'))
73
+ end
74
+ let(:node_name) do
75
+ 'invalid.localdomain'
76
+ end
77
+ it 'name' do
78
+ expect{repl.node.name}.to raise_error(PuppetRepl::Exception::UndefinedNode)
79
+ end
80
+ end
81
+
82
+ it 'set node name' do
83
+ expect(repl.remote_node_name = 'puppetdev.localdomain').to eq("puppetdev.localdomain")
84
+ end
85
+
86
+ describe 'print classes' do
87
+ let(:input) do
88
+ 'resources'
89
+ end
90
+ it 'should be able to print classes' do
91
+ repl_output = /Settings/
92
+ repl.handle_input(input)
93
+ expect(output.string).to match(repl_output)
94
+ end
95
+ end
96
+
97
+ describe 'vars' do
98
+ let(:input) do
99
+ "vars"
100
+ end
101
+ it 'display facts variable' do
102
+ repl_output = /facts/
103
+ repl.handle_input(input)
104
+ expect(output.string).to match(repl_output)
105
+ end
106
+ it 'display server facts variable' do
107
+ repl_output = /server_facts/
108
+ repl.handle_input(input)
109
+ expect(output.string).to match(repl_output) if Puppet.version.to_f >= 4.1
110
+ end
111
+ it 'display server facts variable' do
112
+ repl_output = /server_facts/
113
+ repl.handle_input(input)
114
+ expect(output.string).to match(repl_output) if Puppet.version.to_f >= 4.1
115
+ end
116
+ it 'display local variable' do
117
+ repl.handle_input("$var1 = 'value1'")
118
+ expect(output.string).to match(/value1/)
119
+ repl.handle_input("$var1")
120
+ expect(output.string).to match(/value1/)
121
+ end
122
+ it 'display productname variable' do
123
+ repl.handle_input("$productname")
124
+ expect(output.string).to match(/VMware Virtual Platform/)
125
+ end
126
+ end
127
+
128
+ describe 'execute functions' do
129
+ let(:input) do
130
+ "md5('hello')"
131
+ end
132
+ it 'execute md5' do
133
+ repl_output = /5d41402abc4b2a76b9719d911017c592/
134
+ repl.handle_input(input)
135
+ expect(output.string).to match(repl_output)
136
+ end
137
+ it 'execute swapcase' do
138
+ repl_output = /HELLO/
139
+ repl.handle_input("swapcase('hello')")
140
+ expect(output.string).to match(repl_output)
141
+ end
142
+ end
143
+
144
+ describe 'reset' do
145
+ let(:input) do
146
+ "file{'/tmp/reset': ensure => present}"
147
+ end
148
+
149
+ it 'can process a file' do
150
+ repl_output = /Puppet::Type::File/
151
+ repl.handle_input(input)
152
+ expect(output.string).to match(repl_output)
153
+ repl.handle_input('reset')
154
+ repl.handle_input(input)
155
+ expect(output.string).to match(repl_output)
156
+ end
157
+ end
158
+
159
+ describe 'classification' do
160
+ let(:input) do
161
+ "classification"
162
+ end
163
+
164
+ it 'shows certificate_authority_host' do
165
+ repl.handle_input(input)
166
+ expect(output.string).to match(/stdlib/)
167
+ end
168
+ end
169
+ end
170
+ end
data/spec/spec_helper.rb CHANGED
@@ -1,22 +1,25 @@
1
1
  require 'simplecov'
2
2
  require_relative '../lib/puppet-repl'
3
3
  require 'yaml'
4
- # module SimpleCov::Configuration
5
- # def clean_filters
6
- # @filters = []
7
- # end
8
- # end
9
- #
10
- # SimpleCov.configure do
11
- # clean_filters
12
- # load_profile 'test_frameworks'
13
- # end
14
- #
15
- # SimpleCov.start do
16
- # add_filter "/.rvm/"
17
- # add_filter "vendor"
18
- # add_filter "bundler"
19
- # end
4
+ ENV['COVERAGE'] = "true"
5
+
6
+ module SimpleCov::Configuration
7
+ def clean_filters
8
+ @filters = []
9
+ end
10
+ end
11
+
12
+ SimpleCov.configure do
13
+ clean_filters
14
+ load_profile 'test_frameworks'
15
+ end
16
+
17
+ SimpleCov.start do
18
+ add_filter "/.rvm/"
19
+ add_filter "vendor"
20
+ add_filter "bundler"
21
+ end
22
+
20
23
  $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
21
24
  $LOAD_PATH.unshift(File.dirname(__FILE__))
22
25
 
@@ -45,5 +48,10 @@ def environments_dir
45
48
  File.join(fixtures_dir, 'environments')
46
49
  end
47
50
 
51
+ def supports_native_functions?
52
+ Gem::Version.new(Puppet.version) >= Gem::Version.new('4.3')
53
+ end
54
+
48
55
  RSpec.configure do |config|
56
+ config.filter_run_excluding :native_functions => ! supports_native_functions?
49
57
  end
data/test_matrix.rb ADDED
@@ -0,0 +1,42 @@
1
+ require 'yaml'
2
+ require 'fileutils'
3
+ @threads = {}
4
+
5
+ def run_container(image, puppet_version)
6
+ pversion = puppet_version.match(/([\d\.]+)/)[0]
7
+ ruby_version = image.split(':').last
8
+ dir = File.join('.','local_test_results', pversion, ruby_version)
9
+ real_dir = File.expand_path(dir)
10
+ FileUtils.rm_rf(real_dir)
11
+ FileUtils.mkdir_p(real_dir)
12
+ cmd = "docker run -e OUT_DIR='#{dir}' -e RUBY_VERSION='#{ruby_version}' -e PUPPET_GEM_VERSION='#{puppet_version}' --rm -ti -v ${PWD}:/module --workdir /module #{image} /bin/bash run_container_test.sh"
13
+ File.write(File.join(real_dir, 'command.txt'), cmd)
14
+ output = `#{cmd}`
15
+ if $?.success?
16
+ File.write(File.join(dir, 'success.txt'), output)
17
+ else
18
+ File.write(File.join(dir, 'error.txt'), output)
19
+ end
20
+ end
21
+
22
+ def ci_data
23
+ @ci_data ||= YAML.load_file(File.expand_path('.gitlab-ci.yml'))
24
+ end
25
+
26
+ def matrix
27
+ unless @matrix
28
+ @matrix = {}
29
+ ci_data.each do |id, data|
30
+ @matrix[id] = data if id =~ /^puppet/
31
+ end
32
+ end
33
+ @matrix
34
+ end
35
+
36
+ matrix.each do |id, item|
37
+ @threads[id] = Thread.new do
38
+ run_container(item['image'], item['variables']['PUPPET_GEM_VERSION'])
39
+ end
40
+ end
41
+
42
+ @threads.each {|id, thr| thr.join } # wait on thread to finish
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: puppet-repl
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.3
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Corey Osman
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-06-01 00:00:00.000000000 Z
11
+ date: 2016-07-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: puppet
@@ -77,6 +77,7 @@ extra_rdoc_files:
77
77
  - README.md
78
78
  files:
79
79
  - ".document"
80
+ - ".gitignore"
80
81
  - ".gitlab-ci.yml"
81
82
  - ".rspec"
82
83
  - CHANGELOG.md
@@ -85,7 +86,6 @@ files:
85
86
  - LICENSE.txt
86
87
  - README.md
87
88
  - Rakefile
88
- - VERSION
89
89
  - bin/prepl
90
90
  - lib/awesome_print/ext/awesome_puppet.rb
91
91
  - lib/puppet-repl.rb
@@ -103,26 +103,22 @@ files:
103
103
  - lib/trollop.rb
104
104
  - lib/version.rb
105
105
  - puppet-repl.gemspec
106
- - resources/classes.png
107
- - resources/classification.png
108
- - resources/command_line_node.png
109
- - resources/functions.png
110
- - resources/hiera.png
111
- - resources/set_node.png
112
- - resources/tab_complete.png
113
- - resources/variables.png
106
+ - run_container_test.sh
114
107
  - spec/fixtures/environments/production/manifests/site.pp
115
108
  - spec/fixtures/invalid_node_obj.yaml
116
109
  - spec/fixtures/node_obj.yaml
117
110
  - spec/fixtures/sample_manifest.pp
118
111
  - spec/prepl_spec.rb
119
112
  - spec/puppet-repl_spec.rb
113
+ - spec/remote_node_spec.rb
120
114
  - spec/spec_helper.rb
121
115
  - spec/support_spec.rb
116
+ - test_matrix.rb
122
117
  homepage: http://github.com/nwops/puppet-repl
123
118
  licenses:
124
119
  - MIT
125
- metadata: {}
120
+ metadata:
121
+ allowed_push_host: "'http://mygemserver.com'"
126
122
  post_install_message:
127
123
  rdoc_options: []
128
124
  require_paths:
@@ -139,7 +135,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
139
135
  version: '0'
140
136
  requirements: []
141
137
  rubyforge_project:
142
- rubygems_version: 2.4.5.1
138
+ rubygems_version: 2.6.6
143
139
  signing_key:
144
140
  specification_version: 4
145
141
  summary: A repl for the puppet language
data/VERSION DELETED
@@ -1 +0,0 @@
1
- 0.2.3
Binary file
Binary file
Binary file
Binary file
data/resources/hiera.png DELETED
Binary file
Binary file
Binary file
Binary file