rspectacles 0.0.9 → 0.1.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: b059e11c0d0891e0e0431c7f488a7cb53ee6d686
4
- data.tar.gz: 3293d969d4ccf58b694db2ff24f89ac0fc84db40
3
+ metadata.gz: 9f024e91d28c10cfdbd896b30f6c9e31f2959fc1
4
+ data.tar.gz: f20a35bf4feb597b6e614cfd2f74374580826fa0
5
5
  SHA512:
6
- metadata.gz: 798ad85e223d4cc8653239accbb8ed8f150008f83e764583729dec68f30462fd42d75f6af2c457c62abca98927e8e65baba30e255643592131f1730b51ce545f
7
- data.tar.gz: 6118d2397c4a9ea2d7775c9e40bb18f16ac9f1db707b653e9ce329eb752f1fde157682af4c074a966d14c87eb7418a7232c1b0677a31c79b1ee3836e717bdb75
6
+ metadata.gz: e36dda6c4ad7c39d0158bfe42c35126b47619866775b795f3f264738f865cc7e5d15ae9a5d716fa686d4c24fc7e455be7464754eb522344fe6d78e2df8eab87a
7
+ data.tar.gz: de35af08da4c23bf202eb08a048fd4188905fb4fea8d46f13900a89b74559d278e4b862065239d742f309eb89c4b847257fe36caa841969c65a428d906d7e35a
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- rspectacles (0.0.9)
4
+ rspectacles (0.1.0)
5
5
  em-hiredis (~> 0.2.1)
6
6
  rake
7
7
  redis
data/README.md CHANGED
@@ -20,8 +20,8 @@ Or in your Gemfile:
20
20
 
21
21
  Then add the formatter to your .rspec file:
22
22
 
23
- --require 'rspectacles/redis_formatter'
24
- --format RSpectacles::RedisFormatter
23
+ --require rspectacles/formatter/redis
24
+ --format RSpectacles::Formatter::Redis
25
25
 
26
26
  --format progress # or whatever other formatters you want to use
27
27
 
@@ -0,0 +1,50 @@
1
+ require 'rspectacles/config'
2
+ require 'redis'
3
+ require 'uri'
4
+ require 'json'
5
+
6
+ module RSpectacles
7
+ module Adapter
8
+ class RedisLogger
9
+ attr_reader :redis
10
+
11
+ def initialize
12
+ @redis = ::Redis.new host: uri.host, port: uri.port, password: uri.password
13
+ end
14
+
15
+ def config
16
+ RSpectacles.config
17
+ end
18
+
19
+ def uri
20
+ @uri ||= URI.parse config.redis_uri
21
+ end
22
+
23
+ def delete_last_log
24
+ redis.del config.last_run_primary_key
25
+ end
26
+
27
+ def log(message)
28
+ redis.publish config.pubsub_channel_name, message
29
+ redis.lpush config.last_run_primary_key, message
30
+ end
31
+
32
+ def log_formatted(example)
33
+ message = format_example(example)
34
+ redis.publish config.pubsub_channel_name, message
35
+ redis.lpush config.last_run_primary_key, message
36
+ end
37
+
38
+ def format_example(example)
39
+ {
40
+ :description => example.description,
41
+ :full_description => example.full_description,
42
+ :status => example.execution_result.status,
43
+ :duration => example.execution_result.run_time,
44
+ :file_path => example.metadata[:file_path],
45
+ :line_number => example.metadata[:line_number]
46
+ }.to_json
47
+ end
48
+ end
49
+ end
50
+ end
@@ -53,6 +53,15 @@ define(['jquery', 'pathtree', 'mustache'], function ($, PathTree, Mustache) {
53
53
  };
54
54
  }
55
55
 
56
+ function secToMin(time) {
57
+ var pad = function (val) { return ('00' + val).slice(-2); }
58
+ , min = parseInt(time / 60)
59
+ , sec = parseInt(time % 60)
60
+ ;
61
+
62
+ return pad(min) + ':' + pad(sec);
63
+ }
64
+
56
65
  function showDetails() {
57
66
  var data = showDetails.current
58
67
  , mappedData = $.extend({
@@ -60,14 +69,18 @@ define(['jquery', 'pathtree', 'mustache'], function ($, PathTree, Mustache) {
60
69
  , line_number: ''
61
70
  , status: ''
62
71
  , duration: ''
63
- , time_or_count: options.isCount ? 'Examples' : 'Seconds'
72
+ , time_or_count: options.isCount ? 'Examples' : 'ms'
73
+ , minutes: ''
64
74
  , value: null
65
75
  }, data)
66
76
  , map
67
77
  ;
68
78
 
69
79
  if (mappedData.value) {
70
- !options.isCount && (mappedData.value = mappedData.value.toFixed(3));
80
+ if (!options.isCount) {
81
+ mappedData.minutes = secToMin(mappedData.value);
82
+ mappedData.value = parseInt(mappedData.value * 1000);
83
+ }
71
84
  }
72
85
 
73
86
  $('.example-wrapper').html(Mustache.render(tmpl, mappedData));
@@ -19,10 +19,13 @@
19
19
  <li class='{{ status }}'><span id='status'>{{ status }}</span></li>
20
20
  <li><strong>Description:</strong></li>
21
21
  <li class='name'>{{ name }}</li>
22
+ {{# file_path }}
22
23
  <li><strong>File:</strong></li>
23
24
  <li>{{ file_path }}:<span id='line_number'>{{ line_number }}</span></li>
25
+ {{/ file_path }}
24
26
  <li>
25
27
  <span id='value'>{{ value }}</span> <span id='time_or_count'> {{ time_or_count }}</span>
28
+ <span id='minutes'>{{# minutes }} ({{ minutes }}) {{/ minutes }}</span>
26
29
  </li>
27
30
  </ul>
28
31
  </script>
@@ -0,0 +1,48 @@
1
+ require 'rspec/core/formatters/base_formatter'
2
+ require 'rspectacles/adapter/redis_logger'
3
+
4
+ module RSpectacles
5
+ module Formatter
6
+ module Legacy
7
+ class Redis < RSpec::Core::Formatters::BaseFormatter
8
+ def initialize(_)
9
+ end
10
+
11
+ def logger
12
+ @logger ||= RSpectacles::Adapter::RedisLogger.new
13
+ end
14
+
15
+ def message(message)
16
+ logger.log "message:#{message}"
17
+ end
18
+
19
+ def start(example_count)
20
+ logger.log 'status:start'
21
+ logger.delete_last_log
22
+ end
23
+
24
+ def stop
25
+ logger.log 'status:stop'
26
+ end
27
+
28
+ def example_started(example)
29
+ end
30
+
31
+ def example_passed(example)
32
+ logger.log_formatted example
33
+ end
34
+
35
+ def example_pending(example)
36
+ logger.log_formatted example
37
+ end
38
+
39
+ def example_failed(example)
40
+ logger.log_formatted example
41
+ end
42
+
43
+ def close
44
+ end
45
+ end
46
+ end
47
+ end
48
+ end
@@ -0,0 +1,46 @@
1
+ require 'rspectacles/adapter/redis_logger'
2
+
3
+ module RSpectacles
4
+ module Formatter
5
+ class Redis
6
+ RSpec::Core::Formatters.register self,
7
+ *%i(example_passed
8
+ example_failed
9
+ start
10
+ stop
11
+ message)
12
+
13
+ def initialize(_)
14
+ end
15
+
16
+ def logger
17
+ @logger ||= RSpectacles::Adapter::RedisLogger.new
18
+ end
19
+
20
+ def message(notification)
21
+ logger.log "message:#{notification.message}"
22
+ end
23
+
24
+ def start(_)
25
+ logger.log 'status:start'
26
+ logger.delete_last_log
27
+ end
28
+
29
+ def stop(_)
30
+ logger.log 'status:stop'
31
+ end
32
+
33
+ def example_passed(notification)
34
+ logger.log_formatted notification.example
35
+ end
36
+
37
+ def example_pending(notification)
38
+ logger.log_formatted notification.example
39
+ end
40
+
41
+ def example_failed(notification)
42
+ logger.log_formatted notification.example
43
+ end
44
+ end
45
+ end
46
+ end
@@ -1,3 +1,3 @@
1
1
  module RSpectacles
2
- VERSION='0.0.9'
2
+ VERSION='0.1.0'
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rspectacles
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.9
4
+ version: 0.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Michael Wheeler
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-04-29 00:00:00.000000000 Z
11
+ date: 2014-12-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rspec
@@ -111,6 +111,7 @@ files:
111
111
  - bin/rspectacles
112
112
  - config.ru
113
113
  - lib/rspectacles.rb
114
+ - lib/rspectacles/adapter/redis_logger.rb
114
115
  - lib/rspectacles/app.rb
115
116
  - lib/rspectacles/app/helpers.rb
116
117
  - lib/rspectacles/app/public/css/style.css
@@ -126,7 +127,8 @@ files:
126
127
  - lib/rspectacles/app/public/js/script.js
127
128
  - lib/rspectacles/app/views/index.erb
128
129
  - lib/rspectacles/config.rb
129
- - lib/rspectacles/redis_formatter.rb
130
+ - lib/rspectacles/formatter/legacy/redis.rb
131
+ - lib/rspectacles/formatter/redis.rb
130
132
  - lib/rspectacles/version.rb
131
133
  - rspectacles.gemspec
132
134
  - spec/javascripts/resources/qunit.css
@@ -1,82 +0,0 @@
1
- require 'rspec/core/formatters/base_formatter'
2
- require 'rspectacles/config'
3
- require 'ostruct'
4
- require 'redis'
5
- require 'uri'
6
- require 'json'
7
-
8
- module RSpectacles
9
- class RedisFormatter < RSpec::Core::Formatters::BaseFormatter
10
- attr_accessor :redis
11
-
12
- class << self
13
- def config
14
- RSpectacles.config
15
- end
16
- end
17
-
18
- def initialize(output)
19
- uri = URI.parse config.redis_uri
20
- self.redis = Redis.new host: uri.host, port: uri.port, password: uri.password
21
- end
22
-
23
- def message(message)
24
- log "message:#{message}"
25
- end
26
-
27
- def start(example_count)
28
- log 'status:start'
29
- redis.del config.last_run_primary_key
30
- end
31
-
32
- def stop
33
- log 'status:stop'
34
- end
35
-
36
- def example_started(example)
37
- end
38
-
39
- def example_passed(example)
40
- log_formatted example
41
- end
42
-
43
- def example_pending(example)
44
- log_formatted example
45
- end
46
-
47
- def example_failed(example)
48
- log_formatted example
49
- end
50
-
51
- def close
52
- end
53
-
54
- private
55
-
56
- def config
57
- self.class.config
58
- end
59
-
60
- def log(message)
61
- redis.publish config.pubsub_channel_name, message
62
- redis.lpush config.last_run_primary_key, message
63
- end
64
-
65
- def log_formatted(example)
66
- message = format_example(example)
67
- redis.publish config.pubsub_channel_name, message
68
- redis.lpush config.last_run_primary_key, message
69
- end
70
-
71
- def format_example(example)
72
- {
73
- :description => example.description,
74
- :full_description => example.full_description,
75
- :status => example.execution_result[:status],
76
- :duration => example.execution_result[:run_time],
77
- :file_path => example.metadata[:file_path],
78
- :line_number => example.metadata[:line_number]
79
- }.to_json
80
- end
81
- end
82
- end