Sha256: 68cfcd0b0c468355ac4c061c785af9de50554d065ba30b0e1d141274b5e2a314

Contents?: true

Size: 1.28 KB

Versions: 5

Compression:

Stored size: 1.28 KB

Contents

require 'yaml'

# Custom resource based on the InSpec resource DSL
class GordonConfig < Inspec.resource(1)
  name 'gordon_config'

  desc "
    Gordon's resource description ...
  "

  example "
    describe gordon_config do
      its('version') { should eq('1.0') }
      its('file_size') { should > 1 }
    end
  "

  # Load the configuration file on initialization
  def initialize
    @params = {}
    @path = '/tmp/gordon/config.yaml'
    @file = inspec.file(@path)
    return skip_resource "Can't find file \"#{@path}\"" if !@file.file?

    # Protect from invalid YAML content
    begin
      @params = YAML.load(@file.content)
      # Add two extra matchers
      @params['file_size'] = @file.size
      @params['file_path'] = @path
      @params['ruby'] = 'RUBY IS HERE TO HELP ME!'
    rescue Exception
      return skip_resource "#{@file}: #{$!}"
    end
  end

  # Example method called by 'it { should exist }'
  # Returns true or false from the 'File.exists?' method
  def exists?
    return File.exists?(@path)
  end

  # Example matcher for the number of commas in the file
  def comma_count
    text = @file.content
    return text.count(',')
  end

  # Expose all parameters
  def method_missing(name)
    return @params[name.to_s]
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
inspec-2.1.21 examples/profile/libraries/gordon_config.rb
inspec-2.1.10 examples/profile/libraries/gordon_config.rb
inspec-2.0.32 examples/profile/libraries/gordon_config.rb
inspec-2.0.17 examples/profile/libraries/gordon_config.rb
inspec-1.51.15 examples/profile/libraries/gordon_config.rb