inspec 4.3.2 → 4.6.3

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.
Files changed (368) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +36 -38
  3. data/README.md +37 -21
  4. data/etc/deprecations.json +10 -0
  5. data/etc/plugin_filters.json +8 -0
  6. data/inspec.gemspec +38 -39
  7. data/lib/bundles/inspec-compliance/api.rb +1 -1
  8. data/lib/bundles/inspec-compliance/configuration.rb +1 -1
  9. data/lib/bundles/inspec-compliance/http.rb +1 -1
  10. data/lib/bundles/inspec-compliance/support.rb +1 -1
  11. data/lib/bundles/inspec-compliance/target.rb +1 -1
  12. data/lib/bundles/inspec-supermarket.rb +3 -7
  13. data/lib/bundles/inspec-supermarket/api.rb +10 -13
  14. data/lib/bundles/inspec-supermarket/cli.rb +12 -15
  15. data/lib/bundles/inspec-supermarket/target.rb +7 -11
  16. data/lib/fetchers/git.rb +14 -15
  17. data/lib/fetchers/local.rb +6 -10
  18. data/lib/fetchers/mock.rb +3 -5
  19. data/lib/fetchers/url.rb +42 -44
  20. data/lib/inspec.rb +23 -24
  21. data/lib/inspec/archive/tar.rb +2 -6
  22. data/lib/inspec/archive/zip.rb +3 -7
  23. data/lib/inspec/backend.rb +8 -9
  24. data/lib/inspec/base_cli.rb +64 -65
  25. data/lib/inspec/cached_fetcher.rb +2 -3
  26. data/lib/inspec/cli.rb +136 -97
  27. data/lib/inspec/config.rb +71 -61
  28. data/lib/inspec/control_eval_context.rb +22 -18
  29. data/lib/inspec/dependencies/cache.rb +2 -3
  30. data/lib/inspec/dependencies/dependency_set.rb +2 -3
  31. data/lib/inspec/dependencies/lockfile.rb +8 -9
  32. data/lib/inspec/dependencies/requirement.rb +7 -8
  33. data/lib/inspec/dependencies/resolver.rb +5 -7
  34. data/lib/inspec/describe.rb +2 -6
  35. data/lib/inspec/dist.rb +20 -0
  36. data/lib/inspec/dsl.rb +4 -7
  37. data/lib/inspec/dsl_shared.rb +1 -2
  38. data/lib/inspec/env_printer.rb +11 -12
  39. data/lib/inspec/errors.rb +0 -4
  40. data/lib/inspec/exceptions.rb +0 -1
  41. data/lib/inspec/expect.rb +5 -8
  42. data/lib/inspec/fetcher.rb +7 -10
  43. data/lib/inspec/file_provider.rb +24 -24
  44. data/lib/inspec/formatters.rb +3 -3
  45. data/lib/inspec/formatters/base.rb +8 -8
  46. data/lib/inspec/globals.rb +2 -2
  47. data/lib/inspec/impact.rb +5 -7
  48. data/lib/inspec/input_registry.rb +84 -33
  49. data/lib/inspec/library_eval_context.rb +3 -6
  50. data/lib/inspec/log.rb +1 -5
  51. data/lib/inspec/metadata.rb +17 -16
  52. data/lib/inspec/method_source.rb +5 -9
  53. data/lib/inspec/objects.rb +10 -12
  54. data/lib/inspec/objects/control.rb +7 -9
  55. data/lib/inspec/objects/describe.rb +9 -11
  56. data/lib/inspec/objects/each_loop.rb +1 -3
  57. data/lib/inspec/objects/input.rb +24 -26
  58. data/lib/inspec/objects/list.rb +4 -6
  59. data/lib/inspec/objects/or_test.rb +2 -4
  60. data/lib/inspec/objects/ruby_helper.rb +3 -5
  61. data/lib/inspec/objects/tag.rb +0 -2
  62. data/lib/inspec/objects/test.rb +9 -11
  63. data/lib/inspec/objects/value.rb +3 -5
  64. data/lib/inspec/plugin/v1.rb +2 -2
  65. data/lib/inspec/plugin/v1/plugin_types/cli.rb +1 -5
  66. data/lib/inspec/plugin/v1/plugin_types/fetcher.rb +2 -5
  67. data/lib/inspec/plugin/v1/plugin_types/resource.rb +4 -6
  68. data/lib/inspec/plugin/v1/plugin_types/secret.rb +1 -5
  69. data/lib/inspec/plugin/v1/plugin_types/source_reader.rb +1 -5
  70. data/lib/inspec/plugin/v1/plugins.rb +15 -19
  71. data/lib/inspec/plugin/v1/registry.rb +0 -4
  72. data/lib/inspec/plugin/v2.rb +8 -8
  73. data/lib/inspec/plugin/v2/activator.rb +1 -1
  74. data/lib/inspec/plugin/v2/config_file.rb +6 -6
  75. data/lib/inspec/plugin/v2/filter.rb +13 -13
  76. data/lib/inspec/plugin/v2/installer.rb +36 -24
  77. data/lib/inspec/plugin/v2/loader.rb +28 -28
  78. data/lib/inspec/plugin/v2/plugin_base.rb +15 -2
  79. data/lib/inspec/plugin/v2/plugin_types/cli.rb +5 -5
  80. data/lib/inspec/plugin/v2/plugin_types/input.rb +34 -0
  81. data/lib/inspec/plugin/v2/plugin_types/mock.rb +1 -1
  82. data/lib/inspec/plugin/v2/registry.rb +7 -7
  83. data/lib/inspec/polyfill.rb +0 -3
  84. data/lib/inspec/profile.rb +55 -63
  85. data/lib/inspec/profile_context.rb +27 -30
  86. data/lib/inspec/profile_vendor.rb +6 -9
  87. data/lib/inspec/reporters.rb +24 -24
  88. data/lib/inspec/reporters/automate.rb +17 -19
  89. data/lib/inspec/reporters/base.rb +1 -1
  90. data/lib/inspec/reporters/cli.rb +88 -91
  91. data/lib/inspec/reporters/json.rb +2 -4
  92. data/lib/inspec/reporters/json_automate.rb +1 -3
  93. data/lib/inspec/reporters/json_min.rb +1 -3
  94. data/lib/inspec/reporters/junit.rb +26 -28
  95. data/lib/inspec/reporters/yaml.rb +1 -3
  96. data/lib/inspec/require_loader.rb +0 -4
  97. data/lib/inspec/resource.rb +4 -125
  98. data/lib/inspec/resources.rb +121 -0
  99. data/lib/{resources → inspec/resources}/aide_conf.rb +24 -25
  100. data/lib/{resources → inspec/resources}/apache.rb +13 -14
  101. data/lib/{resources → inspec/resources}/apache_conf.rb +16 -17
  102. data/lib/{resources → inspec/resources}/apt.rb +17 -17
  103. data/lib/{resources → inspec/resources}/audit_policy.rb +7 -6
  104. data/lib/{resources → inspec/resources}/auditd.rb +62 -64
  105. data/lib/{resources → inspec/resources}/auditd_conf.rb +7 -8
  106. data/lib/{resources → inspec/resources}/bash.rb +6 -8
  107. data/lib/{resources → inspec/resources}/bond.rb +15 -14
  108. data/lib/{resources → inspec/resources}/bridge.rb +8 -8
  109. data/lib/{resources → inspec/resources}/chocolatey_package.rb +10 -8
  110. data/lib/{resources → inspec/resources}/command.rb +11 -10
  111. data/lib/{resources → inspec/resources}/cpan.rb +12 -12
  112. data/lib/{resources → inspec/resources}/cran.rb +9 -9
  113. data/lib/{resources → inspec/resources}/crontab.rb +47 -48
  114. data/lib/{resources → inspec/resources}/csv.rb +5 -5
  115. data/lib/{resources → inspec/resources}/dh_params.rb +5 -7
  116. data/lib/{resources → inspec/resources}/directory.rb +5 -7
  117. data/lib/{resources → inspec/resources}/docker.rb +63 -63
  118. data/lib/{resources → inspec/resources}/docker_container.rb +6 -6
  119. data/lib/{resources → inspec/resources}/docker_image.rb +9 -9
  120. data/lib/{resources → inspec/resources}/docker_object.rb +8 -13
  121. data/lib/{resources → inspec/resources}/docker_plugin.rb +6 -6
  122. data/lib/{resources → inspec/resources}/docker_service.rb +7 -7
  123. data/lib/{resources → inspec/resources}/elasticsearch.rb +40 -42
  124. data/lib/{resources → inspec/resources}/etc_fstab.rb +23 -24
  125. data/lib/{resources → inspec/resources}/etc_group.rb +26 -27
  126. data/lib/{resources → inspec/resources}/etc_hosts.rb +11 -13
  127. data/lib/{resources → inspec/resources}/etc_hosts_allow_deny.rb +25 -27
  128. data/lib/{resources → inspec/resources}/file.rb +80 -79
  129. data/lib/{resources → inspec/resources}/filesystem.rb +20 -15
  130. data/lib/{resources → inspec/resources}/firewalld.rb +26 -26
  131. data/lib/{resources → inspec/resources}/gem.rb +12 -12
  132. data/lib/{resources → inspec/resources}/groups.rb +28 -27
  133. data/lib/{resources → inspec/resources}/grub_conf.rb +46 -48
  134. data/lib/{resources → inspec/resources}/host.rb +31 -29
  135. data/lib/{resources → inspec/resources}/http.rb +24 -24
  136. data/lib/{resources → inspec/resources}/iis_app.rb +6 -7
  137. data/lib/{resources → inspec/resources}/iis_app_pool.rb +21 -19
  138. data/lib/{resources → inspec/resources}/iis_site.rb +17 -15
  139. data/lib/{resources → inspec/resources}/inetd_conf.rb +9 -10
  140. data/lib/{resources → inspec/resources}/ini.rb +7 -8
  141. data/lib/{resources → inspec/resources}/interface.rb +30 -30
  142. data/lib/{resources → inspec/resources}/iptables.rb +8 -8
  143. data/lib/{resources → inspec/resources}/json.rb +8 -10
  144. data/lib/{resources → inspec/resources}/kernel_module.rb +15 -15
  145. data/lib/{resources → inspec/resources}/kernel_parameter.rb +8 -8
  146. data/lib/{resources → inspec/resources}/key_rsa.rb +8 -10
  147. data/lib/{resources → inspec/resources}/ksh.rb +6 -8
  148. data/lib/{resources → inspec/resources}/limits_conf.rb +8 -9
  149. data/lib/{resources/login_def.rb → inspec/resources/login_defs.rb} +9 -10
  150. data/lib/{resources → inspec/resources}/mount.rb +6 -8
  151. data/lib/{resources → inspec/resources}/mssql_session.rb +16 -18
  152. data/lib/inspec/resources/mysql.rb +81 -0
  153. data/lib/{resources → inspec/resources}/mysql_conf.rb +13 -14
  154. data/lib/{resources → inspec/resources}/mysql_session.rb +16 -16
  155. data/lib/{resources → inspec/resources}/nginx.rb +16 -17
  156. data/lib/{resources → inspec/resources}/nginx_conf.rb +26 -27
  157. data/lib/{resources → inspec/resources}/npm.rb +9 -10
  158. data/lib/{resources → inspec/resources}/ntp_conf.rb +9 -10
  159. data/lib/{resources → inspec/resources}/oneget.rb +8 -8
  160. data/lib/{resources → inspec/resources}/oracledb_session.rb +33 -34
  161. data/lib/{resources → inspec/resources}/os.rb +6 -8
  162. data/lib/{resources → inspec/resources}/os_env.rb +11 -12
  163. data/lib/{resources → inspec/resources}/package.rb +66 -65
  164. data/lib/{resources → inspec/resources}/packages.rb +13 -13
  165. data/lib/{resources → inspec/resources}/parse_config.rb +8 -8
  166. data/lib/{resources → inspec/resources}/passwd.rb +18 -19
  167. data/lib/{resources → inspec/resources}/pip.rb +19 -19
  168. data/lib/{resources → inspec/resources}/platform.rb +9 -11
  169. data/lib/{resources → inspec/resources}/port.rb +134 -136
  170. data/lib/{resources → inspec/resources}/postgres.rb +40 -32
  171. data/lib/{resources → inspec/resources}/postgres_conf.rb +17 -17
  172. data/lib/{resources → inspec/resources}/postgres_hba_conf.rb +21 -23
  173. data/lib/{resources → inspec/resources}/postgres_ident_conf.rb +12 -14
  174. data/lib/{resources → inspec/resources}/postgres_session.rb +8 -9
  175. data/lib/{resources → inspec/resources}/powershell.rb +17 -13
  176. data/lib/{resources → inspec/resources}/processes.rb +29 -29
  177. data/lib/{resources/rabbitmq_conf.rb → inspec/resources/rabbitmq_config.rb} +10 -11
  178. data/lib/{resources → inspec/resources}/registry_key.rb +14 -14
  179. data/lib/inspec/resources/script.rb +1 -0
  180. data/lib/{resources → inspec/resources}/security_identifier.rb +11 -10
  181. data/lib/{resources → inspec/resources}/security_policy.rb +59 -58
  182. data/lib/{resources → inspec/resources}/service.rb +74 -75
  183. data/lib/{resources → inspec/resources}/shadow.rb +44 -45
  184. data/lib/{resources/ssh_conf.rb → inspec/resources/ssh_config.rb} +16 -17
  185. data/lib/{resources → inspec/resources}/ssl.rb +28 -29
  186. data/lib/inspec/resources/sys_info.rb +30 -0
  187. data/lib/{resources → inspec/resources}/toml.rb +5 -7
  188. data/lib/{resources → inspec/resources}/users.rb +65 -65
  189. data/lib/{resources → inspec/resources}/vbscript.rb +8 -9
  190. data/lib/{resources → inspec/resources}/virtualization.rb +60 -62
  191. data/lib/{resources → inspec/resources}/windows_feature.rb +9 -9
  192. data/lib/{resources → inspec/resources}/windows_hotfix.rb +5 -5
  193. data/lib/{resources → inspec/resources}/windows_task.rb +16 -15
  194. data/lib/{resources → inspec/resources}/wmi.rb +7 -8
  195. data/lib/{resources → inspec/resources}/x509_certificate.rb +9 -11
  196. data/lib/{resources/xinetd.rb → inspec/resources/xinetd_conf.rb} +27 -29
  197. data/lib/{resources → inspec/resources}/xml.rb +7 -7
  198. data/lib/{resources → inspec/resources}/yaml.rb +5 -6
  199. data/lib/{resources → inspec/resources}/yum.rb +10 -10
  200. data/lib/{resources → inspec/resources}/zfs_dataset.rb +6 -6
  201. data/lib/{resources → inspec/resources}/zfs_pool.rb +4 -4
  202. data/lib/inspec/rspec_extensions.rb +24 -8
  203. data/lib/inspec/rule.rb +14 -15
  204. data/lib/inspec/runner.rb +28 -28
  205. data/lib/inspec/runner_mock.rb +1 -5
  206. data/lib/inspec/runner_rspec.rb +18 -20
  207. data/lib/inspec/runtime_profile.rb +2 -5
  208. data/lib/inspec/schema.rb +142 -143
  209. data/lib/inspec/secrets.rb +3 -7
  210. data/lib/inspec/secrets/yaml.rb +3 -5
  211. data/lib/inspec/shell.rb +11 -15
  212. data/lib/inspec/shell_detector.rb +6 -7
  213. data/lib/inspec/source_reader.rb +4 -8
  214. data/lib/inspec/ui.rb +33 -39
  215. data/lib/inspec/ui_table_helper.rb +12 -0
  216. data/lib/{utils → inspec/utils}/command_wrapper.rb +4 -8
  217. data/lib/{utils → inspec/utils}/convert.rb +0 -4
  218. data/lib/{utils → inspec/utils}/database_helpers.rb +4 -8
  219. data/lib/inspec/utils/deprecation.rb +6 -0
  220. data/lib/{utils → inspec/utils}/deprecation/config_file.rb +19 -19
  221. data/lib/{utils → inspec/utils}/deprecation/deprecator.rb +12 -12
  222. data/lib/{utils → inspec/utils}/deprecation/errors.rb +1 -1
  223. data/lib/{utils → inspec/utils}/deprecation/global_method.rb +2 -2
  224. data/lib/{utils → inspec/utils}/enumerable_delegation.rb +0 -2
  225. data/lib/{utils → inspec/utils}/erlang_parser.rb +61 -65
  226. data/lib/{utils → inspec/utils}/file_reader.rb +1 -2
  227. data/lib/{utils → inspec/utils}/filter.rb +30 -33
  228. data/lib/{utils → inspec/utils}/filter_array.rb +0 -2
  229. data/lib/{utils → inspec/utils}/find_files.rb +9 -12
  230. data/lib/{utils → inspec/utils}/hash.rb +1 -5
  231. data/lib/inspec/utils/json_log.rb +15 -0
  232. data/lib/inspec/utils/latest_version.rb +13 -0
  233. data/lib/{utils → inspec/utils}/modulator.rb +0 -3
  234. data/lib/{utils → inspec/utils}/nginx_parser.rb +31 -35
  235. data/lib/{utils → inspec/utils}/object_traversal.rb +0 -3
  236. data/lib/{utils → inspec/utils}/parser.rb +45 -45
  237. data/lib/{utils → inspec/utils}/pkey_reader.rb +4 -2
  238. data/lib/{utils → inspec/utils}/simpleconfig.rb +8 -10
  239. data/lib/{utils → inspec/utils}/spdx.rb +1 -4
  240. data/lib/{utils → inspec/utils}/spdx.txt +0 -0
  241. data/lib/inspec/utils/telemetry.rb +3 -3
  242. data/lib/inspec/utils/telemetry/collector.rb +30 -9
  243. data/lib/inspec/utils/telemetry/data_series.rb +3 -1
  244. data/lib/inspec/utils/telemetry/global_methods.rb +1 -1
  245. data/lib/inspec/version.rb +1 -1
  246. data/lib/matchers/matchers.rb +22 -25
  247. data/lib/plugins/inspec-artifact/lib/inspec-artifact.rb +1 -1
  248. data/lib/plugins/inspec-artifact/lib/inspec-artifact/base.rb +52 -45
  249. data/lib/plugins/inspec-artifact/lib/inspec-artifact/cli.rb +18 -16
  250. data/lib/plugins/inspec-artifact/test/functional/inspec_artifact_test.rb +12 -11
  251. data/lib/plugins/inspec-compliance/lib/inspec-compliance.rb +1 -1
  252. data/lib/plugins/inspec-compliance/lib/inspec-compliance/api.rb +73 -73
  253. data/lib/plugins/inspec-compliance/lib/inspec-compliance/api/login.rb +66 -62
  254. data/lib/plugins/inspec-compliance/lib/inspec-compliance/cli.rb +59 -57
  255. data/lib/plugins/inspec-compliance/lib/inspec-compliance/configuration.rb +11 -11
  256. data/lib/plugins/inspec-compliance/lib/inspec-compliance/http.rb +20 -22
  257. data/lib/plugins/inspec-compliance/lib/inspec-compliance/support.rb +2 -4
  258. data/lib/plugins/inspec-compliance/lib/inspec-compliance/target.rb +30 -27
  259. data/lib/plugins/inspec-compliance/test/functional/inspec_compliance_test.rb +12 -14
  260. data/lib/plugins/inspec-compliance/test/integration/default/cli.rb +39 -41
  261. data/lib/plugins/inspec-compliance/test/unit/api/login_test.rb +64 -64
  262. data/lib/plugins/inspec-compliance/test/unit/api_test.rb +157 -156
  263. data/lib/plugins/inspec-compliance/test/unit/target_test.rb +85 -85
  264. data/lib/plugins/inspec-habitat/Berksfile +2 -2
  265. data/lib/plugins/inspec-habitat/lib/inspec-habitat.rb +1 -1
  266. data/lib/plugins/inspec-habitat/lib/inspec-habitat/cli.rb +15 -13
  267. data/lib/plugins/inspec-habitat/lib/inspec-habitat/profile.rb +64 -63
  268. data/lib/plugins/inspec-habitat/templates/habitat/hooks/run.erb +3 -3
  269. data/lib/plugins/inspec-habitat/templates/habitat/plan.sh.erb +11 -11
  270. data/lib/plugins/inspec-habitat/test/cookbooks/inspec_habitat_fixture/Berksfile +1 -1
  271. data/lib/plugins/inspec-habitat/test/cookbooks/inspec_habitat_fixture/metadata.rb +8 -8
  272. data/lib/plugins/inspec-habitat/test/cookbooks/inspec_habitat_fixture/recipes/default.rb +17 -17
  273. data/lib/plugins/inspec-habitat/test/functional/inspec_habitat_test.rb +9 -8
  274. data/lib/plugins/inspec-habitat/test/integration/default/inspec_habitat/controls/inspec_habitat.rb +14 -14
  275. data/lib/plugins/inspec-habitat/test/support/example_profile/controls/example.rb +4 -4
  276. data/lib/plugins/inspec-habitat/test/unit/profile_test.rb +42 -41
  277. data/lib/plugins/inspec-init/lib/inspec-init.rb +1 -1
  278. data/lib/plugins/inspec-init/lib/inspec-init/cli.rb +6 -8
  279. data/lib/plugins/inspec-init/lib/inspec-init/cli_plugin.rb +72 -74
  280. data/lib/plugins/inspec-init/lib/inspec-init/cli_profile.rb +9 -11
  281. data/lib/plugins/inspec-init/lib/inspec-init/renderer.rb +4 -4
  282. data/lib/plugins/inspec-init/templates/plugins/inspec-plugin-template/Gemfile +0 -1
  283. data/lib/plugins/inspec-init/templates/plugins/inspec-plugin-template/inspec-plugin-template.gemspec +0 -2
  284. data/lib/plugins/inspec-init/templates/plugins/inspec-plugin-template/lib/inspec-plugin-template.rb +0 -2
  285. data/lib/plugins/inspec-init/templates/plugins/inspec-plugin-template/lib/inspec-plugin-template/cli_command.rb +0 -2
  286. data/lib/plugins/inspec-init/templates/plugins/inspec-plugin-template/lib/inspec-plugin-template/plugin.rb +0 -2
  287. data/lib/plugins/inspec-init/templates/plugins/inspec-plugin-template/lib/inspec-plugin-template/version.rb +0 -2
  288. data/lib/plugins/inspec-init/templates/plugins/inspec-plugin-template/test/functional/inspec_plugin_template_test.rb +5 -5
  289. data/lib/plugins/inspec-init/templates/plugins/inspec-plugin-template/test/helper.rb +1 -3
  290. data/lib/plugins/inspec-init/templates/plugins/inspec-plugin-template/test/unit/cli_args_test.rb +2 -2
  291. data/lib/plugins/inspec-init/templates/plugins/inspec-plugin-template/test/unit/plugin_def_test.rb +2 -2
  292. data/lib/plugins/inspec-init/templates/profiles/aws/controls/example.rb +10 -11
  293. data/lib/plugins/inspec-init/templates/profiles/azure/controls/example.rb +4 -5
  294. data/lib/plugins/inspec-init/templates/profiles/gcp/controls/example.rb +10 -11
  295. data/lib/plugins/inspec-init/templates/profiles/os/controls/example.rb +6 -7
  296. data/lib/plugins/inspec-init/test/functional/inspec_init_plugin_test.rb +51 -50
  297. data/lib/plugins/inspec-init/test/functional/inspec_init_profile_test.rb +35 -33
  298. data/lib/plugins/inspec-plugin-manager-cli/lib/inspec-plugin-manager-cli.rb +1 -2
  299. data/lib/plugins/inspec-plugin-manager-cli/lib/inspec-plugin-manager-cli/cli_command.rb +72 -70
  300. data/lib/plugins/inspec-plugin-manager-cli/lib/inspec-plugin-manager-cli/plugin.rb +1 -1
  301. data/lib/plugins/inspec-plugin-manager-cli/test/fixtures/plugins/wrong-name/lib/wrong-name.rb +1 -1
  302. data/lib/plugins/inspec-plugin-manager-cli/test/functional/inspec-plugin_test.rb +281 -271
  303. data/lib/plugins/inspec-plugin-manager-cli/test/unit/cli_args_test.rb +41 -41
  304. data/lib/plugins/inspec-plugin-manager-cli/test/unit/plugin_def_test.rb +25 -6
  305. data/lib/plugins/shared/core_plugin_test_helper.rb +43 -38
  306. data/lib/resource_support/aws.rb +67 -67
  307. data/lib/resource_support/aws/aws_plural_resource_mixin.rb +4 -1
  308. data/lib/resource_support/aws/aws_resource_mixin.rb +4 -3
  309. data/lib/resource_support/aws/aws_singular_resource_mixin.rb +4 -1
  310. data/lib/resources/aws/aws_billing_report.rb +15 -8
  311. data/lib/resources/aws/aws_billing_reports.rb +10 -7
  312. data/lib/resources/aws/aws_cloudtrail_trail.rb +9 -5
  313. data/lib/resources/aws/aws_cloudtrail_trails.rb +9 -5
  314. data/lib/resources/aws/aws_cloudwatch_alarm.rb +9 -5
  315. data/lib/resources/aws/aws_cloudwatch_log_metric_filter.rb +12 -8
  316. data/lib/resources/aws/aws_config_delivery_channel.rb +13 -9
  317. data/lib/resources/aws/aws_config_recorder.rb +10 -6
  318. data/lib/resources/aws/aws_ebs_volume.rb +12 -8
  319. data/lib/resources/aws/aws_ebs_volumes.rb +9 -5
  320. data/lib/resources/aws/aws_ec2_instance.rb +14 -11
  321. data/lib/resources/aws/aws_ec2_instances.rb +9 -5
  322. data/lib/resources/aws/aws_ecs_cluster.rb +11 -7
  323. data/lib/resources/aws/aws_eks_cluster.rb +13 -9
  324. data/lib/resources/aws/aws_elb.rb +9 -5
  325. data/lib/resources/aws/aws_elbs.rb +9 -5
  326. data/lib/resources/aws/aws_flow_log.rb +17 -13
  327. data/lib/resources/aws/aws_iam_access_key.rb +15 -11
  328. data/lib/resources/aws/aws_iam_access_keys.rb +19 -15
  329. data/lib/resources/aws/aws_iam_group.rb +9 -5
  330. data/lib/resources/aws/aws_iam_groups.rb +9 -5
  331. data/lib/resources/aws/aws_iam_password_policy.rb +13 -10
  332. data/lib/resources/aws/aws_iam_policies.rb +9 -5
  333. data/lib/resources/aws/aws_iam_policy.rb +16 -12
  334. data/lib/resources/aws/aws_iam_role.rb +9 -5
  335. data/lib/resources/aws/aws_iam_root_user.rb +12 -8
  336. data/lib/resources/aws/aws_iam_user.rb +12 -12
  337. data/lib/resources/aws/aws_iam_users.rb +10 -10
  338. data/lib/resources/aws/aws_kms_key.rb +12 -8
  339. data/lib/resources/aws/aws_kms_keys.rb +9 -5
  340. data/lib/resources/aws/aws_rds_instance.rb +11 -8
  341. data/lib/resources/aws/aws_route_table.rb +11 -7
  342. data/lib/resources/aws/aws_route_tables.rb +10 -6
  343. data/lib/resources/aws/aws_s3_bucket.rb +14 -11
  344. data/lib/resources/aws/aws_s3_bucket_object.rb +12 -9
  345. data/lib/resources/aws/aws_s3_buckets.rb +9 -7
  346. data/lib/resources/aws/aws_security_group.rb +16 -12
  347. data/lib/resources/aws/aws_security_groups.rb +12 -8
  348. data/lib/resources/aws/aws_sns_subscription.rb +15 -11
  349. data/lib/resources/aws/aws_sns_topic.rb +10 -6
  350. data/lib/resources/aws/aws_sns_topics.rb +9 -5
  351. data/lib/resources/aws/aws_sqs_queue.rb +18 -14
  352. data/lib/resources/aws/aws_subnet.rb +11 -7
  353. data/lib/resources/aws/aws_subnets.rb +9 -5
  354. data/lib/resources/aws/aws_vpc.rb +10 -6
  355. data/lib/resources/aws/aws_vpcs.rb +9 -5
  356. data/lib/resources/azure/azure_backend.rb +20 -18
  357. data/lib/resources/azure/azure_generic_resource.rb +13 -15
  358. data/lib/resources/azure/azure_resource_group.rb +17 -19
  359. data/lib/resources/azure/azure_virtual_machine.rb +6 -8
  360. data/lib/resources/azure/azure_virtual_machine_data_disk.rb +6 -8
  361. data/lib/source_readers/flat.rb +6 -10
  362. data/lib/source_readers/inspec.rb +8 -12
  363. metadata +141 -142
  364. data/lib/resources/mysql.rb +0 -82
  365. data/lib/resources/sys_info.rb +0 -28
  366. data/lib/utils/deprecation.rb +0 -6
  367. data/lib/utils/json_log.rb +0 -18
  368. data/lib/utils/latest_version.rb +0 -22
@@ -1,8 +1,5 @@
1
- # encoding: utf-8
2
- # author: Adam Leff
3
-
4
- require 'inspec/profile'
5
- require 'inspec/config'
1
+ require "inspec/profile"
2
+ require "inspec/config"
6
3
 
7
4
  module Inspec
8
5
  class ProfileVendor
@@ -34,11 +31,11 @@ module Inspec
34
31
  end
35
32
 
36
33
  def cache_path
37
- profile_path.join('vendor')
34
+ profile_path.join("vendor")
38
35
  end
39
36
 
40
37
  def lockfile
41
- profile_path.join('inspec.lock')
38
+ profile_path.join("inspec.lock")
42
39
  end
43
40
 
44
41
  private
@@ -66,10 +63,10 @@ module Inspec
66
63
  end
67
64
 
68
65
  def extract_archives
69
- Dir.glob(File.join(cache_path, '*')).each do |filepath|
66
+ Dir.glob(File.join(cache_path, "*")).each do |filepath|
70
67
  # Get SHA without extension
71
68
  # We use split since '.' is not valid in a SHA checksum
72
- destination_dir_name = File.basename(filepath).split('.')[0]
69
+ destination_dir_name = File.basename(filepath).split(".")[0]
73
70
  destination_path = File.join(cache_path, destination_dir_name)
74
71
 
75
72
  provider = FileProvider.for_path(filepath)
@@ -1,11 +1,11 @@
1
- require 'inspec/reporters/base'
2
- require 'inspec/reporters/cli'
3
- require 'inspec/reporters/json'
4
- require 'inspec/reporters/json_automate'
5
- require 'inspec/reporters/json_min'
6
- require 'inspec/reporters/junit'
7
- require 'inspec/reporters/automate'
8
- require 'inspec/reporters/yaml'
1
+ require "inspec/reporters/base"
2
+ require "inspec/reporters/cli"
3
+ require "inspec/reporters/json"
4
+ require "inspec/reporters/json_automate"
5
+ require "inspec/reporters/json_min"
6
+ require "inspec/reporters/junit"
7
+ require "inspec/reporters/automate"
8
+ require "inspec/reporters/yaml"
9
9
 
10
10
  module Inspec::Reporters
11
11
  # rubocop:disable Metrics/CyclomaticComplexity
@@ -13,21 +13,21 @@ module Inspec::Reporters
13
13
  name, config = reporter.dup
14
14
  config[:run_data] = run_data
15
15
  case name
16
- when 'cli'
16
+ when "cli"
17
17
  reporter = Inspec::Reporters::CLI.new(config)
18
- when 'json'
18
+ when "json"
19
19
  reporter = Inspec::Reporters::Json.new(config)
20
20
  # This reporter is only used for Chef internal. We reserve the
21
21
  # right to introduce breaking changes to this reporter at any time.
22
- when 'json-automate'
22
+ when "json-automate"
23
23
  reporter = Inspec::Reporters::JsonAutomate.new(config)
24
- when 'json-min'
24
+ when "json-min"
25
25
  reporter = Inspec::Reporters::JsonMin.new(config)
26
- when 'junit'
26
+ when "junit"
27
27
  reporter = Inspec::Reporters::Junit.new(config)
28
- when 'automate'
28
+ when "automate"
29
29
  reporter = Inspec::Reporters::Automate.new(config)
30
- when 'yaml'
30
+ when "yaml"
31
31
  reporter = Inspec::Reporters::Yaml.new(config)
32
32
  else
33
33
  raise NotImplementedError, "'#{name}' is not a valid reporter type."
@@ -39,15 +39,15 @@ module Inspec::Reporters
39
39
  reporter.render
40
40
  output = reporter.rendered_output
41
41
 
42
- if config['file']
42
+ if config["file"]
43
43
  # create destination directory if it does not exist
44
- dirname = File.dirname(config['file'])
44
+ dirname = File.dirname(config["file"])
45
45
  FileUtils.mkdir_p(dirname) unless File.directory?(dirname)
46
46
 
47
- File.write(config['file'], output)
48
- elsif config['stdout'] == true
47
+ File.write(config["file"], output)
48
+ elsif config["stdout"] == true
49
49
  print output
50
- STDOUT.flush
50
+ $stdout.flush
51
51
  end
52
52
  end
53
53
 
@@ -55,13 +55,13 @@ module Inspec::Reporters
55
55
  name, config = reporter.dup
56
56
  config[:run_data] = run_data
57
57
  case name
58
- when 'json'
58
+ when "json"
59
59
  reporter = Inspec::Reporters::Json.new(config)
60
- when 'json-min'
60
+ when "json-min"
61
61
  reporter = Inspec::Reporters::JsonMin.new(config)
62
- when 'json-automate'
62
+ when "json-automate"
63
63
  reporter = Inspec::Reporters::JsonAutomate.new(config)
64
- when 'yaml'
64
+ when "yaml"
65
65
  reporter = Inspec::Reporters::Yaml.new(config)
66
66
  else
67
67
  # use base run_data hash for any other report
@@ -1,7 +1,5 @@
1
- # encoding: utf-8
2
-
3
- require 'json'
4
- require 'net/http'
1
+ require "json"
2
+ require "net/http"
5
3
 
6
4
  module Inspec::Reporters
7
5
  class Automate < JsonAutomate
@@ -9,10 +7,10 @@ module Inspec::Reporters
9
7
  super(config)
10
8
 
11
9
  # allow the insecure flag
12
- @config['verify_ssl'] = !@config['insecure'] if @config.key?('insecure')
10
+ @config["verify_ssl"] = !@config["insecure"] if @config.key?("insecure")
13
11
 
14
12
  # default to not verifying ssl for sending reports
15
- @config['verify_ssl'] = @config['verify_ssl'] || false
13
+ @config["verify_ssl"] = @config["verify_ssl"] || false
16
14
  end
17
15
 
18
16
  def enriched_report
@@ -20,30 +18,30 @@ module Inspec::Reporters
20
18
  final_report = report
21
19
 
22
20
  # Label this content as an inspec_report
23
- final_report[:type] = 'inspec_report'
21
+ final_report[:type] = "inspec_report"
24
22
 
25
- final_report[:end_time] = Time.now.utc.strftime('%FT%TZ')
26
- final_report[:node_uuid] = @config['node_uuid'] || @config['target_id']
27
- raise Inspec::ReporterError, 'Cannot find a UUID for your node. Please specify one via json-config.' if final_report[:node_uuid].nil?
23
+ final_report[:end_time] = Time.now.utc.strftime("%FT%TZ")
24
+ final_report[:node_uuid] = @config["node_uuid"] || @config["target_id"]
25
+ raise Inspec::ReporterError, "Cannot find a UUID for your node. Please specify one via json-config." if final_report[:node_uuid].nil?
28
26
 
29
- final_report[:report_uuid] = @config['report_uuid'] || uuid_from_string(final_report[:end_time] + final_report[:node_uuid])
27
+ final_report[:report_uuid] = @config["report_uuid"] || uuid_from_string(final_report[:end_time] + final_report[:node_uuid])
30
28
 
31
29
  final_report
32
30
  end
33
31
 
34
32
  def send_report
35
- headers = { 'Content-Type' => 'application/json' }
36
- headers['x-data-collector-token'] = @config['token']
37
- headers['x-data-collector-auth'] = 'version=1.0'
33
+ headers = { "Content-Type" => "application/json" }
34
+ headers["x-data-collector-token"] = @config["token"]
35
+ headers["x-data-collector-auth"] = "version=1.0"
38
36
 
39
- uri = URI(@config['url'])
37
+ uri = URI(@config["url"])
40
38
  req = Net::HTTP::Post.new(uri.path, headers)
41
39
  req.body = enriched_report.to_json
42
40
  begin
43
41
  Inspec::Log.debug "Posting report to Chef Automate: #{uri.path}"
44
42
  http = Net::HTTP.new(uri.hostname, uri.port)
45
- http.use_ssl = uri.scheme == 'https'
46
- if @config['verify_ssl'] == true
43
+ http.use_ssl = uri.scheme == "https"
44
+ if @config["verify_ssl"] == true
47
45
  http.verify_mode = OpenSSL::SSL::VERIFY_PEER
48
46
  else
49
47
  http.verify_mode = OpenSSL::SSL::VERIFY_NONE
@@ -70,11 +68,11 @@ module Inspec::Reporters
70
68
  def uuid_from_string(string)
71
69
  hash = Digest::SHA1.new
72
70
  hash.update(string)
73
- ary = hash.digest.unpack('NnnnnN')
71
+ ary = hash.digest.unpack("NnnnnN")
74
72
  ary[2] = (ary[2] & 0x0FFF) | (5 << 12)
75
73
  ary[3] = (ary[3] & 0x3FFF) | 0x8000
76
74
  # rubocop:disable Style/FormatString
77
- '%08x-%04x-%04x-%04x-%04x%08x' % ary
75
+ "%08x-%04x-%04x-%04x-%04x%08x" % ary
78
76
  end
79
77
  end
80
78
  end
@@ -5,7 +5,7 @@ module Inspec::Reporters
5
5
  def initialize(config)
6
6
  @config = config
7
7
  @run_data = config[:run_data]
8
- @output = ''
8
+ @output = ""
9
9
  end
10
10
 
11
11
  def output(str, newline = true)
@@ -1,5 +1,3 @@
1
- # encoding: utf-8
2
-
3
1
  module Inspec::Reporters
4
2
  class CLI < Base
5
3
  case RUBY_PLATFORM
@@ -7,36 +5,36 @@ module Inspec::Reporters
7
5
  # Most currently available Windows terminals have poor support
8
6
  # for ANSI extended colors
9
7
  COLORS = {
10
- 'failed' => "\033[0;1;31m",
11
- 'passed' => "\033[0;1;32m",
12
- 'skipped' => "\033[0;37m",
13
- 'reset' => "\033[0m",
8
+ "failed" => "\033[0;1;31m",
9
+ "passed" => "\033[0;1;32m",
10
+ "skipped" => "\033[0;37m",
11
+ "reset" => "\033[0m",
14
12
  }.freeze
15
13
 
16
14
  # Most currently available Windows terminals have poor support
17
15
  # for UTF-8 characters so use these boring indicators
18
16
  INDICATORS = {
19
- 'failed' => '[FAIL]',
20
- 'skipped' => '[SKIP]',
21
- 'passed' => '[PASS]',
22
- 'unknown' => '[UNKN]',
17
+ "failed" => "[FAIL]",
18
+ "skipped" => "[SKIP]",
19
+ "passed" => "[PASS]",
20
+ "unknown" => "[UNKN]",
23
21
  }.freeze
24
22
  else
25
23
  # Extended colors for everyone else
26
24
  COLORS = {
27
- 'failed' => "\033[38;5;9m",
28
- 'passed' => "\033[38;5;41m",
29
- 'skipped' => "\033[38;5;247m",
30
- 'reset' => "\033[0m",
25
+ "failed" => "\033[38;5;9m",
26
+ "passed" => "\033[38;5;41m",
27
+ "skipped" => "\033[38;5;247m",
28
+ "reset" => "\033[0m",
31
29
  }.freeze
32
30
 
33
31
  # Groovy UTF-8 characters for everyone else...
34
32
  # ...even though they probably only work on Mac
35
33
  INDICATORS = {
36
- 'failed' => '×',
37
- 'skipped' => '',
38
- 'passed' => '',
39
- 'unknown' => '?',
34
+ "failed" => "×",
35
+ "skipped" => "",
36
+ "passed" => "",
37
+ "unknown" => "?",
40
38
  }.freeze
41
39
  end
42
40
 
@@ -44,23 +42,25 @@ module Inspec::Reporters
44
42
 
45
43
  def render
46
44
  run_data[:profiles].each do |profile|
47
- if profile[:status] == 'skipped'
45
+ if profile[:status] == "skipped"
48
46
  platform = run_data[:platform]
49
47
  output("Skipping profile: '#{profile[:name]}' on unsupported platform: '#{platform[:name]}/#{platform[:release]}'.")
50
48
  next
51
49
  end
52
50
  @control_count = 0
53
- output('')
51
+ output("")
54
52
  print_profile_header(profile)
55
53
  print_standard_control_results(profile)
56
54
  print_anonymous_control_results(profile)
57
- output(format_message(
58
- indentation: 5,
59
- message: 'No tests executed.',
60
- )) if @control_count == 0
55
+ if @control_count == 0
56
+ output(format_message(
57
+ indentation: 5,
58
+ message: "No tests executed."
59
+ ))
60
+ end
61
61
  end
62
62
 
63
- output('')
63
+ output("")
64
64
  print_profile_summary
65
65
  print_tests_summary
66
66
  end
@@ -69,17 +69,17 @@ module Inspec::Reporters
69
69
 
70
70
  def print_profile_header(profile)
71
71
  header = {
72
- 'Profile' => format_profile_name(profile),
73
- 'Version' => profile[:version] || '(not specified)',
72
+ "Profile" => format_profile_name(profile),
73
+ "Version" => profile[:version] || "(not specified)",
74
74
  }
75
- header['Target'] = run_data[:platform][:target] unless run_data[:platform][:target].nil?
76
- header['Target ID'] = @config['target_id'] unless @config['target_id'].nil?
75
+ header["Target"] = run_data[:platform][:target] unless run_data[:platform][:target].nil?
76
+ header["Target ID"] = @config["target_id"] unless @config["target_id"].nil?
77
77
 
78
78
  pad = header.keys.max_by(&:length).length + 1
79
79
  header.each do |title, value|
80
- output(format("%-#{pad}s %s", title + ':', value))
80
+ output(format("%-#{pad}s %s", title + ":", value))
81
81
  end
82
- output('')
82
+ output("")
83
83
  end
84
84
 
85
85
  def print_standard_control_results(profile)
@@ -92,7 +92,7 @@ module Inspec::Reporters
92
92
  @control_count += 1
93
93
  end
94
94
  end
95
- output('') if @control_count > 0
95
+ output("") if @control_count > 0
96
96
  end
97
97
 
98
98
  def print_anonymous_control_results(profile)
@@ -109,7 +109,7 @@ module Inspec::Reporters
109
109
 
110
110
  def format_profile_name(profile)
111
111
  if profile[:title].nil?
112
- (profile[:name] || 'unknown').to_s
112
+ (profile[:name] || "unknown").to_s
113
113
  else
114
114
  "#{profile[:title]} (#{profile[:name] || 'unknown'})"
115
115
  end
@@ -120,14 +120,14 @@ module Inspec::Reporters
120
120
  format_message(
121
121
  color: impact,
122
122
  indicator: impact,
123
- message: control.title_for_report,
123
+ message: control.title_for_report
124
124
  )
125
125
  end
126
126
 
127
127
  def format_result(control, result, type)
128
128
  impact = control.impact_string_for_result(result)
129
129
 
130
- message = if result[:status] == 'skipped'
130
+ message = if result[:status] == "skipped"
131
131
  result[:skip_message]
132
132
  elsif type == :anonymous
133
133
  result[:expectation_message]
@@ -142,7 +142,7 @@ module Inspec::Reporters
142
142
  color: impact,
143
143
  indicator: impact,
144
144
  indentation: 5,
145
- message: message,
145
+ message: message
146
146
  )
147
147
  end
148
148
 
@@ -152,7 +152,7 @@ module Inspec::Reporters
152
152
  indentation = message_info.fetch(:indentation, 2)
153
153
  message = message_info[:message]
154
154
 
155
- message_to_format = ''
155
+ message_to_format = ""
156
156
  message_to_format += "#{INDICATORS[indicator]} " unless indicator.nil?
157
157
  message_to_format += message.to_s.lstrip.force_encoding(Encoding::UTF_8)
158
158
 
@@ -167,14 +167,11 @@ module Inspec::Reporters
167
167
  end
168
168
 
169
169
  def all_unique_controls
170
- return @unique_controls unless @unique_controls.nil?
171
-
172
- @unique_controls = Set.new
173
- run_data[:profiles].each do |profile|
174
- profile[:controls].map { |control| @unique_controls.add(control) }
175
- end
176
-
177
- @unique_controls
170
+ @unique_controls ||= begin
171
+ run_data[:profiles].flat_map do |profile|
172
+ profile[:controls]
173
+ end.uniq
174
+ end
178
175
  end
179
176
 
180
177
  def profile_summary
@@ -183,11 +180,11 @@ module Inspec::Reporters
183
180
  passed = 0
184
181
 
185
182
  all_unique_controls.each do |control|
186
- next if control[:id].start_with? '(generated from '
183
+ next if control[:id].start_with? "(generated from "
187
184
  next unless control[:results]
188
- if control[:results].any? { |r| r[:status] == 'failed' }
185
+ if control[:results].any? { |r| r[:status] == "failed" }
189
186
  failed += 1
190
- elsif control[:results].any? { |r| r[:status] == 'skipped' }
187
+ elsif control[:results].any? { |r| r[:status] == "skipped" }
191
188
  skipped += 1
192
189
  else
193
190
  passed += 1
@@ -197,10 +194,10 @@ module Inspec::Reporters
197
194
  total = failed + passed + skipped
198
195
 
199
196
  {
200
- 'total' => total,
201
- 'failed' => failed,
202
- 'skipped' => skipped,
203
- 'passed' => passed,
197
+ "total" => total,
198
+ "failed" => failed,
199
+ "skipped" => skipped,
200
+ "passed" => passed,
204
201
  }
205
202
  end
206
203
 
@@ -213,9 +210,9 @@ module Inspec::Reporters
213
210
  all_unique_controls.each do |control|
214
211
  next unless control[:results]
215
212
  control[:results].each do |result|
216
- if result[:status] == 'failed'
213
+ if result[:status] == "failed"
217
214
  failed += 1
218
- elsif result[:status] == 'skipped'
215
+ elsif result[:status] == "skipped"
219
216
  skipped += 1
220
217
  else
221
218
  passed += 1
@@ -224,48 +221,48 @@ module Inspec::Reporters
224
221
  end
225
222
 
226
223
  {
227
- 'total' => total,
228
- 'failed' => failed,
229
- 'skipped' => skipped,
230
- 'passed' => passed,
224
+ "total" => total,
225
+ "failed" => failed,
226
+ "skipped" => skipped,
227
+ "passed" => passed,
231
228
  }
232
229
  end
233
230
 
234
231
  def print_profile_summary
235
232
  summary = profile_summary
236
- return unless summary['total'] > 0
233
+ return unless summary["total"] > 0
237
234
 
238
- success_str = summary['passed'] == 1 ? '1 successful control' : "#{summary['passed']} successful controls"
239
- failed_str = summary['failed'] == 1 ? '1 control failure' : "#{summary['failed']} control failures"
240
- skipped_str = summary['skipped'] == 1 ? '1 control skipped' : "#{summary['skipped']} controls skipped"
235
+ success_str = summary["passed"] == 1 ? "1 successful control" : "#{summary['passed']} successful controls"
236
+ failed_str = summary["failed"] == 1 ? "1 control failure" : "#{summary['failed']} control failures"
237
+ skipped_str = summary["skipped"] == 1 ? "1 control skipped" : "#{summary['skipped']} controls skipped"
241
238
 
242
- success_color = summary['passed'] > 0 ? 'passed' : 'no_color'
243
- failed_color = summary['failed'] > 0 ? 'failed' : 'no_color'
244
- skipped_color = summary['skipped'] > 0 ? 'skipped' : 'no_color'
239
+ success_color = summary["passed"] > 0 ? "passed" : "no_color"
240
+ failed_color = summary["failed"] > 0 ? "failed" : "no_color"
241
+ skipped_color = summary["skipped"] > 0 ? "skipped" : "no_color"
245
242
 
246
243
  s = format(
247
- 'Profile Summary: %s, %s, %s',
244
+ "Profile Summary: %s, %s, %s",
248
245
  format_with_color(success_color, success_str),
249
246
  format_with_color(failed_color, failed_str),
250
- format_with_color(skipped_color, skipped_str),
247
+ format_with_color(skipped_color, skipped_str)
251
248
  )
252
- output(s) if summary['total'] > 0
249
+ output(s) if summary["total"] > 0
253
250
  end
254
251
 
255
252
  def print_tests_summary
256
253
  summary = tests_summary
257
254
 
258
- failed_str = summary['failed'] == 1 ? '1 failure' : "#{summary['failed']} failures"
255
+ failed_str = summary["failed"] == 1 ? "1 failure" : "#{summary['failed']} failures"
259
256
 
260
- success_color = summary['passed'] > 0 ? 'passed' : 'no_color'
261
- failed_color = summary['failed'] > 0 ? 'failed' : 'no_color'
262
- skipped_color = summary['skipped'] > 0 ? 'skipped' : 'no_color'
257
+ success_color = summary["passed"] > 0 ? "passed" : "no_color"
258
+ failed_color = summary["failed"] > 0 ? "failed" : "no_color"
259
+ skipped_color = summary["skipped"] > 0 ? "skipped" : "no_color"
263
260
 
264
261
  s = format(
265
- 'Test Summary: %s, %s, %s',
262
+ "Test Summary: %s, %s, %s",
266
263
  format_with_color(success_color, "#{summary['passed']} successful"),
267
264
  format_with_color(failed_color, failed_str),
268
- format_with_color(skipped_color, "#{summary['skipped']} skipped"),
265
+ format_with_color(skipped_color, "#{summary['skipped']} skipped")
269
266
  )
270
267
 
271
268
  output(s)
@@ -280,11 +277,11 @@ module Inspec::Reporters
280
277
  end
281
278
 
282
279
  def is_anonymous_control?(control)
283
- control[:id].start_with?('(generated from ')
280
+ control[:id].start_with?("(generated from ")
284
281
  end
285
282
 
286
283
  def indent_lines(message, indentation)
287
- message.lines.map { |line| ' ' * indentation + line }.join
284
+ message.lines.map { |line| " " * indentation + line }.join
288
285
  end
289
286
 
290
287
  class Control
@@ -311,7 +308,7 @@ module Inspec::Reporters
311
308
  end
312
309
 
313
310
  def anonymous?
314
- id.start_with?('(generated from ')
311
+ id.start_with?("(generated from ")
315
312
  end
316
313
 
317
314
  def title_for_report
@@ -335,34 +332,34 @@ module Inspec::Reporters
335
332
  if anonymous?
336
333
  nil
337
334
  elsif impact.nil?
338
- 'unknown'
339
- elsif results&.find { |r| r[:status] == 'skipped' }
340
- 'skipped'
341
- elsif results.nil? || results.empty? || results.all? { |r| r[:status] == 'passed' }
342
- 'passed'
335
+ "unknown"
336
+ elsif results&.find { |r| r[:status] == "skipped" }
337
+ "skipped"
338
+ elsif results.nil? || results.empty? || results.all? { |r| r[:status] == "passed" }
339
+ "passed"
343
340
  else
344
- 'failed'
341
+ "failed"
345
342
  end
346
343
  end
347
344
 
348
345
  def impact_string_for_result(result)
349
- if result[:status] == 'skipped'
350
- 'skipped'
351
- elsif result[:status] == 'passed'
352
- 'passed'
346
+ if result[:status] == "skipped"
347
+ "skipped"
348
+ elsif result[:status] == "passed"
349
+ "passed"
353
350
  elsif impact.nil?
354
- 'unknown'
351
+ "unknown"
355
352
  else
356
- 'failed'
353
+ "failed"
357
354
  end
358
355
  end
359
356
 
360
357
  def failure_count
361
- results.select { |r| r[:status] == 'failed' }.size
358
+ results.select { |r| r[:status] == "failed" }.size
362
359
  end
363
360
 
364
361
  def skipped_count
365
- results.select { |r| r[:status] == 'skipped' }.size
362
+ results.select { |r| r[:status] == "skipped" }.size
366
363
  end
367
364
  end
368
365
  end