test_diff 0.4.2 → 0.5.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 7be473c3e92a840440cda6b28dc949df0537fa0609ceac286ede4ea8ed6e0b1a
4
- data.tar.gz: 7dcb1ddb32ecdd1ce6be3290c7cb69c18b700efc2ace0eb521a6f70beac916e8
3
+ metadata.gz: 2c60bbb0ba468e66251ee6a5bc4640eb868daa0a2e19585e5f2036bd1867672b
4
+ data.tar.gz: 0abaa8178186abec9c3755195341db54c22e5787688c984659ed88c29d87b164
5
5
  SHA512:
6
- metadata.gz: 975ed0a4f7883ea2699fb21658b129c6e6181ccdb4d404c8e9296dc43048675720121b8e5b4758dbbd8bb2aa3ff0c267ac113f02ffa3e34a5ee8fdd28b6bcaa6
7
- data.tar.gz: 809699defd831c5f7aca2d2ff01846033b2225f6f02d6ec0475d6302aa224c72deec2cd04bbec4f1872f7e90e646e2a2816957698827c66c4448e3a7b0f3ca57
6
+ metadata.gz: 9c268a1b15442b9df3c232a61d0220933e4831339b58e2194f88c4e878a976918be806f2490ef6880ab7d20bd71ee09b66cd5d7fd9b51bccc56b919c4e9f9f88
7
+ data.tar.gz: b7b5bb54b2c7870fdaeca86cd6eb04db8e871872ab3d782a9c82669f0e4529b3c4cd0a7251e48d96da4d9521f9b596c3a76315ccdd2d0fcaa8d1005e8f9d81bf
data/README.md CHANGED
@@ -22,7 +22,7 @@ And then execute:
22
22
 
23
23
  ## Rails Setup
24
24
 
25
- Suggest to disabled `eager_load` in `config/environments/test.rb` based on `ENV['TEST_DIFF_COVERAGE']`
25
+ If `eager_load` is enabled in `config/environments/test.rb`, disable it based on `ENV['TEST_DIFF_COVERAGE']`
26
26
  EG:
27
27
 
28
28
  ```ruby
@@ -41,15 +41,27 @@ end
41
41
 
42
42
  ## Usage
43
43
 
44
- Building the test coverage index
44
+ Building the test coverage index (run once a day on your main branch)
45
45
 
46
- $ test_diff build_coverage spec spec/spec_helper.rb
46
+ ```bash
47
+ $ test_diff build_coverage spec/spec_helper.rb
47
48
  $ # part here to upload test_diff_coverage to a shared space, ie aws
49
+ ```
48
50
 
49
- Running a test difference
51
+ Running a test difference (after commit on your separate branch)
50
52
 
53
+ ```bash
51
54
  $ # part here to download test_diff_coverage from shared space, ie aws
52
55
  $ test_diff rspec
56
+ ```
57
+
58
+ Updating the test coverage index (after separate branch merge into main branch)
59
+
60
+ ```bash
61
+ $ # part here to download test_diff_coverage from shared space, ie aws
62
+ $ test_diff build_coverage_diff spec/spec_helper.rb
63
+ $ # part here to upload test_diff_coverage to a shared space, ie aws
64
+ ```
53
65
 
54
66
  ## Development
55
67
 
data/exe/test_diff CHANGED
@@ -6,9 +6,16 @@ require 'test_diff'
6
6
 
7
7
  # thor class to allow execution
8
8
  class TestDiffBuilder < Thor
9
- desc 'build_coverage spec', 'runs the specs and generates reverse_coverage'
10
- def build_coverage(spec_folder = 'spec', pre_load = nil, continue = nil)
11
- TestDiff::BuildCoverage.new(spec_folder, pre_load, continue).run
9
+ desc 'build_coverage spec', 'runs the specs and generates coverage index'
10
+ method_option :spec_folder, desc: 'Folder where specs located', default: 'spec', type: :string, banner: 'spec'
11
+ method_option :stop_on_failure, desc: 'Stop building coverage if spec fails', default: false, type: :boolean
12
+ method_option :only_missing, desc: 'build coverage for missing specs', default: false, type: :boolean
13
+ def build_coverage(pre_load = nil)
14
+ TestDiff::BuildCoverage.new(options[:spec_folder],
15
+ pre_load,
16
+ options[:stop_on_failure],
17
+ options[:only_missing])
18
+ .run
12
19
  track_build
13
20
  end
14
21
 
@@ -18,13 +25,16 @@ class TestDiffBuilder < Thor
18
25
  end
19
26
 
20
27
  desc 'rspec', 'runs the specs difference between the branches'
21
- def rspec(spec_folder = 'spec', groups_of = nil, group = '0')
22
- TestDiff::RunDiff.new(spec_folder, groups_of, group).run
28
+ method_option :spec_folder, desc: 'Folder where specs located', default: 'spec', type: :string, banner: 'spec'
29
+ def rspec(groups_of = nil, group = '0')
30
+ TestDiff::RunDiff.new(options[:spec_folder], groups_of, group).run
23
31
  end
24
32
 
25
- desc 'build_coverage_diff spec', 'runs the specs difference between the branches'
26
- def build_coverage_diff(spec_folder = 'spec', pre_load = nil, continue = nil)
27
- TestDiff::BuildCoverageDiff.new(spec_folder, pre_load, continue).run
33
+ desc 'build_coverage_diff spec', 'runs the specs difference and updates coverage index'
34
+ method_option :spec_folder, desc: 'Folder where specs located', default: 'spec', type: :string, banner: 'spec'
35
+ method_option :stop_on_failure, desc: 'Stop building coverage if spec fails', default: false, type: :boolean
36
+ def build_coverage_diff(pre_load = nil)
37
+ TestDiff::BuildCoverageDiff.new(options[:spec_folder], pre_load, options[:stop_on_failure]).run
28
38
  track_build
29
39
  end
30
40
  end
@@ -2,16 +2,17 @@
2
2
  module TestDiff
3
3
  # class used to build the coverage file
4
4
  class BuildCoverage
5
- def initialize(spec_folder, pre_load, continue)
5
+ def initialize(spec_folder, pre_load, stop_on_failure, only_missing)
6
6
  @spec_folder = spec_folder
7
7
  @pre_load = pre_load
8
8
  @batch_queue = Queue.new
9
- @continue = continue
9
+ @stop_on_failure = stop_on_failure
10
+ @only_missing = only_missing
10
11
  end
11
12
 
12
13
  def run
13
- RunableTests.add_all(@spec_folder, @batch_queue, @continue)
14
- CoverageRunner.run(@batch_queue, @pre_load, @continue)
14
+ RunableTests.add_all(@spec_folder, @batch_queue, @only_missing)
15
+ CoverageRunner.run(@batch_queue, @pre_load, !@stop_on_failure)
15
16
  end
16
17
  end
17
18
  end
@@ -16,6 +16,8 @@ module TestDiff
16
16
  require 'coverage.so'
17
17
  Coverage.start
18
18
 
19
+ ENV['TEST_DIFF_COVERAGE'] = 'yes'
20
+
19
21
  require_boot
20
22
  require_rspec
21
23
  require_pre_load
@@ -26,9 +28,14 @@ module TestDiff
26
28
  private
27
29
 
28
30
  def require_boot
29
- return unless File.exist?('config/boot.rb')
30
- puts 'Loading config/boot.rb'
31
- require File.expand_path('config/boot.rb')
31
+ if File.exist?('config/boot.rb')
32
+ puts 'Loading config/boot.rb'
33
+ require File.expand_path('config/boot.rb')
34
+ elsif File.exist?('Gemfile')
35
+ puts 'Bundler setup'
36
+ ENV['BUNDLE_GEMFILE'] ||= File.expand_path('Gemfile')
37
+ require 'bundler/setup'
38
+ end
32
39
  end
33
40
 
34
41
  def require_pre_load
@@ -39,8 +46,8 @@ module TestDiff
39
46
  end
40
47
 
41
48
  def require_rspec
42
- puts 'Loading rspec'
43
- require 'rspec'
49
+ puts 'Loading rspec/core'
50
+ require 'rspec/core'
44
51
  end
45
52
 
46
53
  def pre_run_checks
@@ -64,7 +71,6 @@ module TestDiff
64
71
 
65
72
  def start_process_fork(main_spec_file)
66
73
  Process.fork do
67
- ENV['TEST_DIFF_COVERAGE'] = 'yes'
68
74
  puts "running #{main_spec_file}"
69
75
  ActiveRecord::Base.connection.reconnect! if defined?(ActiveRecord::Base)
70
76
  Time.zone_default = (Time.zone = 'UTC') if Time.respond_to?(:zone_default) && Time.zone_default.nil?
@@ -78,7 +84,7 @@ module TestDiff
78
84
  if result
79
85
  save_coverage_data(main_spec_file, Time.now - s)
80
86
  else
81
- $stderr.puts(@last_output.to_s)
87
+ $stderr.puts(@last_output.string)
82
88
  Coverage.result # disable coverage
83
89
  exit!(false) unless @continue
84
90
  end
@@ -7,9 +7,13 @@ module TestDiff
7
7
  end
8
8
 
9
9
  def log_debug(*args)
10
- Config.logger.info(*args)
10
+ Config.logger.debug(*args)
11
+ end
12
+
13
+ def log_error(*args)
14
+ Config.logger.error(*args)
11
15
  end
12
16
 
13
- module_function :log_debug, :log_info
17
+ module_function :log_debug, :log_info, :log_error
14
18
  end
15
19
  end
@@ -6,6 +6,8 @@ module TestDiff
6
6
  new(queue).run(&block)
7
7
  end
8
8
 
9
+ include Logging
10
+
9
11
  def initialize(queue)
10
12
  @queue = queue
11
13
  @original_size = queue_size
@@ -33,14 +35,14 @@ module TestDiff
33
35
  begin
34
36
  do_timing
35
37
  rescue => e
36
- puts "----- Timing failed: #{e.message} -----"
38
+ log_error "----- Timing failed: #{e.message} -----"
37
39
  end
38
40
  end
39
41
  end
40
42
 
41
43
  def do_timing
42
- puts "Timing #{@original_size} specs"
43
- sleep_time = 30.0
44
+ log_info "Timing #{@original_size} specs"
45
+ sleep_time = 90.0
44
46
  until queue_empty?
45
47
  last_current_size = queue_size
46
48
  sleep(sleep_time)
@@ -48,9 +50,9 @@ module TestDiff
48
50
  current_completed = last_current_size - current_size
49
51
  if current_completed > 0
50
52
  est_time_left = (sleep_time / current_completed.to_f) * current_size
51
- puts "specs left #{current_size}, est time_left: #{est_time_left.to_i}"
53
+ log_info "specs left #{current_size}, est time_left: #{est_time_left.to_i}"
52
54
  else
53
- puts "specs left #{current_size}, est time_left: N/A"
55
+ log_info "specs left #{current_size}, est time_left: N/A"
54
56
  end
55
57
  end
56
58
  end
@@ -1,4 +1,4 @@
1
1
  # version number
2
2
  module TestDiff
3
- VERSION = '0.4.2'.freeze
3
+ VERSION = '0.5.0'.freeze
4
4
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: test_diff
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.2
4
+ version: 0.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Grant Speelman
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2018-03-15 00:00:00.000000000 Z
11
+ date: 2018-04-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: thor