crusade 0.0.1 → 0.7.0

Sign up to get free protection for your applications and to get access to all the features.
data/.gitignore CHANGED
@@ -1 +1,3 @@
1
1
  pkg
2
+ coverage
3
+ .ruby-version
data/.travis.yml ADDED
@@ -0,0 +1,10 @@
1
+ language: ruby
2
+ rvm:
3
+ - 1.9.3
4
+ - jruby-19mode
5
+ - rbx-19mode
6
+ - 2.0.0
7
+ matrix:
8
+ allow_failures:
9
+ - rvm: jruby-19mode
10
+ - rvm: rbx-19mode
data/Gemfile.lock CHANGED
@@ -1,17 +1,40 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- crusade (0.0.1)
4
+ crusade (0.7.0)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
8
8
  specs:
9
+ coveralls (0.7.0)
10
+ multi_json (~> 1.3)
11
+ rest-client
12
+ simplecov (>= 0.7)
13
+ term-ansicolor
14
+ thor
15
+ mime-types (1.25)
16
+ minitest (5.0.7)
17
+ minitest-great_expectations (0.0.5)
18
+ multi_json (1.8.0)
9
19
  rake (10.1.0)
20
+ rest-client (1.6.7)
21
+ mime-types (>= 1.16)
22
+ simplecov (0.7.1)
23
+ multi_json (~> 1.0)
24
+ simplecov-html (~> 0.7.1)
25
+ simplecov-html (0.7.1)
26
+ term-ansicolor (1.2.2)
27
+ tins (~> 0.8)
28
+ thor (0.18.1)
29
+ tins (0.10.0)
10
30
 
11
31
  PLATFORMS
12
32
  ruby
13
33
 
14
34
  DEPENDENCIES
15
35
  bundler (~> 1.3)
36
+ coveralls
16
37
  crusade!
38
+ minitest (~> 5.0.7)
39
+ minitest-great_expectations (~> 0.0.5)
17
40
  rake
data/Rakefile CHANGED
@@ -1 +1,8 @@
1
1
  require "bundler/gem_tasks"
2
+ require "rake/testtask"
3
+
4
+ task :default => :test
5
+
6
+ Rake::TestTask.new do |t|
7
+ t.pattern = "test/**/*_test.rb"
8
+ end
data/crusade.gemspec CHANGED
@@ -20,4 +20,8 @@ Gem::Specification.new do |spec|
20
20
 
21
21
  spec.add_development_dependency "bundler", "~> 1.3"
22
22
  spec.add_development_dependency "rake"
23
+ spec.add_development_dependency "minitest", "~> 5.0.7"
24
+ spec.add_development_dependency "minitest-great_expectations", "~> 0.0.5"
25
+ spec.add_development_dependency "rake"
26
+ spec.add_development_dependency "coveralls"
23
27
  end
@@ -0,0 +1,67 @@
1
+ require 'crusade/null_logger'
2
+
3
+ module Crusade
4
+ module Logger
5
+ module_function
6
+
7
+ def logger
8
+ log = Crusade::Logger.instance_variable_get "@logger"
9
+ unless log
10
+ log = Crusade::Logger.logger = Crusade::NullLogger.new
11
+ end
12
+ log
13
+ end
14
+
15
+ def logger= logger
16
+ Crusade::Logger.instance_variable_set "@logger", logger
17
+ end
18
+
19
+ def debug message
20
+ logger.debug caller.first do message end
21
+ end
22
+
23
+ def debug?
24
+ logger.debug?
25
+ end
26
+
27
+ def error message
28
+ logger.error caller.first do message end
29
+ end
30
+
31
+ def error?
32
+ logger.error?
33
+ end
34
+
35
+ def fatal message
36
+ logger.fatal caller.first do message end
37
+ end
38
+
39
+ def fatal?
40
+ logger.fatal?
41
+ end
42
+
43
+ def info message
44
+ logger.info caller.first do message end
45
+ end
46
+
47
+ def info?
48
+ logger.info?
49
+ end
50
+
51
+ def log message
52
+ logger.log caller.first do message end
53
+ end
54
+
55
+ def unknown message
56
+ logger.unknown caller.first do message end
57
+ end
58
+
59
+ def warn message
60
+ logger.warn caller.first do message end
61
+ end
62
+
63
+ def warn?
64
+ logger.warn?
65
+ end
66
+ end
67
+ end
@@ -0,0 +1,40 @@
1
+
2
+ module Crusade
3
+ class NullLogger
4
+ LEVELS = %w(debug info warn error fatal)
5
+
6
+ def initialize(*args)
7
+ end
8
+
9
+ def << message
10
+ end
11
+
12
+ LEVELS.each do |level|
13
+ define_method "#{level}?" do
14
+ false
15
+ end
16
+
17
+ define_method level do |*args|
18
+ end
19
+ end
20
+
21
+ def log(*args)
22
+ end
23
+
24
+ def unknown(*args)
25
+ end
26
+
27
+ def datetime_format
28
+ ''
29
+ end
30
+
31
+ def datetime_format= format
32
+ end
33
+
34
+ def add(*args)
35
+ end
36
+
37
+ def close(*args)
38
+ end
39
+ end
40
+ end
@@ -1,3 +1,3 @@
1
1
  module Crusade
2
- VERSION = "0.0.1"
2
+ VERSION = "0.7.0"
3
3
  end
@@ -0,0 +1,20 @@
1
+
2
+ class FakeLogger
3
+ attr_reader :commands
4
+
5
+ def initialize
6
+ @commands = []
7
+ end
8
+
9
+ def method_missing(meth, *args, &block)
10
+ @commands << { command: meth, args: args, block: block }
11
+ end
12
+
13
+ def last_command
14
+ @commands.last
15
+ end
16
+
17
+ def clear
18
+ @commands = []
19
+ end
20
+ end
@@ -0,0 +1,13 @@
1
+ if ENV['CI']
2
+ require 'coveralls'
3
+ Coveralls.wear!
4
+ end
5
+
6
+ require 'minitest/autorun'
7
+ require 'minitest/spec'
8
+ require 'minitest/mock'
9
+ require 'minitest/great_expectations'
10
+
11
+ $:.unshift 'test/support'
12
+
13
+ require 'ostruct'
@@ -0,0 +1,72 @@
1
+ require File.expand_path '../../test_helper.rb', __FILE__
2
+
3
+ require 'crusade/logger'
4
+ require 'fake_logger'
5
+
6
+ class ToTestLogger
7
+ include Crusade::Logger
8
+ end
9
+
10
+ describe Crusade::Logger do
11
+ let(:fake_logger) { FakeLogger.new }
12
+
13
+ describe 'instance methods' do
14
+ before { Crusade::Logger.logger = fake_logger }
15
+
16
+ subject { ToTestLogger.new }
17
+ let(:log_command) { fake_logger.last_command }
18
+ let(:to_log) { 'to log' }
19
+
20
+ it 'gets the logger' do
21
+ Crusade::Logger.logger.must_be_same_as fake_logger
22
+ end
23
+
24
+ it 'sets a default logger' do
25
+ Crusade::Logger.logger = nil
26
+
27
+
28
+ Crusade::Logger.logger.is_a?(Crusade::NullLogger).must_be_true
29
+ end
30
+
31
+ %w(debug info warn error fatal unknown).each do |method|
32
+ it "delegate the #{method} call to the logger" do
33
+ subject.send(method, to_log)
34
+
35
+ log_command[:command].must_equal method.to_sym
36
+ end
37
+
38
+ it "adds the caller details to the #{method} call" do
39
+ subject.send(method, to_log)
40
+
41
+ match = log_command[:args].first =~ /logger_test.rb\:\d+/
42
+
43
+ match.wont_be_nil 'the logger did not receive the caller stack'
44
+ end
45
+
46
+ it "sends the message in a block for #{method}" do
47
+ subject.send(method, to_log)
48
+
49
+ result = log_command[:block].call
50
+
51
+ result.must_equal to_log
52
+ end
53
+ end
54
+
55
+ %w(debug info warn error fatal).each do |method|
56
+ it "delegates the #{method}? to the logger with no arg, no block" do
57
+ subject.send "#{method}?"
58
+
59
+ log_command.must_equal({ command: "#{method}?".to_sym, args: [], block: nil })
60
+ end
61
+ end
62
+ end
63
+
64
+ describe 'declare the same method on class level' do
65
+ %w(debug debug? error error? fatal fatal? info info? log unknown warn warn?).each do |method|
66
+ it "responds to #{method}" do
67
+ Crusade::Logger.respond_to?(method).must_be_true
68
+ end
69
+ end
70
+ end
71
+ end
72
+
@@ -0,0 +1,79 @@
1
+ require File.expand_path '../../test_helper.rb', __FILE__
2
+
3
+ require 'crusade/null_logger'
4
+
5
+ describe Crusade::NullLogger do
6
+
7
+ describe '.new' do
8
+ it 'can build a logger with no parameters' do
9
+ Crusade::NullLogger.new.wont_be_nil
10
+ end
11
+
12
+ it 'can build a logger with the full list of parameters' do
13
+ Crusade::NullLogger.new('name', 7, 1048576).wont_be_nil
14
+ end
15
+ end
16
+
17
+ subject { Crusade::NullLogger.new }
18
+ let(:to_log) { 'will do nothing' }
19
+
20
+ describe 'logger methods' do
21
+ it { wont_log_anything { subject << to_log } }
22
+
23
+ it { subject.debug?.must_be_false }
24
+ it { subject.error?.must_be_false }
25
+ it { subject.fatal?.must_be_false }
26
+ it { subject.info?.must_be_false }
27
+ it { subject.warn?.must_be_false }
28
+
29
+ it { wont_log_anything { subject.add } }
30
+ it { wont_log_anything { subject.debug ''} }
31
+ it { wont_log_anything { subject.error ''} }
32
+ it { wont_log_anything { subject.fatal ''} }
33
+ it { wont_log_anything { subject.info ''} }
34
+ it { wont_log_anything { subject.log ''} }
35
+ it { wont_log_anything { subject.unknown ''} }
36
+ it { wont_log_anything { subject.warn ''} }
37
+
38
+ it { subject.datetime_format.must_equal '' }
39
+ it { subject.datetime_format='tt' ; subject.datetime_format.must_equal '' }
40
+ it { r = subject.close ; r.must_be_nil }
41
+ end
42
+
43
+ def wont_log_anything
44
+ begin
45
+ mock = MockStdOut.new
46
+ $stdout = mock
47
+ $stderr = mock
48
+
49
+ yield
50
+
51
+ mock.verify.must_equal true, 'something was written either on stdout or stderrr'
52
+ ensure
53
+ $stdout = STDOUT
54
+ $stderr = STDOUT
55
+ end
56
+ end
57
+
58
+ class MockStdOut
59
+ def initialize
60
+ @result = true
61
+ end
62
+
63
+ def write(*args)
64
+ @result = false
65
+ end
66
+
67
+ def puts(*args)
68
+ @result = false
69
+ end
70
+
71
+ def verify
72
+ @result
73
+ end
74
+
75
+ def flush
76
+ end
77
+ end
78
+ end
79
+
metadata CHANGED
@@ -1,18 +1,20 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: crusade
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.7.0
5
+ prerelease:
5
6
  platform: ruby
6
7
  authors:
7
8
  - David Rouchy
8
9
  autorequire:
9
10
  bindir: bin
10
11
  cert_chain: []
11
- date: 2013-09-10 00:00:00.000000000 Z
12
+ date: 2013-09-22 00:00:00.000000000 Z
12
13
  dependencies:
13
14
  - !ruby/object:Gem::Dependency
14
15
  name: bundler
15
16
  requirement: !ruby/object:Gem::Requirement
17
+ none: false
16
18
  requirements:
17
19
  - - ~>
18
20
  - !ruby/object:Gem::Version
@@ -20,6 +22,7 @@ dependencies:
20
22
  type: :development
21
23
  prerelease: false
22
24
  version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
23
26
  requirements:
24
27
  - - ~>
25
28
  - !ruby/object:Gem::Version
@@ -27,15 +30,81 @@ dependencies:
27
30
  - !ruby/object:Gem::Dependency
28
31
  name: rake
29
32
  requirement: !ruby/object:Gem::Requirement
33
+ none: false
30
34
  requirements:
31
- - - '>='
35
+ - - ! '>='
32
36
  - !ruby/object:Gem::Version
33
37
  version: '0'
34
38
  type: :development
35
39
  prerelease: false
36
40
  version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
37
42
  requirements:
38
- - - '>='
43
+ - - ! '>='
44
+ - !ruby/object:Gem::Version
45
+ version: '0'
46
+ - !ruby/object:Gem::Dependency
47
+ name: minitest
48
+ requirement: !ruby/object:Gem::Requirement
49
+ none: false
50
+ requirements:
51
+ - - ~>
52
+ - !ruby/object:Gem::Version
53
+ version: 5.0.7
54
+ type: :development
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ~>
60
+ - !ruby/object:Gem::Version
61
+ version: 5.0.7
62
+ - !ruby/object:Gem::Dependency
63
+ name: minitest-great_expectations
64
+ requirement: !ruby/object:Gem::Requirement
65
+ none: false
66
+ requirements:
67
+ - - ~>
68
+ - !ruby/object:Gem::Version
69
+ version: 0.0.5
70
+ type: :development
71
+ prerelease: false
72
+ version_requirements: !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - ~>
76
+ - !ruby/object:Gem::Version
77
+ version: 0.0.5
78
+ - !ruby/object:Gem::Dependency
79
+ name: rake
80
+ requirement: !ruby/object:Gem::Requirement
81
+ none: false
82
+ requirements:
83
+ - - ! '>='
84
+ - !ruby/object:Gem::Version
85
+ version: '0'
86
+ type: :development
87
+ prerelease: false
88
+ version_requirements: !ruby/object:Gem::Requirement
89
+ none: false
90
+ requirements:
91
+ - - ! '>='
92
+ - !ruby/object:Gem::Version
93
+ version: '0'
94
+ - !ruby/object:Gem::Dependency
95
+ name: coveralls
96
+ requirement: !ruby/object:Gem::Requirement
97
+ none: false
98
+ requirements:
99
+ - - ! '>='
100
+ - !ruby/object:Gem::Version
101
+ version: '0'
102
+ type: :development
103
+ prerelease: false
104
+ version_requirements: !ruby/object:Gem::Requirement
105
+ none: false
106
+ requirements:
107
+ - - ! '>='
39
108
  - !ruby/object:Gem::Version
40
109
  version: '0'
41
110
  description: push notification gem
@@ -46,6 +115,7 @@ extensions: []
46
115
  extra_rdoc_files: []
47
116
  files:
48
117
  - .gitignore
118
+ - .travis.yml
49
119
  - Gemfile
50
120
  - Gemfile.lock
51
121
  - LICENSE.txt
@@ -53,29 +123,46 @@ files:
53
123
  - Rakefile
54
124
  - crusade.gemspec
55
125
  - lib/crusade.rb
126
+ - lib/crusade/logger.rb
127
+ - lib/crusade/null_logger.rb
56
128
  - lib/crusade/version.rb
129
+ - test/support/fake_logger.rb
130
+ - test/test_helper.rb
131
+ - test/unit/logger_test.rb
132
+ - test/unit/null_logger_test.rb
57
133
  homepage: ''
58
134
  licenses:
59
135
  - MIT
60
- metadata: {}
61
136
  post_install_message:
62
137
  rdoc_options: []
63
138
  require_paths:
64
139
  - lib
65
140
  required_ruby_version: !ruby/object:Gem::Requirement
141
+ none: false
66
142
  requirements:
67
- - - '>='
143
+ - - ! '>='
68
144
  - !ruby/object:Gem::Version
69
145
  version: '0'
146
+ segments:
147
+ - 0
148
+ hash: 1435457411433090274
70
149
  required_rubygems_version: !ruby/object:Gem::Requirement
150
+ none: false
71
151
  requirements:
72
- - - '>='
152
+ - - ! '>='
73
153
  - !ruby/object:Gem::Version
74
154
  version: '0'
155
+ segments:
156
+ - 0
157
+ hash: 1435457411433090274
75
158
  requirements: []
76
159
  rubyforge_project:
77
- rubygems_version: 2.0.3
160
+ rubygems_version: 1.8.23
78
161
  signing_key:
79
- specification_version: 4
162
+ specification_version: 3
80
163
  summary: push some notification through APNS
81
- test_files: []
164
+ test_files:
165
+ - test/support/fake_logger.rb
166
+ - test/test_helper.rb
167
+ - test/unit/logger_test.rb
168
+ - test/unit/null_logger_test.rb
checksums.yaml DELETED
@@ -1,7 +0,0 @@
1
- ---
2
- SHA1:
3
- metadata.gz: e0bf95cf32c447a81f33173ac9c30f0f7b8a425c
4
- data.tar.gz: 0992ba2927a51aa98230a80bf3e6f41fb977eb04
5
- SHA512:
6
- metadata.gz: 990a1e4050b2b435cd1d18d90727b0a4650916ccf14e314ef19a230f07648fb64ac460745a1c130e67be2222f4395cfef8b8698506f2c64527cc15d3c0c81e12
7
- data.tar.gz: 7c97c04f66a5ff463402ebe734b9f4f0a3dc3ee2b2110903e4ed4d9be8b0035f9f686b1ab5094c8f33208cdc12e2f0f98aa191350dfdef12930a3796f4dcc5c2