inspec 2.0.32 → 2.0.45
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.rubocop.yml +101 -101
- data/CHANGELOG.md +2991 -2970
- data/Gemfile +55 -55
- data/LICENSE +14 -14
- data/MAINTAINERS.md +33 -33
- data/MAINTAINERS.toml +52 -52
- data/README.md +446 -437
- data/Rakefile +322 -322
- data/bin/inspec +12 -12
- data/docs/.gitignore +2 -2
- data/docs/README.md +40 -40
- data/docs/dsl_inspec.md +258 -258
- data/docs/dsl_resource.md +93 -93
- data/docs/glossary.md +99 -99
- data/docs/habitat.md +191 -191
- data/docs/inspec_and_friends.md +107 -107
- data/docs/matchers.md +169 -168
- data/docs/migration.md +293 -293
- data/docs/platforms.md +118 -118
- data/docs/plugin_kitchen_inspec.md +49 -49
- data/docs/profiles.md +370 -370
- data/docs/reporters.md +105 -105
- data/docs/resources/aide_conf.md.erb +75 -75
- data/docs/resources/apache.md.erb +67 -67
- data/docs/resources/apache_conf.md.erb +68 -68
- data/docs/resources/apt.md.erb +71 -71
- data/docs/resources/audit_policy.md.erb +47 -47
- data/docs/resources/auditd.md.erb +79 -79
- data/docs/resources/auditd_conf.md.erb +68 -68
- data/docs/resources/aws_cloudtrail_trail.md.erb +140 -140
- data/docs/resources/aws_cloudtrail_trails.md.erb +81 -81
- data/docs/resources/aws_cloudwatch_alarm.md.erb +86 -86
- data/docs/resources/aws_cloudwatch_log_metric_filter.md.erb +151 -151
- data/docs/resources/aws_config_recorder.md.erb +71 -71
- data/docs/resources/aws_ec2_instance.md.erb +106 -106
- data/docs/resources/aws_iam_access_key.md.erb +123 -123
- data/docs/resources/aws_iam_access_keys.md.erb +198 -198
- data/docs/resources/aws_iam_group.md.erb +46 -46
- data/docs/resources/aws_iam_groups.md.erb +43 -43
- data/docs/resources/aws_iam_password_policy.md.erb +76 -76
- data/docs/resources/aws_iam_policies.md.erb +82 -82
- data/docs/resources/aws_iam_policy.md.erb +144 -144
- data/docs/resources/aws_iam_role.md.erb +63 -63
- data/docs/resources/aws_iam_root_user.md.erb +58 -58
- data/docs/resources/aws_iam_user.md.erb +64 -64
- data/docs/resources/aws_iam_users.md.erb +89 -89
- data/docs/resources/aws_kms_keys.md.erb +84 -84
- data/docs/resources/aws_route_table.md.erb +47 -47
- data/docs/resources/aws_s3_bucket.md.erb +134 -134
- data/docs/resources/aws_security_group.md.erb +151 -151
- data/docs/resources/aws_security_groups.md.erb +91 -91
- data/docs/resources/aws_sns_topic.md.erb +63 -63
- data/docs/resources/aws_subnet.md.erb +133 -133
- data/docs/resources/aws_subnets.md.erb +126 -126
- data/docs/resources/aws_vpc.md.erb +120 -120
- data/docs/resources/aws_vpcs.md.erb +48 -48
- data/docs/resources/azure_generic_resource.md.erb +170 -170
- data/docs/resources/azure_resource_group.md.erb +284 -284
- data/docs/resources/azure_virtual_machine.md.erb +347 -347
- data/docs/resources/azure_virtual_machine_data_disk.md.erb +224 -224
- data/docs/resources/bash.md.erb +75 -75
- data/docs/resources/bond.md.erb +90 -90
- data/docs/resources/bridge.md.erb +57 -57
- data/docs/resources/bsd_service.md.erb +67 -67
- data/docs/resources/command.md.erb +138 -138
- data/docs/resources/cpan.md.erb +79 -79
- data/docs/resources/cran.md.erb +64 -64
- data/docs/resources/crontab.md.erb +89 -89
- data/docs/resources/csv.md.erb +54 -54
- data/docs/resources/dh_params.md.erb +205 -205
- data/docs/resources/directory.md.erb +30 -30
- data/docs/resources/docker.md.erb +219 -219
- data/docs/resources/docker_container.md.erb +104 -104
- data/docs/resources/docker_image.md.erb +94 -94
- data/docs/resources/docker_service.md.erb +114 -114
- data/docs/resources/elasticsearch.md.erb +242 -242
- data/docs/resources/etc_fstab.md.erb +125 -125
- data/docs/resources/etc_group.md.erb +75 -75
- data/docs/resources/etc_hosts.md.erb +78 -78
- data/docs/resources/etc_hosts_allow.md.erb +74 -74
- data/docs/resources/etc_hosts_deny.md.erb +74 -74
- data/docs/resources/file.md.erb +526 -515
- data/docs/resources/filesystem.md.erb +41 -41
- data/docs/resources/firewalld.md.erb +107 -107
- data/docs/resources/gem.md.erb +79 -79
- data/docs/resources/group.md.erb +61 -61
- data/docs/resources/grub_conf.md.erb +101 -101
- data/docs/resources/host.md.erb +86 -86
- data/docs/resources/http.md.erb +196 -196
- data/docs/resources/iis_app.md.erb +122 -122
- data/docs/resources/iis_site.md.erb +135 -135
- data/docs/resources/inetd_conf.md.erb +94 -94
- data/docs/resources/ini.md.erb +76 -76
- data/docs/resources/interface.md.erb +58 -58
- data/docs/resources/iptables.md.erb +64 -64
- data/docs/resources/json.md.erb +63 -63
- data/docs/resources/kernel_module.md.erb +120 -120
- data/docs/resources/kernel_parameter.md.erb +53 -53
- data/docs/resources/key_rsa.md.erb +85 -85
- data/docs/resources/launchd_service.md.erb +57 -57
- data/docs/resources/limits_conf.md.erb +75 -75
- data/docs/resources/login_def.md.erb +71 -71
- data/docs/resources/mount.md.erb +69 -69
- data/docs/resources/mssql_session.md.erb +60 -60
- data/docs/resources/mysql_conf.md.erb +99 -99
- data/docs/resources/mysql_session.md.erb +74 -74
- data/docs/resources/nginx.md.erb +79 -79
- data/docs/resources/nginx_conf.md.erb +128 -128
- data/docs/resources/npm.md.erb +60 -60
- data/docs/resources/ntp_conf.md.erb +60 -60
- data/docs/resources/oneget.md.erb +53 -53
- data/docs/resources/oracledb_session.md.erb +52 -52
- data/docs/resources/os.md.erb +141 -141
- data/docs/resources/os_env.md.erb +78 -78
- data/docs/resources/package.md.erb +120 -120
- data/docs/resources/packages.md.erb +67 -67
- data/docs/resources/parse_config.md.erb +103 -103
- data/docs/resources/parse_config_file.md.erb +138 -138
- data/docs/resources/passwd.md.erb +141 -141
- data/docs/resources/pip.md.erb +67 -67
- data/docs/resources/port.md.erb +137 -137
- data/docs/resources/postgres_conf.md.erb +79 -79
- data/docs/resources/postgres_hba_conf.md.erb +93 -93
- data/docs/resources/postgres_ident_conf.md.erb +76 -76
- data/docs/resources/postgres_session.md.erb +69 -69
- data/docs/resources/powershell.md.erb +102 -102
- data/docs/resources/processes.md.erb +109 -109
- data/docs/resources/rabbitmq_config.md.erb +41 -41
- data/docs/resources/registry_key.md.erb +158 -158
- data/docs/resources/runit_service.md.erb +57 -57
- data/docs/resources/security_policy.md.erb +47 -47
- data/docs/resources/service.md.erb +121 -121
- data/docs/resources/shadow.md.erb +146 -144
- data/docs/resources/ssh_config.md.erb +80 -80
- data/docs/resources/sshd_config.md.erb +83 -83
- data/docs/resources/ssl.md.erb +119 -119
- data/docs/resources/sys_info.md.erb +42 -42
- data/docs/resources/systemd_service.md.erb +57 -57
- data/docs/resources/sysv_service.md.erb +57 -57
- data/docs/resources/upstart_service.md.erb +57 -57
- data/docs/resources/user.md.erb +140 -140
- data/docs/resources/users.md.erb +127 -127
- data/docs/resources/vbscript.md.erb +55 -55
- data/docs/resources/virtualization.md.erb +57 -57
- data/docs/resources/windows_feature.md.erb +47 -47
- data/docs/resources/windows_hotfix.md.erb +53 -53
- data/docs/resources/windows_task.md.erb +95 -95
- data/docs/resources/wmi.md.erb +81 -81
- data/docs/resources/x509_certificate.md.erb +151 -151
- data/docs/resources/xinetd_conf.md.erb +156 -156
- data/docs/resources/xml.md.erb +85 -85
- data/docs/resources/yaml.md.erb +69 -69
- data/docs/resources/yum.md.erb +98 -98
- data/docs/resources/zfs_dataset.md.erb +53 -53
- data/docs/resources/zfs_pool.md.erb +47 -47
- data/docs/ruby_usage.md +203 -203
- data/docs/shared/matcher_be.md.erb +1 -1
- data/docs/shared/matcher_cmp.md.erb +43 -43
- data/docs/shared/matcher_eq.md.erb +3 -3
- data/docs/shared/matcher_include.md.erb +1 -1
- data/docs/shared/matcher_match.md.erb +1 -1
- data/docs/shell.md +215 -215
- data/examples/README.md +8 -8
- data/examples/inheritance/README.md +65 -65
- data/examples/inheritance/controls/example.rb +14 -14
- data/examples/inheritance/inspec.yml +15 -15
- data/examples/kitchen-ansible/.kitchen.yml +25 -25
- data/examples/kitchen-ansible/Gemfile +19 -19
- data/examples/kitchen-ansible/README.md +53 -53
- data/examples/kitchen-ansible/files/nginx.repo +6 -6
- data/examples/kitchen-ansible/tasks/main.yml +16 -16
- data/examples/kitchen-ansible/test/integration/default/default.yml +5 -5
- data/examples/kitchen-ansible/test/integration/default/web_spec.rb +28 -28
- data/examples/kitchen-chef/.kitchen.yml +20 -20
- data/examples/kitchen-chef/Berksfile +3 -3
- data/examples/kitchen-chef/Gemfile +19 -19
- data/examples/kitchen-chef/README.md +27 -27
- data/examples/kitchen-chef/metadata.rb +7 -7
- data/examples/kitchen-chef/recipes/default.rb +6 -6
- data/examples/kitchen-chef/recipes/nginx.rb +30 -30
- data/examples/kitchen-chef/test/integration/default/web_spec.rb +28 -28
- data/examples/kitchen-puppet/.kitchen.yml +22 -22
- data/examples/kitchen-puppet/Gemfile +20 -20
- data/examples/kitchen-puppet/Puppetfile +25 -25
- data/examples/kitchen-puppet/README.md +53 -53
- data/examples/kitchen-puppet/manifests/site.pp +33 -33
- data/examples/kitchen-puppet/metadata.json +11 -11
- data/examples/kitchen-puppet/test/integration/default/web_spec.rb +28 -28
- data/examples/meta-profile/README.md +37 -37
- data/examples/meta-profile/controls/example.rb +13 -13
- data/examples/meta-profile/inspec.yml +13 -13
- data/examples/profile-attribute.yml +2 -2
- data/examples/profile-attribute/README.md +14 -14
- data/examples/profile-attribute/controls/example.rb +11 -11
- data/examples/profile-attribute/inspec.yml +8 -8
- data/examples/profile-aws/controls/iam_password_policy_expiration.rb +8 -8
- data/examples/profile-aws/controls/iam_password_policy_max_age.rb +8 -8
- data/examples/profile-aws/controls/iam_root_user_mfa.rb +8 -8
- data/examples/profile-aws/controls/iam_users_access_key_age.rb +8 -8
- data/examples/profile-aws/controls/iam_users_console_users_mfa.rb +8 -8
- data/examples/profile-aws/inspec.yml +11 -11
- data/examples/profile-azure/controls/azure_resource_group_example.rb +24 -24
- data/examples/profile-azure/controls/azure_vm_example.rb +29 -29
- data/examples/profile-azure/inspec.yml +11 -11
- data/examples/profile-sensitive/README.md +29 -29
- data/examples/profile-sensitive/controls/sensitive-failures.rb +9 -9
- data/examples/profile-sensitive/controls/sensitive.rb +9 -9
- data/examples/profile-sensitive/inspec.yml +8 -8
- data/examples/profile/README.md +48 -48
- data/examples/profile/controls/example.rb +23 -23
- data/examples/profile/controls/gordon.rb +36 -36
- data/examples/profile/controls/meta.rb +34 -34
- data/examples/profile/inspec.yml +10 -10
- data/examples/profile/libraries/gordon_config.rb +53 -53
- data/inspec.gemspec +47 -47
- data/lib/bundles/README.md +3 -3
- data/lib/bundles/inspec-artifact.rb +7 -7
- data/lib/bundles/inspec-artifact/README.md +1 -1
- data/lib/bundles/inspec-artifact/cli.rb +277 -277
- data/lib/bundles/inspec-compliance.rb +16 -16
- data/lib/bundles/inspec-compliance/.kitchen.yml +20 -20
- data/lib/bundles/inspec-compliance/README.md +185 -185
- data/lib/bundles/inspec-compliance/api.rb +316 -316
- data/lib/bundles/inspec-compliance/api/login.rb +152 -152
- data/lib/bundles/inspec-compliance/bootstrap.sh +41 -41
- data/lib/bundles/inspec-compliance/cli.rb +254 -254
- data/lib/bundles/inspec-compliance/configuration.rb +103 -103
- data/lib/bundles/inspec-compliance/http.rb +86 -86
- data/lib/bundles/inspec-compliance/support.rb +36 -36
- data/lib/bundles/inspec-compliance/target.rb +98 -98
- data/lib/bundles/inspec-compliance/test/integration/default/cli.rb +93 -93
- data/lib/bundles/inspec-habitat.rb +12 -12
- data/lib/bundles/inspec-habitat/cli.rb +36 -36
- data/lib/bundles/inspec-habitat/log.rb +10 -10
- data/lib/bundles/inspec-habitat/profile.rb +390 -390
- data/lib/bundles/inspec-init.rb +8 -8
- data/lib/bundles/inspec-init/README.md +31 -31
- data/lib/bundles/inspec-init/cli.rb +97 -97
- data/lib/bundles/inspec-init/templates/profile/README.md +3 -3
- data/lib/bundles/inspec-init/templates/profile/controls/example.rb +19 -19
- data/lib/bundles/inspec-init/templates/profile/inspec.yml +8 -8
- data/lib/bundles/inspec-supermarket.rb +13 -13
- data/lib/bundles/inspec-supermarket/README.md +45 -45
- data/lib/bundles/inspec-supermarket/api.rb +84 -84
- data/lib/bundles/inspec-supermarket/cli.rb +73 -73
- data/lib/bundles/inspec-supermarket/target.rb +34 -34
- data/lib/fetchers/git.rb +163 -163
- data/lib/fetchers/local.rb +74 -74
- data/lib/fetchers/mock.rb +35 -35
- data/lib/fetchers/url.rb +204 -204
- data/lib/inspec.rb +24 -24
- data/lib/inspec/archive/tar.rb +29 -29
- data/lib/inspec/archive/zip.rb +19 -19
- data/lib/inspec/backend.rb +92 -92
- data/lib/inspec/base_cli.rb +355 -350
- data/lib/inspec/cached_fetcher.rb +66 -66
- data/lib/inspec/cli.rb +292 -292
- data/lib/inspec/completions/bash.sh.erb +45 -45
- data/lib/inspec/completions/fish.sh.erb +34 -34
- data/lib/inspec/completions/zsh.sh.erb +61 -61
- data/lib/inspec/control_eval_context.rb +179 -179
- data/lib/inspec/dependencies/cache.rb +72 -72
- data/lib/inspec/dependencies/dependency_set.rb +92 -92
- data/lib/inspec/dependencies/lockfile.rb +115 -115
- data/lib/inspec/dependencies/requirement.rb +123 -123
- data/lib/inspec/dependencies/resolver.rb +86 -86
- data/lib/inspec/describe.rb +27 -27
- data/lib/inspec/dsl.rb +66 -66
- data/lib/inspec/dsl_shared.rb +33 -33
- data/lib/inspec/env_printer.rb +157 -157
- data/lib/inspec/errors.rb +13 -13
- data/lib/inspec/exceptions.rb +12 -12
- data/lib/inspec/expect.rb +45 -45
- data/lib/inspec/fetcher.rb +45 -45
- data/lib/inspec/file_provider.rb +275 -275
- data/lib/inspec/formatters.rb +3 -3
- data/lib/inspec/formatters/base.rb +250 -250
- data/lib/inspec/formatters/json_rspec.rb +20 -20
- data/lib/inspec/formatters/show_progress.rb +12 -12
- data/lib/inspec/library_eval_context.rb +58 -58
- data/lib/inspec/log.rb +11 -11
- data/lib/inspec/metadata.rb +247 -247
- data/lib/inspec/method_source.rb +24 -24
- data/lib/inspec/objects.rb +14 -14
- data/lib/inspec/objects/attribute.rb +65 -65
- data/lib/inspec/objects/control.rb +61 -61
- data/lib/inspec/objects/describe.rb +92 -92
- data/lib/inspec/objects/each_loop.rb +36 -36
- data/lib/inspec/objects/list.rb +15 -15
- data/lib/inspec/objects/or_test.rb +40 -40
- data/lib/inspec/objects/ruby_helper.rb +15 -15
- data/lib/inspec/objects/tag.rb +27 -27
- data/lib/inspec/objects/test.rb +87 -87
- data/lib/inspec/objects/value.rb +27 -27
- data/lib/inspec/plugins.rb +60 -60
- data/lib/inspec/plugins/cli.rb +24 -24
- data/lib/inspec/plugins/fetcher.rb +86 -86
- data/lib/inspec/plugins/resource.rb +135 -135
- data/lib/inspec/plugins/secret.rb +15 -15
- data/lib/inspec/plugins/source_reader.rb +40 -40
- data/lib/inspec/polyfill.rb +12 -12
- data/lib/inspec/profile.rb +510 -510
- data/lib/inspec/profile_context.rb +207 -207
- data/lib/inspec/profile_vendor.rb +66 -66
- data/lib/inspec/reporters.rb +54 -50
- data/lib/inspec/reporters/base.rb +24 -24
- data/lib/inspec/reporters/cli.rb +356 -356
- data/lib/inspec/reporters/json.rb +116 -116
- data/lib/inspec/reporters/json_min.rb +48 -48
- data/lib/inspec/reporters/junit.rb +77 -77
- data/lib/inspec/require_loader.rb +33 -33
- data/lib/inspec/resource.rb +186 -186
- data/lib/inspec/rule.rb +266 -266
- data/lib/inspec/runner.rb +345 -345
- data/lib/inspec/runner_mock.rb +41 -41
- data/lib/inspec/runner_rspec.rb +175 -175
- data/lib/inspec/runtime_profile.rb +26 -26
- data/lib/inspec/schema.rb +213 -213
- data/lib/inspec/secrets.rb +19 -19
- data/lib/inspec/secrets/yaml.rb +30 -30
- data/lib/inspec/shell.rb +220 -220
- data/lib/inspec/shell_detector.rb +90 -90
- data/lib/inspec/source_reader.rb +29 -29
- data/lib/inspec/version.rb +8 -8
- data/lib/matchers/matchers.rb +339 -339
- data/lib/resource_support/aws.rb +41 -41
- data/lib/resource_support/aws/aws_backend_base.rb +12 -12
- data/lib/resource_support/aws/aws_backend_factory_mixin.rb +12 -12
- data/lib/resource_support/aws/aws_plural_resource_mixin.rb +21 -21
- data/lib/resource_support/aws/aws_resource_mixin.rb +66 -66
- data/lib/resource_support/aws/aws_singular_resource_mixin.rb +24 -24
- data/lib/resources/aide_conf.rb +159 -160
- data/lib/resources/apache.rb +48 -48
- data/lib/resources/apache_conf.rb +156 -156
- data/lib/resources/apt.rb +149 -149
- data/lib/resources/audit_policy.rb +63 -63
- data/lib/resources/auditd.rb +231 -231
- data/lib/resources/auditd_conf.rb +55 -55
- data/lib/resources/aws/aws_cloudtrail_trail.rb +77 -77
- data/lib/resources/aws/aws_cloudtrail_trails.rb +47 -47
- data/lib/resources/aws/aws_cloudwatch_alarm.rb +62 -62
- data/lib/resources/aws/aws_cloudwatch_log_metric_filter.rb +100 -100
- data/lib/resources/aws/aws_config_recorder.rb +98 -98
- data/lib/resources/aws/aws_ec2_instance.rb +157 -157
- data/lib/resources/aws/aws_iam_access_key.rb +106 -106
- data/lib/resources/aws/aws_iam_access_keys.rb +149 -144
- data/lib/resources/aws/aws_iam_group.rb +56 -56
- data/lib/resources/aws/aws_iam_groups.rb +52 -45
- data/lib/resources/aws/aws_iam_password_policy.rb +116 -116
- data/lib/resources/aws/aws_iam_policies.rb +53 -46
- data/lib/resources/aws/aws_iam_policy.rb +125 -119
- data/lib/resources/aws/aws_iam_role.rb +51 -51
- data/lib/resources/aws/aws_iam_root_user.rb +60 -60
- data/lib/resources/aws/aws_iam_user.rb +111 -111
- data/lib/resources/aws/aws_iam_users.rb +108 -96
- data/lib/resources/aws/aws_kms_keys.rb +53 -46
- data/lib/resources/aws/aws_route_table.rb +61 -61
- data/lib/resources/aws/aws_s3_bucket.rb +115 -115
- data/lib/resources/aws/aws_security_group.rb +93 -93
- data/lib/resources/aws/aws_security_groups.rb +68 -68
- data/lib/resources/aws/aws_sns_topic.rb +53 -53
- data/lib/resources/aws/aws_subnet.rb +88 -88
- data/lib/resources/aws/aws_subnets.rb +53 -53
- data/lib/resources/aws/aws_vpc.rb +69 -69
- data/lib/resources/aws/aws_vpcs.rb +45 -45
- data/lib/resources/azure/azure_backend.rb +377 -377
- data/lib/resources/azure/azure_generic_resource.rb +59 -59
- data/lib/resources/azure/azure_resource_group.rb +152 -152
- data/lib/resources/azure/azure_virtual_machine.rb +264 -264
- data/lib/resources/azure/azure_virtual_machine_data_disk.rb +136 -136
- data/lib/resources/bash.rb +35 -35
- data/lib/resources/bond.rb +68 -68
- data/lib/resources/bridge.rb +122 -122
- data/lib/resources/command.rb +73 -69
- data/lib/resources/cpan.rb +58 -58
- data/lib/resources/cran.rb +64 -64
- data/lib/resources/crontab.rb +169 -170
- data/lib/resources/csv.rb +60 -60
- data/lib/resources/dh_params.rb +82 -82
- data/lib/resources/directory.rb +25 -25
- data/lib/resources/docker.rb +236 -236
- data/lib/resources/docker_container.rb +89 -89
- data/lib/resources/docker_image.rb +83 -83
- data/lib/resources/docker_object.rb +57 -57
- data/lib/resources/docker_service.rb +90 -90
- data/lib/resources/elasticsearch.rb +169 -169
- data/lib/resources/etc_fstab.rb +101 -102
- data/lib/resources/etc_group.rb +152 -156
- data/lib/resources/etc_hosts.rb +82 -81
- data/lib/resources/etc_hosts_allow_deny.rb +122 -123
- data/lib/resources/file.rb +298 -298
- data/lib/resources/filesystem.rb +31 -31
- data/lib/resources/firewalld.rb +143 -144
- data/lib/resources/gem.rb +70 -70
- data/lib/resources/groups.rb +215 -215
- data/lib/resources/grub_conf.rb +237 -237
- data/lib/resources/host.rb +306 -300
- data/lib/resources/http.rb +251 -250
- data/lib/resources/iis_app.rb +101 -104
- data/lib/resources/iis_site.rb +148 -148
- data/lib/resources/inetd_conf.rb +62 -62
- data/lib/resources/ini.rb +29 -29
- data/lib/resources/interface.rb +129 -129
- data/lib/resources/iptables.rb +80 -69
- data/lib/resources/json.rb +117 -117
- data/lib/resources/kernel_module.rb +107 -107
- data/lib/resources/kernel_parameter.rb +58 -58
- data/lib/resources/key_rsa.rb +67 -67
- data/lib/resources/limits_conf.rb +55 -55
- data/lib/resources/login_def.rb +66 -66
- data/lib/resources/mount.rb +88 -88
- data/lib/resources/mssql_session.rb +101 -101
- data/lib/resources/mysql.rb +81 -81
- data/lib/resources/mysql_conf.rb +134 -134
- data/lib/resources/mysql_session.rb +71 -71
- data/lib/resources/nginx.rb +96 -96
- data/lib/resources/nginx_conf.rb +227 -227
- data/lib/resources/npm.rb +48 -48
- data/lib/resources/ntp_conf.rb +58 -58
- data/lib/resources/oneget.rb +71 -71
- data/lib/resources/oracledb_session.rb +139 -139
- data/lib/resources/os.rb +36 -36
- data/lib/resources/os_env.rb +76 -76
- data/lib/resources/package.rb +370 -370
- data/lib/resources/packages.rb +111 -111
- data/lib/resources/parse_config.rb +116 -116
- data/lib/resources/passwd.rb +74 -74
- data/lib/resources/pip.rb +89 -89
- data/lib/resources/platform.rb +109 -109
- data/lib/resources/port.rb +771 -771
- data/lib/resources/postgres.rb +130 -130
- data/lib/resources/postgres_conf.rb +121 -121
- data/lib/resources/postgres_hba_conf.rb +99 -100
- data/lib/resources/postgres_ident_conf.rb +76 -78
- data/lib/resources/postgres_session.rb +71 -71
- data/lib/resources/powershell.rb +53 -57
- data/lib/resources/processes.rb +204 -204
- data/lib/resources/rabbitmq_conf.rb +52 -52
- data/lib/resources/registry_key.rb +296 -296
- data/lib/resources/security_policy.rb +180 -180
- data/lib/resources/service.rb +789 -789
- data/lib/resources/shadow.rb +146 -140
- data/lib/resources/ssh_conf.rb +102 -102
- data/lib/resources/ssl.rb +99 -99
- data/lib/resources/sys_info.rb +28 -28
- data/lib/resources/toml.rb +32 -32
- data/lib/resources/users.rb +654 -654
- data/lib/resources/vbscript.rb +68 -69
- data/lib/resources/virtualization.rb +247 -247
- data/lib/resources/windows_feature.rb +84 -84
- data/lib/resources/windows_hotfix.rb +35 -35
- data/lib/resources/windows_task.rb +102 -105
- data/lib/resources/wmi.rb +110 -113
- data/lib/resources/x509_certificate.rb +143 -143
- data/lib/resources/xinetd.rb +111 -111
- data/lib/resources/xml.rb +46 -46
- data/lib/resources/yaml.rb +47 -47
- data/lib/resources/yum.rb +180 -180
- data/lib/resources/zfs_dataset.rb +60 -60
- data/lib/resources/zfs_pool.rb +49 -49
- data/lib/source_readers/flat.rb +39 -39
- data/lib/source_readers/inspec.rb +75 -75
- data/lib/utils/command_wrapper.rb +27 -27
- data/lib/utils/convert.rb +12 -12
- data/lib/utils/database_helpers.rb +77 -77
- data/lib/utils/erlang_parser.rb +192 -192
- data/lib/utils/filter.rb +272 -272
- data/lib/utils/filter_array.rb +27 -27
- data/lib/utils/find_files.rb +44 -44
- data/lib/utils/hash.rb +41 -41
- data/lib/utils/json_log.rb +18 -18
- data/lib/utils/latest_version.rb +22 -22
- data/lib/utils/modulator.rb +12 -12
- data/lib/utils/nginx_parser.rb +85 -85
- data/lib/utils/object_traversal.rb +49 -49
- data/lib/utils/parser.rb +274 -274
- data/lib/utils/plugin_registry.rb +93 -93
- data/lib/utils/simpleconfig.rb +120 -120
- data/lib/utils/spdx.rb +13 -13
- data/lib/utils/spdx.txt +343 -343
- metadata +2 -2
|
@@ -1,123 +1,123 @@
|
|
|
1
|
-
# encoding: utf-8
|
|
2
|
-
require 'inspec/cached_fetcher'
|
|
3
|
-
require 'inspec/dependencies/dependency_set'
|
|
4
|
-
require 'semverse'
|
|
5
|
-
|
|
6
|
-
module Inspec
|
|
7
|
-
#
|
|
8
|
-
# Inspec::Requirement represents a given profile dependency, where
|
|
9
|
-
# appropriate we delegate to Inspec::Profile directly.
|
|
10
|
-
#
|
|
11
|
-
class Requirement
|
|
12
|
-
def self.from_metadata(dep, cache, opts)
|
|
13
|
-
raise 'Cannot load empty dependency.' if dep.nil? || dep.empty?
|
|
14
|
-
|
|
15
|
-
req_path = opts[:cwd]
|
|
16
|
-
|
|
17
|
-
if dep[:path]
|
|
18
|
-
req_path = File.expand_path(dep[:path], req_path)
|
|
19
|
-
end
|
|
20
|
-
|
|
21
|
-
new(dep[:name],
|
|
22
|
-
dep[:version],
|
|
23
|
-
cache,
|
|
24
|
-
req_path,
|
|
25
|
-
opts.merge(dep))
|
|
26
|
-
end
|
|
27
|
-
|
|
28
|
-
def self.from_lock_entry(entry, cwd, cache, backend, opts = {})
|
|
29
|
-
req = new(entry[:name],
|
|
30
|
-
entry[:version_constraints],
|
|
31
|
-
cache,
|
|
32
|
-
cwd,
|
|
33
|
-
entry[:resolved_source].merge(backend: backend).merge(opts))
|
|
34
|
-
|
|
35
|
-
locked_deps = []
|
|
36
|
-
Array(entry[:dependencies]).each do |dep_entry|
|
|
37
|
-
locked_deps << Inspec::Requirement.from_lock_entry(dep_entry, cwd, cache, backend, opts)
|
|
38
|
-
end
|
|
39
|
-
req.lock_deps(locked_deps)
|
|
40
|
-
req
|
|
41
|
-
end
|
|
42
|
-
|
|
43
|
-
attr_reader :cwd, :opts, :version_constraints
|
|
44
|
-
def initialize(name, version_constraints, cache, cwd, opts)
|
|
45
|
-
@name = name
|
|
46
|
-
@version_constraints = Array(version_constraints)
|
|
47
|
-
@cache = cache
|
|
48
|
-
@backend = opts[:backend]
|
|
49
|
-
@opts = opts
|
|
50
|
-
@cwd = cwd
|
|
51
|
-
end
|
|
52
|
-
|
|
53
|
-
#
|
|
54
|
-
# A dependency can be renamed in inspec.yml/inspec.lock. Prefer
|
|
55
|
-
# the name the user gave this dependency over the profile name.
|
|
56
|
-
#
|
|
57
|
-
def name
|
|
58
|
-
@name || profile.name
|
|
59
|
-
end
|
|
60
|
-
|
|
61
|
-
def source_version
|
|
62
|
-
profile.version
|
|
63
|
-
end
|
|
64
|
-
|
|
65
|
-
def source_satisfies_spec?
|
|
66
|
-
return true if version_constraints.empty?
|
|
67
|
-
|
|
68
|
-
# Semverse::Constraint.satisfy_all returns a list of versions that match all of the
|
|
69
|
-
# supplied constraints. Since we're only matching against a single version, the return
|
|
70
|
-
# of satisfy_all will be non-empty if the profile version we have satisfies the constraints.
|
|
71
|
-
constraints = @version_constraints.map { |x| Semverse::Constraint.new(x) }
|
|
72
|
-
!Semverse::Constraint.satisfy_all(constraints, Semverse::Version.new(profile.version)).empty?
|
|
73
|
-
end
|
|
74
|
-
|
|
75
|
-
def resolved_source
|
|
76
|
-
@resolved_source ||= fetcher.resolved_source
|
|
77
|
-
end
|
|
78
|
-
|
|
79
|
-
def to_hash
|
|
80
|
-
h = {
|
|
81
|
-
'name' => name,
|
|
82
|
-
'resolved_source' => resolved_source,
|
|
83
|
-
'version_constraints' => version_constraints.to_s,
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
if !dependencies.empty?
|
|
87
|
-
h['dependencies'] = dependencies.map(&:to_hash)
|
|
88
|
-
end
|
|
89
|
-
|
|
90
|
-
h
|
|
91
|
-
end
|
|
92
|
-
|
|
93
|
-
def lock_deps(dep_array)
|
|
94
|
-
@dependencies = dep_array
|
|
95
|
-
end
|
|
96
|
-
|
|
97
|
-
def fetcher
|
|
98
|
-
@fetcher ||= Inspec::CachedFetcher.new(opts, @cache)
|
|
99
|
-
end
|
|
100
|
-
|
|
101
|
-
# load dependencies of the dependency
|
|
102
|
-
def dependencies
|
|
103
|
-
@dependencies ||= profile.metadata.dependencies.map do |r|
|
|
104
|
-
Inspec::Requirement.from_metadata(r, @cache, cwd: @cwd, backend: @backend)
|
|
105
|
-
end
|
|
106
|
-
end
|
|
107
|
-
|
|
108
|
-
def to_s
|
|
109
|
-
name
|
|
110
|
-
end
|
|
111
|
-
|
|
112
|
-
# load the profile for the requirement
|
|
113
|
-
def profile
|
|
114
|
-
return @profile unless @profile.nil?
|
|
115
|
-
opts = @opts.dup
|
|
116
|
-
opts[:backend] = @backend
|
|
117
|
-
if !@dependencies.nil?
|
|
118
|
-
opts[:dependencies] = Inspec::DependencySet.from_array(@dependencies, @cwd, @cache, @backend)
|
|
119
|
-
end
|
|
120
|
-
@profile = Inspec::Profile.for_fetcher(fetcher, opts)
|
|
121
|
-
end
|
|
122
|
-
end
|
|
123
|
-
end
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
require 'inspec/cached_fetcher'
|
|
3
|
+
require 'inspec/dependencies/dependency_set'
|
|
4
|
+
require 'semverse'
|
|
5
|
+
|
|
6
|
+
module Inspec
|
|
7
|
+
#
|
|
8
|
+
# Inspec::Requirement represents a given profile dependency, where
|
|
9
|
+
# appropriate we delegate to Inspec::Profile directly.
|
|
10
|
+
#
|
|
11
|
+
class Requirement
|
|
12
|
+
def self.from_metadata(dep, cache, opts)
|
|
13
|
+
raise 'Cannot load empty dependency.' if dep.nil? || dep.empty?
|
|
14
|
+
|
|
15
|
+
req_path = opts[:cwd]
|
|
16
|
+
|
|
17
|
+
if dep[:path]
|
|
18
|
+
req_path = File.expand_path(dep[:path], req_path)
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
new(dep[:name],
|
|
22
|
+
dep[:version],
|
|
23
|
+
cache,
|
|
24
|
+
req_path,
|
|
25
|
+
opts.merge(dep))
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def self.from_lock_entry(entry, cwd, cache, backend, opts = {})
|
|
29
|
+
req = new(entry[:name],
|
|
30
|
+
entry[:version_constraints],
|
|
31
|
+
cache,
|
|
32
|
+
cwd,
|
|
33
|
+
entry[:resolved_source].merge(backend: backend).merge(opts))
|
|
34
|
+
|
|
35
|
+
locked_deps = []
|
|
36
|
+
Array(entry[:dependencies]).each do |dep_entry|
|
|
37
|
+
locked_deps << Inspec::Requirement.from_lock_entry(dep_entry, cwd, cache, backend, opts)
|
|
38
|
+
end
|
|
39
|
+
req.lock_deps(locked_deps)
|
|
40
|
+
req
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
attr_reader :cwd, :opts, :version_constraints
|
|
44
|
+
def initialize(name, version_constraints, cache, cwd, opts)
|
|
45
|
+
@name = name
|
|
46
|
+
@version_constraints = Array(version_constraints)
|
|
47
|
+
@cache = cache
|
|
48
|
+
@backend = opts[:backend]
|
|
49
|
+
@opts = opts
|
|
50
|
+
@cwd = cwd
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
#
|
|
54
|
+
# A dependency can be renamed in inspec.yml/inspec.lock. Prefer
|
|
55
|
+
# the name the user gave this dependency over the profile name.
|
|
56
|
+
#
|
|
57
|
+
def name
|
|
58
|
+
@name || profile.name
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
def source_version
|
|
62
|
+
profile.version
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
def source_satisfies_spec?
|
|
66
|
+
return true if version_constraints.empty?
|
|
67
|
+
|
|
68
|
+
# Semverse::Constraint.satisfy_all returns a list of versions that match all of the
|
|
69
|
+
# supplied constraints. Since we're only matching against a single version, the return
|
|
70
|
+
# of satisfy_all will be non-empty if the profile version we have satisfies the constraints.
|
|
71
|
+
constraints = @version_constraints.map { |x| Semverse::Constraint.new(x) }
|
|
72
|
+
!Semverse::Constraint.satisfy_all(constraints, Semverse::Version.new(profile.version)).empty?
|
|
73
|
+
end
|
|
74
|
+
|
|
75
|
+
def resolved_source
|
|
76
|
+
@resolved_source ||= fetcher.resolved_source
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
def to_hash
|
|
80
|
+
h = {
|
|
81
|
+
'name' => name,
|
|
82
|
+
'resolved_source' => resolved_source,
|
|
83
|
+
'version_constraints' => version_constraints.to_s,
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
if !dependencies.empty?
|
|
87
|
+
h['dependencies'] = dependencies.map(&:to_hash)
|
|
88
|
+
end
|
|
89
|
+
|
|
90
|
+
h
|
|
91
|
+
end
|
|
92
|
+
|
|
93
|
+
def lock_deps(dep_array)
|
|
94
|
+
@dependencies = dep_array
|
|
95
|
+
end
|
|
96
|
+
|
|
97
|
+
def fetcher
|
|
98
|
+
@fetcher ||= Inspec::CachedFetcher.new(opts, @cache)
|
|
99
|
+
end
|
|
100
|
+
|
|
101
|
+
# load dependencies of the dependency
|
|
102
|
+
def dependencies
|
|
103
|
+
@dependencies ||= profile.metadata.dependencies.map do |r|
|
|
104
|
+
Inspec::Requirement.from_metadata(r, @cache, cwd: @cwd, backend: @backend)
|
|
105
|
+
end
|
|
106
|
+
end
|
|
107
|
+
|
|
108
|
+
def to_s
|
|
109
|
+
name
|
|
110
|
+
end
|
|
111
|
+
|
|
112
|
+
# load the profile for the requirement
|
|
113
|
+
def profile
|
|
114
|
+
return @profile unless @profile.nil?
|
|
115
|
+
opts = @opts.dup
|
|
116
|
+
opts[:backend] = @backend
|
|
117
|
+
if !@dependencies.nil?
|
|
118
|
+
opts[:dependencies] = Inspec::DependencySet.from_array(@dependencies, @cwd, @cache, @backend)
|
|
119
|
+
end
|
|
120
|
+
@profile = Inspec::Profile.for_fetcher(fetcher, opts)
|
|
121
|
+
end
|
|
122
|
+
end
|
|
123
|
+
end
|
|
@@ -1,86 +1,86 @@
|
|
|
1
|
-
# encoding: utf-8
|
|
2
|
-
# author: Steven Danna <steve@chef.io>
|
|
3
|
-
require 'inspec/log'
|
|
4
|
-
require 'inspec/errors'
|
|
5
|
-
|
|
6
|
-
module Inspec
|
|
7
|
-
#
|
|
8
|
-
# Inspec::Resolver is a simple dependency resolver. Unlike Bundler
|
|
9
|
-
# or Berkshelf, it does not attempt to resolve each named dependency
|
|
10
|
-
# to a single version. Rather, it traverses down the dependency tree
|
|
11
|
-
# and:
|
|
12
|
-
#
|
|
13
|
-
# - Fetches the dependency from the source
|
|
14
|
-
# - Checks the presence of cycles, and
|
|
15
|
-
# - Checks that the specified dependency source satisfies the
|
|
16
|
-
# specified version constraint
|
|
17
|
-
#
|
|
18
|
-
# The full dependency tree is then available for the loader, which
|
|
19
|
-
# will provide the isolation necessary to support multiple versions
|
|
20
|
-
# of the same profile being used at runtime.
|
|
21
|
-
#
|
|
22
|
-
# Currently the fetching happens somewhat lazily depending on the
|
|
23
|
-
# implementation of the fetcher being used.
|
|
24
|
-
#
|
|
25
|
-
class Resolver
|
|
26
|
-
def self.resolve(dependencies, cache, working_dir, backend)
|
|
27
|
-
reqs = dependencies.map do |dep|
|
|
28
|
-
req = Inspec::Requirement.from_metadata(dep, cache, cwd: working_dir, backend: backend)
|
|
29
|
-
req || raise("Cannot initialize dependency: #{req}")
|
|
30
|
-
end
|
|
31
|
-
new.resolve(reqs)
|
|
32
|
-
end
|
|
33
|
-
|
|
34
|
-
def detect_duplicates(deps, top_level, path_string)
|
|
35
|
-
seen_items_local = []
|
|
36
|
-
deps.each do |dep|
|
|
37
|
-
if seen_items_local.include?(dep.name)
|
|
38
|
-
problem_cookbook = if top_level
|
|
39
|
-
'the inspec.yml for this profile.'
|
|
40
|
-
else
|
|
41
|
-
"the dependency information for #{path_string.split(' ').last}"
|
|
42
|
-
end
|
|
43
|
-
raise Inspec::DuplicateDep, "The dependency #{dep.name} is listed twice in #{problem_cookbook}"
|
|
44
|
-
else
|
|
45
|
-
seen_items_local << dep.name
|
|
46
|
-
end
|
|
47
|
-
end
|
|
48
|
-
end
|
|
49
|
-
|
|
50
|
-
def resolve(deps, top_level = true, seen_items = {}, path_string = '') # rubocop:disable Metrics/AbcSize
|
|
51
|
-
graph = {}
|
|
52
|
-
if top_level
|
|
53
|
-
Inspec::Log.debug("Starting traversal of dependencies #{deps.map(&:to_s)}")
|
|
54
|
-
else
|
|
55
|
-
Inspec::Log.debug("Traversing dependency tree of transitive dependency #{deps.map(&:name)}")
|
|
56
|
-
end
|
|
57
|
-
|
|
58
|
-
detect_duplicates(deps, top_level, path_string)
|
|
59
|
-
deps.each do |dep|
|
|
60
|
-
new_seen_items = seen_items.dup
|
|
61
|
-
new_path_string = if path_string.empty?
|
|
62
|
-
dep.name
|
|
63
|
-
else
|
|
64
|
-
path_string + " -> #{dep.name}"
|
|
65
|
-
end
|
|
66
|
-
|
|
67
|
-
raise Inspec::CyclicDependencyError, "Dependency #{dep} would cause a dependency cycle (#{new_path_string})" if new_seen_items.key?(dep.resolved_source)
|
|
68
|
-
|
|
69
|
-
new_seen_items[dep.resolved_source] = true
|
|
70
|
-
|
|
71
|
-
if !dep.source_satisfies_spec?
|
|
72
|
-
raise Inspec::UnsatisfiedVersionSpecification, "The profile #{dep.name} from #{dep.resolved_source} has a version #{dep.source_version} which doesn't match #{dep.version_constraints}"
|
|
73
|
-
end
|
|
74
|
-
|
|
75
|
-
Inspec::Log.debug("Adding dependency #{dep.name} (#{dep.resolved_source})")
|
|
76
|
-
graph[dep.name] = dep
|
|
77
|
-
if !dep.dependencies.empty?
|
|
78
|
-
resolve(dep.dependencies, false, new_seen_items.dup, new_path_string)
|
|
79
|
-
end
|
|
80
|
-
end
|
|
81
|
-
|
|
82
|
-
Inspec::Log.debug('Dependency traversal complete.') if top_level
|
|
83
|
-
graph
|
|
84
|
-
end
|
|
85
|
-
end
|
|
86
|
-
end
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
# author: Steven Danna <steve@chef.io>
|
|
3
|
+
require 'inspec/log'
|
|
4
|
+
require 'inspec/errors'
|
|
5
|
+
|
|
6
|
+
module Inspec
|
|
7
|
+
#
|
|
8
|
+
# Inspec::Resolver is a simple dependency resolver. Unlike Bundler
|
|
9
|
+
# or Berkshelf, it does not attempt to resolve each named dependency
|
|
10
|
+
# to a single version. Rather, it traverses down the dependency tree
|
|
11
|
+
# and:
|
|
12
|
+
#
|
|
13
|
+
# - Fetches the dependency from the source
|
|
14
|
+
# - Checks the presence of cycles, and
|
|
15
|
+
# - Checks that the specified dependency source satisfies the
|
|
16
|
+
# specified version constraint
|
|
17
|
+
#
|
|
18
|
+
# The full dependency tree is then available for the loader, which
|
|
19
|
+
# will provide the isolation necessary to support multiple versions
|
|
20
|
+
# of the same profile being used at runtime.
|
|
21
|
+
#
|
|
22
|
+
# Currently the fetching happens somewhat lazily depending on the
|
|
23
|
+
# implementation of the fetcher being used.
|
|
24
|
+
#
|
|
25
|
+
class Resolver
|
|
26
|
+
def self.resolve(dependencies, cache, working_dir, backend)
|
|
27
|
+
reqs = dependencies.map do |dep|
|
|
28
|
+
req = Inspec::Requirement.from_metadata(dep, cache, cwd: working_dir, backend: backend)
|
|
29
|
+
req || raise("Cannot initialize dependency: #{req}")
|
|
30
|
+
end
|
|
31
|
+
new.resolve(reqs)
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
def detect_duplicates(deps, top_level, path_string)
|
|
35
|
+
seen_items_local = []
|
|
36
|
+
deps.each do |dep|
|
|
37
|
+
if seen_items_local.include?(dep.name)
|
|
38
|
+
problem_cookbook = if top_level
|
|
39
|
+
'the inspec.yml for this profile.'
|
|
40
|
+
else
|
|
41
|
+
"the dependency information for #{path_string.split(' ').last}"
|
|
42
|
+
end
|
|
43
|
+
raise Inspec::DuplicateDep, "The dependency #{dep.name} is listed twice in #{problem_cookbook}"
|
|
44
|
+
else
|
|
45
|
+
seen_items_local << dep.name
|
|
46
|
+
end
|
|
47
|
+
end
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
def resolve(deps, top_level = true, seen_items = {}, path_string = '') # rubocop:disable Metrics/AbcSize
|
|
51
|
+
graph = {}
|
|
52
|
+
if top_level
|
|
53
|
+
Inspec::Log.debug("Starting traversal of dependencies #{deps.map(&:to_s)}")
|
|
54
|
+
else
|
|
55
|
+
Inspec::Log.debug("Traversing dependency tree of transitive dependency #{deps.map(&:name)}")
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
detect_duplicates(deps, top_level, path_string)
|
|
59
|
+
deps.each do |dep|
|
|
60
|
+
new_seen_items = seen_items.dup
|
|
61
|
+
new_path_string = if path_string.empty?
|
|
62
|
+
dep.name
|
|
63
|
+
else
|
|
64
|
+
path_string + " -> #{dep.name}"
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
raise Inspec::CyclicDependencyError, "Dependency #{dep} would cause a dependency cycle (#{new_path_string})" if new_seen_items.key?(dep.resolved_source)
|
|
68
|
+
|
|
69
|
+
new_seen_items[dep.resolved_source] = true
|
|
70
|
+
|
|
71
|
+
if !dep.source_satisfies_spec?
|
|
72
|
+
raise Inspec::UnsatisfiedVersionSpecification, "The profile #{dep.name} from #{dep.resolved_source} has a version #{dep.source_version} which doesn't match #{dep.version_constraints}"
|
|
73
|
+
end
|
|
74
|
+
|
|
75
|
+
Inspec::Log.debug("Adding dependency #{dep.name} (#{dep.resolved_source})")
|
|
76
|
+
graph[dep.name] = dep
|
|
77
|
+
if !dep.dependencies.empty?
|
|
78
|
+
resolve(dep.dependencies, false, new_seen_items.dup, new_path_string)
|
|
79
|
+
end
|
|
80
|
+
end
|
|
81
|
+
|
|
82
|
+
Inspec::Log.debug('Dependency traversal complete.') if top_level
|
|
83
|
+
graph
|
|
84
|
+
end
|
|
85
|
+
end
|
|
86
|
+
end
|
data/lib/inspec/describe.rb
CHANGED
|
@@ -1,27 +1,27 @@
|
|
|
1
|
-
# encoding: utf-8
|
|
2
|
-
# author: Dominik Richter
|
|
3
|
-
# author: Christoph Hartmann
|
|
4
|
-
|
|
5
|
-
module Inspec
|
|
6
|
-
class DescribeBase
|
|
7
|
-
def initialize(action)
|
|
8
|
-
@action = action
|
|
9
|
-
@checks = []
|
|
10
|
-
end
|
|
11
|
-
|
|
12
|
-
# Evaluate the given block and collect all checks. These will be registered
|
|
13
|
-
# with the callback function under the 'describe.one' name.
|
|
14
|
-
#
|
|
15
|
-
# @param [Proc] ruby block containing checks (e.g. via describe)
|
|
16
|
-
# @return [nil]
|
|
17
|
-
def one(&block)
|
|
18
|
-
return unless block_given?
|
|
19
|
-
instance_eval(&block)
|
|
20
|
-
@action.call('describe.one', @checks, nil)
|
|
21
|
-
end
|
|
22
|
-
|
|
23
|
-
def describe(*args, &block)
|
|
24
|
-
@checks.push(['describe', args, block])
|
|
25
|
-
end
|
|
26
|
-
end
|
|
27
|
-
end
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
# author: Dominik Richter
|
|
3
|
+
# author: Christoph Hartmann
|
|
4
|
+
|
|
5
|
+
module Inspec
|
|
6
|
+
class DescribeBase
|
|
7
|
+
def initialize(action)
|
|
8
|
+
@action = action
|
|
9
|
+
@checks = []
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
# Evaluate the given block and collect all checks. These will be registered
|
|
13
|
+
# with the callback function under the 'describe.one' name.
|
|
14
|
+
#
|
|
15
|
+
# @param [Proc] ruby block containing checks (e.g. via describe)
|
|
16
|
+
# @return [nil]
|
|
17
|
+
def one(&block)
|
|
18
|
+
return unless block_given?
|
|
19
|
+
instance_eval(&block)
|
|
20
|
+
@action.call('describe.one', @checks, nil)
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def describe(*args, &block)
|
|
24
|
+
@checks.push(['describe', args, block])
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
end
|