puppet 6.16.0-universal-darwin → 6.17.0-universal-darwin
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.
- checksums.yaml +4 -4
- data/Gemfile +4 -2
- data/Gemfile.lock +10 -10
- data/README.md +2 -2
- data/lib/puppet/agent.rb +2 -2
- data/lib/puppet/application/agent.rb +14 -3
- data/lib/puppet/configurer.rb +20 -12
- data/lib/puppet/confine.rb +1 -1
- data/lib/puppet/defaults.rb +25 -8
- data/lib/puppet/file_serving/http_metadata.rb +13 -1
- data/lib/puppet/file_serving/metadata.rb +4 -1
- data/lib/puppet/file_serving/terminus_selector.rb +7 -8
- data/lib/puppet/file_system/file_impl.rb +1 -1
- data/lib/puppet/file_system/uniquefile.rb +8 -16
- data/lib/puppet/forge.rb +1 -1
- data/lib/puppet/forge/cache.rb +1 -1
- data/lib/puppet/forge/repository.rb +3 -7
- data/lib/puppet/http/client.rb +5 -0
- data/lib/puppet/http/redirector.rb +9 -7
- data/lib/puppet/http/response.rb +19 -0
- data/lib/puppet/indirector.rb +1 -1
- data/lib/puppet/indirector/file_content/rest.rb +1 -1
- data/lib/puppet/indirector/file_metadata/http.rb +24 -5
- data/lib/puppet/indirector/file_metadata/rest.rb +2 -2
- data/lib/puppet/indirector/request.rb +1 -1
- data/lib/puppet/network/http/api/indirected_routes.rb +1 -1
- data/lib/puppet/network/http/api/master/v3/environment.rb +3 -0
- data/lib/puppet/network/http/connection_adapter.rb +6 -4
- data/lib/puppet/parser/ast/leaf.rb +5 -5
- data/lib/puppet/parser/ast/pops_bridge.rb +0 -4
- data/lib/puppet/parser/compiler.rb +1 -1
- data/lib/puppet/parser/compiler/catalog_validator/env_relationship_validator.rb +2 -0
- data/lib/puppet/parser/compiler/catalog_validator/site_validator.rb +2 -0
- data/lib/puppet/parser/environment_compiler.rb +4 -1
- data/lib/puppet/parser/resource.rb +3 -2
- data/lib/puppet/parser/resource/param.rb +6 -0
- data/lib/puppet/pops/evaluator/evaluator_impl.rb +5 -5
- data/lib/puppet/pops/issues.rb +5 -0
- data/lib/puppet/pops/resource/resource_type_impl.rb +2 -0
- data/lib/puppet/pops/validation/checker4_0.rb +10 -0
- data/lib/puppet/pops/validation/validator_factory_4_0.rb +1 -0
- data/lib/puppet/provider/package/aptitude.rb +1 -1
- data/lib/puppet/provider/package/yum.rb +1 -1
- data/lib/puppet/provider/service/windows.rb +23 -7
- data/lib/puppet/provider/user/useradd.rb +11 -4
- data/lib/puppet/reports/http.rb +2 -0
- data/lib/puppet/resource.rb +2 -1
- data/lib/puppet/resource/type.rb +8 -0
- data/lib/puppet/ssl/ssl_context.rb +2 -2
- data/lib/puppet/ssl/ssl_provider.rb +20 -1
- data/lib/puppet/test/test_helper.rb +8 -10
- data/lib/puppet/trusted_external.rb +29 -1
- data/lib/puppet/type.rb +12 -5
- data/lib/puppet/type/file.rb +38 -13
- data/lib/puppet/type/file/checksum.rb +4 -4
- data/lib/puppet/type/file/source.rb +4 -4
- data/lib/puppet/type/service.rb +49 -0
- data/lib/puppet/util.rb +39 -15
- data/lib/puppet/util/checksums.rb +19 -4
- data/lib/puppet/util/fileparsing.rb +2 -2
- data/lib/puppet/util/provider_features.rb +1 -1
- data/lib/puppet/util/reference.rb +1 -1
- data/lib/puppet/util/windows/api_types.rb +45 -32
- data/lib/puppet/util/windows/eventlog.rb +1 -6
- data/lib/puppet/util/windows/principal.rb +8 -6
- data/lib/puppet/util/windows/registry.rb +11 -11
- data/lib/puppet/util/windows/service.rb +43 -26
- data/lib/puppet/util/windows/user.rb +23 -8
- data/lib/puppet/version.rb +1 -1
- data/locales/puppet.pot +249 -221
- data/man/man5/puppet.conf.5 +19 -8
- data/man/man8/puppet-agent.8 +2 -2
- data/man/man8/puppet-apply.8 +1 -1
- data/man/man8/puppet-catalog.8 +1 -1
- data/man/man8/puppet-config.8 +1 -1
- data/man/man8/puppet-describe.8 +1 -1
- data/man/man8/puppet-device.8 +1 -1
- data/man/man8/puppet-doc.8 +1 -1
- data/man/man8/puppet-epp.8 +1 -1
- data/man/man8/puppet-facts.8 +1 -1
- data/man/man8/puppet-filebucket.8 +1 -1
- data/man/man8/puppet-generate.8 +1 -1
- data/man/man8/puppet-help.8 +1 -1
- data/man/man8/puppet-key.8 +1 -1
- data/man/man8/puppet-lookup.8 +1 -1
- data/man/man8/puppet-man.8 +1 -1
- data/man/man8/puppet-module.8 +1 -1
- data/man/man8/puppet-node.8 +1 -1
- data/man/man8/puppet-parser.8 +1 -1
- data/man/man8/puppet-plugin.8 +1 -1
- data/man/man8/puppet-report.8 +1 -1
- data/man/man8/puppet-resource.8 +1 -1
- data/man/man8/puppet-script.8 +1 -1
- data/man/man8/puppet-ssl.8 +1 -1
- data/man/man8/puppet-status.8 +1 -1
- data/man/man8/puppet.8 +2 -2
- data/spec/integration/application/agent_spec.rb +89 -0
- data/spec/integration/defaults_spec.rb +1 -2
- data/spec/integration/network/http_pool_spec.rb +26 -9
- data/spec/integration/parser/compiler_spec.rb +11 -0
- data/spec/integration/type/file_spec.rb +1 -1
- data/spec/integration/util/windows/registry_spec.rb +7 -7
- data/spec/integration/util/windows/user_spec.rb +40 -5
- data/spec/unit/configurer/fact_handler_spec.rb +4 -4
- data/spec/unit/context/trusted_information_spec.rb +10 -4
- data/spec/unit/file_serving/http_metadata_spec.rb +37 -14
- data/spec/unit/file_serving/terminus_selector_spec.rb +45 -26
- data/spec/unit/http/client_spec.rb +64 -8
- data/spec/unit/http/response_spec.rb +6 -0
- data/spec/unit/indirector/file_metadata/http_spec.rb +27 -0
- data/spec/unit/indirector/request_spec.rb +1 -1
- data/spec/unit/interface_spec.rb +3 -3
- data/spec/unit/network/http/api/indirected_routes_spec.rb +2 -1
- data/spec/unit/network/http/connection_spec.rb +42 -32
- data/spec/unit/parser/ast/block_expression_spec.rb +1 -1
- data/spec/unit/parser/environment_compiler_spec.rb +7 -0
- data/spec/unit/parser/scope_spec.rb +1 -1
- data/spec/unit/pops/evaluator/evaluating_parser_spec.rb +15 -1
- data/spec/unit/pops/loaders/loaders_spec.rb +1 -1
- data/spec/unit/pops/types/type_calculator_spec.rb +1 -11
- data/spec/unit/provider/service/windows_spec.rb +22 -14
- data/spec/unit/provider/user/openbsd_spec.rb +1 -0
- data/spec/unit/provider/user/useradd_spec.rb +22 -16
- data/spec/unit/resource_spec.rb +3 -3
- data/spec/unit/ssl/ssl_provider_spec.rb +69 -43
- data/spec/unit/test/test_helper_spec.rb +17 -0
- data/spec/unit/transaction/report_spec.rb +1 -1
- data/spec/unit/type/file/source_spec.rb +3 -3
- data/spec/unit/type/file_spec.rb +122 -96
- data/spec/unit/type/service_spec.rb +176 -0
- data/spec/unit/type_spec.rb +50 -0
- data/spec/unit/util/checksums_spec.rb +16 -0
- data/spec/unit/util/windows/api_types_spec.rb +104 -40
- data/spec/unit/util/windows/service_spec.rb +4 -4
- data/spec/unit/util_spec.rb +3 -3
- data/spec/unit/x509/cert_provider_spec.rb +1 -1
- metadata +5 -5
- data/spec/integration/test/test_helper_spec.rb +0 -31
data/spec/unit/type_spec.rb
CHANGED
@@ -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
|
8
|
-
let
|
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
|
-
|
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
|
-
|
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
|
-
|
36
|
+
ptr.read_wide_string(bad_string.length)
|
45
37
|
end
|
46
38
|
}.to raise_error(Encoding::InvalidByteSequenceError)
|
47
39
|
|
48
|
-
expect(
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
111
|
+
expect(ptr.read_arbitrary_wide_string_up_to).to eq(string)
|
112
|
+
end
|
87
113
|
end
|
88
114
|
|
89
|
-
it "
|
90
|
-
|
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
|
-
|
133
|
+
expect(ptr.read_arbitrary_wide_string_up_to(0)).to eq("")
|
93
134
|
end
|
135
|
+
end
|
94
136
|
|
95
|
-
|
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
|
-
|
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 "#
|
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.
|
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.
|
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.
|
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
|
data/spec/unit/util_spec.rb
CHANGED
@@ -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
|
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(
|
306
|
-
expect(
|
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
|
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.
|
4
|
+
version: 6.17.0
|
5
5
|
platform: universal-darwin
|
6
6
|
authors:
|
7
7
|
- Puppet Labs
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-
|
11
|
+
date: 2020-07-10 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: facter
|
@@ -1866,7 +1866,6 @@ files:
|
|
1866
1866
|
- spec/integration/ssl/certificate_request_spec.rb
|
1867
1867
|
- spec/integration/ssl/host_spec.rb
|
1868
1868
|
- spec/integration/ssl/key_spec.rb
|
1869
|
-
- spec/integration/test/test_helper_spec.rb
|
1870
1869
|
- spec/integration/transaction/report_spec.rb
|
1871
1870
|
- spec/integration/transaction_spec.rb
|
1872
1871
|
- spec/integration/type/exec_spec.rb
|
@@ -2528,6 +2527,7 @@ files:
|
|
2528
2527
|
- spec/unit/ssl/verifier_spec.rb
|
2529
2528
|
- spec/unit/status_spec.rb
|
2530
2529
|
- spec/unit/task_spec.rb
|
2530
|
+
- spec/unit/test/test_helper_spec.rb
|
2531
2531
|
- spec/unit/transaction/additional_resource_generator_spec.rb
|
2532
2532
|
- spec/unit/transaction/event_manager_spec.rb
|
2533
2533
|
- spec/unit/transaction/event_spec.rb
|
@@ -2681,7 +2681,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
2681
2681
|
- !ruby/object:Gem::Version
|
2682
2682
|
version: 1.3.1
|
2683
2683
|
requirements: []
|
2684
|
-
rubygems_version: 3.0.
|
2684
|
+
rubygems_version: 3.0.8
|
2685
2685
|
signing_key:
|
2686
2686
|
specification_version: 4
|
2687
2687
|
summary: Puppet, an automated configuration management tool
|
@@ -3143,7 +3143,6 @@ test_files:
|
|
3143
3143
|
- spec/integration/ssl/certificate_request_spec.rb
|
3144
3144
|
- spec/integration/ssl/host_spec.rb
|
3145
3145
|
- spec/integration/ssl/key_spec.rb
|
3146
|
-
- spec/integration/test/test_helper_spec.rb
|
3147
3146
|
- spec/integration/transaction/report_spec.rb
|
3148
3147
|
- spec/integration/transaction_spec.rb
|
3149
3148
|
- spec/integration/type/exec_spec.rb
|
@@ -3805,6 +3804,7 @@ test_files:
|
|
3805
3804
|
- spec/unit/ssl/verifier_spec.rb
|
3806
3805
|
- spec/unit/status_spec.rb
|
3807
3806
|
- spec/unit/task_spec.rb
|
3807
|
+
- spec/unit/test/test_helper_spec.rb
|
3808
3808
|
- spec/unit/transaction/additional_resource_generator_spec.rb
|
3809
3809
|
- spec/unit/transaction/event_manager_spec.rb
|
3810
3810
|
- 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
|