Skip to content

Commit ca30099

Browse files
authored
Merge pull request #897 from puppetlabs/fix-facter-version-matching
Fix `docker` fact with recent version of docker
2 parents c3c4d6f + 4414f38 commit ca30099

File tree

2 files changed

+32
-1
lines changed

2 files changed

+32
-1
lines changed

lib/facter/docker.rb

+1-1
Original file line numberDiff line numberDiff line change
@@ -121,7 +121,7 @@ def interfaces
121121
confine { Facter::Core::Execution.which('docker') }
122122
setcode do
123123
docker_version = Facter.value(:docker_client_version)
124-
if docker_version&.match?(%r{1[0-9][0-2]?[.]\w+})
124+
if docker_version&.match?(%r{\A(1\.1[3-9]|[2-9]|\d{2,})\.})
125125
docker_json_str = Facter::Core::Execution.execute(
126126
"#{docker_command} info --format '{{json .}}'", timeout: 90
127127
)

spec/unit/lib/facter/docker_spec.rb

+31
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,37 @@
9090
end
9191
end
9292

93+
describe 'docker_client_version fact containment' do
94+
[
95+
'0.0.1',
96+
'0.5.12',
97+
'1.12.0',
98+
].each do |docker_client_version|
99+
it "Does not generate a nested fact with legacy version #{docker_client_version}" do
100+
expect(Facter.fact(:docker_client_version)).to receive(:value).and_return(docker_client_version)
101+
expect(Facter::Core::Execution).not_to receive(:execute).with("#{docker_command} info --format '{{json .}}'", any_args)
102+
103+
expect(Facter.fact(:docker).value).to be_nil
104+
end
105+
end
106+
107+
[
108+
'1.13.0',
109+
'1.14.0',
110+
'2.0.0',
111+
'20.10.22',
112+
'23.0.1',
113+
'108.42.1',
114+
].each do |docker_client_version|
115+
it "Generates a nested fact with version #{docker_client_version}" do
116+
expect(Facter.fact(:docker_client_version)).to receive(:value).and_return(docker_client_version)
117+
expect(Facter::Core::Execution).to receive(:execute).with("#{docker_command} info --format '{{json .}}'", any_args).and_return('{}')
118+
119+
expect(Facter.fact(:docker).value).not_to be_nil
120+
end
121+
end
122+
end
123+
93124
describe 'docker server version' do
94125
before(:each) do
95126
docker_version = File.read(fixtures('facts', 'docker_version'))

0 commit comments

Comments
 (0)