puppet-herald 0.1.0 → 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,15 +1,7 @@
1
- ---
2
- !binary "U0hBMQ==":
3
- metadata.gz: !binary |-
4
- YWNhZTUzMzk1M2ExNzcwNGFiZDVkNTNmNDBkZGYxNmQxNzUyYjg2MQ==
5
- data.tar.gz: !binary |-
6
- ZjBjNjQyMjYzMjc2ZGU0Y2Y4MTA3NWQyMTI1NzIxNGIxMDMwNGQzOA==
7
- SHA512:
8
- metadata.gz: !binary |-
9
- ZjVhZjY1ZGYwOGE1ODc1YjcxYzNjMDhjYzFlNTIwY2E1M2VkYjgzNWZkYWQ0
10
- NTY4N2M2ZmUxNmVlZDMzN2U0MTZjMDg2MDMzZWI4MjNmY2FhYzNmOTZhMTJl
11
- YjZmMTA4MjVlZDk1OTFmNzM2YzM0Yjk0ZWZhMzEyOWIyZjAyMzU=
12
- data.tar.gz: !binary |-
13
- NzhhZGI2ZDhmYzFiY2I4MzYzMmY3YzMwMDM1ZTRlM2YwYzU4NWEzNDFhNWE3
14
- ZDEzOWU1YmFiNjZhNjE3NDQyNzY0ZmIwYTY0OGExNTc4OTUzZWNlZmE1ZTI0
15
- YzFlNDI4NDk4YjExODViYjUzYjZkMDJjZjg0YWMxMTUwODM1YWM=
1
+ ---
2
+ SHA512:
3
+ metadata.gz: 78f9a25bcd05308702a4aaab34357dcd95359e1c418d7795fbf46ebea7b2c327a752107952292f121d0ba627feb9c5828a29ca64d22b480097705a1b5b99275c
4
+ data.tar.gz: e3a4545a971d3c56f7062b98594351899e907828f1ce983386489e340e705a4ed73ae6a8af82b78918926cca3dfc29c78b6407545e545f32cdcf705f31d8594c
5
+ SHA1:
6
+ metadata.gz: 0cf69983b2dca3d4c86d2bcb33178563c0d2f1db
7
+ data.tar.gz: e1a41cbe6c56cce31b299b7002880da7559ddf9d
data/.gitignore CHANGED
@@ -20,3 +20,6 @@
20
20
  # Ignore all logfiles and tempfiles.
21
21
  /log/*.log
22
22
  /tmp
23
+ /node_modules
24
+ /npm-*.log
25
+ /Gemfile.local
data/.travis.yml ADDED
@@ -0,0 +1,17 @@
1
+ ---
2
+ language: ruby
3
+ bundler_args: --without development
4
+ script:
5
+ - bundle exec rake test
6
+ # - ./node_modules/karma/bin/karma start --single-run --browsers PhantomJS test/javascript/karma.conf.js
7
+ before_install: rm -f Gemfile.lock
8
+ before_script:
9
+ - npm install
10
+ matrix:
11
+ fast_finish: true
12
+ include:
13
+ - rvm: 1.9.3
14
+ - rvm: 2.0.0
15
+ - rvm: 2.1.0
16
+ notifications:
17
+ email: false
data/Gemfile CHANGED
@@ -2,4 +2,29 @@ source ENV['GEM_SOURCE'] || "https://rubygems.org"
2
2
 
3
3
  gemspec
4
4
 
5
+ group :test do
6
+
7
+ gem 'rake', '~> 10.4'
8
+ gem 'rspec', '~> 3.1'
9
+ gem 'rspec-its', '~> 1.1'
10
+ gem 'coveralls', '~> 0.7'
11
+ gem 'simplecov', '~> 0.9'
12
+ gem 'sqlite3', '~> 1.3'
13
+
14
+ end
15
+
16
+ group :development do
17
+
18
+ gem 'inch', '~> 0.5'
19
+ gem 'travis', '~> 1.6'
20
+ gem 'pry-byebug', '~> 2.0' if RUBY_VERSION >= '2.0.0'
21
+ gem 'pry-debugger', '~> 0.2' if RUBY_VERSION < '2.0.0'
22
+
23
+ end
24
+
25
+ local_gemfile = File.join(File.dirname(__FILE__), "Gemfile.local")
26
+ if File.exists?(local_gemfile)
27
+ eval_gemfile local_gemfile
28
+ end
29
+
5
30
  # vim:ft=ruby
@@ -0,0 +1,7 @@
1
+
2
+ gem 'pg'
3
+ gem 'puma'
4
+ # gem 'thin'
5
+
6
+
7
+ # vim:ft=ruby
data/README.md CHANGED
@@ -1,11 +1,24 @@
1
1
  puppet-herald gem
2
2
  ========
3
3
 
4
+ ##### Status Info
5
+ [![GitHub Issues](https://img.shields.io/github/issues/wavesoftware/gem-puppet-herald.svg)](https://github.com/wavesoftware/gem-puppet-herald/issues) [![Gem](http://img.shields.io/gem/v/puppet-herald.svg)](https://rubygems.org/gems/puppet-herald) [![GitHub Release](https://img.shields.io/github/release/wavesoftware/gem-puppet-herald.svg)](https://github.com/wavesoftware/gem-puppet-herald/releases) [![Apache 2.0 License](http://img.shields.io/badge/license-Apache%202.0-blue.svg)](https://raw.githubusercontent.com/wavesoftware/gem-puppet-herald/develop/LICENSE)
6
+
7
+ ##### Master (stable) branch
8
+ [![Build Status](https://img.shields.io/travis/wavesoftware/gem-puppet-herald/master.svg)](https://travis-ci.org/wavesoftware/gem-puppet-herald) [![Dependency Status](https://gemnasium.com/wavesoftware/gem-puppet-herald.svg)](https://gemnasium.com/wavesoftware/gem-puppet-herald) [![Coverage Status](https://img.shields.io/coveralls/wavesoftware/gem-puppet-herald/master.svg)](https://coveralls.io/r/wavesoftware/gem-puppet-herald?branch=master) [![Code Climate](https://codeclimate.com/github/wavesoftware/gem-puppet-herald/badges/gpa.svg?branch=master)](https://codeclimate.com/github/wavesoftware/gem-puppet-herald) [![Inline docs](http://inch-ci.org/github/wavesoftware/gem-puppet-herald.svg?branch=master)](http://inch-ci.org/github/wavesoftware/gem-puppet-herald)
9
+
10
+ ##### Development branch
11
+ [![Build Status](https://img.shields.io/travis/wavesoftware/gem-puppet-herald/develop.svg)](https://travis-ci.org/wavesoftware/gem-puppet-herald) [![Dependency Status](https://gemnasium.com/wavesoftware/gem-puppet-herald.svg)](https://gemnasium.com/wavesoftware/gem-puppet-herald) [![Coverage Status](https://img.shields.io/coveralls/wavesoftware/gem-puppet-herald/develop.svg)](https://coveralls.io/r/wavesoftware/gem-puppet-herald?branch=develop) [![Code Climate](https://codeclimate.com/github/wavesoftware/gem-puppet-herald/badges/gpa.svg?branch=develop)](https://codeclimate.com/github/wavesoftware/gem-puppet-herald) [![Inline docs](http://inch-ci.org/github/wavesoftware/gem-puppet-herald.svg?branch=develop)](http://inch-ci.org/github/wavesoftware/gem-puppet-herald)
12
+
4
13
  Overview
5
14
  --------
6
15
 
7
16
  Herald is a puppet report processor. He provides a gateway for consuming puppet reports, a REST API and a simple Web app to display reports.
8
17
 
18
+ ![A reports list](https://raw.githubusercontent.com/wavesoftware/gem-puppet-herald/gh-pages/images/reports.png)
19
+
20
+ ![A logs of single report](https://raw.githubusercontent.com/wavesoftware/gem-puppet-herald/gh-pages/images/logs.png)
21
+
9
22
  Puppet module
10
23
  -----
11
24
 
data/Rakefile CHANGED
@@ -1,6 +1,13 @@
1
- require 'puppet-herald/app'
1
+
2
2
  require 'sinatra/activerecord/rake'
3
3
  require 'rspec/core/rake_task'
4
4
 
5
+ desc "Run spec tests."
5
6
  RSpec::Core::RakeTask.new(:spec)
6
- task :default => :spec
7
+
8
+ desc "Run lint, and spec tests."
9
+ task :test => [
10
+ :spec
11
+ ]
12
+
13
+ task :default => :test
data/bin/puppet-herald CHANGED
@@ -10,4 +10,4 @@ rescue LoadError
10
10
  end
11
11
 
12
12
  # Process command line options and run Puppet Herald
13
- PuppetHerald::CLI.parse_options
13
+ PuppetHerald::CLI.run!
data/lib/puppet-herald.rb CHANGED
@@ -9,11 +9,7 @@ module PuppetHerald
9
9
  @@root = File.dirname(File.dirname(File.realpath(__FILE__)))
10
10
 
11
11
  def self.relative_dir dir
12
- File.join @@root, dir
13
- end
14
-
15
- def self.port
16
- @@port
12
+ File.realpath(File.join @@root, dir)
17
13
  end
18
14
 
19
15
  def self.environment
@@ -31,7 +27,23 @@ module PuppetHerald
31
27
  def self.is_in_prod?
32
28
  return !is_in_dev?
33
29
  end
30
+
31
+ def self.bug ex
32
+ file = Tempfile.new(['puppet-herald-bug', '.log'])
33
+ filepath = file.path
34
+ file.close
35
+ file.unlink
36
+ message = "v#{PuppetHerald::VERSION}-#{ex.class.to_s}: #{ex.message}"
37
+ contents = message + "\n\n" + ex.backtrace.join("\n") + "\n"
38
+ File.write(filepath, contents)
39
+ bugo = {
40
+ :message => message,
41
+ :homepage => PuppetHerald::HOMEPAGE,
42
+ :bugfile => filepath,
43
+ :help => "Please report this bug to #{PuppetHerald::HOMEPAGE} by passing contents of bug file: #{filepath}"
44
+ }
45
+ return bugo
46
+ end
34
47
  end
35
48
 
36
49
  require 'puppet-herald/database'
37
- require 'puppet-herald/app'
@@ -1,5 +1,5 @@
1
1
  require 'sinatra/base'
2
- require "sinatra/namespace"
2
+ require 'sinatra/namespace'
3
3
  require 'sinatra/activerecord'
4
4
  require 'puppet-herald'
5
5
  require 'puppet-herald/javascript'
@@ -10,36 +10,27 @@ module PuppetHerald
10
10
  class App < Sinatra::Base
11
11
  register Sinatra::Namespace
12
12
  register Sinatra::ActiveRecordExtension
13
- configure [:production, :development] do
14
- enable :logging
15
- PuppetHerald::Database.setup self
16
- end
13
+
14
+ set :database, PuppetHerald::Database.spec unless PuppetHerald::Database.spec.nil?
17
15
  if PuppetHerald::is_in_dev?
18
16
  set :environment, :development
19
17
  else
20
18
  set :environment, :production
21
19
  end
22
20
 
23
- def self.bug ex
24
- file = Tempfile.new(['puppet-herald-bug', '.log'])
25
- filepath = file.path
26
- file.close
27
- file.unlink
28
- message = "v#{PuppetHerald::VERSION}-#{ex.class.to_s}: #{ex.message}"
29
- contents = message + "\n\n" + ex.backtrace.join("\n") + "\n"
30
- File.write(filepath, contents)
31
- bugo = {
32
- :message => message,
33
- :homepage => PuppetHerald::HOMEPAGE,
34
- :bugfile => filepath,
35
- :help => "Please report this bug to #{PuppetHerald::HOMEPAGE} by passing contents of bug file: #{filepath}"
36
- }
37
- return bugo
21
+ def self.run! options = {}, &block
22
+ ActiveRecord::Base.establish_connection(PuppetHerald::Database.spec)
23
+ ActiveRecord::Migrator.up "db/migrate"
24
+ super options, *block
38
25
  end
39
26
 
40
27
  error do
41
- @bug = PuppetHerald::App.bug(env['sinatra.error'])
42
- erb :err500
28
+ @bug = PuppetHerald::bug(env['sinatra.error'])
29
+ if response.content_type == 'application/json'
30
+ @bug.to_json
31
+ else
32
+ erb :err500
33
+ end
43
34
  end
44
35
 
45
36
  get %r{/app\.min\.(js\.map|js)} do |ext|
@@ -1,4 +1,5 @@
1
1
  require 'micro-optparse'
2
+ require 'logger'
2
3
  require 'puppet-herald'
3
4
  require 'puppet-herald/version'
4
5
  require 'puppet-herald/database'
@@ -6,7 +7,37 @@ require 'puppet-herald/database'
6
7
  module PuppetHerald
7
8
  class CLI
8
9
 
9
- def self.parse_options
10
+ @@logger = Logger.new STDOUT
11
+ @@errlogger = Logger.new STDERR
12
+ @@retcode = 0
13
+
14
+ def self.retcode= val
15
+ @@retcode = val if @@retcode == 0
16
+ end
17
+
18
+ def self.logger
19
+ @@logger
20
+ end
21
+
22
+ def self.errlogger
23
+ @@errlogger
24
+ end
25
+
26
+ def self.run! argv=ARGV
27
+ @@retcode = 0
28
+ begin
29
+ options = parse_options argv
30
+ require 'puppet-herald/app'
31
+ PuppetHerald::App.run! options
32
+ rescue Exception => ex
33
+ bug = PuppetHerald.bug(ex)
34
+ errlogger.fatal "Unexpected error occured, mayby a bug?\n\n#{bug[:message]}\n\n#{bug[:help]}"
35
+ self.retcode = 1
36
+ end
37
+ Kernel::exit @@retcode
38
+ end
39
+
40
+ def self.parse_options argv
10
41
  usage = ""
11
42
  banner = <<-eos
12
43
  #{PuppetHerald::NAME} v#{PuppetHerald::VERSION} - #{PuppetHerald::SUMMARY}
@@ -30,24 +61,20 @@ CAUTION! For security reasons, don't pass password in connection string, use --p
30
61
  p.option :dbconn, "Connection string to database, see info above", :default => defaultdb
31
62
  p.option :passfile, "If using postgresql, this file will be read for password to database", :default => defaultdbpass
32
63
  end
33
- options = parser.process!
64
+ options = parser.process!(argv)
34
65
 
35
- puts "Starting #{PuppetHerald::NAME} v#{PuppetHerald::VERSION}..."
66
+ logger.info "Starting #{PuppetHerald::NAME} v#{PuppetHerald::VERSION} in #{PuppetHerald::environment}..."
36
67
  PuppetHerald::Database.dbconn = options[:dbconn]
37
68
  PuppetHerald::Database.passfile = options[:passfile]
38
69
  begin
39
- PuppetHerald::Database.validate! :echo => true
70
+ PuppetHerald::Database.spec :echo => true
40
71
  rescue Exception => ex
41
- STDERR.puts "FATAL ERROR - Database configuration is invalid!\n\n#{ex.message}"
42
- exit 2
43
- end
44
- begin
45
- PuppetHerald::App.run! options
46
- rescue Exception => ex
47
- bug = PuppetHerald::App.bug(ex)
48
- STDERR.puts "FATAL ERROR - Unexpected error occured, mayby a bug?\n\n#{bug[:message]}\n\n#{bug[:help]}"
49
- exit 1
72
+ errlogger.fatal "Database configuration is invalid!\n\n#{ex.message}"
73
+ self.retcode = 2
74
+ raise ex
50
75
  end
76
+
77
+ return options
51
78
  end
52
79
  end
53
80
  end
@@ -1,10 +1,16 @@
1
1
  require 'fileutils'
2
+ require 'logger'
2
3
 
3
4
  module PuppetHerald
4
5
  class Database
5
6
 
6
7
  @@dbconn = nil
7
8
  @@passfile = nil
9
+ @@logger = Logger.new STDOUT
10
+
11
+ def self.logger
12
+ @@logger
13
+ end
8
14
 
9
15
  def self.dbconn= dbconn
10
16
  @@dbconn = dbconn
@@ -14,18 +20,23 @@ module PuppetHerald
14
20
  @@passfile = passfile
15
21
  end
16
22
 
17
- def self.validate! echo=false
18
- db = URI.parse(@@dbconn)
23
+ def self.spec echo=false
24
+ return nil if @@dbconn.nil?
19
25
  connection = {}
20
- if db.scheme.to_s.empty?
21
- raise "Database scheme couldn't be empty! Connection string given: #{@@dbconn}"
26
+ match = @@dbconn.match(/^(sqlite3?|postgres(?:ql)?):\/\/(.+)$/)
27
+ unless match
28
+ raise "Invalid database connection string given: #{@@dbconn}"
22
29
  end
23
- if ['sqlite', 'sqlite3'].include? db.scheme
24
- file = File.expand_path("#{db.host}#{db.path}")
25
- FileUtils.touch file
30
+ if ['sqlite', 'sqlite3'].include? match[1]
31
+ dbname = match[2]
32
+ unless dbname.match /^(?:file:)?:mem/
33
+ dbname = File.expand_path(dbname)
34
+ FileUtils.touch dbname
35
+ end
26
36
  connection[:adapter] = 'sqlite3'
27
- connection[:database] = file
37
+ connection[:database] = dbname
28
38
  else
39
+ db = URI.parse @@dbconn
29
40
  dbname = db.path[1..-1]
30
41
  connection[:adapter] = db.scheme == 'postgres' ? 'postgresql' : db.scheme
31
42
  connection[:host] = db.host
@@ -38,13 +49,9 @@ module PuppetHerald
38
49
  if echo
39
50
  copy = connection.dup
40
51
  copy[:password] = '***' unless copy[:password].nil?
41
- puts "Using #{copy.inspect} for database."
52
+ logger.info "Using #{copy.inspect} for database."
42
53
  end
43
54
  return connection
44
55
  end
45
-
46
- def self.setup app
47
- ActiveRecord::Base.establish_connection(validate!)
48
- end
49
56
  end
50
57
  end
@@ -2,14 +2,13 @@
2
2
  "name": "puppet-herald",
3
3
  "description": "Report processor for Puppet",
4
4
  "version": "0.1.0",
5
- "homepage": "https://github.com/wavesoftware/puppet-herald",
5
+ "homepage": "https://github.com/wavesoftware/gem-puppet-herald",
6
6
  "license": "Apache 2.0",
7
7
  "private": false,
8
8
  "dependencies": {
9
9
  "angular": "1.3.x",
10
10
  "angular-route": "1.3.x",
11
11
  "angular-loader": "1.3.x",
12
- "angular-mocks": "~1.3.x",
13
- "html5-boilerplate": "~4.3.0"
12
+ "angular-mocks": "1.3.x"
14
13
  }
15
14
  }
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
 
3
3
  describe('herald.artifact module', function() {
4
- beforeEach(module('myApp.artifact'));
4
+ beforeEach(module('herald.artifact'));
5
5
 
6
6
  describe('app-version directive', function() {
7
7
  it('should print current version', function() {
@@ -4,12 +4,12 @@ module PuppetHerald
4
4
  version = desired
5
5
  if desired.match(/[^0-9\.]+/)
6
6
  git = `git describe --tags --dirty --always`
7
- version += "-" + git[1..-1]
7
+ version += "." + git.gsub('-', '.')
8
8
  end
9
9
  return version.strip
10
10
  end
11
11
 
12
- VERSION = version_prep '0.1.0'
12
+ VERSION = version_prep '0.1.1'
13
13
  LICENSE = 'Apache 2.0'
14
14
  NAME = 'Puppet Herald'
15
15
  PACKAGE = 'puppet-herald'
data/package.json ADDED
@@ -0,0 +1,40 @@
1
+ {
2
+ "name": "puppet-herald",
3
+ "version": "0.1.1",
4
+ "description": "Provides a gateway for consuming puppet reports, a REST API and a simple Web app to display reports.",
5
+ "main": "lib/puppet-herald/public/app.js",
6
+ "directories": {
7
+ "test": "test"
8
+ },
9
+ "dependencies": {
10
+ "angular": "1.3.x",
11
+ "angular-route": "1.3.x",
12
+ "angular-loader": "1.3.x",
13
+ "angular-mocks": "1.3.x"
14
+ },
15
+ "devDependencies": {
16
+ "jasmine-core": "~2.1.0",
17
+ "karma-jasmine": "~0.3.0",
18
+ "karma": "~0.12.0",
19
+ "phantomjs": "~1.9.0",
20
+ "karma-phantomjs-launcher": "~0.1"
21
+ },
22
+ "scripts": {
23
+ "test": "test/javascript/karma.conf.js"
24
+ },
25
+ "repository": {
26
+ "type": "git",
27
+ "url": "https://github.com/wavesoftware/gem-puppet-herald.git"
28
+ },
29
+ "keywords": [
30
+ "puppet",
31
+ "reports",
32
+ "herald"
33
+ ],
34
+ "author": "Krzysztof Suszynski",
35
+ "license": "Apache 2.0",
36
+ "bugs": {
37
+ "url": "https://github.com/wavesoftware/gem-puppet-herald/issues"
38
+ },
39
+ "homepage": "https://github.com/wavesoftware/gem-puppet-herald"
40
+ }
@@ -20,42 +20,14 @@ Gem::Specification.new do |gem|
20
20
  # Dependencies
21
21
  gem.required_ruby_version = '>= 1.9.2'
22
22
 
23
- prydebugger = if RUBY_VERSION >= "2.0.0" then 'pry-byebug' else 'pry-debugger' end
24
- dependencies = {
25
- :runtime => [
26
- 'rake',
27
- 'sinatra',
28
- 'sinatra-contrib',
29
- 'sinatra-activerecord',
30
- 'micro-optparse',
31
- 'uglifier',
32
- 'sqlite3',
33
- 'pg',
34
- 'puma'
35
- ],
36
- :test => [
37
- 'rspec',
38
- 'rspec-its',
39
- 'coveralls',
40
- 'simplecov'
41
- ],
42
- :developmant => [
43
- 'inch',
44
- 'travis',
45
- 'travis-lint',
46
- prydebugger
47
- ]
48
- }
23
+ # Runtime
24
+ gem.add_runtime_dependency 'sinatra', '~> 1.4'
25
+ gem.add_runtime_dependency 'sinatra-contrib', '~> 1.4'
26
+ gem.add_runtime_dependency 'sinatra-activerecord', '~> 2.0'
27
+ gem.add_runtime_dependency 'micro-optparse', '~> 1.2'
28
+ gem.add_runtime_dependency 'uglifier', '~> 2.6'
49
29
 
50
- dependencies[:runtime].each do |spec|
51
- gem.add_runtime_dependency spec
52
- end
53
- dependencies[:test].each do |spec|
54
- gem.add_development_dependency spec
55
- end
56
- dependencies[:developmant].each do |spec|
57
- gem.add_development_dependency spec
58
- end
30
+ # Development and test dependencies specified in Gemfile
59
31
 
60
32
  end
61
33
 
@@ -0,0 +1,21 @@
1
+ ENV['RACK_ENV'] = 'test'
2
+
3
+ require 'model_helper'
4
+ require 'rspec'
5
+ require 'rack/test'
6
+
7
+ xdescribe 'The Herald App', :rollback => true do
8
+ include Rack::Test::Methods
9
+
10
+ def app
11
+ require 'puppet-herald/app'
12
+ PuppetHerald::App
13
+ end
14
+
15
+ it "on '/' redirects to '/app.html'" do
16
+ get '/'
17
+ expect(last_response).not_to be_ok
18
+ expect(last_response.status).to eq(301)
19
+ expect(last_response.header['Location']).to eq('http://example.org/app.html')
20
+ end
21
+ end
@@ -0,0 +1,26 @@
1
+ require 'model_helper'
2
+ require 'puppet-herald/models/report'
3
+ require 'puppet-herald/models/log-entry'
4
+ require 'puppet-herald/models/node'
5
+
6
+ describe Node, '.get_with_reports', :rollback => true do
7
+ let(:yaml) { File.read(File.expand_path("../../fixtures/changed-notify.yaml", __FILE__)) }
8
+ let(:id) { Report.create_from_yaml(yaml).node_id }
9
+
10
+ context 'fetching an existing node' do
11
+ subject { Node.get_with_reports id }
12
+
13
+ it "should return value that isn't nil" do
14
+ subject.should_not be_nil
15
+ end
16
+ it "should return a report object" do
17
+ subject.class.should eq(Node)
18
+ end
19
+ it "should return persisted node" do
20
+ subject.persisted?.should be_truthy
21
+ end
22
+ it "should have status 'changed'" do
23
+ subject.status.should eq('changed')
24
+ end
25
+ end
26
+ end
@@ -2,7 +2,7 @@ require 'model_helper'
2
2
  require 'puppet-herald/models/report'
3
3
  require 'puppet-herald/models/log-entry'
4
4
 
5
- describe Report, ".create_from_yaml" do
5
+ describe Report, ".create_from_yaml", :rollback => true do
6
6
  context 'for valid YAML' do
7
7
  let(:yaml) { File.read(File.expand_path("../../fixtures/changed-notify.yaml", __FILE__)) }
8
8
  it 'that is really not empty' do
@@ -35,4 +35,37 @@ describe Report, ".create_from_yaml" do
35
35
  end
36
36
  end
37
37
  end
38
+ end
39
+
40
+ describe Report, '.get_with_log_entries', :rollback => true do
41
+ let(:yaml) { File.read(File.expand_path("../../fixtures/changed-notify.yaml", __FILE__)) }
42
+ let(:id) { Report.create_from_yaml(yaml).id }
43
+
44
+ context 'fetching an existing report' do
45
+ subject { Report.get_with_log_entries id }
46
+
47
+ it "should return value that isn't nil" do
48
+ subject.should_not be_nil
49
+ end
50
+ it "should return a report object" do
51
+ subject.class.should eq(Report)
52
+ end
53
+ it "should return persisted report" do
54
+ subject.persisted?.should be_truthy
55
+ end
56
+ it "should have status 'changed'" do
57
+ subject.status.should eq('changed')
58
+ end
59
+ it "should have 3 log entries, also persisted" do
60
+ subject.log_entries.size.should eq(3)
61
+ subject.log_entries.each do |log|
62
+ log.persisted?.should be_truthy
63
+ end
64
+ end
65
+ it "should have parent node, that is persistedand has status 'changed'" do
66
+ subject.node.should_not be_nil
67
+ subject.node.status.should eq('changed')
68
+ subject.node.persisted?.should be_truthy
69
+ end
70
+ end
38
71
  end
data/spec/model_helper.rb CHANGED
@@ -1,2 +1,2 @@
1
+ require 'spec_helper'
1
2
  require 'support/active_record'
2
- require 'spec_helper'
data/spec/spec_helper.rb CHANGED
@@ -4,10 +4,13 @@ begin
4
4
  gem 'simplecov'
5
5
  require 'simplecov'
6
6
  SimpleCov.start do
7
+ add_filter "/test/"
7
8
  add_filter "/spec/"
8
9
  add_filter "/.vendor/"
9
10
  add_filter "/vendor/"
10
11
  add_filter "/gems/"
12
+ add_filter "/node_modules/"
13
+ add_filter "/coverage/"
11
14
  end
12
15
  rescue Gem::LoadError
13
16
  # do nothing
@@ -1,14 +1,16 @@
1
+ require 'puppet-herald/database'
1
2
  require 'active_record'
2
3
  require 'stringio' # silence the output
3
4
  $stdout = StringIO.new # from migrator
4
5
 
5
- ActiveRecord::Base.establish_connection adapter: "sqlite3", database: ":memory:"
6
+ PuppetHerald::Database.dbconn = 'sqlite3://:memory:'
7
+ ActiveRecord::Base.establish_connection(PuppetHerald::Database.spec)
6
8
  ActiveRecord::Migrator.up "db/migrate"
7
9
 
8
10
  $stdout = STDOUT
9
11
 
10
12
  RSpec.configure do |config|
11
- config.around do |example|
13
+ config.around(:example, {:rollback => true}) do |example|
12
14
  ActiveRecord::Base.transaction do
13
15
  example.run
14
16
  raise ActiveRecord::Rollback
@@ -0,0 +1,54 @@
1
+ require 'spec_helper'
2
+ require 'puppet-herald'
3
+ require 'puppet-herald/cli'
4
+
5
+ context 'With silenced loggers' do
6
+
7
+ before :each do
8
+ PuppetHerald::CLI::logger.level = 100
9
+ PuppetHerald::CLI::errlogger.level = 100
10
+ PuppetHerald::Database::logger.level = 100
11
+ PuppetHerald::Database::dbconn = nil
12
+ end
13
+
14
+ describe PuppetHerald::CLI, '.parse_options' do
15
+ subject { PuppetHerald::CLI::parse_options argv }
16
+
17
+ context 'on defaults' do
18
+ let(:argv) { [] }
19
+ its(:class) { should be Hash }
20
+ it { subject[:port].should eq 11303 }
21
+ end
22
+
23
+ context 'on with invalid DB' do
24
+ let(:argv) { ['--dbconn', '/non-exist/db.sqlite'] }
25
+
26
+ it { expect { subject }.to raise_error(RuntimeError, /Invalid database connection string given/) }
27
+ end
28
+ end
29
+
30
+ describe PuppetHerald::CLI, '.run!' do
31
+ subject { PuppetHerald::CLI::run! argv }
32
+
33
+ context 'on defaults' do
34
+ let(:argv) { [] }
35
+ before :each do
36
+ require 'puppet-herald/app'
37
+ expect(Kernel).to receive(:exit).with(0)
38
+ expect(PuppetHerald::App).to receive(:run!).and_return :none
39
+ end
40
+
41
+ it { expect(subject).to be_nil }
42
+ end
43
+
44
+ context 'on with invalid DB' do
45
+ let(:argv) { ['--dbconn', '/non-exist/db.sqlite'] }
46
+ before :each do
47
+ expect(Kernel).to receive(:exit).with(2)
48
+ end
49
+
50
+ it { expect(subject).to be_nil }
51
+ end
52
+ end
53
+
54
+ end
@@ -0,0 +1,57 @@
1
+ require 'spec_helper'
2
+ require 'puppet-herald'
3
+ require 'puppet-herald/database'
4
+
5
+ describe PuppetHerald::Database, '.spec' do
6
+ let(:tempdir) { Dir.tmpdir }
7
+ let(:echo) { false }
8
+ subject { PuppetHerald::Database::spec echo }
9
+ context 'with invalid dbconn' do
10
+ before :each do
11
+ PuppetHerald::Database::dbconn = "#{tempdir}/non-existing.db"
12
+ end
13
+ it { expect { subject }.to raise_error(RuntimeError, /Invalid database connection string given/) }
14
+ end
15
+ context 'using sqlite' do
16
+ context 'with non existing database' do
17
+ before :each do
18
+ PuppetHerald::Database::dbconn = 'sqlite:///non-existing/non-existing.db'
19
+ end
20
+ it { expect { subject }.to raise_error(Errno::ENOENT, /No such file or directory/) }
21
+ end
22
+ context 'with creatable database file' do
23
+ before :each do
24
+ PuppetHerald::Database::dbconn = "sqlite://#{tempdir}/non-existing.db"
25
+ end
26
+ its(:class) { should be Hash }
27
+ its(:size) { should eq 2 }
28
+ context 'while echoing!!' do
29
+ let(:echo) { true }
30
+ before :each do
31
+ PuppetHerald::Database::logger.level = Logger::FATAL
32
+ end
33
+ its(:class) { should be Hash }
34
+ its(:size) { should eq 2 }
35
+ end
36
+ end
37
+ end
38
+ context 'using postgres' do
39
+ before :each do
40
+ PuppetHerald::Database::dbconn = "postgres://abc@localhost:6543/adb"
41
+ end
42
+ context 'with non existing passfile' do
43
+ before :each do
44
+ PuppetHerald::Database::passfile = "/non-existing/passfile"
45
+ end
46
+ it { expect { subject }.to raise_error(Errno::ENOENT, /No such file or directory/) }
47
+ end
48
+ context 'with existing passfile' do
49
+ before :each do
50
+ PuppetHerald::Database::passfile = __FILE__
51
+ end
52
+ its(:class) { should be Hash }
53
+ its(:size) { should eq 7 }
54
+ end
55
+ end
56
+
57
+ end
@@ -0,0 +1,44 @@
1
+ require 'spec_helper'
2
+ require 'puppet-herald'
3
+ require 'puppet-herald/javascript'
4
+
5
+ describe PuppetHerald::Javascript, '.files' do
6
+ context 'running in dev environment' do
7
+ before :each do
8
+ expect(PuppetHerald).to receive(:is_in_dev?).twice.and_return true
9
+ expect(Dir).to receive(:glob).twice.and_return(['aaa.js', 'a/bbb.js', 'ccc_test.js'])
10
+ PuppetHerald::Javascript::files
11
+ end
12
+ after :each do
13
+ PuppetHerald::Javascript::class_variable_set '@@files', nil
14
+ end
15
+ let(:files) { PuppetHerald::Javascript::files }
16
+ it { files.size.should eq 2 }
17
+ it { files.should include 'aaa.js' }
18
+ it { files.should_not include 'ccc_test.js' }
19
+ end
20
+
21
+ context 'running in prod environment' do
22
+ before :each do
23
+ expect(PuppetHerald).to receive(:is_in_dev?).twice.and_return false
24
+ expect(Dir).to receive(:glob).once.and_return(['aaa.js', 'a/bbb.js', 'ccc_test.js'])
25
+ PuppetHerald::Javascript::files
26
+ end
27
+ after :each do
28
+ PuppetHerald::Javascript::class_variable_set '@@files', nil
29
+ end
30
+ let(:files) { PuppetHerald::Javascript::files }
31
+ it { files.size.should eq 2 }
32
+ it { files.should include 'aaa.js' }
33
+ it { files.should_not include 'ccc_test.js' }
34
+ end
35
+ end
36
+
37
+ describe PuppetHerald::Javascript, '.uglify' do
38
+ subject { PuppetHerald::Javascript::uglify 'myapp.js.map' }
39
+
40
+ it { subject.size.should eq 2 }
41
+ it { subject['js'].should_not be_empty }
42
+ it { subject['js.map'].should_not be_empty }
43
+ it { subject['js'].should include('myapp.js.map') }
44
+ end
@@ -0,0 +1,14 @@
1
+ require 'spec_helper'
2
+ require 'puppet-herald'
3
+ require 'puppet-herald/version'
4
+
5
+ describe PuppetHerald, '.version_prep' do
6
+ context 'on stable version v1.2.3' do
7
+ subject { PuppetHerald::version_prep '1.2.3' }
8
+ it { subject.should eq '1.2.3' }
9
+ end
10
+ context 'on unstable version v1.2.3.pre' do
11
+ subject { PuppetHerald::version_prep '1.2.3.pre' }
12
+ it { subject.should match /^1\.2\.3\.pre\.v\d+\.\d+\.\d+(?:\.\d+\.g[0-9a-f]{7}(?:\.dirty)?)?$/ }
13
+ end
14
+ end
@@ -0,0 +1,56 @@
1
+ require 'spec_helper'
2
+ require 'puppet-herald'
3
+
4
+ describe PuppetHerald, '.relative_dir' do
5
+ let(:thisfile) { File.realpath(__FILE__) }
6
+ context 'on directory "."' do
7
+ subject { PuppetHerald.relative_dir '.' }
8
+
9
+ it do
10
+ subject.should_not be_nil
11
+ end
12
+
13
+ it 'should give a common path' do
14
+ thisfile.should include(subject)
15
+ end
16
+
17
+ it do
18
+ thisfile.gsub(subject, '').should eq('/spec/unit/puppet-herald_spec.rb')
19
+ end
20
+ end
21
+
22
+ context 'on directory "lib/puppet-herald/public"' do
23
+ subject { PuppetHerald.relative_dir 'lib/puppet-herald/public' }
24
+
25
+ it { Pathname.new(File.join(subject, 'app.js')).should be_file }
26
+ end
27
+ end
28
+
29
+ describe PuppetHerald do
30
+ after :each do
31
+ ENV.delete 'PUPPET_HERALD_ENV'
32
+ end
33
+ context 'on unset environment variable' do
34
+ before :each do
35
+ ENV.delete 'PUPPET_HERALD_ENV'
36
+ end
37
+ describe '.environment' do
38
+ it { subject::environment.should eq(:production) }
39
+ end
40
+ describe '.is_in_prod?' do
41
+ it { subject.should be_is_in_prod }
42
+ end
43
+ end
44
+
45
+ context 'on environment variable set to dev' do
46
+ before :each do
47
+ ENV['PUPPET_HERALD_ENV'] = 'dev'
48
+ end
49
+ describe '.environment' do
50
+ it { subject::environment.should eq(:dev) }
51
+ end
52
+ describe '.is_in_prod?' do
53
+ it { subject.should be_is_in_dev }
54
+ end
55
+ end
56
+ end
@@ -0,0 +1,13 @@
1
+ module.exports = function(config) {
2
+ config.set({
3
+ frameworks: ['jasmine'],
4
+
5
+ files: [
6
+ '../../node_modules/angular/angular.js',
7
+ '../../node_modules/angular-loader/angular-loader.js',
8
+ '../../node_modules/angular-mocks/angular-mocks.js',
9
+ '../../node_modules/angular-route/angular-route.js',
10
+ '../../lib/puppet-herald/public/**/*_test.js'
11
+ ]
12
+ });
13
+ };
metadata CHANGED
@@ -1,264 +1,80 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: puppet-herald
3
- version: !ruby/object:Gem::Version
4
- version: 0.1.0
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.1
5
5
  platform: ruby
6
- authors:
6
+ authors:
7
7
  - Krzysztof Suszynski
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-12-13 00:00:00.000000000 Z
12
- dependencies:
13
- - !ruby/object:Gem::Dependency
14
- name: rake
15
- requirement: !ruby/object:Gem::Requirement
16
- requirements:
17
- - - ! '>='
18
- - !ruby/object:Gem::Version
19
- version: '0'
20
- type: :runtime
21
- prerelease: false
22
- version_requirements: !ruby/object:Gem::Requirement
23
- requirements:
24
- - - ! '>='
25
- - !ruby/object:Gem::Version
26
- version: '0'
27
- - !ruby/object:Gem::Dependency
11
+
12
+ date: 2014-12-13 00:00:00 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
28
15
  name: sinatra
29
- requirement: !ruby/object:Gem::Requirement
30
- requirements:
31
- - - ! '>='
32
- - !ruby/object:Gem::Version
33
- version: '0'
34
- type: :runtime
35
- prerelease: false
36
- version_requirements: !ruby/object:Gem::Requirement
37
- requirements:
38
- - - ! '>='
39
- - !ruby/object:Gem::Version
40
- version: '0'
41
- - !ruby/object:Gem::Dependency
42
- name: sinatra-contrib
43
- requirement: !ruby/object:Gem::Requirement
44
- requirements:
45
- - - ! '>='
46
- - !ruby/object:Gem::Version
47
- version: '0'
48
- type: :runtime
49
16
  prerelease: false
50
- version_requirements: !ruby/object:Gem::Requirement
51
- requirements:
52
- - - ! '>='
53
- - !ruby/object:Gem::Version
54
- version: '0'
55
- - !ruby/object:Gem::Dependency
56
- name: sinatra-activerecord
57
- requirement: !ruby/object:Gem::Requirement
58
- requirements:
59
- - - ! '>='
60
- - !ruby/object:Gem::Version
61
- version: '0'
62
- type: :runtime
63
- prerelease: false
64
- version_requirements: !ruby/object:Gem::Requirement
65
- requirements:
66
- - - ! '>='
67
- - !ruby/object:Gem::Version
68
- version: '0'
69
- - !ruby/object:Gem::Dependency
70
- name: micro-optparse
71
- requirement: !ruby/object:Gem::Requirement
72
- requirements:
73
- - - ! '>='
74
- - !ruby/object:Gem::Version
75
- version: '0'
17
+ requirement: &id001 !ruby/object:Gem::Requirement
18
+ requirements:
19
+ - - ~>
20
+ - !ruby/object:Gem::Version
21
+ version: "1.4"
76
22
  type: :runtime
23
+ version_requirements: *id001
24
+ - !ruby/object:Gem::Dependency
25
+ name: sinatra-contrib
77
26
  prerelease: false
78
- version_requirements: !ruby/object:Gem::Requirement
79
- requirements:
80
- - - ! '>='
81
- - !ruby/object:Gem::Version
82
- version: '0'
83
- - !ruby/object:Gem::Dependency
84
- name: uglifier
85
- requirement: !ruby/object:Gem::Requirement
86
- requirements:
87
- - - ! '>='
88
- - !ruby/object:Gem::Version
89
- version: '0'
27
+ requirement: &id002 !ruby/object:Gem::Requirement
28
+ requirements:
29
+ - - ~>
30
+ - !ruby/object:Gem::Version
31
+ version: "1.4"
90
32
  type: :runtime
33
+ version_requirements: *id002
34
+ - !ruby/object:Gem::Dependency
35
+ name: sinatra-activerecord
91
36
  prerelease: false
92
- version_requirements: !ruby/object:Gem::Requirement
93
- requirements:
94
- - - ! '>='
95
- - !ruby/object:Gem::Version
96
- version: '0'
97
- - !ruby/object:Gem::Dependency
98
- name: sqlite3
99
- requirement: !ruby/object:Gem::Requirement
100
- requirements:
101
- - - ! '>='
102
- - !ruby/object:Gem::Version
103
- version: '0'
37
+ requirement: &id003 !ruby/object:Gem::Requirement
38
+ requirements:
39
+ - - ~>
40
+ - !ruby/object:Gem::Version
41
+ version: "2.0"
104
42
  type: :runtime
43
+ version_requirements: *id003
44
+ - !ruby/object:Gem::Dependency
45
+ name: micro-optparse
105
46
  prerelease: false
106
- version_requirements: !ruby/object:Gem::Requirement
107
- requirements:
108
- - - ! '>='
109
- - !ruby/object:Gem::Version
110
- version: '0'
111
- - !ruby/object:Gem::Dependency
112
- name: pg
113
- requirement: !ruby/object:Gem::Requirement
114
- requirements:
115
- - - ! '>='
116
- - !ruby/object:Gem::Version
117
- version: '0'
47
+ requirement: &id004 !ruby/object:Gem::Requirement
48
+ requirements:
49
+ - - ~>
50
+ - !ruby/object:Gem::Version
51
+ version: "1.2"
118
52
  type: :runtime
53
+ version_requirements: *id004
54
+ - !ruby/object:Gem::Dependency
55
+ name: uglifier
119
56
  prerelease: false
120
- version_requirements: !ruby/object:Gem::Requirement
121
- requirements:
122
- - - ! '>='
123
- - !ruby/object:Gem::Version
124
- version: '0'
125
- - !ruby/object:Gem::Dependency
126
- name: puma
127
- requirement: !ruby/object:Gem::Requirement
128
- requirements:
129
- - - ! '>='
130
- - !ruby/object:Gem::Version
131
- version: '0'
57
+ requirement: &id005 !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ~>
60
+ - !ruby/object:Gem::Version
61
+ version: "2.6"
132
62
  type: :runtime
133
- prerelease: false
134
- version_requirements: !ruby/object:Gem::Requirement
135
- requirements:
136
- - - ! '>='
137
- - !ruby/object:Gem::Version
138
- version: '0'
139
- - !ruby/object:Gem::Dependency
140
- name: rspec
141
- requirement: !ruby/object:Gem::Requirement
142
- requirements:
143
- - - ! '>='
144
- - !ruby/object:Gem::Version
145
- version: '0'
146
- type: :development
147
- prerelease: false
148
- version_requirements: !ruby/object:Gem::Requirement
149
- requirements:
150
- - - ! '>='
151
- - !ruby/object:Gem::Version
152
- version: '0'
153
- - !ruby/object:Gem::Dependency
154
- name: rspec-its
155
- requirement: !ruby/object:Gem::Requirement
156
- requirements:
157
- - - ! '>='
158
- - !ruby/object:Gem::Version
159
- version: '0'
160
- type: :development
161
- prerelease: false
162
- version_requirements: !ruby/object:Gem::Requirement
163
- requirements:
164
- - - ! '>='
165
- - !ruby/object:Gem::Version
166
- version: '0'
167
- - !ruby/object:Gem::Dependency
168
- name: coveralls
169
- requirement: !ruby/object:Gem::Requirement
170
- requirements:
171
- - - ! '>='
172
- - !ruby/object:Gem::Version
173
- version: '0'
174
- type: :development
175
- prerelease: false
176
- version_requirements: !ruby/object:Gem::Requirement
177
- requirements:
178
- - - ! '>='
179
- - !ruby/object:Gem::Version
180
- version: '0'
181
- - !ruby/object:Gem::Dependency
182
- name: simplecov
183
- requirement: !ruby/object:Gem::Requirement
184
- requirements:
185
- - - ! '>='
186
- - !ruby/object:Gem::Version
187
- version: '0'
188
- type: :development
189
- prerelease: false
190
- version_requirements: !ruby/object:Gem::Requirement
191
- requirements:
192
- - - ! '>='
193
- - !ruby/object:Gem::Version
194
- version: '0'
195
- - !ruby/object:Gem::Dependency
196
- name: inch
197
- requirement: !ruby/object:Gem::Requirement
198
- requirements:
199
- - - ! '>='
200
- - !ruby/object:Gem::Version
201
- version: '0'
202
- type: :development
203
- prerelease: false
204
- version_requirements: !ruby/object:Gem::Requirement
205
- requirements:
206
- - - ! '>='
207
- - !ruby/object:Gem::Version
208
- version: '0'
209
- - !ruby/object:Gem::Dependency
210
- name: travis
211
- requirement: !ruby/object:Gem::Requirement
212
- requirements:
213
- - - ! '>='
214
- - !ruby/object:Gem::Version
215
- version: '0'
216
- type: :development
217
- prerelease: false
218
- version_requirements: !ruby/object:Gem::Requirement
219
- requirements:
220
- - - ! '>='
221
- - !ruby/object:Gem::Version
222
- version: '0'
223
- - !ruby/object:Gem::Dependency
224
- name: travis-lint
225
- requirement: !ruby/object:Gem::Requirement
226
- requirements:
227
- - - ! '>='
228
- - !ruby/object:Gem::Version
229
- version: '0'
230
- type: :development
231
- prerelease: false
232
- version_requirements: !ruby/object:Gem::Requirement
233
- requirements:
234
- - - ! '>='
235
- - !ruby/object:Gem::Version
236
- version: '0'
237
- - !ruby/object:Gem::Dependency
238
- name: pry-debugger
239
- requirement: !ruby/object:Gem::Requirement
240
- requirements:
241
- - - ! '>='
242
- - !ruby/object:Gem::Version
243
- version: '0'
244
- type: :development
245
- prerelease: false
246
- version_requirements: !ruby/object:Gem::Requirement
247
- requirements:
248
- - - ! '>='
249
- - !ruby/object:Gem::Version
250
- version: '0'
251
- description: Provides a gateway for consuming puppet reports, a REST API and a simple
252
- Web app to display reports.
63
+ version_requirements: *id005
64
+ description: Provides a gateway for consuming puppet reports, a REST API and a simple Web app to display reports.
253
65
  email: krzysztof.suszynski@wavesoftware.pl
254
- executables:
66
+ executables:
255
67
  - puppet-herald
256
68
  extensions: []
69
+
257
70
  extra_rdoc_files: []
258
- files:
71
+
72
+ files:
259
73
  - .gitignore
260
74
  - .rspec
75
+ - .travis.yml
261
76
  - Gemfile
77
+ - Gemfile.local.example
262
78
  - README.md
263
79
  - Rakefile
264
80
  - bin/puppet-herald
@@ -298,34 +114,47 @@ files:
298
114
  - lib/puppet-herald/version.rb
299
115
  - lib/puppet-herald/views/app.erb
300
116
  - lib/puppet-herald/views/err500.erb
117
+ - package.json
301
118
  - puppet-herald.gemspec
119
+ - spec/integration/app_spec.rb
120
+ - spec/integration/fixtures/changed-notify.yaml
121
+ - spec/integration/models/node_spec.rb
122
+ - spec/integration/models/report_spec.rb
302
123
  - spec/model_helper.rb
303
124
  - spec/spec_helper.rb
304
125
  - spec/support/active_record.rb
305
- - spec/unit/fixtures/changed-notify.yaml
306
- - spec/unit/models/report_spec.rb
126
+ - spec/unit/puppet-herald/cli_spec.rb
127
+ - spec/unit/puppet-herald/database_spec.rb
128
+ - spec/unit/puppet-herald/javascript_spec.rb
129
+ - spec/unit/puppet-herald/version_spec.rb
130
+ - spec/unit/puppet-herald_spec.rb
131
+ - test/javascript/karma.conf.js
307
132
  homepage: https://github.com/wavesoftware/gem-puppet-herald
308
- licenses:
133
+ licenses:
309
134
  - Apache 2.0
310
135
  metadata: {}
136
+
311
137
  post_install_message:
312
138
  rdoc_options: []
313
- require_paths:
139
+
140
+ require_paths:
314
141
  - lib
315
- required_ruby_version: !ruby/object:Gem::Requirement
316
- requirements:
317
- - - ! '>='
318
- - !ruby/object:Gem::Version
142
+ required_ruby_version: !ruby/object:Gem::Requirement
143
+ requirements:
144
+ - - ">="
145
+ - !ruby/object:Gem::Version
319
146
  version: 1.9.2
320
- required_rubygems_version: !ruby/object:Gem::Requirement
321
- requirements:
322
- - - ! '>='
323
- - !ruby/object:Gem::Version
324
- version: '0'
147
+ required_rubygems_version: !ruby/object:Gem::Requirement
148
+ requirements:
149
+ - - ">="
150
+ - !ruby/object:Gem::Version
151
+ version: "0"
325
152
  requirements: []
153
+
326
154
  rubyforge_project:
327
- rubygems_version: 2.4.5
155
+ rubygems_version: 2.0.14
328
156
  signing_key:
329
157
  specification_version: 4
330
158
  summary: a Puppet report processor
331
159
  test_files: []
160
+