crusade 0.0.1 → 0.7.0

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.
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