(maint) Add ruby-augeas to Gemfile and Travis for more test coverage
(#23141) Add OpenBSD to the exclusion list for 'remounts' in mount type
On systems without "-o remount", use "-o update" except for AIX.
(#21869) Fix recursion in cert expiration check

During every authenticated request, the expiration date of the involved
certificates is checked. However, if the localhost cert is loaded when the CA
cert is not present an authenticated request will be initiated to download the
CA cert. This triggers another expiration check for authenticated requests,
which loads the localhost cert, which initiates another authenticated request
to download the CA cert... and so on until stack space is exhausted.

This patch skips the expiration check for the localhost cert if the CA cert is
missing.
Fix small typo
(maint) Add f20 to default mocks
(#23373) Update acceptance test to use config set

This is the first, simple case of using a `config set` subcommand to
manipulate the puppet.conf file.
(Maint) Allow specifying tests to run to rake task
(#23373) Allow basic control of puppet.conf

This provides a new action on the puppet config subcommand to allow
setting configuration values in the puppet.conf file. This implemenation
does not understand sections and so will simply change the first
instance of the configuration parameter that it is trying to change.
(#23373) Remove duplicate config file parsers

This merges together the two concrete parsers for the puppet config
file. The transformation into the section groups is now done as a second
pass that works on the individual line objects. In doing so it became
clear that the error reporting was supposed to be issuing line numbers,
but was instead outputing the entire line that was wrong. This also
fixes up that mistake.
(#23373) Pull apart ConfigFile and IniFile

The ConfigFile was getting muddled and large. This pulls out the new
file manipulation code into IniFile and has ConfigFile use that.
Merge remote-tracking branch 'Sharpie/21869-fix-ssl-recursion'

* Sharpie/21869-fix-ssl-recursion:
  (#21869) Fix recursion in cert expiration check
(#23373) Fix line number tracking for settings config

Ensure we incremenet line count when parsing an ini_file, and tests that
we are correctly tracking line count in multi line config errors.
(maint) Move require pops_bridge to pops.rb

The requirement of pops_bridge was made from ast.rb which caused
rgen to be a hard requirement.
This moves the require of pops_bridge to pops.rb.
(pup-954) Correct flaws in the Pattern Type implementation

* it used AND semantics instead of OR
* it did not accept a Pattern or Regexp as pattern parameter
* it was not assignable by an Enum with matching strings
(maint) Fix type calculations for Variant

Type calculations for variant were wrong (and one of the test
where also wrong).

This corrects the logic; when combining two variants, does types that
are assignable to one in the other are not included (the more general
"shadows" the more specific). Also, when calculating assignability
involving the Data type, a compatible variant must be considered equal;
a Data type is after all just a pre-packaged variant.
Merge pull request #2125 from melissaanne/ticket/stable/re-597-add-f20

(maint) Add f20 to default mocks
(#23373) Always open config so we are reading from the beginning

Not all operating systems start reading from the same position with 'a+'
when opening the file.  This ensures that we create the file with
default permissions, and begin reading from the first line.

We also make some acceptance changes for testing puppet config set, and
remove an acceptance test which was of dubious value.
Merge branch 'feature/master/23373-manipulate-puppet-conf-ignore-sections'
(pup-954) Fix issues with typesystem's handling of inference.

This adds additional inference methods:
* infer_generic - a non instance specific result
* infer_set - a non reducing/combining inference
* generalize! - changes instance specific to generic

This makes it possible to evaluate expressions like:
[1,a] =~ Array[Variant[Integer, String]]

This failed previously as the result was that Array[Literal] is
not assignable to either of the two more specific types.