cutest-cj 1.3.0 → 1.3.1

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.
Files changed (5) hide show
  1. checksums.yaml +4 -4
  2. data/bin/cutest +2 -2
  3. data/lib/cutest.rb +99 -78
  4. data/lib/database.rb +79 -0
  5. metadata +3 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 14a96c44d653cd8a8372783b6f4cb0907715402f
4
- data.tar.gz: 584bf8ef2bed9fc3a40c09f5a2f3c47497ab6aae
3
+ metadata.gz: 5e0da3c613aef3fc93c3ac27ed1b87d7c6692e48
4
+ data.tar.gz: b88f125813019b0f2fad5f17d8ffa01d906bff7a
5
5
  SHA512:
6
- metadata.gz: 733d91f8afd0fc4843bb324c098d5434c20298bc670e6834b2e8f9336825108d1b5b24cf80f76ee5454da56c8f912b73071a5eb6fdc7586238c126a3533db18d
7
- data.tar.gz: de42a0fdce510e763bf37428f5147fc7b3f6998efcab15f5117f63507aba2ab6cd19ac2c343ee23e3237c8ea75b03be1b57094c8846d3829692c3ba57ce8c2b5
6
+ metadata.gz: 869dd7f32331cef95d6d466ed1352e6f1cfdb533d9eab5fde59a347d9c899b7df7348977575117098ad7a299e5f621cd09b518d68d93216a980fe7881c7bc0e5
7
+ data.tar.gz: 93e979f6511b572a51533f3271e259c380e8cf25672a2fb9f552b5bcda53e26dd171066586cda7c4d28491dd89efd90a0394e4bffba6fe9991d60d39c8862ad8
data/bin/cutest CHANGED
@@ -7,9 +7,9 @@ if ARGV.empty?
7
7
  exit
8
8
  end
9
9
 
10
- require_relative "../lib/cutest"
11
10
  require "clap"
12
11
  require "mocoso"
12
+ require_relative "../lib/cutest"
13
13
 
14
14
  files = Clap.run ARGV,
15
15
  "-r" => lambda { |file| require file },
@@ -25,7 +25,7 @@ files = Clap.run ARGV,
25
25
  if files.any?
26
26
  begin
27
27
  env = '.env'
28
- rack_env = ".#{env}.#{ENV['RACK_ENV']}"
28
+ rack_env = "#{env}.#{ENV['RACK_ENV']}"
29
29
 
30
30
  if File.file? rack_env
31
31
  Cutest.load_envs rack_env
data/lib/cutest.rb CHANGED
@@ -1,112 +1,131 @@
1
1
  require 'benchmark'
2
+ require 'ostruct'
2
3
 
3
4
  class Cutest
5
+ autoload :Database, 'database'
6
+
4
7
  unless defined?(VERSION)
5
- VERSION = "1.3.0"
8
+ VERSION = "1.3.1"
6
9
  FILTER = %r[/(ruby|jruby|rbx)[-/]([0-9\.])+]
7
10
  CACHE = Hash.new { |h, k| h[k] = File.readlines(k) }
8
11
  end
9
12
 
10
- def self.load_envs env
11
- File.foreach env do |line|
12
- key, value = line.split "="
13
- ENV[key] = value.gsub('\n', '').strip
13
+ class AssertionFailed < StandardError; end
14
+
15
+ class << self
16
+
17
+ attr_accessor :config, :reset_config
18
+
19
+ def setup
20
+ yield config
14
21
  end
15
- end
16
22
 
17
- def self.silence_warnings
18
- old_verbose, $VERBOSE = $VERBOSE, nil
19
- yield
20
- ensure
21
- $VERBOSE = old_verbose
22
- end
23
+ def config
24
+ @config || reset_config!
25
+ end
23
26
 
24
- def self.run(files)
25
- if !cutest[:warnings]
26
- Cutest.silence_warnings do
27
- Cutest.now_run files
27
+ def reset_config!
28
+ @config = OpenStruct.new database: {}
29
+ end
30
+
31
+ def load_envs env
32
+ File.foreach env do |line|
33
+ key, value = line.split "="
34
+ ENV[key] = value.gsub('\n', '').strip
28
35
  end
29
- else
30
- Cutest.now_run files
31
36
  end
32
- end
33
37
 
34
- def self.now_run files
35
- status = files.all? do |file|
36
- run_file(file)
38
+ def silence_warnings
39
+ old_verbose, $VERBOSE = $VERBOSE, nil
40
+ yield
41
+ ensure
42
+ $VERBOSE = old_verbose
43
+ end
37
44
 
38
- Process.wait2.last.success?
45
+ def run(files)
46
+ if !cutest[:warnings]
47
+ Cutest.silence_warnings do
48
+ Cutest.now_run files
49
+ end
50
+ else
51
+ Cutest.now_run files
52
+ end
39
53
  end
40
54
 
41
- puts
55
+ def now_run files
56
+ status = files.all? do |file|
57
+ run_file(file)
42
58
 
43
- status
44
- end
59
+ Process.wait2.last.success?
60
+ end
45
61
 
46
- def self.run_file(file)
47
- fork do
48
- begin
49
- load(file)
50
- rescue LoadError, SyntaxError
51
- display_error
52
- exit 1
53
-
54
- rescue StandardError
55
- trace = $!.backtrace
56
- pivot = trace.index { |line| line.match(file) }
57
-
58
- puts " \e[93mTest: \e[0m%s\e[31m✘\e[0m\n" % (cutest[:test] != '' ? "#{cutest[:test]} " : '')
59
-
60
- if pivot
61
- other = trace[0..pivot].select { |line| line !~ FILTER }
62
- other.reverse.each { |line| display_trace(line) }
63
- else
64
- display_trace(trace.first)
65
- end
62
+ puts
66
63
 
67
- display_error
64
+ status
65
+ end
68
66
 
69
- if not cutest[:pry_rescue]
67
+ def run_file(file)
68
+ fork do
69
+ begin
70
+ load(file)
71
+ rescue LoadError, SyntaxError
72
+ display_error
70
73
  exit 1
71
- else
72
- begin
73
- Process.waitall
74
- rescue ThreadError, Interrupt
75
- # Ignore this as it's caused by Process.waitall when using -p
74
+
75
+ rescue StandardError
76
+ trace = $!.backtrace
77
+ pivot = trace.index { |line| line.match(file) }
78
+
79
+ puts " \e[93mTest: \e[0m%s\e[31m✘\e[0m\n" % (cutest[:test] != '' ? "#{cutest[:test]} " : '')
80
+
81
+ if pivot
82
+ other = trace[0..pivot].select { |line| line !~ FILTER }
83
+ other.reverse.each { |line| display_trace(line) }
84
+ else
85
+ display_trace(trace.first)
86
+ end
87
+
88
+ display_error
89
+
90
+ if not cutest[:pry_rescue]
91
+ exit 1
92
+ else
93
+ begin
94
+ Process.waitall
95
+ rescue ThreadError, Interrupt
96
+ # Ignore this as it's caused by Process.waitall when using -p
97
+ end
76
98
  end
77
99
  end
78
100
  end
79
101
  end
80
- end
81
-
82
- def self.code(fn, ln)
83
- begin
84
- CACHE[fn][ln.to_i - 1].strip
85
- rescue
86
- "(Can't display line)"
87
- end
88
- end
89
102
 
90
- def self.display_error
91
- if cutest[:backtrace]
92
- bt = $!.backtrace
93
- bt.each do |line|
94
- display_trace line
103
+ def code(fn, ln)
104
+ begin
105
+ CACHE[fn][ln.to_i - 1].strip
106
+ rescue
107
+ "(Can't display line)"
95
108
  end
96
109
  end
97
110
 
98
- puts " \033[93m#{$!.class}: \033[31m#{$!.message}"
99
- puts ""
100
- end
111
+ def display_error
112
+ if cutest[:backtrace]
113
+ bt = $!.backtrace
114
+ bt.each do |line|
115
+ display_trace line
116
+ end
117
+ end
101
118
 
102
- def self.display_trace(line)
103
- fn, ln = line.split(":")
119
+ puts " \033[93m#{$!.class}: \033[31m#{$!.message}"
120
+ puts ""
121
+ end
104
122
 
105
- puts " → \033[0mfile: #{fn} ↪#{ln}\e[0m"
106
- puts " → \033[90mline: #{code(fn, ln)}\e[0m"
107
- end
123
+ def display_trace(line)
124
+ fn, ln = line.split(":")
108
125
 
109
- class AssertionFailed < StandardError
126
+ puts " \033[0mfile: #{fn} ↪#{ln}\e[0m"
127
+ puts " → \033[90mline: #{code(fn, ln)}\e[0m"
128
+ end
110
129
  end
111
130
 
112
131
  class Scope
@@ -184,10 +203,12 @@ module Kernel
184
203
  cutest[:test] = name
185
204
 
186
205
  if !cutest[:only] || cutest[:only] == name
206
+ print ' '
187
207
  time_taken = Benchmark.measure do
188
208
  prepare.each { |blk| blk.call }
189
209
  block.call(setup && setup.call)
190
- end
210
+ end
211
+ puts ''
191
212
  puts " \033[93mTest: \033[0m#{cutest[:test]} \033[32m✔\033[0m"
192
213
  puts "\e[94m#{time_taken}\033[0m"
193
214
  end
@@ -229,6 +250,6 @@ module Kernel
229
250
 
230
251
  # Executed when an assertion succeeds.
231
252
  def success
232
- puts " •"
253
+ print "•"
233
254
  end
234
255
  end
data/lib/database.rb ADDED
@@ -0,0 +1,79 @@
1
+ class Cutest
2
+ module Database
3
+ extend self
4
+
5
+ module Helper
6
+ require 'active_record'
7
+
8
+ extend ActiveSupport::Concern
9
+
10
+ private
11
+
12
+ def factory *attrs
13
+ attrs.each do |key, value|
14
+ if key.is_a? Hash
15
+ key.each do |k, v|
16
+ send("#{k}=", v) unless send("#{k}").present?
17
+ end
18
+ else
19
+ send("#{key}=", value) unless send("#{key}").present?
20
+ end
21
+ end
22
+
23
+ if respond_to?(:creator_id) and not creator_id
24
+ self.creator_id = Cutest.config.creator_id
25
+ end
26
+
27
+ if respond_to?(:updater_id) and not updater_id
28
+ self.updater_id = Cutest.config.updater_id
29
+ end
30
+ end
31
+ end
32
+
33
+ def reset
34
+ connect
35
+
36
+ ignore_tables = %w(schema_migrations)
37
+
38
+ if config.key? :ignore_tables
39
+ ignore_tables.concat config[:ignore_tables]
40
+ end
41
+
42
+ conn = ActiveRecord::Base.connection
43
+ tables = conn.execute("show tables").map { |r| r[0] }
44
+
45
+ tables.each do |t|
46
+ unless ignore_tables.include? t
47
+ conn.execute("SET FOREIGN_KEY_CHECKS = 0")
48
+ conn.execute("TRUNCATE #{t}")
49
+ conn.execute("SET FOREIGN_KEY_CHECKS = 1")
50
+ end
51
+ end
52
+ end
53
+
54
+ def connect
55
+ return if ActiveRecord::Base.connected?
56
+
57
+ ActiveRecord::Base.default_timezone = Time.zone
58
+
59
+ db = URI.parse config[:url]
60
+
61
+ ActiveRecord::Base.establish_connection(
62
+ adapter: db.scheme == 'postgres' ? 'postgresql' : db.scheme,
63
+ encoding: 'utf8',
64
+ reconnect: true,
65
+ database: db.path[1..-1],
66
+ host: db.host,
67
+ port: db.port,
68
+ username: db.user,
69
+ password: db.password,
70
+ )
71
+ end
72
+
73
+ def config
74
+ Cutest.config.database
75
+ end
76
+ end
77
+ end
78
+
79
+ ActiveRecord::Base.send :include, Cutest::Database::Helper
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cutest-cj
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.3.0
4
+ version: 1.3.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Damian Janowski
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2014-06-19 00:00:00.000000000 Z
13
+ date: 2014-06-20 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: pry
@@ -86,6 +86,7 @@ files:
86
86
  - bin/cutest
87
87
  - cutest.gemspec
88
88
  - lib/cutest.rb
89
+ - lib/database.rb
89
90
  - test/assert.rb
90
91
  - test/assert_equal.rb
91
92
  - test/assert_raise.rb