(#21260) Add Cumulus Linux OS detection support
collapsed in a parsable symbol
Per pull request #453, don't match an array when a single OS string is matched
liberal regex
Spec for Cumulus Linux
Per Adrien feedback, an explicit check and return value
Merge pull request #1 from sergeyhush/master

Cumulus Linux RSpec additions
preserve agressive regex to match other setcodes, also explicit variable
(maint) Refactor hpux_spec.rb to reduce test redundancy

Prior to this commit tests for IP facts had significant duplication making it difficult to maintain in the event fixtures change or version support is added or dropped.

This commit consolidates the common features of the tests, making it easier to identify where maintenance should occur as fixtures change.
fix use C as default locale.

Currently facter sets only LANG environment variable, this does not
work on systems that have LC_ALL configured, because LC_ALL
have higher priority than LANG variable.

So the correct procedure is to configure LC_ALL=C instead of LANG=C.
change resolution_spec to test LC_ALL locale environment  var.
should configure LANG and LC_ALL.

refer to the pull request:
https://github.com/puppetlabs/facter/pull/497
Maint: Don't output "No facts loaded from" during tests

Previously, running `bundle exec rspec spec/unit/memory_spec.rb` would
output the warning "No facts loaded from ...". The reason was because
the memorytotal fact is defined in a file whose name doesn't match,
and the code that forces facter to load the memory facts was within an
inner describe block.

See #7670 and commit 2255abee7b for more information about facter's
quirky loading behavior.

This commit just moves the `load(:memory)` before each to the
outermost describe block. This ensures that all of the memory-derived
facts are "preloaded" so facter doesn't print a warning that it can't
find them.
Merge remote-tracking branch 'upstream/stable'

* upstream/stable:
  Maint: Don't output "No facts loaded from" during tests
Maint: Don't load dynamic facts prior to them being added

Previously, running `rspec spec/unit/util/ip_spec.rb` would generate
`No facts loaded from` messages, because the `when_interfaces_facts_...`
method would try to load the interface-specific facts (eth0_mtu) before
the parent `interfaces` fact had created them.

This commit changes the method to evaluate the parent `interfaces` fact
instead, which results in the dynamic facts being evaluated. It also
refactors the test to not stub the private `parse!` method of the class
we are trying to test. Instead we stub the IP subclass delegate instead.
Maint: Clear memory facts now that they are loaded earlier

The previous commit moved the preloading of memory related facts to the
outermost describe block. When the inner describe block tried to preload
the swapencrypted fact, it would fail on non-Darwin systems, because the
stubs where never evaluated.

This commit clears the facts in the inner describe block as is done for
every other platform.
Merge remote-tracking branch 'upstream/stable'

* upstream/stable:
  Maint: Clear memory facts now that they are loaded earlier
(#21738) Revert "(#2157) Remove support for executable external facts on Windows"

This reverts commit 008cc6cdf79df1589c060e2a088caffc9cf6da77.

Conflicts:
	lib/facter/util/directory_loader.rb
	lib/facter/util/parser.rb
(#21738) Add .cmd / Update PowerShell parser

This updates the PowerShell parser to add a switch for the Bypass execution
policy which means that the execution policy will not need to be set
prior to running facter. This also adds some switches (NoProfile,
NoLogo, NonInteractive) that speed up the execution of external powershell
facts.

This also adds the extension .cmd as a valid file extension as part of the
ScriptParser. This functions in the same way as .bat.
Add Facter::Util::POSIX for a consistent way of dealing with sysctl(7).