devtools 0.1.0 → 0.1.26
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 +5 -5
- data/.circleci/config.yml +41 -0
- data/.rspec +1 -0
- data/.rubocop.yml +1 -2
- data/Gemfile +9 -2
- data/README.md +3 -3
- data/config/devtools.yml +2 -0
- data/config/flay.yml +2 -2
- data/config/flog.yml +1 -1
- data/config/mutant.yml +6 -2
- data/config/reek.yml +105 -106
- data/config/rubocop.yml +37 -3
- data/devtools.gemspec +27 -25
- data/lib/devtools/config.rb +74 -66
- data/lib/devtools/flay.rb +98 -0
- data/lib/devtools/project/initializer/rake.rb +11 -7
- data/lib/devtools/project/initializer/rspec.rb +30 -55
- data/lib/devtools/project/initializer.rb +2 -12
- data/lib/devtools/project.rb +27 -105
- data/lib/devtools/rake/flay.rb +155 -0
- data/lib/devtools/spec_helper.rb +1 -3
- data/lib/devtools.rb +42 -89
- data/shared/spec/shared/abstract_type_behavior.rb +0 -2
- data/shared/spec/shared/command_method_behavior.rb +0 -2
- data/shared/spec/shared/each_method_behaviour.rb +0 -2
- data/shared/spec/shared/idempotent_method_behavior.rb +2 -3
- data/shared/spec/support/ice_nine_config.rb +0 -2
- data/spec/integration/devtools/rake/flay/verify_spec.rb +196 -0
- data/spec/spec_helper.rb +4 -11
- data/spec/unit/devtools/config/yardstick_spec.rb +17 -0
- data/spec/unit/devtools/config_spec.rb +78 -0
- data/spec/unit/devtools/flay/file_list/call_spec.rb +19 -0
- data/spec/unit/devtools/flay/scale/flay_report_spec.rb +17 -0
- data/spec/unit/devtools/flay/scale/measure_spec.rb +43 -0
- data/spec/unit/devtools/project/initializer/rake_spec.rb +21 -0
- data/spec/unit/devtools/project/initializer/rspec_spec.rb +52 -0
- data/spec/unit/devtools/project_spec.rb +34 -0
- data/spec/unit/devtools_spec.rb +14 -0
- data/tasks/metrics/ci.rake +3 -7
- data/tasks/metrics/coverage.rake +2 -2
- data/tasks/metrics/flay.rake +6 -33
- data/tasks/metrics/flog.rake +10 -7
- data/tasks/metrics/reek.rake +5 -4
- data/tasks/metrics/rubocop.rake +1 -3
- data/tasks/metrics/yardstick.rake +0 -14
- data/tasks/spec.rake +1 -3
- data/tasks/yard.rake +1 -3
- metadata +124 -65
- data/.ruby-gemset +0 -1
- data/.travis.yml +0 -15
- data/TODO +0 -0
- data/bin/devtools +0 -18
- data/circle.yml +0 -7
- data/default/config/devtools.yml +0 -2
- data/default/config/flay.yml +0 -3
- data/default/config/flog.yml +0 -2
- data/default/config/mutant.yml +0 -3
- data/default/config/reek.yml +0 -103
- data/default/config/rubocop.yml +0 -91
- data/default/config/yardstick.yml +0 -2
- data/lib/devtools/platform.rb +0 -118
- data/lib/devtools/site/initializer.rb +0 -57
- data/lib/devtools/site.rb +0 -41
- data/shared/spec/shared/hash_method_behavior.rb +0 -9
- data/tasks/metrics/mutant.rake +0 -50
data/lib/devtools/platform.rb
DELETED
|
@@ -1,118 +0,0 @@
|
|
|
1
|
-
# encoding: utf-8
|
|
2
|
-
|
|
3
|
-
module Devtools
|
|
4
|
-
|
|
5
|
-
# Provides methods to determine the ruby platform
|
|
6
|
-
module Platform
|
|
7
|
-
|
|
8
|
-
DEFAULT_RVM_NAME = 'mri'.freeze
|
|
9
|
-
|
|
10
|
-
# Return Ruby engine string
|
|
11
|
-
#
|
|
12
|
-
# @return [String]
|
|
13
|
-
#
|
|
14
|
-
# @api private
|
|
15
|
-
def ruby_engine
|
|
16
|
-
@ruby_engine ||= (defined?(RUBY_ENGINE) && RUBY_ENGINE || 'ruby').freeze
|
|
17
|
-
end
|
|
18
|
-
|
|
19
|
-
# Return RVM name
|
|
20
|
-
#
|
|
21
|
-
# @return [String]
|
|
22
|
-
#
|
|
23
|
-
# @api private
|
|
24
|
-
def rvm_name
|
|
25
|
-
@rvm_name ||= begin
|
|
26
|
-
engine = ruby_engine
|
|
27
|
-
engine == 'ruby' ? DEFAULT_RVM_NAME : engine
|
|
28
|
-
end
|
|
29
|
-
end
|
|
30
|
-
|
|
31
|
-
# Return RVM string
|
|
32
|
-
#
|
|
33
|
-
# @return [String]
|
|
34
|
-
#
|
|
35
|
-
# @api private
|
|
36
|
-
def rvm
|
|
37
|
-
@rvm ||= "#{rvm_name}-#{RUBY_VERSION}".freeze
|
|
38
|
-
end
|
|
39
|
-
|
|
40
|
-
# Test for being executed under JRuby
|
|
41
|
-
#
|
|
42
|
-
# @return [true]
|
|
43
|
-
# if running under JRuby
|
|
44
|
-
#
|
|
45
|
-
# @return [false]
|
|
46
|
-
# otherwise
|
|
47
|
-
#
|
|
48
|
-
# @api private
|
|
49
|
-
def jruby?
|
|
50
|
-
ruby_engine == 'jruby'
|
|
51
|
-
end
|
|
52
|
-
|
|
53
|
-
# Test for being executed under rbx
|
|
54
|
-
#
|
|
55
|
-
# @return [true]
|
|
56
|
-
# if running under rbx
|
|
57
|
-
#
|
|
58
|
-
# @return [false]
|
|
59
|
-
# otherwise
|
|
60
|
-
#
|
|
61
|
-
# @api private
|
|
62
|
-
def rbx?
|
|
63
|
-
ruby_engine == 'rbx'
|
|
64
|
-
end
|
|
65
|
-
|
|
66
|
-
# Test for being executed under rubies with a JIT
|
|
67
|
-
#
|
|
68
|
-
# @return [true]
|
|
69
|
-
# if running under JRuby or rbx
|
|
70
|
-
#
|
|
71
|
-
# @return [false]
|
|
72
|
-
# otherwise
|
|
73
|
-
#
|
|
74
|
-
# @api private
|
|
75
|
-
def jit?
|
|
76
|
-
jruby? || rbx?
|
|
77
|
-
end
|
|
78
|
-
|
|
79
|
-
# Test for 1.8 mode
|
|
80
|
-
#
|
|
81
|
-
# @return [true]
|
|
82
|
-
# if running under 1.8.x
|
|
83
|
-
#
|
|
84
|
-
# @return [false]
|
|
85
|
-
# otherwise
|
|
86
|
-
#
|
|
87
|
-
# @api private
|
|
88
|
-
def ruby18?
|
|
89
|
-
RUBY_VERSION.start_with?('1.8.')
|
|
90
|
-
end
|
|
91
|
-
|
|
92
|
-
# Test for 1.9 mode
|
|
93
|
-
#
|
|
94
|
-
# @return [true]
|
|
95
|
-
# if running under 1.9.x
|
|
96
|
-
#
|
|
97
|
-
# @return [false]
|
|
98
|
-
# otherwise
|
|
99
|
-
#
|
|
100
|
-
# @api private
|
|
101
|
-
def ruby19?
|
|
102
|
-
RUBY_VERSION.start_with?('1.9.')
|
|
103
|
-
end
|
|
104
|
-
|
|
105
|
-
# Test for 2.0 mode
|
|
106
|
-
#
|
|
107
|
-
# @return [true]
|
|
108
|
-
# if running under 2.0.x
|
|
109
|
-
#
|
|
110
|
-
# @return [false]
|
|
111
|
-
# otherwise
|
|
112
|
-
#
|
|
113
|
-
# @api private
|
|
114
|
-
def ruby20?
|
|
115
|
-
RUBY_VERSION.start_with?('2.0.')
|
|
116
|
-
end
|
|
117
|
-
end # module Platform
|
|
118
|
-
end # module Devtools
|
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
# encoding: utf-8
|
|
2
|
-
|
|
3
|
-
module Devtools
|
|
4
|
-
class Site
|
|
5
|
-
|
|
6
|
-
# Supports initializing new projects with a Rakefile
|
|
7
|
-
class Initializer
|
|
8
|
-
|
|
9
|
-
def self.call(root)
|
|
10
|
-
new(root).call
|
|
11
|
-
end
|
|
12
|
-
|
|
13
|
-
attr_reader :site
|
|
14
|
-
|
|
15
|
-
attr_reader :root
|
|
16
|
-
|
|
17
|
-
attr_reader :config_dir
|
|
18
|
-
|
|
19
|
-
def initialize(site)
|
|
20
|
-
@site = site
|
|
21
|
-
@root = site.root
|
|
22
|
-
config_dir = @root.join(DEFAULT_CONFIG_DIR_NAME).tap(&:mkpath)
|
|
23
|
-
@config_dir = config_dir.parent
|
|
24
|
-
end
|
|
25
|
-
|
|
26
|
-
# Init devtools using default config
|
|
27
|
-
#
|
|
28
|
-
# @return [undefined]
|
|
29
|
-
#
|
|
30
|
-
# @api public
|
|
31
|
-
def call
|
|
32
|
-
FileUtils.cp_r(DEFAULT_CONFIG_PATH, config_dir)
|
|
33
|
-
|
|
34
|
-
site.sync
|
|
35
|
-
init_rakefile
|
|
36
|
-
|
|
37
|
-
self
|
|
38
|
-
end
|
|
39
|
-
|
|
40
|
-
private
|
|
41
|
-
|
|
42
|
-
# Initialize the Rakefile
|
|
43
|
-
#
|
|
44
|
-
# @return [undefined]
|
|
45
|
-
#
|
|
46
|
-
# @api private
|
|
47
|
-
def init_rakefile
|
|
48
|
-
rakefile = root.join(RAKE_FILE_NAME)
|
|
49
|
-
return if rakefile.file? && rakefile.read.include?(INIT_RAKE_TASKS)
|
|
50
|
-
rakefile.open('a') do |file|
|
|
51
|
-
file << ANNOTATION_WRAPPER % [REQUIRE, INIT_RAKE_TASKS].join("\n")
|
|
52
|
-
end
|
|
53
|
-
end
|
|
54
|
-
|
|
55
|
-
end # class Initializer
|
|
56
|
-
end # class Site
|
|
57
|
-
end # module Devtools
|
data/lib/devtools/site.rb
DELETED
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
# encoding: utf-8
|
|
2
|
-
|
|
3
|
-
module Devtools
|
|
4
|
-
|
|
5
|
-
# Encapsulates a specific {Project} devtools is used for
|
|
6
|
-
class Site
|
|
7
|
-
|
|
8
|
-
attr_reader :root
|
|
9
|
-
|
|
10
|
-
attr_reader :project
|
|
11
|
-
|
|
12
|
-
def initialize(project)
|
|
13
|
-
@project = project
|
|
14
|
-
@root = project.root
|
|
15
|
-
end
|
|
16
|
-
|
|
17
|
-
# Initialize project and load shared specs
|
|
18
|
-
#
|
|
19
|
-
# Expects to be called from $application_root/spec/spec_helper.rb
|
|
20
|
-
#
|
|
21
|
-
# @return [self]
|
|
22
|
-
#
|
|
23
|
-
# @api private
|
|
24
|
-
def init_spec_helper
|
|
25
|
-
Project::Initializer::Rspec.call(project)
|
|
26
|
-
self
|
|
27
|
-
end
|
|
28
|
-
|
|
29
|
-
# Initialize devtools using default config
|
|
30
|
-
#
|
|
31
|
-
# @return [undefined]
|
|
32
|
-
#
|
|
33
|
-
# @api private
|
|
34
|
-
def init
|
|
35
|
-
Initializer.call(self)
|
|
36
|
-
puts 'Run bundle install to complete the devtools installation'
|
|
37
|
-
self
|
|
38
|
-
end
|
|
39
|
-
|
|
40
|
-
end # class Site
|
|
41
|
-
end # module Devtools
|
data/tasks/metrics/mutant.rake
DELETED
|
@@ -1,50 +0,0 @@
|
|
|
1
|
-
# encoding: utf-8
|
|
2
|
-
|
|
3
|
-
namespace :metrics do
|
|
4
|
-
config = Devtools.project.mutant
|
|
5
|
-
|
|
6
|
-
if !ENV['DEVTOOLS_SELF']
|
|
7
|
-
desc 'Measure mutation coverage'
|
|
8
|
-
task mutant: :coverage do
|
|
9
|
-
require 'mutant'
|
|
10
|
-
|
|
11
|
-
namespace =
|
|
12
|
-
if config.zombify
|
|
13
|
-
Mutant.zombify
|
|
14
|
-
Zombie::Mutant
|
|
15
|
-
else
|
|
16
|
-
Mutant
|
|
17
|
-
end
|
|
18
|
-
|
|
19
|
-
namespaces = Array(config.namespace).map { |n| "#{n}*" }
|
|
20
|
-
|
|
21
|
-
ignore_subjects = config.ignore_subjects.flat_map do |matcher|
|
|
22
|
-
%W[--ignore #{matcher}]
|
|
23
|
-
end
|
|
24
|
-
|
|
25
|
-
since =
|
|
26
|
-
if config.since
|
|
27
|
-
%W[--since #{config.since}]
|
|
28
|
-
else
|
|
29
|
-
[]
|
|
30
|
-
end
|
|
31
|
-
|
|
32
|
-
arguments = %W[
|
|
33
|
-
--include lib
|
|
34
|
-
--require #{config.name}
|
|
35
|
-
--expect-coverage #{config.expect_coverage}
|
|
36
|
-
--use #{config.strategy}
|
|
37
|
-
].concat(ignore_subjects).concat(namespaces).concat(since)
|
|
38
|
-
|
|
39
|
-
status = namespace::CLI.run(arguments)
|
|
40
|
-
if status.nonzero?
|
|
41
|
-
Devtools.notify_metric_violation 'Mutant task is not successful'
|
|
42
|
-
end
|
|
43
|
-
end
|
|
44
|
-
else
|
|
45
|
-
desc 'Measure mutation coverage'
|
|
46
|
-
task mutant: :coverage do
|
|
47
|
-
$stderr.puts 'Mutant is disabled'
|
|
48
|
-
end
|
|
49
|
-
end
|
|
50
|
-
end
|