cutest-cj 1.3.0 → 1.3.1

Sign up to get free protection for your applications and to get access to all the features.
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