diff --git a/.travis.yml b/.travis.yml index e97a48a..2d8b46a 100644 --- a/.travis.yml +++ b/.travis.yml @@ -50,7 +50,8 @@ jobs: ## Define the rest of the matrix based on Kitchen testing # Make sure the instances listed below match up with # the `platforms` defined in `kitchen.yml` - - env: INSTANCE=default-debian-10-master-py3 + # - env: INSTANCE=default-debian-10-master-py3 + - env: INSTANCE=vimrc-debian-10-master-py3 # - env: INSTANCE=default-ubuntu-1804-master-py3 # - env: INSTANCE=default-centos-8-master-py3 # - env: INSTANCE=default-fedora-31-master-py3 diff --git a/kitchen.yml b/kitchen.yml index 59aca72..15c3237 100644 --- a/kitchen.yml +++ b/kitchen.yml @@ -192,3 +192,26 @@ suites: verifier: inspec_tests: - path: test/integration/default + - name: vimrc + provisioner: + state_top: + base: + '*': + - users.vimrc + pillars: + top.sls: + base: + '*': + - users + - vimrc + pillars_from_files: + users.sls: test/salt/pillar/default.sls + vimrc.sls: test/salt/pillar/vimrc.sls + dependencies: + - name: vim + repo: git + source: https://github.com/saltstack-formulas/vim-formula.git + verifier: + inspec_tests: + - path: test/integration/default + - path: test/integration/vimrc diff --git a/test/integration/vimrc/README.md b/test/integration/vimrc/README.md new file mode 100644 index 0000000..c8acc10 --- /dev/null +++ b/test/integration/vimrc/README.md @@ -0,0 +1,50 @@ +# InSpec Profile: `vimrc` + +This shows the implementation of the `vimrc` InSpec [profile](https://github.com/inspec/inspec/blob/master/docs/profiles.md). + +## Verify a profile + +InSpec ships with built-in features to verify a profile structure. + +```bash +$ inspec check vimrc +Summary +------- +Location: vimrc +Profile: profile +Controls: 4 +Timestamp: 2019-06-24T23:09:01+00:00 +Valid: true + +Errors +------ + +Warnings +-------- +``` + +## Execute a profile + +To run all **supported** controls on a local machine use `inspec exec /path/to/profile`. + +```bash +$ inspec exec vimrc +.. + +Finished in 0.0025 seconds (files took 0.12449 seconds to load) +8 examples, 0 failures +``` + +## Execute a specific control from a profile + +To run one control from the profile use `inspec exec /path/to/profile --controls name`. + +```bash +$ inspec exec vimrc --controls package +. + +Finished in 0.0025 seconds (files took 0.12449 seconds to load) +1 examples, 0 failures +``` + +See an [example control here](https://github.com/inspec/inspec/blob/master/examples/profile/controls/example.rb). diff --git a/test/integration/vimrc/controls/config_spec.rb b/test/integration/vimrc/controls/config_spec.rb new file mode 100644 index 0000000..95f62c2 --- /dev/null +++ b/test/integration/vimrc/controls/config_spec.rb @@ -0,0 +1,11 @@ +# frozen_string_literal: true + +control 'vimrc is managed' do + title 'formula should manage .vimrc' + + describe file('/home/vim_user/.vimrc') do + it { should be_owned_by 'vim_user' } + its('mode') { should cmp '0644' } + its('content') { should match(/syntax on/) } + end +end diff --git a/test/integration/vimrc/inspec.yml b/test/integration/vimrc/inspec.yml new file mode 100644 index 0000000..cab2eb2 --- /dev/null +++ b/test/integration/vimrc/inspec.yml @@ -0,0 +1,18 @@ +# -*- coding: utf-8 -*- +# vim: ft=yaml +--- +name: vimrc +title: users formula +maintainer: SaltStack Formulas +license: Apache-2.0 +summary: Verify that the `.vimrc` file is configured correctly for specified users +supports: + - platform-name: debian + - platform-name: ubuntu + - platform-name: centos + - platform-name: fedora + - platform-name: opensuse + - platform-name: suse + - platform-name: freebsd + - platform-name: amazon + - platform-name: arch diff --git a/test/salt/pillar/default.sls b/test/salt/pillar/default.sls index 80e3cf9..285b2e6 100644 --- a/test/salt/pillar/default.sls +++ b/test/salt/pillar/default.sls @@ -2,7 +2,6 @@ # vim: ft=yaml --- users-formula: - use_vim_formula: true lookup: # override the defauls in map.jinja root_group: root diff --git a/test/salt/pillar/vimrc.sls b/test/salt/pillar/vimrc.sls new file mode 100644 index 0000000..059b6f3 --- /dev/null +++ b/test/salt/pillar/vimrc.sls @@ -0,0 +1,11 @@ +# -*- coding: utf-8 -*- +# vim: ft=yaml +--- +users-formula: + use_vim_formula: true + +users: + ## Minimal required pillar values + vim_user: + fullname: Vim User + manage_vimrc: true diff --git a/users/files/vimrc/vimrc b/users/files/vimrc/vimrc index fef9e87..15427ae 100644 --- a/users/files/vimrc/vimrc +++ b/users/files/vimrc/vimrc @@ -1,3 +1,9 @@ +"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" +" File managed by Salt at <{{ source }}>. +" Your changes will be overwritten. +"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" +" +{% raw -%} " URL: http://vim.wikia.com/wiki/Example_vimrc " Authors: http://vim.wikia.com/wiki/Vim_on_Freenode " Description: A minimal, but feature rich, example .vimrc. If you are a @@ -158,3 +164,4 @@ nnoremap :nohl "------------------------------------------------------------ +{%- endraw %} diff --git a/users/vimrc.sls b/users/vimrc.sls index d8a378d..abb9274 100644 --- a/users/vimrc.sls +++ b/users/vimrc.sls @@ -1,6 +1,6 @@ {% from "users/map.jinja" import users with context %} -{% if users.use_vim_formula %} +{% if salt['pillar.get']('users-formula:use_vim_formula', False) %} include: - users