@@ -116,18 +116,18 @@ def on_supported_os_implementation(opts = {})
116116 strict_requirement = RspecPuppetFacts ::facter_version_to_strict_requirement ( facterversion )
117117
118118 loose_requirement = RspecPuppetFacts ::facter_version_to_loose_requirement ( facterversion )
119+ received_facts = [ ]
119120
120121 # FacterDB may have newer versions of facter data for which it contains a subset of all possible
121122 # facter data (see FacterDB 0.5.2 for Facter releases 3.8 and 3.9). In this situation we need to
122123 # cycle through and downgrade Facter versions per platform type until we find matching Facter data.
123124 filter . each do |filter_spec |
124- versions = FacterDB . get_facts ( filter_spec ) . map { |facts | Gem ::Version . new ( facts [ :facterversion ] ) } . sort . reverse
125- next unless versions . any?
125+ versions = FacterDB . get_facts ( filter_spec ) . to_h { |facts | [ Gem ::Version . new ( facts [ :facterversion ] ) , facts ] }
126126
127- version = versions . detect { |v | strict_requirement =~ v }
127+ version , facts = versions . select { |v , _f | strict_requirement =~ v } . max_by { | v , _f | v }
128128
129129 unless version
130- version = versions . detect { |v | loose_requirement =~ v } if loose_requirement
130+ version , facts = versions . select { |v , _f | loose_requirement =~ v } . max_by { | v , _f | v } if loose_requirement
131131 next unless version
132132
133133 if RspecPuppetFacts . spec_facts_strict?
@@ -137,10 +137,9 @@ def on_supported_os_implementation(opts = {})
137137 RspecPuppetFacts . warning "No facts were found in the FacterDB for Facter v#{ facterversion } on #{ filter_spec } , using v#{ version } instead"
138138 end
139139
140- filter_spec [ :facterversion ] = "/ \\ A #{ Regexp . escape ( version . to_s ) } \\ Z/"
140+ received_facts << facts
141141 end
142142
143- received_facts = FacterDB ::get_facts ( filter )
144143 unless received_facts . any?
145144 RspecPuppetFacts . warning "No facts were found in the FacterDB for: #{ filter . inspect } "
146145 return { }
0 commit comments