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.
- 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: x64-mingw32
|
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
|
@@ -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.
|
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
|