puppet 6.16.0-x64-mingw32 → 6.17.0-x64-mingw32

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of puppet might be problematic. Click here for more details.

Files changed (138) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +4 -2
  3. data/Gemfile.lock +10 -10
  4. data/README.md +2 -2
  5. data/lib/puppet/agent.rb +2 -2
  6. data/lib/puppet/application/agent.rb +14 -3
  7. data/lib/puppet/configurer.rb +20 -12
  8. data/lib/puppet/confine.rb +1 -1
  9. data/lib/puppet/defaults.rb +25 -8
  10. data/lib/puppet/file_serving/http_metadata.rb +13 -1
  11. data/lib/puppet/file_serving/metadata.rb +4 -1
  12. data/lib/puppet/file_serving/terminus_selector.rb +7 -8
  13. data/lib/puppet/file_system/file_impl.rb +1 -1
  14. data/lib/puppet/file_system/uniquefile.rb +8 -16
  15. data/lib/puppet/forge.rb +1 -1
  16. data/lib/puppet/forge/cache.rb +1 -1
  17. data/lib/puppet/forge/repository.rb +3 -7
  18. data/lib/puppet/http/client.rb +5 -0
  19. data/lib/puppet/http/redirector.rb +9 -7
  20. data/lib/puppet/http/response.rb +19 -0
  21. data/lib/puppet/indirector.rb +1 -1
  22. data/lib/puppet/indirector/file_content/rest.rb +1 -1
  23. data/lib/puppet/indirector/file_metadata/http.rb +24 -5
  24. data/lib/puppet/indirector/file_metadata/rest.rb +2 -2
  25. data/lib/puppet/indirector/request.rb +1 -1
  26. data/lib/puppet/network/http/api/indirected_routes.rb +1 -1
  27. data/lib/puppet/network/http/api/master/v3/environment.rb +3 -0
  28. data/lib/puppet/network/http/connection_adapter.rb +6 -4
  29. data/lib/puppet/parser/ast/leaf.rb +5 -5
  30. data/lib/puppet/parser/ast/pops_bridge.rb +0 -4
  31. data/lib/puppet/parser/compiler.rb +1 -1
  32. data/lib/puppet/parser/compiler/catalog_validator/env_relationship_validator.rb +2 -0
  33. data/lib/puppet/parser/compiler/catalog_validator/site_validator.rb +2 -0
  34. data/lib/puppet/parser/environment_compiler.rb +4 -1
  35. data/lib/puppet/parser/resource.rb +3 -2
  36. data/lib/puppet/parser/resource/param.rb +6 -0
  37. data/lib/puppet/pops/evaluator/evaluator_impl.rb +5 -5
  38. data/lib/puppet/pops/issues.rb +5 -0
  39. data/lib/puppet/pops/resource/resource_type_impl.rb +2 -0
  40. data/lib/puppet/pops/validation/checker4_0.rb +10 -0
  41. data/lib/puppet/pops/validation/validator_factory_4_0.rb +1 -0
  42. data/lib/puppet/provider/package/aptitude.rb +1 -1
  43. data/lib/puppet/provider/package/yum.rb +1 -1
  44. data/lib/puppet/provider/service/windows.rb +23 -7
  45. data/lib/puppet/provider/user/useradd.rb +11 -4
  46. data/lib/puppet/reports/http.rb +2 -0
  47. data/lib/puppet/resource.rb +2 -1
  48. data/lib/puppet/resource/type.rb +8 -0
  49. data/lib/puppet/ssl/ssl_context.rb +2 -2
  50. data/lib/puppet/ssl/ssl_provider.rb +20 -1
  51. data/lib/puppet/test/test_helper.rb +8 -10
  52. data/lib/puppet/trusted_external.rb +29 -1
  53. data/lib/puppet/type.rb +12 -5
  54. data/lib/puppet/type/file.rb +38 -13
  55. data/lib/puppet/type/file/checksum.rb +4 -4
  56. data/lib/puppet/type/file/source.rb +4 -4
  57. data/lib/puppet/type/service.rb +49 -0
  58. data/lib/puppet/util.rb +39 -15
  59. data/lib/puppet/util/checksums.rb +19 -4
  60. data/lib/puppet/util/fileparsing.rb +2 -2
  61. data/lib/puppet/util/provider_features.rb +1 -1
  62. data/lib/puppet/util/reference.rb +1 -1
  63. data/lib/puppet/util/windows/api_types.rb +45 -32
  64. data/lib/puppet/util/windows/eventlog.rb +1 -6
  65. data/lib/puppet/util/windows/principal.rb +8 -6
  66. data/lib/puppet/util/windows/registry.rb +11 -11
  67. data/lib/puppet/util/windows/service.rb +43 -26
  68. data/lib/puppet/util/windows/user.rb +23 -8
  69. data/lib/puppet/version.rb +1 -1
  70. data/locales/puppet.pot +249 -221
  71. data/man/man5/puppet.conf.5 +19 -8
  72. data/man/man8/puppet-agent.8 +2 -2
  73. data/man/man8/puppet-apply.8 +1 -1
  74. data/man/man8/puppet-catalog.8 +1 -1
  75. data/man/man8/puppet-config.8 +1 -1
  76. data/man/man8/puppet-describe.8 +1 -1
  77. data/man/man8/puppet-device.8 +1 -1
  78. data/man/man8/puppet-doc.8 +1 -1
  79. data/man/man8/puppet-epp.8 +1 -1
  80. data/man/man8/puppet-facts.8 +1 -1
  81. data/man/man8/puppet-filebucket.8 +1 -1
  82. data/man/man8/puppet-generate.8 +1 -1
  83. data/man/man8/puppet-help.8 +1 -1
  84. data/man/man8/puppet-key.8 +1 -1
  85. data/man/man8/puppet-lookup.8 +1 -1
  86. data/man/man8/puppet-man.8 +1 -1
  87. data/man/man8/puppet-module.8 +1 -1
  88. data/man/man8/puppet-node.8 +1 -1
  89. data/man/man8/puppet-parser.8 +1 -1
  90. data/man/man8/puppet-plugin.8 +1 -1
  91. data/man/man8/puppet-report.8 +1 -1
  92. data/man/man8/puppet-resource.8 +1 -1
  93. data/man/man8/puppet-script.8 +1 -1
  94. data/man/man8/puppet-ssl.8 +1 -1
  95. data/man/man8/puppet-status.8 +1 -1
  96. data/man/man8/puppet.8 +2 -2
  97. data/spec/integration/application/agent_spec.rb +89 -0
  98. data/spec/integration/defaults_spec.rb +1 -2
  99. data/spec/integration/network/http_pool_spec.rb +26 -9
  100. data/spec/integration/parser/compiler_spec.rb +11 -0
  101. data/spec/integration/type/file_spec.rb +1 -1
  102. data/spec/integration/util/windows/registry_spec.rb +7 -7
  103. data/spec/integration/util/windows/user_spec.rb +40 -5
  104. data/spec/unit/configurer/fact_handler_spec.rb +4 -4
  105. data/spec/unit/context/trusted_information_spec.rb +10 -4
  106. data/spec/unit/file_serving/http_metadata_spec.rb +37 -14
  107. data/spec/unit/file_serving/terminus_selector_spec.rb +45 -26
  108. data/spec/unit/http/client_spec.rb +64 -8
  109. data/spec/unit/http/response_spec.rb +6 -0
  110. data/spec/unit/indirector/file_metadata/http_spec.rb +27 -0
  111. data/spec/unit/indirector/request_spec.rb +1 -1
  112. data/spec/unit/interface_spec.rb +3 -3
  113. data/spec/unit/network/http/api/indirected_routes_spec.rb +2 -1
  114. data/spec/unit/network/http/connection_spec.rb +42 -32
  115. data/spec/unit/parser/ast/block_expression_spec.rb +1 -1
  116. data/spec/unit/parser/environment_compiler_spec.rb +7 -0
  117. data/spec/unit/parser/scope_spec.rb +1 -1
  118. data/spec/unit/pops/evaluator/evaluating_parser_spec.rb +15 -1
  119. data/spec/unit/pops/loaders/loaders_spec.rb +1 -1
  120. data/spec/unit/pops/types/type_calculator_spec.rb +1 -11
  121. data/spec/unit/provider/service/windows_spec.rb +22 -14
  122. data/spec/unit/provider/user/openbsd_spec.rb +1 -0
  123. data/spec/unit/provider/user/useradd_spec.rb +22 -16
  124. data/spec/unit/resource_spec.rb +3 -3
  125. data/spec/unit/ssl/ssl_provider_spec.rb +69 -43
  126. data/spec/unit/test/test_helper_spec.rb +17 -0
  127. data/spec/unit/transaction/report_spec.rb +1 -1
  128. data/spec/unit/type/file/source_spec.rb +3 -3
  129. data/spec/unit/type/file_spec.rb +122 -96
  130. data/spec/unit/type/service_spec.rb +176 -0
  131. data/spec/unit/type_spec.rb +50 -0
  132. data/spec/unit/util/checksums_spec.rb +16 -0
  133. data/spec/unit/util/windows/api_types_spec.rb +104 -40
  134. data/spec/unit/util/windows/service_spec.rb +4 -4
  135. data/spec/unit/util_spec.rb +3 -3
  136. data/spec/unit/x509/cert_provider_spec.rb +1 -1
  137. metadata +5 -5
  138. data/spec/integration/test/test_helper_spec.rb +0 -31
@@ -1099,6 +1099,56 @@ describe Puppet::Type, :unless => Puppet::Util::Platform.windows? do
1099
1099
  expect { expect(type.instances).to eq([]) }.to_not raise_error
1100
1100
  end
1101
1101
 
1102
+ context "with a composite namevar type" do
1103
+ let :type do
1104
+ Puppet::Type.newtype(:type_spec_fake_type) do
1105
+ newparam(:name) do
1106
+ isnamevar
1107
+ end
1108
+
1109
+ newparam(:path) do
1110
+ isnamevar
1111
+ end
1112
+
1113
+ def self.title_patterns
1114
+ [[%r{^(.*)@(.*)$}, [:name, :path]], [%r{^([^@]+)$}, [:name]]]
1115
+ end
1116
+
1117
+ newproperty(:prop1) {}
1118
+ end
1119
+
1120
+ Puppet::Type.type(:type_spec_fake_type)
1121
+ end
1122
+
1123
+ before :each do
1124
+ type.provide(:default) do
1125
+ defaultfor :operatingsystem => Facter.value(:operatingsystem)
1126
+ mk_resource_methods
1127
+ class << self
1128
+ attr_accessor :params
1129
+ end
1130
+
1131
+ def title
1132
+ "#{@property_hash[:name]}@#{@property_hash[:path]}"
1133
+ end
1134
+
1135
+ def self.instance(name, path)
1136
+ new(:name => name, :path => path, :ensure => :present)
1137
+ end
1138
+
1139
+ def self.instances
1140
+ @instances ||= params.collect { |param| instance(param.first.to_s, param.last.to_s) }
1141
+ end
1142
+
1143
+ @params = [[:name_one, :path_one], [:name_two, :path_two]]
1144
+ end
1145
+ end
1146
+
1147
+ it "should return composite titles for the instances" do
1148
+ expect(type.instances.map(&:title)).to eq(["name_one@path_one", "name_two@path_two"])
1149
+ end
1150
+ end
1151
+
1102
1152
  context "with a default provider" do
1103
1153
  before :each do
1104
1154
  type.provide(:default) do
@@ -65,6 +65,22 @@ describe Puppet::Util::Checksums do
65
65
  expect(@summer.sumtype("asdfasdfa")).to be_nil
66
66
  end
67
67
 
68
+ it "has a list of known checksum types" do
69
+ expect(@summer.known_checksum_types).to match_array(content_sums + file_only)
70
+ end
71
+
72
+ it "returns true if the checksum is valid" do
73
+ expect(@summer).to be_valid_checksum('sha1', 'fcc1715b22278a9dae322b0a34935f10d1608b9f')
74
+ end
75
+
76
+ it "returns false if the checksum is known but invalid" do
77
+ expect(@summer).to_not be_valid_checksum('sha1', 'wronglength')
78
+ end
79
+
80
+ it "returns false if the checksum type is unknown" do
81
+ expect(@summer).to_not be_valid_checksum('rot13', 'doesntmatter')
82
+ end
83
+
68
84
  {:md5 => Digest::MD5, :sha1 => Digest::SHA1, :sha256 => Digest::SHA256, :sha512 => Digest::SHA512, :sha384 => Digest::SHA384}.each do |sum, klass|
69
85
  describe("when using #{sum}") do
70
86
  it "should use #{klass} to calculate string checksums" do
@@ -4,62 +4,86 @@ require 'spec_helper'
4
4
 
5
5
  describe "FFI::MemoryPointer", :if => Puppet::Util::Platform.windows? do
6
6
  # use 2 bad bytes at end so we have even number of bytes / characters
7
- let (:bad_string) { "hello invalid world".encode(Encoding::UTF_16LE) + "\xDD\xDD".force_encoding(Encoding::UTF_16LE) }
8
- let (:bad_string_bytes) { bad_string.bytes.to_a }
7
+ let(:bad_string) { "hello invalid world".encode(Encoding::UTF_16LE) + "\xDD\xDD".force_encoding(Encoding::UTF_16LE) }
8
+ let(:bad_string_bytes) { bad_string.bytes.to_a }
9
+ let(:a_wide_bytes) { "A".encode(Encoding::UTF_16LE).bytes.to_a }
10
+ let(:b_wide_bytes) { "B".encode(Encoding::UTF_16LE).bytes.to_a }
9
11
 
10
12
  context "read_wide_string" do
11
13
  let (:string) { "foo_bar" }
12
14
 
13
15
  it "should properly roundtrip a given string" do
14
- read_string = nil
15
16
  FFI::MemoryPointer.from_string_to_wide_string(string) do |ptr|
16
- read_string = ptr.read_wide_string(string.length)
17
+ expect(ptr.read_wide_string(string.length)).to eq(string)
17
18
  end
18
-
19
- expect(read_string).to eq(string)
20
19
  end
21
20
 
22
21
  it "should return a given string in UTF-8" do
23
- read_string = nil
24
22
  FFI::MemoryPointer.from_string_to_wide_string(string) do |ptr|
25
23
  read_string = ptr.read_wide_string(string.length)
24
+ expect(read_string.encoding).to eq(Encoding::UTF_8)
26
25
  end
27
-
28
- expect(read_string.encoding).to eq(Encoding::UTF_8)
29
26
  end
30
27
 
31
28
  it "should raise an error and emit a debug message when receiving a string containing invalid bytes in the destination encoding" do
32
- # enable a debug output sink to local string array
33
- Puppet.debug = true
34
- arraydest = []
35
- Puppet::Util::Log.newdestination(Puppet::Test::LogCollector.new(arraydest))
36
-
37
- read_string = nil
29
+ Puppet[:log_level] = 'debug'
38
30
 
39
31
  expect {
40
32
  FFI::MemoryPointer.new(:byte, bad_string_bytes.count) do |ptr|
41
33
  # uchar here is synonymous with byte
42
34
  ptr.put_array_of_uchar(0, bad_string_bytes)
43
35
 
44
- read_string = ptr.read_wide_string(bad_string.length)
36
+ ptr.read_wide_string(bad_string.length)
45
37
  end
46
38
  }.to raise_error(Encoding::InvalidByteSequenceError)
47
39
 
48
- expect(read_string).to be_nil
49
- expect(arraydest.last.message).to eq("Unable to convert value #{bad_string.dump} to encoding UTF-8 due to #<Encoding::InvalidByteSequenceError: \"\\xDD\\xDD\" on UTF-16LE>")
40
+ expect(@logs.last.message).to eq("Unable to convert value #{bad_string.dump} to encoding UTF-8 due to #<Encoding::InvalidByteSequenceError: \"\\xDD\\xDD\" on UTF-16LE>")
50
41
  end
51
42
 
52
43
  it "should not raise an error when receiving a string containing invalid bytes in the destination encoding, when specifying :invalid => :replace" do
53
- read_string = nil
54
-
55
44
  FFI::MemoryPointer.new(:byte, bad_string_bytes.count) do |ptr|
56
45
  # uchar here is synonymous with byte
57
46
  ptr.put_array_of_uchar(0, bad_string_bytes)
58
47
 
59
- read_string = ptr.read_wide_string(bad_string.length, Encoding::UTF_8, :invalid => :replace)
48
+ read_string = ptr.read_wide_string(bad_string.length, Encoding::UTF_8, false, :invalid => :replace)
49
+ expect(read_string).to eq("hello invalid world\uFFFD")
60
50
  end
51
+ end
61
52
 
62
- expect(read_string).to eq("hello invalid world\uFFFD")
53
+ it "raises an IndexError if asked to read more characters than there are bytes allocated" do
54
+ expect {
55
+ FFI::MemoryPointer.new(:byte, 1) do |ptr|
56
+ ptr.read_wide_string(1) # 1 wchar = 2 bytes
57
+ end
58
+ }.to raise_error(IndexError, /out of bounds/)
59
+ end
60
+
61
+ it "raises an IndexError if asked to read a negative number of characters" do
62
+ expect {
63
+ FFI::MemoryPointer.new(:byte, 1) do |ptr|
64
+ ptr.read_wide_string(-1)
65
+ end
66
+ }.to raise_error(IndexError, /out of bounds/)
67
+ end
68
+
69
+ it "returns an empty string if asked to read 0 characters" do
70
+ FFI::MemoryPointer.new(:byte, 1) do |ptr|
71
+ expect(ptr.read_wide_string(0)).to eq("")
72
+ end
73
+ end
74
+
75
+ it "returns a substring if asked to read fewer characters than are in the byte array" do
76
+ FFI::MemoryPointer.new(:byte, 4) do |ptr|
77
+ ptr.write_array_of_uint8("AB".encode('UTF-16LE').bytes.to_a)
78
+ expect(ptr.read_wide_string(1)).to eq("A")
79
+ end
80
+ end
81
+
82
+ it "preserves wide null characters in the string" do
83
+ FFI::MemoryPointer.new(:byte, 6) do |ptr|
84
+ ptr.write_array_of_uint8(a_wide_bytes + [0, 0] + b_wide_bytes)
85
+ expect(ptr.read_wide_string(3)).to eq("A\x00B")
86
+ end
63
87
  end
64
88
  end
65
89
 
@@ -69,52 +93,92 @@ describe "FFI::MemoryPointer", :if => Puppet::Util::Platform.windows? do
69
93
  let (:double_null_string) { string + "\x00\x00" }
70
94
 
71
95
  it "should read a short single null terminated string" do
72
- read_string = nil
73
96
  FFI::MemoryPointer.from_string_to_wide_string(single_null_string) do |ptr|
74
- read_string = ptr.read_arbitrary_wide_string_up_to()
97
+ expect(ptr.read_arbitrary_wide_string_up_to).to eq(string)
75
98
  end
76
-
77
- expect(read_string).to eq(string)
78
99
  end
79
100
 
80
101
  it "should read a short double null terminated string" do
81
- read_string = nil
82
102
  FFI::MemoryPointer.from_string_to_wide_string(double_null_string) do |ptr|
83
- read_string = ptr.read_arbitrary_wide_string_up_to(512, :double_null)
103
+ expect(ptr.read_arbitrary_wide_string_up_to(512, :double_null)).to eq(string)
84
104
  end
105
+ end
106
+
107
+ it "detects trailing single null wchar" do
108
+ FFI::MemoryPointer.from_string_to_wide_string(single_null_string) do |ptr|
109
+ expect(ptr).to receive(:read_wide_string).with(string.length, anything, anything, anything).and_call_original
85
110
 
86
- expect(read_string).to eq(string)
111
+ expect(ptr.read_arbitrary_wide_string_up_to).to eq(string)
112
+ end
87
113
  end
88
114
 
89
- it "should return a string of max_length characters when specified" do
90
- read_string = nil
115
+ it "detects trailing double null wchar" do
116
+ FFI::MemoryPointer.from_string_to_wide_string(double_null_string) do |ptr|
117
+ expect(ptr).to receive(:read_wide_string).with(string.length, anything, anything, anything).and_call_original
118
+
119
+ expect(ptr.read_arbitrary_wide_string_up_to(512, :double_null)).to eq(string)
120
+ end
121
+ end
122
+
123
+ it "should raises an IndexError if max_length is negative" do
124
+ FFI::MemoryPointer.from_string_to_wide_string(single_null_string) do |ptr|
125
+ expect {
126
+ ptr.read_arbitrary_wide_string_up_to(-1)
127
+ }.to raise_error(IndexError, /out of bounds/)
128
+ end
129
+ end
130
+
131
+ it "should return an empty string when the max_length is 0" do
91
132
  FFI::MemoryPointer.from_string_to_wide_string(single_null_string) do |ptr|
92
- read_string = ptr.read_arbitrary_wide_string_up_to(3)
133
+ expect(ptr.read_arbitrary_wide_string_up_to(0)).to eq("")
93
134
  end
135
+ end
94
136
 
95
- expect(read_string).to eq(string[0..2])
137
+ it "should return a string of max_length characters when specified" do
138
+ FFI::MemoryPointer.from_string_to_wide_string(single_null_string) do |ptr|
139
+ expect(ptr.read_arbitrary_wide_string_up_to(3)).to eq(string[0..2])
140
+ end
96
141
  end
97
142
 
98
143
  it "should return wide strings in UTF-8" do
99
- read_string = nil
100
144
  FFI::MemoryPointer.from_string_to_wide_string(string) do |ptr|
101
- read_string = ptr.read_arbitrary_wide_string_up_to()
145
+ read_string = ptr.read_arbitrary_wide_string_up_to
146
+ expect(read_string.encoding).to eq(Encoding::UTF_8)
102
147
  end
103
-
104
- expect(read_string.encoding).to eq(Encoding::UTF_8)
105
148
  end
106
149
 
107
150
  it "should not raise an error when receiving a string containing invalid bytes in the destination encoding, when specifying :invalid => :replace" do
108
- read_string = nil
109
-
110
151
  FFI::MemoryPointer.new(:byte, bad_string_bytes.count) do |ptr|
111
152
  # uchar here is synonymous with byte
112
153
  ptr.put_array_of_uchar(0, bad_string_bytes)
113
154
 
114
155
  read_string = ptr.read_arbitrary_wide_string_up_to(ptr.size / 2, :single_null, :invalid => :replace)
156
+ expect(read_string).to eq("hello invalid world\uFFFD")
157
+ end
158
+ end
159
+
160
+ it "should raise an IndexError if there isn't a null terminator" do
161
+ # This only works when using a memory pointer with a known number of cells
162
+ # and size per cell, but not arbitrary Pointers
163
+ FFI::MemoryPointer.new(:wchar, 1) do |ptr|
164
+ ptr.write_array_of_uint8(a_wide_bytes)
165
+
166
+ expect {
167
+ ptr.read_arbitrary_wide_string_up_to(42)
168
+ }.to raise_error(IndexError, /out of bounds/)
115
169
  end
170
+ end
171
+
172
+ it "should raise an IndexError if there isn't a double null terminator" do
173
+ # This only works when using a memory pointer with a known number of cells
174
+ # and size per cell, but not arbitrary Pointers
175
+ FFI::MemoryPointer.new(:wchar, 1) do |ptr|
176
+ ptr.write_array_of_uint8(a_wide_bytes)
116
177
 
117
- expect(read_string).to eq("hello invalid world\uFFFD")
178
+ expect {
179
+ ptr.read_arbitrary_wide_string_up_to(42, :double_null)
180
+ }.to raise_error(IndexError, /out of bounds/)
181
+ end
118
182
  end
119
183
  end
120
184
  end
@@ -599,27 +599,27 @@ describe "Puppet::Util::Windows::Service", :if => Puppet.features.microsoft_wind
599
599
  end
600
600
  end
601
601
 
602
- describe "#set_startup_mode" do
602
+ describe "#set_startup_configuration" do
603
603
  let(:status_checks) { sequence('status_checks') }
604
604
 
605
605
  context "when the service control manager cannot be opened" do
606
606
  let(:scm) { FFI::Pointer::NULL_HANDLE }
607
607
  it "raises a puppet error" do
608
- expect{ subject.set_startup_mode(mock_service_name, :SERVICE_DEMAND_START) }.to raise_error(Puppet::Error)
608
+ expect{ subject.set_startup_configuration(mock_service_name, options: {startup_type: :SERVICE_DEMAND_START}) }.to raise_error(Puppet::Error)
609
609
  end
610
610
  end
611
611
 
612
612
  context "when the service cannot be opened" do
613
613
  let(:service) { FFI::Pointer::NULL_HANDLE }
614
614
  it "raises a puppet error" do
615
- expect{ subject.set_startup_mode(mock_service_name, :SERVICE_DEMAND_START) }.to raise_error(Puppet::Error)
615
+ expect{ subject.set_startup_configuration(mock_service_name, options: {startup_type: :SERVICE_DEMAND_START}) }.to raise_error(Puppet::Error)
616
616
  end
617
617
  end
618
618
 
619
619
  context "when the service can be opened" do
620
620
  it "Raises an error on an unsuccessful change" do
621
621
  expect(subject).to receive(:ChangeServiceConfigW).and_return(FFI::WIN32_FALSE)
622
- expect{ subject.set_startup_mode(mock_service_name, :SERVICE_DEMAND_START) }.to raise_error(Puppet::Error)
622
+ expect{ subject.set_startup_configuration(mock_service_name, options: {startup_type: :SERVICE_DEMAND_START}) }.to raise_error(Puppet::Error)
623
623
  end
624
624
  end
625
625
  end
@@ -299,11 +299,11 @@ describe Puppet::Util do
299
299
  expect(uri.to_s.encoding).to eq(expected_encoding)
300
300
  expect(uri.path).to eq("/foo+foo%20bar")
301
301
  # either + or %20 is correct for an encoded space in query
302
- # + is usually used for backward compatibility, but %20 is preferred for compat with Uri.unescape
302
+ # + is usually used for backward compatibility, but %20 is preferred for compat with Puppet::Util.uri_unescape
303
303
  expect(uri.query).to eq("foo%2Bfoo%20bar")
304
304
  # complete roundtrip
305
- expect(URI.unescape(uri.to_s).sub(%r{^file:(//)?}, '')).to eq(path)
306
- expect(URI.unescape(uri.to_s).encoding).to eq(expected_encoding)
305
+ expect(Puppet::Util.uri_unescape(uri.to_s).sub(%r{^file:(//)?}, '')).to eq(path)
306
+ expect(Puppet::Util.uri_unescape(uri.to_s).encoding).to eq(expected_encoding)
307
307
  end
308
308
 
309
309
  it "should perform UTF-8 URI escaping" do
@@ -5,7 +5,7 @@ describe Puppet::X509::CertProvider do
5
5
  include PuppetSpec::Files
6
6
 
7
7
  def create_provider(options)
8
- described_class.new(options)
8
+ described_class.new(**options)
9
9
  end
10
10
 
11
11
  def expects_public_file(path)
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: puppet
3
3
  version: !ruby/object:Gem::Version
4
- version: 6.16.0
4
+ version: 6.17.0
5
5
  platform: x64-mingw32
6
6
  authors:
7
7
  - Puppet Labs
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-05-29 00:00:00.000000000 Z
11
+ date: 2020-07-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: facter
@@ -1942,7 +1942,6 @@ files:
1942
1942
  - spec/integration/ssl/certificate_request_spec.rb
1943
1943
  - spec/integration/ssl/host_spec.rb
1944
1944
  - spec/integration/ssl/key_spec.rb
1945
- - spec/integration/test/test_helper_spec.rb
1946
1945
  - spec/integration/transaction/report_spec.rb
1947
1946
  - spec/integration/transaction_spec.rb
1948
1947
  - spec/integration/type/exec_spec.rb
@@ -2604,6 +2603,7 @@ files:
2604
2603
  - spec/unit/ssl/verifier_spec.rb
2605
2604
  - spec/unit/status_spec.rb
2606
2605
  - spec/unit/task_spec.rb
2606
+ - spec/unit/test/test_helper_spec.rb
2607
2607
  - spec/unit/transaction/additional_resource_generator_spec.rb
2608
2608
  - spec/unit/transaction/event_manager_spec.rb
2609
2609
  - spec/unit/transaction/event_spec.rb
@@ -2757,7 +2757,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
2757
2757
  - !ruby/object:Gem::Version
2758
2758
  version: 1.3.1
2759
2759
  requirements: []
2760
- rubygems_version: 3.0.6
2760
+ rubygems_version: 3.0.8
2761
2761
  signing_key:
2762
2762
  specification_version: 4
2763
2763
  summary: Puppet, an automated configuration management tool
@@ -3219,7 +3219,6 @@ test_files:
3219
3219
  - spec/integration/ssl/certificate_request_spec.rb
3220
3220
  - spec/integration/ssl/host_spec.rb
3221
3221
  - spec/integration/ssl/key_spec.rb
3222
- - spec/integration/test/test_helper_spec.rb
3223
3222
  - spec/integration/transaction/report_spec.rb
3224
3223
  - spec/integration/transaction_spec.rb
3225
3224
  - spec/integration/type/exec_spec.rb
@@ -3881,6 +3880,7 @@ test_files:
3881
3880
  - spec/unit/ssl/verifier_spec.rb
3882
3881
  - spec/unit/status_spec.rb
3883
3882
  - spec/unit/task_spec.rb
3883
+ - spec/unit/test/test_helper_spec.rb
3884
3884
  - spec/unit/transaction/additional_resource_generator_spec.rb
3885
3885
  - spec/unit/transaction/event_manager_spec.rb
3886
3886
  - spec/unit/transaction/event_spec.rb
@@ -1,31 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe "Windows UTF8 environment variables", :if => Puppet::Util::Platform.windows? do
4
- # The Puppet::Util::Windows::Process class is used to manipulate environment variables as it is known to handle UTF8 characters. Where as the implementation of ENV in ruby does not.
5
- # before and end all are used to inject environment variables before the test helper 'before_each_test' function is called
6
- # Do not use before and after hooks in these tests as it may have unintended consequences
7
-
8
- before(:all) {
9
- @varname = 'test_helper_spec-test_variable'
10
- @rune_utf8 = "\u16A0\u16C7\u16BB\u16EB\u16D2\u16E6\u16A6\u16EB\u16A0\u16B1\u16A9\u16A0\u16A2\u16B1\u16EB\u16A0\u16C1\u16B1\u16AA\u16EB\u16B7\u16D6\u16BB\u16B9\u16E6\u16DA\u16B3\u16A2\u16D7"
11
-
12
- Puppet::Util::Windows::Process.set_environment_variable(@varname, @rune_utf8)
13
- }
14
- after(:all) {
15
- # Need to cleanup this environment variable otherwise it contaminates any subsequent tests
16
- Puppet::Util::Windows::Process.set_environment_variable(@varname, nil)
17
- }
18
-
19
- it "#after_each_test should preserve UTF8 environment variables" do
20
- envhash = Puppet::Util::Windows::Process.get_environment_strings
21
- expect(envhash[@varname]).to eq(@rune_utf8)
22
- # Change the value in the test to force test_helper to restore the environment
23
- ENV[@varname] = 'bad foo'
24
-
25
- # Prematurely trigger the after_each_test method
26
- Puppet::Test::TestHelper.after_each_test
27
-
28
- envhash = Puppet::Util::Windows::Process.get_environment_strings
29
- expect(envhash[@varname]).to eq(@rune_utf8)
30
- end
31
- end