rodjek / rspec-puppet

RSpec tests for your Puppet manifests
http://rspec-puppet.com
MIT License
364 stars 203 forks source link

ffi windows test running on linux #682

Open cdenneen opened 6 years ago

cdenneen commented 6 years ago

Last week was this error:

Failures:

  1) role::example_win on windows-2012 R2-x64 should contain Class[role::example_win]
     Failure/Error: require 'ffi'

     Puppet::PreformattedError:
       Evaluation Error: Error while evaluating a Resource Statement, Evaluation Error: Error while evaluating a Type-Name, Could not autoload puppet/type/registry_value: Could not autoload puppet/provider/registry_value/registry: cannot load such file -- ffi at /Users/cdenneen/src/gitlab/controltemplate-puppet/spec/fixtures/modules/registry/manifests/value.pp:66:3 at /Users/cdenneen/src/gitlab/controltemplate-puppet/spec/fixtures/modules/profile_base/manifests/windows/security.pp:6 on node

I didn't happen to grab the bundle list but this week slightly different error (same idea it seems)

ffi_lib instead...

  1) role::example_win on windows-2012 R2-x64 should contain Class[role::example_win]
     Failure/Error: ffi_lib :advapi32

     Puppet::PreformattedError:
       Evaluation Error: Error while evaluating a Resource Statement, Evaluation Error: Error while evaluating a Type-Name, Could not autoload puppet/type/registry_value: Could not autoload puppet/provider/registry_value/registry: no implicit conversion of Symbol into String.
       Could not open library 'libadvapi32.dylib': dlopen(libadvapi32.dylib, 5): image not found at /Users/cdenneen/work/controltemplate-puppet/spec/fixtures/modules/registry/manifests/value.pp:66:3 at /Users/cdenneen/work/controltemplate-puppet/spec/fixtures/modules/profile_base/manifests/windows/security.pp:6 on node .ap.org
     # ./.bundle/gems/ffi-1.9.23/lib/ffi/library.rb:147:in `block in ffi_lib'
     # ./.bundle/gems/ffi-1.9.23/lib/ffi/library.rb:100:in `map'
     # ./.bundle/gems/ffi-1.9.23/lib/ffi/library.rb:100:in `ffi_lib'
     # ./spec/fixtures/modules/registry/lib/puppet/provider/registry_value/registry.rb:229:in `block in <top (required)>'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/util/classgen.rb:136:in `class_eval'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/util/classgen.rb:136:in `genthing'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/util/classgen.rb:36:in `genclass'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/type.rb:1860:in `provide'
     # ./spec/fixtures/modules/registry/lib/puppet/provider/registry_value/registry.rb:10:in `<top (required)>'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/util/autoload.rb:68:in `load'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/util/autoload.rb:68:in `load_file'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/util/autoload.rb:83:in `block in loadall'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/util/autoload.rb:81:in `each'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/util/autoload.rb:81:in `loadall'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/util/autoload.rb:208:in `loadall'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/metatype/manager.rb:126:in `newtype'
     # ./spec/fixtures/modules/registry/lib/puppet/type/registry_value.rb:9:in `<top (required)>'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/util/autoload.rb:68:in `load'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/util/autoload.rb:68:in `load_file'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/util/autoload.rb:194:in `load'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/metatype/manager.rb:171:in `type'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/pops/loader/runtime3_type_loader.rb:31:in `find'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/pops/loader/base_loader.rb:151:in `internal_load'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/pops/loader/base_loader.rb:32:in `load_typed'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/pops/loader/base_loader.rb:143:in `internal_load'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/pops/loader/base_loader.rb:32:in `load_typed'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/pops/loader/base_loader.rb:143:in `internal_load'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/pops/loader/base_loader.rb:32:in `load_typed'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/pops/loader/base_loader.rb:143:in `internal_load'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/pops/loader/base_loader.rb:32:in `load_typed'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/pops/loader/loader.rb:53:in `load'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/pops/types/type_parser.rb:194:in `interpret_QualifiedReference'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/pops/visitor.rb:69:in `visit_this_1'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/pops/types/type_parser.rb:52:in `interpret'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/pops/evaluator/evaluator_impl.rb:312:in `eval_QualifiedReference'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/pops/visitor.rb:69:in `visit_this_1'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/pops/evaluator/evaluator_impl.rb:82:in `evaluate'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/pops/evaluator/evaluator_impl.rb:870:in `eval_ResourceDefaultsExpression'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/pops/visitor.rb:69:in `visit_this_1'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/pops/evaluator/evaluator_impl.rb:82:in `evaluate'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/pops/evaluator/evaluator_impl.rb:638:in `block in eval_BlockExpression'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/pops/evaluator/evaluator_impl.rb:638:in `each'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/pops/evaluator/evaluator_impl.rb:638:in `reduce'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/pops/evaluator/evaluator_impl.rb:638:in `eval_BlockExpression'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/pops/visitor.rb:69:in `visit_this_1'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/pops/evaluator/evaluator_impl.rb:82:in `evaluate'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/pops/parser/evaluating_parser.rb:63:in `evaluate'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/parser/ast/pops_bridge.rb:32:in `evaluate'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/parser/ast/pops_bridge.rb:72:in `block (2 levels) in evaluate'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/parser/ast/pops_bridge.rb:71:in `catch'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/parser/ast/pops_bridge.rb:71:in `block in evaluate'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/parser/ast/pops_bridge.rb:70:in `catch'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/parser/ast/pops_bridge.rb:70:in `evaluate'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/parser/ast.rb:31:in `safeevaluate'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/resource/type.rb:184:in `evaluate_code'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/parser/resource.rb:81:in `block in evaluate'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/util/profiler/around_profiler.rb:58:in `profile'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/util/profiler.rb:51:in `profile'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/parser/resource.rb:73:in `evaluate'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/parser/compiler.rb:587:in `block (3 levels) in evaluate_definitions'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/parser/compiler.rb:585:in `each'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/parser/compiler.rb:585:in `block (2 levels) in evaluate_definitions'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/util/profiler/around_profiler.rb:58:in `profile'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/util/profiler.rb:51:in `profile'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/parser/compiler.rb:584:in `block in evaluate_definitions'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/util/errors.rb:64:in `exceptwrap'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/parser/compiler.rb:583:in `evaluate_definitions'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/parser/compiler.rb:616:in `block (2 levels) in evaluate_generators'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/util/profiler/around_profiler.rb:58:in `profile'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/util/profiler.rb:51:in `profile'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/parser/compiler.rb:613:in `block in evaluate_generators'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/parser/compiler.rb:610:in `loop'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/parser/compiler.rb:610:in `evaluate_generators'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/parser/compiler.rb:191:in `block (2 levels) in compile'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/util/profiler/around_profiler.rb:58:in `profile'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/util/profiler.rb:51:in `profile'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/parser/compiler.rb:191:in `block in compile'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/context.rb:65:in `override'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet.rb:306:in `override'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/parser/compiler.rb:166:in `compile'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/parser/compiler.rb:33:in `compile'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/indirector/catalog/compiler.rb:269:in `block (2 levels) in compile'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/util/profiler/around_profiler.rb:58:in `profile'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/util/profiler.rb:51:in `profile'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/indirector/catalog/compiler.rb:267:in `block in compile'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/util.rb:224:in `block in benchmark'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/util.rb:223:in `benchmark'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/indirector/catalog/compiler.rb:265:in `compile'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/indirector/catalog/compiler.rb:55:in `find'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/indirector/indirection.rb:194:in `find'
     # ./.bundle/gems/rspec-puppet-2.6.11/lib/rspec-puppet/adapters.rb:83:in `catalog'
     # ./.bundle/gems/rspec-puppet-2.6.11/lib/rspec-puppet/adapters.rb:162:in `catalog'
     # ./.bundle/gems/rspec-puppet-2.6.11/lib/rspec-puppet/support.rb:407:in `build_catalog_without_cache'
     # ./.bundle/gems/rspec-puppet-2.6.11/lib/rspec-puppet/support.rb:418:in `block in build_catalog'
     # ./.bundle/gems/rspec-puppet-2.6.11/lib/rspec-puppet/cache.rb:17:in `call'
     # ./.bundle/gems/rspec-puppet-2.6.11/lib/rspec-puppet/cache.rb:17:in `get'
     # ./.bundle/gems/rspec-puppet-2.6.11/lib/rspec-puppet/support.rb:417:in `build_catalog'
     # ./.bundle/gems/rspec-puppet-2.6.11/lib/rspec-puppet/support.rb:88:in `block in load_catalogue'
     # ./.bundle/gems/rspec-puppet-2.6.11/lib/rspec-puppet/support.rb:368:in `with_vardir'
     # ./.bundle/gems/rspec-puppet-2.6.11/lib/rspec-puppet/support.rb:81:in `load_catalogue'
     # ./.bundle/gems/rspec-puppet-2.6.11/lib/rspec-puppet/example/class_example_group.rb:7:in `catalogue'
     # ./.bundle/gems/rspec-puppet-2.6.11/lib/rspec-puppet/support.rb:10:in `block in subject'
     # ./.bundle/gems/rspec-puppet-2.6.11/lib/rspec-puppet/matchers/create_generic.rb:84:in `call'
     # ./.bundle/gems/rspec-puppet-2.6.11/lib/rspec-puppet/matchers/create_generic.rb:84:in `matches?'
     # ./spec/classes/role/example_win_spec.rb:22:in `block (5 levels) in <top (required)>'
     # ------------------
     # --- Caused by: ---
     # LoadError:
     #   no implicit conversion of Symbol into String.
     #   Could not open library 'libadvapi32.dylib': dlopen(libadvapi32.dylib, 5): image not found
     #   ./.bundle/gems/ffi-1.9.23/lib/ffi/library.rb:147:in `block in ffi_lib'

new bundle list

work/controltemplate-puppet - [modulesync●] » bundle list
Gems included by the bundle:
  * CFPropertyList (2.3.6)
  * addressable (2.4.0)
  * ansi (1.5.0)
  * ast (2.4.0)
  * aws-sdk-v1 (1.67.0)
  * backports (3.11.3)
  * beaker (3.34.0)
  * beaker-abs (0.5.0)
  * beaker-answers (0.23.0)
  * beaker-aws (0.4.0)
  * beaker-docker (0.3.3)
  * beaker-google (0.1.0)
  * beaker-hiera (0.1.1)
  * beaker-hostgenerator (1.1.12)
  * beaker-i18n_helper (1.1.0)
  * beaker-module_install_helper (0.1.7)
  * beaker-openstack (0.2.0)
  * beaker-pe (1.40.4)
  * beaker-puppet (0.13.6)
  * beaker-puppet_install_helper (0.9.2)
  * beaker-rspec (6.2.3)
  * beaker-task_helper (1.4.0)
  * beaker-vagrant (0.4.0)
  * beaker-vcloud (0.2.0)
  * beaker-vmpooler (1.2.0)
  * beaker-vmware (0.2.0)
  * builder (3.2.3)
  * bundler (1.16.1)
  * byebug (9.0.6)
  * childprocess (0.6.3)
  * coderay (1.1.2)
  * declarative (0.0.10)
  * declarative-option (0.1.0)
  * deep_merge (1.2.1)
  * diff-lcs (1.3)
  * docile (1.3.0)
  * docker-api (1.34.2)
  * domain_name (0.5.20180417)
  * erubis (2.7.0)
  * ethon (0.11.0)
  * excon (0.62.0)
  * facter (2.5.1)
  * facterdb (0.5.2)
  * faraday (0.15.0)
  * faraday_middleware (0.12.2)
  * fast_gettext (1.1.2)
  * ffi (1.9.23)
  * fission (0.5.0)
  * fog-core (1.45.0)
  * fog-json (1.0.2)
  * fog-openstack (0.1.25)
  * formatador (0.2.5)
  * gettext (3.2.9)
  * gettext-setup (0.30)
  * gh (0.15.1)
  * google-api-client (0.10.3)
  * googleauth (0.6.2)
  * gssapi (1.2.0)
  * gyoku (1.3.1)
  * hiera (3.4.3)
  * highline (1.7.10)
  * hocon (1.2.5)
  * http-cookie (1.0.3)
  * httpclient (2.8.3)
  * hurley (0.2)
  * in-parallel (0.1.17)
  * inifile (3.0.0)
  * iniparse (1.4.4)
  * ipaddress (0.8.3)
  * jgrep (1.5.0)
  * json (1.8.1)
  * json-schema (2.8.0)
  * json_pure (1.8.6)
  * jwt (2.1.0)
  * launchy (2.4.3)
  * little-plugger (1.1.4)
  * locale (2.1.2)
  * logging (2.2.2)
  * master_manipulator (2.1.1)
  * mcollective-client (2.12.1)
  * memoist (0.16.0)
  * metaclass (0.0.4)
  * metadata-json-lint (2.1.0)
  * method_source (0.8.2)
  * mime-types (2.99.3)
  * mini_portile2 (2.3.0)
  * minitar (0.6.1)
  * minitest (5.11.3)
  * mocha (1.1.0)
  * multi_json (1.13.1)
  * multipart-post (2.0.0)
  * net-http-persistent (2.9.4)
  * net-http-pipeline (1.0.1)
  * net-scp (1.2.1)
  * net-ssh (4.2.0)
  * net-telnet (0.1.1)
  * netrc (0.11.0)
  * nokogiri (1.8.2)
  * nori (2.6.0)
  * oga (2.15)
  * open_uri_redirections (0.2.1)
  * os (0.9.6)
  * overcommit (0.39.1)
  * parallel (1.12.1)
  * parallel_tests (2.14.2)
  * parser (2.5.1.0)
  * powerpack (0.1.1)
  * pry (0.10.4)
  * pry-byebug (3.4.3)
  * puppet (4.10.10)
  * puppet-blacksmith (3.4.0)
  * puppet-lint (2.3.5)
  * puppet-module-posix-default-r2.1 (0.3.2)
  * puppet-module-posix-dev-r2.1 (0.3.2)
  * puppet-module-posix-system-r2.1 (0.3.2)
  * puppet-syntax (2.4.1)
  * puppet_pot_generator (1.0.1)
  * puppetclassify (0.1.7)
  * puppetlabs_spec_helper (2.7.0)
  * pusher-client (0.6.2)
  * rainbow (2.2.2)
  * rake (12.3.1)
  * rb-readline (0.5.5)
  * rbvmomi (1.12.0)
  * redcarpet (3.4.0)
  * representable (3.0.4)
  * require_all (1.3.3)
  * rest-client (1.8.0)
  * retriable (3.1.1)
  * rspec (3.7.0)
  * rspec-core (3.7.1)
  * rspec-expectations (3.7.0)
  * rspec-its (1.2.0)
  * rspec-mocks (3.7.0)
  * rspec-puppet (2.6.11)
  * rspec-puppet-facts (1.9.0)
  * rspec-support (3.7.1)
  * rspec_junit_formatter (0.3.0)
  * rsync (1.0.9)
  * rubocop (0.49.1)
  * rubocop-i18n (1.2.0)
  * rubocop-rspec (1.16.0)
  * ruby-ll (2.1.2)
  * ruby-progressbar (1.9.0)
  * rubyntlm (0.6.2)
  * serverspec (2.39.0)
  * sfl (2.3)
  * signet (0.8.1)
  * simplecov (0.16.1)
  * simplecov-html (0.10.2)
  * slop (3.6.0)
  * spdx-licenses (1.1.0)
  * specinfra (2.67.3)
  * stomp (1.4.4)
  * stringify-hash (0.0.2)
  * systemu (2.6.5)
  * text (1.3.1)
  * thor (0.20.0)
  * travis (1.8.8)
  * travis-lint (2.0.0)
  * trollop (2.1.2)
  * typhoeus (0.8.0)
  * uber (0.1.0)
  * unf (0.1.4)
  * unf_ext (0.0.7.5)
  * unicode-display_width (1.3.2)
  * websocket (1.2.5)
  * winrm (2.2.3)
cdenneen commented 6 years ago

Was looking to find out if anyone can confirm or know how to fix this. I've tried with newer testing trying to re-align with latest PDK.

PUPPET_GEM_VERSION=4.10.10

Failures:

  1) role::example_win on windows-2012 R2-x64 should contain Class[role::example_win]
     Failure/Error: require 'ffi'

     Puppet::PreformattedError:
       Evaluation Error: Error while evaluating a Resource Statement, Evaluation Error: Error while evaluating a Type-Name, Could not autoload puppet/type/registry_value: Could not autoload puppet/provider/registry_value/registry: cannot load such file -- ffi at /Users/cdenneen/src/gitlab/puppet/modulesync_configs/modules/controltemplate-puppet/spec/fixtures/modules/registry/manifests/value.pp:66:3 at /Users/cdenneen/src/gitlab/puppet/modulesync_configs/modules/controltemplate-puppet/spec/fixtures/modules/profile_base/manifests/windows/security.pp:6 on node .ap.org
     # ./.bundle/gems/rspec-puppet-2.6.11/lib/rspec-puppet/monkey_patches.rb:319:in `require'
     # ./.bundle/gems/rspec-puppet-2.6.11/lib/rspec-puppet/monkey_patches.rb:319:in `require'
     # ./spec/fixtures/modules/registry/lib/puppet/provider/registry_value/registry.rb:218:in `block in <top (required)>'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/util/classgen.rb:136:in `class_eval'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/util/classgen.rb:136:in `genthing'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/util/classgen.rb:36:in `genclass'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/type.rb:1860:in `provide'
     # ./spec/fixtures/modules/registry/lib/puppet/provider/registry_value/registry.rb:10:in `<top (required)>'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/util/autoload.rb:68:in `load'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/util/autoload.rb:68:in `load_file'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/util/autoload.rb:83:in `block in loadall'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/util/autoload.rb:81:in `each'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/util/autoload.rb:81:in `loadall'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/util/autoload.rb:208:in `loadall'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/metatype/manager.rb:126:in `newtype'
     # ./spec/fixtures/modules/registry/lib/puppet/type/registry_value.rb:9:in `<top (required)>'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/util/autoload.rb:68:in `load'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/util/autoload.rb:68:in `load_file'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/util/autoload.rb:194:in `load'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/metatype/manager.rb:171:in `type'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/pops/loader/runtime3_type_loader.rb:31:in `find'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/pops/loader/base_loader.rb:151:in `internal_load'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/pops/loader/base_loader.rb:32:in `load_typed'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/pops/loader/base_loader.rb:143:in `internal_load'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/pops/loader/base_loader.rb:32:in `load_typed'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/pops/loader/base_loader.rb:143:in `internal_load'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/pops/loader/base_loader.rb:32:in `load_typed'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/pops/loader/base_loader.rb:143:in `internal_load'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/pops/loader/base_loader.rb:32:in `load_typed'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/pops/loader/loader.rb:53:in `load'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/pops/types/type_parser.rb:194:in `interpret_QualifiedReference'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/pops/visitor.rb:69:in `visit_this_1'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/pops/types/type_parser.rb:52:in `interpret'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/pops/evaluator/evaluator_impl.rb:312:in `eval_QualifiedReference'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/pops/visitor.rb:69:in `visit_this_1'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/pops/evaluator/evaluator_impl.rb:82:in `evaluate'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/pops/evaluator/evaluator_impl.rb:870:in `eval_ResourceDefaultsExpression'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/pops/visitor.rb:69:in `visit_this_1'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/pops/evaluator/evaluator_impl.rb:82:in `evaluate'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/pops/evaluator/evaluator_impl.rb:638:in `block in eval_BlockExpression'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/pops/evaluator/evaluator_impl.rb:638:in `each'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/pops/evaluator/evaluator_impl.rb:638:in `reduce'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/pops/evaluator/evaluator_impl.rb:638:in `eval_BlockExpression'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/pops/visitor.rb:69:in `visit_this_1'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/pops/evaluator/evaluator_impl.rb:82:in `evaluate'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/pops/parser/evaluating_parser.rb:63:in `evaluate'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/parser/ast/pops_bridge.rb:32:in `evaluate'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/parser/ast/pops_bridge.rb:72:in `block (2 levels) in evaluate'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/parser/ast/pops_bridge.rb:71:in `catch'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/parser/ast/pops_bridge.rb:71:in `block in evaluate'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/parser/ast/pops_bridge.rb:70:in `catch'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/parser/ast/pops_bridge.rb:70:in `evaluate'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/parser/ast.rb:31:in `safeevaluate'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/resource/type.rb:184:in `evaluate_code'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/parser/resource.rb:81:in `block in evaluate'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/util/profiler/around_profiler.rb:58:in `profile'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/util/profiler.rb:51:in `profile'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/parser/resource.rb:73:in `evaluate'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/parser/compiler.rb:587:in `block (3 levels) in evaluate_definitions'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/parser/compiler.rb:585:in `each'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/parser/compiler.rb:585:in `block (2 levels) in evaluate_definitions'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/util/profiler/around_profiler.rb:58:in `profile'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/util/profiler.rb:51:in `profile'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/parser/compiler.rb:584:in `block in evaluate_definitions'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/util/errors.rb:64:in `exceptwrap'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/parser/compiler.rb:583:in `evaluate_definitions'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/parser/compiler.rb:616:in `block (2 levels) in evaluate_generators'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/util/profiler/around_profiler.rb:58:in `profile'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/util/profiler.rb:51:in `profile'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/parser/compiler.rb:613:in `block in evaluate_generators'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/parser/compiler.rb:610:in `loop'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/parser/compiler.rb:610:in `evaluate_generators'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/parser/compiler.rb:191:in `block (2 levels) in compile'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/util/profiler/around_profiler.rb:58:in `profile'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/util/profiler.rb:51:in `profile'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/parser/compiler.rb:191:in `block in compile'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/context.rb:65:in `override'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet.rb:306:in `override'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/parser/compiler.rb:166:in `compile'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/parser/compiler.rb:33:in `compile'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/indirector/catalog/compiler.rb:269:in `block (2 levels) in compile'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/util/profiler/around_profiler.rb:58:in `profile'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/util/profiler.rb:51:in `profile'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/indirector/catalog/compiler.rb:267:in `block in compile'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/util.rb:224:in `block in benchmark'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/util.rb:223:in `benchmark'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/indirector/catalog/compiler.rb:265:in `compile'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/indirector/catalog/compiler.rb:55:in `find'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/indirector/indirection.rb:194:in `find'
     # ./.bundle/gems/rspec-puppet-2.6.11/lib/rspec-puppet/adapters.rb:83:in `catalog'
     # ./.bundle/gems/rspec-puppet-2.6.11/lib/rspec-puppet/adapters.rb:162:in `catalog'
     # ./.bundle/gems/rspec-puppet-2.6.11/lib/rspec-puppet/support.rb:407:in `build_catalog_without_cache'
     # ./.bundle/gems/rspec-puppet-2.6.11/lib/rspec-puppet/support.rb:418:in `block in build_catalog'
     # ./.bundle/gems/rspec-puppet-2.6.11/lib/rspec-puppet/cache.rb:17:in `call'
     # ./.bundle/gems/rspec-puppet-2.6.11/lib/rspec-puppet/cache.rb:17:in `get'
     # ./.bundle/gems/rspec-puppet-2.6.11/lib/rspec-puppet/support.rb:417:in `build_catalog'
     # ./.bundle/gems/rspec-puppet-2.6.11/lib/rspec-puppet/support.rb:88:in `block in load_catalogue'
     # ./.bundle/gems/rspec-puppet-2.6.11/lib/rspec-puppet/support.rb:368:in `with_vardir'
     # ./.bundle/gems/rspec-puppet-2.6.11/lib/rspec-puppet/support.rb:81:in `load_catalogue'
     # ./.bundle/gems/rspec-puppet-2.6.11/lib/rspec-puppet/example/class_example_group.rb:7:in `catalogue'
     # ./.bundle/gems/rspec-puppet-2.6.11/lib/rspec-puppet/support.rb:10:in `block in subject'
     # ./.bundle/gems/rspec-puppet-2.6.11/lib/rspec-puppet/matchers/create_generic.rb:84:in `call'
     # ./.bundle/gems/rspec-puppet-2.6.11/lib/rspec-puppet/matchers/create_generic.rb:84:in `matches?'
     # ./spec/classes/role/example_win_spec.rb:23:in `block (5 levels) in <top (required)>'
     # ------------------
     # --- Caused by: ---
     # LoadError:
     #   cannot load such file -- ffi
     #   ./.bundle/gems/rspec-puppet-2.6.11/lib/rspec-puppet/monkey_patches.rb:319:in `require'

Finished in 4.16 seconds (files took 4.45 seconds to load)
6 examples, 1 failure

Failed examples:

rspec './spec/classes/role/example_win_spec.rb[1:1:1]' # role::example_win on windows-2012 R2-x64 should contain Class[role::example_win]

bundle list

Gems included by the bundle:
  * addressable (2.5.2)
  * ast (2.4.0)
  * bundler (1.16.1)
  * coderay (1.1.2)
  * diff-lcs (1.3)
  * docile (1.3.0)
  * domain_name (0.5.20180417)
  * facter (2.5.1)
  * facterdb (0.5.2)
  * fast_gettext (1.1.2)
  * gettext (3.2.9)
  * gettext-setup (0.30)
  * hiera (3.4.3)
  * http-cookie (1.0.3)
  * jgrep (1.5.0)
  * json (1.8.1)
  * json-schema (2.8.0)
  * json_pure (1.8.6)
  * locale (2.1.2)
  * mcollective-client (2.12.1)
  * metaclass (0.0.4)
  * metadata-json-lint (2.1.0)
  * method_source (0.8.2)
  * mime-types (3.1)
  * mime-types-data (3.2016.0521)
  * mocha (1.1.0)
  * net-scp (1.2.1)
  * net-ssh (4.2.0)
  * net-telnet (0.1.1)
  * netrc (0.11.0)
  * parallel (1.12.1)
  * parallel_tests (2.14.2)
  * parser (2.5.1.0)
  * powerpack (0.1.1)
  * pry (0.10.4)
  * public_suffix (3.0.2)
  * puppet (4.10.10)
  * puppet-blacksmith (4.0.1)
  * puppet-lint (2.3.5)
  * puppet-module-posix-default-r2.1 (0.3.2)
  * puppet-module-posix-dev-r2.1 (0.3.2)
  * puppet-syntax (2.4.1)
  * puppet_pot_generator (1.0.1)
  * puppetclassify (0.1.7)
  * puppetlabs_spec_helper (2.7.0)
  * rainbow (2.2.2)
  * rake (12.3.1)
  * rest-client (2.0.2)
  * rspec (3.7.0)
  * rspec-core (3.7.1)
  * rspec-expectations (3.7.0)
  * rspec-mocks (3.7.0)
  * rspec-puppet (2.6.11)
  * rspec-puppet-facts (1.9.0)
  * rspec-support (3.7.1)
  * rspec_junit_formatter (0.3.0)
  * rubocop (0.49.1)
  * rubocop-i18n (1.2.0)
  * rubocop-rspec (1.16.0)
  * ruby-progressbar (1.9.0)
  * sfl (2.3)
  * simplecov (0.16.1)
  * simplecov-html (0.10.2)
  * slop (3.6.0)
  * spdx-licenses (1.1.0)
  * specinfra (2.67.3)
  * stomp (1.4.4)
  * systemu (2.6.5)
  * text (1.3.1)
  * unf (0.1.4)
  * unf_ext (0.0.7.5)
  * unicode-display_width (1.3.2)

PUPPET_GEM_VERSION=5.5.1

Failures:

  1) role::example_win on windows-2012 R2-x64 should contain Class[role::example_win]
     Failure/Error: require 'ffi'

     Puppet::PreformattedError:
       Evaluation Error: Error while evaluating a Resource Statement, Evaluation Error: Error while evaluating a Type-Name, Could not autoload puppet/type/registry_value: Could not autoload puppet/provider/registry_value/registry: cannot load such file -- ffi (file: /Users/cdenneen/src/gitlab/puppet/modulesync_configs/modules/controltemplate-puppet/spec/fixtures/modules/registry/manifests/value.pp, line: 66, column: 3) (file: /Users/cdenneen/src/gitlab/puppet/modulesync_configs/modules/controltemplate-puppet/spec/fixtures/modules/profile_base/manifests/windows/security.pp, line: 6) on node .ap.org
     # ./.bundle/gems/rspec-puppet-2.6.11/lib/rspec-puppet/monkey_patches.rb:319:in `require'
     # ./.bundle/gems/rspec-puppet-2.6.11/lib/rspec-puppet/monkey_patches.rb:319:in `require'
     # ./spec/fixtures/modules/registry/lib/puppet/provider/registry_value/registry.rb:218:in `block in <top (required)>'
     # ./.bundle/gems/puppet-5.5.1/lib/puppet/util/classgen.rb:136:in `class_eval'
     # ./.bundle/gems/puppet-5.5.1/lib/puppet/util/classgen.rb:136:in `genthing'
     # ./.bundle/gems/puppet-5.5.1/lib/puppet/util/classgen.rb:36:in `genclass'
     # ./.bundle/gems/puppet-5.5.1/lib/puppet/type.rb:1866:in `provide'
     # ./spec/fixtures/modules/registry/lib/puppet/provider/registry_value/registry.rb:10:in `<top (required)>'
     # ./.bundle/gems/puppet-5.5.1/lib/puppet/util/autoload.rb:68:in `load'
     # ./.bundle/gems/puppet-5.5.1/lib/puppet/util/autoload.rb:68:in `load_file'
     # ./.bundle/gems/puppet-5.5.1/lib/puppet/util/autoload.rb:83:in `block in loadall'
     # ./.bundle/gems/puppet-5.5.1/lib/puppet/util/autoload.rb:81:in `each'
     # ./.bundle/gems/puppet-5.5.1/lib/puppet/util/autoload.rb:81:in `loadall'
     # ./.bundle/gems/puppet-5.5.1/lib/puppet/util/autoload.rb:208:in `loadall'
     # ./.bundle/gems/puppet-5.5.1/lib/puppet/metatype/manager.rb:129:in `newtype'
     # ./spec/fixtures/modules/registry/lib/puppet/type/registry_value.rb:9:in `<top (required)>'
     # ./.bundle/gems/puppet-5.5.1/lib/puppet/util/autoload.rb:68:in `load'
     # ./.bundle/gems/puppet-5.5.1/lib/puppet/util/autoload.rb:68:in `load_file'
     # ./.bundle/gems/puppet-5.5.1/lib/puppet/util/autoload.rb:194:in `load'
     # ./.bundle/gems/puppet-5.5.1/lib/puppet/metatype/manager.rb:174:in `type'
     # ./.bundle/gems/puppet-5.5.1/lib/puppet/pops/loader/runtime3_type_loader.rb:36:in `find'
     # ./.bundle/gems/puppet-5.5.1/lib/puppet/pops/loader/base_loader.rb:161:in `internal_load'
     # ./.bundle/gems/puppet-5.5.1/lib/puppet/pops/loader/base_loader.rb:42:in `load_typed'
     # ./.bundle/gems/puppet-5.5.1/lib/puppet/pops/loader/base_loader.rb:153:in `internal_load'
     # ./.bundle/gems/puppet-5.5.1/lib/puppet/pops/loader/base_loader.rb:42:in `load_typed'
     # ./.bundle/gems/puppet-5.5.1/lib/puppet/pops/loader/base_loader.rb:153:in `internal_load'
     # ./.bundle/gems/puppet-5.5.1/lib/puppet/pops/loader/base_loader.rb:42:in `load_typed'
     # ./.bundle/gems/puppet-5.5.1/lib/puppet/pops/loader/base_loader.rb:153:in `internal_load'
     # ./.bundle/gems/puppet-5.5.1/lib/puppet/pops/loader/base_loader.rb:42:in `load_typed'
     # ./.bundle/gems/puppet-5.5.1/lib/puppet/pops/loader/loader.rb:72:in `load'
     # ./.bundle/gems/puppet-5.5.1/lib/puppet/pops/types/type_parser.rb:284:in `interpret_QualifiedReference'
     # ./.bundle/gems/puppet-5.5.1/lib/puppet/pops/visitor.rb:90:in `visit_this_1'
     # ./.bundle/gems/puppet-5.5.1/lib/puppet/pops/types/type_parser.rb:56:in `interpret'
     # ./.bundle/gems/puppet-5.5.1/lib/puppet/pops/evaluator/evaluator_impl.rb:323:in `eval_QualifiedReference'
     # ./.bundle/gems/puppet-5.5.1/lib/puppet/pops/visitor.rb:90:in `visit_this_1'
     # ./.bundle/gems/puppet-5.5.1/lib/puppet/pops/evaluator/evaluator_impl.rb:81:in `evaluate'
     # ./.bundle/gems/puppet-5.5.1/lib/puppet/pops/evaluator/evaluator_impl.rb:893:in `eval_ResourceDefaultsExpression'
     # ./.bundle/gems/puppet-5.5.1/lib/puppet/pops/visitor.rb:90:in `visit_this_1'
     # ./.bundle/gems/puppet-5.5.1/lib/puppet/pops/evaluator/evaluator_impl.rb:81:in `evaluate'
     # ./.bundle/gems/puppet-5.5.1/lib/puppet/pops/evaluator/evaluator_impl.rb:660:in `block in eval_BlockExpression'
     # ./.bundle/gems/puppet-5.5.1/lib/puppet/pops/evaluator/evaluator_impl.rb:660:in `each'
     # ./.bundle/gems/puppet-5.5.1/lib/puppet/pops/evaluator/evaluator_impl.rb:660:in `reduce'
     # ./.bundle/gems/puppet-5.5.1/lib/puppet/pops/evaluator/evaluator_impl.rb:660:in `eval_BlockExpression'
     # ./.bundle/gems/puppet-5.5.1/lib/puppet/pops/visitor.rb:90:in `visit_this_1'
     # ./.bundle/gems/puppet-5.5.1/lib/puppet/pops/evaluator/evaluator_impl.rb:81:in `evaluate'
     # ./.bundle/gems/puppet-5.5.1/lib/puppet/pops/parser/evaluating_parser.rb:63:in `evaluate'
     # ./.bundle/gems/puppet-5.5.1/lib/puppet/parser/ast/pops_bridge.rb:32:in `evaluate'
     # ./.bundle/gems/puppet-5.5.1/lib/puppet/parser/ast/pops_bridge.rb:72:in `block (2 levels) in evaluate'
     # ./.bundle/gems/puppet-5.5.1/lib/puppet/parser/ast/pops_bridge.rb:71:in `catch'
     # ./.bundle/gems/puppet-5.5.1/lib/puppet/parser/ast/pops_bridge.rb:71:in `block in evaluate'
     # ./.bundle/gems/puppet-5.5.1/lib/puppet/parser/ast/pops_bridge.rb:70:in `catch'
     # ./.bundle/gems/puppet-5.5.1/lib/puppet/parser/ast/pops_bridge.rb:70:in `evaluate'
     # ./.bundle/gems/puppet-5.5.1/lib/puppet/parser/ast.rb:31:in `safeevaluate'
     # ./.bundle/gems/puppet-5.5.1/lib/puppet/resource/type.rb:136:in `evaluate_code'
     # ./.bundle/gems/puppet-5.5.1/lib/puppet/parser/resource.rb:79:in `block in evaluate'
     # ./.bundle/gems/puppet-5.5.1/lib/puppet/util/profiler/around_profiler.rb:58:in `profile'
     # ./.bundle/gems/puppet-5.5.1/lib/puppet/util/profiler.rb:51:in `profile'
     # ./.bundle/gems/puppet-5.5.1/lib/puppet/parser/resource.rb:71:in `evaluate'
     # ./.bundle/gems/puppet-5.5.1/lib/puppet/parser/compiler.rb:540:in `block (3 levels) in evaluate_definitions'
     # ./.bundle/gems/puppet-5.5.1/lib/puppet/parser/compiler.rb:538:in `each'
     # ./.bundle/gems/puppet-5.5.1/lib/puppet/parser/compiler.rb:538:in `block (2 levels) in evaluate_definitions'
     # ./.bundle/gems/puppet-5.5.1/lib/puppet/util/profiler/around_profiler.rb:58:in `profile'
     # ./.bundle/gems/puppet-5.5.1/lib/puppet/util/profiler.rb:51:in `profile'
     # ./.bundle/gems/puppet-5.5.1/lib/puppet/parser/compiler.rb:537:in `block in evaluate_definitions'
     # ./.bundle/gems/puppet-5.5.1/lib/puppet/util/errors.rb:115:in `exceptwrap'
     # ./.bundle/gems/puppet-5.5.1/lib/puppet/parser/compiler.rb:536:in `evaluate_definitions'
     # ./.bundle/gems/puppet-5.5.1/lib/puppet/parser/compiler.rb:569:in `block (2 levels) in evaluate_generators'
     # ./.bundle/gems/puppet-5.5.1/lib/puppet/util/profiler/around_profiler.rb:58:in `profile'
     # ./.bundle/gems/puppet-5.5.1/lib/puppet/util/profiler.rb:51:in `profile'
     # ./.bundle/gems/puppet-5.5.1/lib/puppet/parser/compiler.rb:566:in `block in evaluate_generators'
     # ./.bundle/gems/puppet-5.5.1/lib/puppet/parser/compiler.rb:563:in `loop'
     # ./.bundle/gems/puppet-5.5.1/lib/puppet/parser/compiler.rb:563:in `evaluate_generators'
     # ./.bundle/gems/puppet-5.5.1/lib/puppet/parser/compiler.rb:179:in `block (2 levels) in compile'
     # ./.bundle/gems/puppet-5.5.1/lib/puppet/util/profiler/around_profiler.rb:58:in `profile'
     # ./.bundle/gems/puppet-5.5.1/lib/puppet/util/profiler.rb:51:in `profile'
     # ./.bundle/gems/puppet-5.5.1/lib/puppet/parser/compiler.rb:179:in `block in compile'
     # ./.bundle/gems/puppet-5.5.1/lib/puppet/context.rb:65:in `override'
     # ./.bundle/gems/puppet-5.5.1/lib/puppet.rb:260:in `override'
     # ./.bundle/gems/puppet-5.5.1/lib/puppet/parser/compiler.rb:155:in `compile'
     # ./.bundle/gems/puppet-5.5.1/lib/puppet/parser/compiler.rb:35:in `compile'
     # ./.bundle/gems/puppet-5.5.1/lib/puppet/indirector/catalog/compiler.rb:305:in `block (2 levels) in compile'
     # ./.bundle/gems/puppet-5.5.1/lib/puppet/util/profiler/around_profiler.rb:58:in `profile'
     # ./.bundle/gems/puppet-5.5.1/lib/puppet/util/profiler.rb:51:in `profile'
     # ./.bundle/gems/puppet-5.5.1/lib/puppet/indirector/catalog/compiler.rb:303:in `block in compile'
     # ./.bundle/gems/puppet-5.5.1/lib/puppet/util.rb:232:in `block in benchmark'
     # ./.bundle/gems/puppet-5.5.1/lib/puppet/util.rb:231:in `benchmark'
     # ./.bundle/gems/puppet-5.5.1/lib/puppet/indirector/catalog/compiler.rb:301:in `compile'
     # ./.bundle/gems/puppet-5.5.1/lib/puppet/indirector/catalog/compiler.rb:54:in `find'
     # ./.bundle/gems/puppet-5.5.1/lib/puppet/indirector/indirection.rb:198:in `find'
     # ./.bundle/gems/rspec-puppet-2.6.11/lib/rspec-puppet/adapters.rb:83:in `catalog'
     # ./.bundle/gems/rspec-puppet-2.6.11/lib/rspec-puppet/adapters.rb:162:in `catalog'
     # ./.bundle/gems/rspec-puppet-2.6.11/lib/rspec-puppet/support.rb:407:in `build_catalog_without_cache'
     # ./.bundle/gems/rspec-puppet-2.6.11/lib/rspec-puppet/support.rb:418:in `block in build_catalog'
     # ./.bundle/gems/rspec-puppet-2.6.11/lib/rspec-puppet/cache.rb:17:in `get'
     # ./.bundle/gems/rspec-puppet-2.6.11/lib/rspec-puppet/support.rb:417:in `build_catalog'
     # ./.bundle/gems/rspec-puppet-2.6.11/lib/rspec-puppet/support.rb:88:in `block in load_catalogue'
     # ./.bundle/gems/rspec-puppet-2.6.11/lib/rspec-puppet/support.rb:368:in `with_vardir'
     # ./.bundle/gems/rspec-puppet-2.6.11/lib/rspec-puppet/support.rb:81:in `load_catalogue'
     # ./.bundle/gems/rspec-puppet-2.6.11/lib/rspec-puppet/example/class_example_group.rb:7:in `catalogue'
     # ./.bundle/gems/rspec-puppet-2.6.11/lib/rspec-puppet/support.rb:10:in `block in subject'
     # ./.bundle/gems/rspec-puppet-2.6.11/lib/rspec-puppet/matchers/create_generic.rb:84:in `matches?'
     # ./spec/classes/role/example_win_spec.rb:23:in `block (5 levels) in <top (required)>'
     # ------------------
     # --- Caused by: ---
     # LoadError:
     #   cannot load such file -- ffi
     #   ./.bundle/gems/rspec-puppet-2.6.11/lib/rspec-puppet/monkey_patches.rb:319:in `require'

Finished in 2.84 seconds (files took 3.9 seconds to load)
6 examples, 1 failure

Failed examples:

rspec './spec/classes/role/example_win_spec.rb[1:1:1]' # role::example_win on windows-2012 R2-x64 should contain Class[role::example_win]

bundle list

Gems included by the bundle:
  * addressable (2.5.2)
  * ast (2.4.0)
  * bundler (1.16.1)
  * coderay (1.1.2)
  * diff-lcs (1.3)
  * docile (1.3.0)
  * domain_name (0.5.20180417)
  * facter (2.5.1)
  * facterdb (0.5.2)
  * fast_gettext (1.1.2)
  * gettext (3.2.9)
  * gettext-setup (0.30)
  * hiera (3.4.3)
  * http-cookie (1.0.3)
  * jgrep (1.5.0)
  * json (1.8.6)
  * json-schema (2.8.0)
  * locale (2.1.2)
  * mcollective-client (2.12.1)
  * metaclass (0.0.4)
  * metadata-json-lint (2.1.0)
  * method_source (0.8.2)
  * mime-types (3.1)
  * mime-types-data (3.2016.0521)
  * mocha (1.1.0)
  * multi_json (1.13.1)
  * net-scp (1.2.1)
  * net-ssh (4.2.0)
  * net-telnet (0.1.1)
  * netrc (0.11.0)
  * parallel (1.12.1)
  * parallel_tests (2.14.2)
  * parser (2.5.1.0)
  * powerpack (0.1.1)
  * pry (0.10.4)
  * public_suffix (3.0.2)
  * puppet (5.5.1)
  * puppet-blacksmith (4.0.1)
  * puppet-lint (2.3.5)
  * puppet-module-posix-default-r2.4 (0.3.2)
  * puppet-module-posix-dev-r2.4 (0.3.2)
  * puppet-syntax (2.4.1)
  * puppet_pot_generator (1.0.1)
  * puppetclassify (0.1.7)
  * puppetlabs_spec_helper (2.7.0)
  * rainbow (2.2.2)
  * rake (12.3.1)
  * rest-client (2.0.2)
  * rspec (3.7.0)
  * rspec-core (3.7.1)
  * rspec-expectations (3.7.0)
  * rspec-mocks (3.7.0)
  * rspec-puppet (2.6.11)
  * rspec-puppet-facts (1.9.0)
  * rspec-support (3.7.1)
  * rspec_junit_formatter (0.3.0)
  * rubocop (0.49.1)
  * rubocop-i18n (1.2.0)
  * rubocop-rspec (1.16.0)
  * ruby-progressbar (1.9.0)
  * sfl (2.3)
  * simplecov (0.16.1)
  * simplecov-html (0.10.2)
  * slop (3.6.0)
  * spdx-licenses (1.1.0)
  * specinfra (2.67.3)
  * stomp (1.4.4)
  * systemu (2.6.5)
  * text (1.3.1)
  * unf (0.1.4)
  * unf_ext (0.0.7.5)
  * unicode-display_width (1.3.2)

cc @rodjek @DavidS

glennsarti commented 6 years ago

I assume this is not on a Windows machine.

Seems that the provider thinks it's on Windows and is therefore safe to load the system DLLs via FFI.

https://github.com/puppetlabs/puppetlabs-registry/blob/69e9688f966ea39d0e79262dac7b8a057feb751c/lib/puppet/provider/registry_value/registry.rb#L217-L232

cdenneen commented 6 years ago

@glennsarti yes It's a linux machine running class that supports CentOS 6, 7 and Windows 2012R2

require 'spec_helper'

describe 'role::example_win' do
  on_supported_os({
    supported_os: [
      {
        'operatingsystem' => 'windows',
        'operatingsystemrelease' => [
          '2012 R2'
        ]
      }
    ],
    facterversion: '3.7'
  }).each do |os, facts|
    context "on #{os}" do
      let(:facts) do
        facts.merge({
          puppetversion: Puppet.version,
          role: 'example'
        })
      end
      %w{role::example_win profile::example profile_base}.each do |puppet_class|
        it { is_expected.to contain_class(puppet_class) }
      end
    end
  end
end
role::example_win
  on windows-2012 R2-x86_64
    should contain Class[role::example_win] (FAILED - 1)
    should contain Class[profile::example]
    should contain Class[profile_base]

Total resources:   1
Touched resources: 1
Resource coverage: 100.00%

Failures:

  1) role::example_win on windows-2012 R2-x86_64 should contain Class[role::example_win]
     Failure/Error: ffi_lib :advapi32

     Puppet::PreformattedError:
       Evaluation Error: Error while evaluating a Resource Statement, Evaluation Error: Error while evaluating a Type-Name, Could not autoload puppet/type/registry_value: Could not autoload puppet/provider/registry_value/registry: no implicit conversion of Symbol into String.
       Could not open library 'libadvapi32.dylib': dlopen(libadvapi32.dylib, 5): image not found at /Users/cdenneen/work/controltemplate-puppet/spec/fixtures/modules/registry/manifests/value.pp:66:3 at /Users/cdenneen/work/controltemplate-puppet/spec/fixtures/modules/profile_base/manifests/windows/security.pp:6 on node

Now if i comment out role::example_win from the class check it just moves the error down:

require 'spec_helper'

describe 'role::example_win' do
  on_supported_os({
    supported_os: [
      {
        'operatingsystem' => 'windows',
        'operatingsystemrelease' => [
          '2012 R2'
        ]
      }
    ],
    facterversion: '3.7'
  }).each do |os, facts|
    context "on #{os}" do
      let(:facts) do
        facts.merge({
          puppetversion: Puppet.version,
          role: 'example'
        })
      end
      # %w{role::example_win profile::example profile_base}.each do |puppet_class|
      %w{profile::example profile_base}.each do |puppet_class|
        it { is_expected.to contain_class(puppet_class) }
      end
    end
  end
end
role::example_win
  on windows-2012 R2-x86_64
    should contain Class[profile::example] (FAILED - 1)
    should contain Class[profile_base]

Total resources:   1
Touched resources: 1
Resource coverage: 100.00%

Failures:

  1) role::example_win on windows-2012 R2-x86_64 should contain Class[profile::example]
     Failure/Error: ffi_lib :advapi32

     Puppet::PreformattedError:
       Evaluation Error: Error while evaluating a Resource Statement, Evaluation Error: Error while evaluating a Type-Name, Could not autoload puppet/type/registry_value: Could not autoload puppet/provider/registry_value/registry: no implicit conversion of Symbol into String.
       Could not open library 'libadvapi32.dylib': dlopen(libadvapi32.dylib, 5): image not found at /Users/cdenneen/work/controltemplate-puppet/spec/fixtures/modules/registry/manifests/value.pp:66:3 at /Users/cdenneen/work/controltemplate-puppet/spec/fixtures/modules/profile_base/manifests/windows/security.pp:6 on node
     # ./.bundle/gems/ffi-1.9.23/lib/ffi/library.rb:147:in `block in ffi_lib'
     # ./.bundle/gems/ffi-1.9.23/lib/ffi/library.rb:100:in `map'
     # ./.bundle/gems/ffi-1.9.23/lib/ffi/library.rb:100:in `ffi_lib'
     # ./spec/fixtures/modules/registry/lib/puppet/provider/registry_value/registry.rb:229:in `block in <top (required)>'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/util/classgen.rb:136:in `class_eval'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/util/classgen.rb:136:in `genthing'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/util/classgen.rb:36:in `genclass'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/type.rb:1860:in `provide'
     # ./spec/fixtures/modules/registry/lib/puppet/provider/registry_value/registry.rb:10:in `<top (required)>'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/util/autoload.rb:68:in `load'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/util/autoload.rb:68:in `load_file'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/util/autoload.rb:83:in `block in loadall'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/util/autoload.rb:81:in `each'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/util/autoload.rb:81:in `loadall'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/util/autoload.rb:208:in `loadall'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/metatype/manager.rb:126:in `newtype'
     # ./spec/fixtures/modules/registry/lib/puppet/type/registry_value.rb:9:in `<top (required)>'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/util/autoload.rb:68:in `load'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/util/autoload.rb:68:in `load_file'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/util/autoload.rb:194:in `load'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/metatype/manager.rb:171:in `type'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/pops/loader/runtime3_type_loader.rb:31:in `find'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/pops/loader/base_loader.rb:151:in `internal_load'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/pops/loader/base_loader.rb:32:in `load_typed'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/pops/loader/base_loader.rb:143:in `internal_load'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/pops/loader/base_loader.rb:32:in `load_typed'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/pops/loader/base_loader.rb:143:in `internal_load'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/pops/loader/base_loader.rb:32:in `load_typed'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/pops/loader/base_loader.rb:143:in `internal_load'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/pops/loader/base_loader.rb:32:in `load_typed'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/pops/loader/loader.rb:53:in `load'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/pops/types/type_parser.rb:194:in `interpret_QualifiedReference'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/pops/visitor.rb:69:in `visit_this_1'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/pops/types/type_parser.rb:52:in `interpret'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/pops/evaluator/evaluator_impl.rb:312:in `eval_QualifiedReference'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/pops/visitor.rb:69:in `visit_this_1'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/pops/evaluator/evaluator_impl.rb:82:in `evaluate'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/pops/evaluator/evaluator_impl.rb:870:in `eval_ResourceDefaultsExpression'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/pops/visitor.rb:69:in `visit_this_1'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/pops/evaluator/evaluator_impl.rb:82:in `evaluate'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/pops/evaluator/evaluator_impl.rb:638:in `block in eval_BlockExpression'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/pops/evaluator/evaluator_impl.rb:638:in `each'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/pops/evaluator/evaluator_impl.rb:638:in `reduce'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/pops/evaluator/evaluator_impl.rb:638:in `eval_BlockExpression'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/pops/visitor.rb:69:in `visit_this_1'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/pops/evaluator/evaluator_impl.rb:82:in `evaluate'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/pops/parser/evaluating_parser.rb:63:in `evaluate'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/parser/ast/pops_bridge.rb:32:in `evaluate'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/parser/ast/pops_bridge.rb:72:in `block (2 levels) in evaluate'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/parser/ast/pops_bridge.rb:71:in `catch'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/parser/ast/pops_bridge.rb:71:in `block in evaluate'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/parser/ast/pops_bridge.rb:70:in `catch'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/parser/ast/pops_bridge.rb:70:in `evaluate'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/parser/ast.rb:31:in `safeevaluate'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/resource/type.rb:184:in `evaluate_code'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/parser/resource.rb:81:in `block in evaluate'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/util/profiler/around_profiler.rb:58:in `profile'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/util/profiler.rb:51:in `profile'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/parser/resource.rb:73:in `evaluate'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/parser/compiler.rb:587:in `block (3 levels) in evaluate_definitions'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/parser/compiler.rb:585:in `each'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/parser/compiler.rb:585:in `block (2 levels) in evaluate_definitions'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/util/profiler/around_profiler.rb:58:in `profile'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/util/profiler.rb:51:in `profile'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/parser/compiler.rb:584:in `block in evaluate_definitions'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/util/errors.rb:64:in `exceptwrap'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/parser/compiler.rb:583:in `evaluate_definitions'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/parser/compiler.rb:616:in `block (2 levels) in evaluate_generators'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/util/profiler/around_profiler.rb:58:in `profile'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/util/profiler.rb:51:in `profile'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/parser/compiler.rb:613:in `block in evaluate_generators'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/parser/compiler.rb:610:in `loop'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/parser/compiler.rb:610:in `evaluate_generators'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/parser/compiler.rb:191:in `block (2 levels) in compile'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/util/profiler/around_profiler.rb:58:in `profile'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/util/profiler.rb:51:in `profile'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/parser/compiler.rb:191:in `block in compile'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/context.rb:65:in `override'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet.rb:306:in `override'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/parser/compiler.rb:166:in `compile'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/parser/compiler.rb:33:in `compile'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/indirector/catalog/compiler.rb:269:in `block (2 levels) in compile'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/util/profiler/around_profiler.rb:58:in `profile'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/util/profiler.rb:51:in `profile'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/indirector/catalog/compiler.rb:267:in `block in compile'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/util.rb:224:in `block in benchmark'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/util.rb:223:in `benchmark'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/indirector/catalog/compiler.rb:265:in `compile'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/indirector/catalog/compiler.rb:55:in `find'
     # ./.bundle/gems/puppet-4.10.10/lib/puppet/indirector/indirection.rb:194:in `find'
     # ./.bundle/gems/rspec-puppet-2.6.11/lib/rspec-puppet/adapters.rb:83:in `catalog'
     # ./.bundle/gems/rspec-puppet-2.6.11/lib/rspec-puppet/adapters.rb:162:in `catalog'
     # ./.bundle/gems/rspec-puppet-2.6.11/lib/rspec-puppet/support.rb:407:in `build_catalog_without_cache'
     # ./.bundle/gems/rspec-puppet-2.6.11/lib/rspec-puppet/support.rb:418:in `block in build_catalog'
     # ./.bundle/gems/rspec-puppet-2.6.11/lib/rspec-puppet/cache.rb:17:in `call'
     # ./.bundle/gems/rspec-puppet-2.6.11/lib/rspec-puppet/cache.rb:17:in `get'
     # ./.bundle/gems/rspec-puppet-2.6.11/lib/rspec-puppet/support.rb:417:in `build_catalog'
     # ./.bundle/gems/rspec-puppet-2.6.11/lib/rspec-puppet/support.rb:88:in `block in load_catalogue'
     # ./.bundle/gems/rspec-puppet-2.6.11/lib/rspec-puppet/support.rb:368:in `with_vardir'
     # ./.bundle/gems/rspec-puppet-2.6.11/lib/rspec-puppet/support.rb:81:in `load_catalogue'
     # ./.bundle/gems/rspec-puppet-2.6.11/lib/rspec-puppet/example/class_example_group.rb:7:in `catalogue'
     # ./.bundle/gems/rspec-puppet-2.6.11/lib/rspec-puppet/support.rb:10:in `block in subject'
     # ./.bundle/gems/rspec-puppet-2.6.11/lib/rspec-puppet/matchers/create_generic.rb:84:in `call'
     # ./.bundle/gems/rspec-puppet-2.6.11/lib/rspec-puppet/matchers/create_generic.rb:84:in `matches?'
     # ./spec/classes/role/example_win_spec.rb:24:in `block (5 levels) in <top (required)>'
     # ------------------
     # --- Caused by: ---
     # LoadError:
     #   no implicit conversion of Symbol into String.
     #   Could not open library 'libadvapi32.dylib': dlopen(libadvapi32.dylib, 5): image not found
     #   ./.bundle/gems/ffi-1.9.23/lib/ffi/library.rb:147:in `block in ffi_lib'

Finished in 8.45 seconds (files took 4.98 seconds to load)
17 examples, 1 failure

Failed examples:

rspec './spec/classes/role/example_win_spec.rb[1:1:1]' # role::example_win on windows-2012 R2-x86_64 should contain Class[profile::example]