onceover-codequality 0.5.3 → 0.6.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 +4 -4
- data/.gitignore +4 -2
- data/Gemfile.lock +143 -0
- data/lib/onceover/codequality.rb +0 -1
- data/lib/onceover/codequality/cli.rb +6 -2
- data/lib/onceover/codequality/docs.rb +5 -7
- data/lib/onceover/codequality/executor.rb +14 -0
- data/lib/onceover/codequality/formatter.rb +28 -0
- data/lib/onceover/codequality/lint.rb +12 -9
- data/lib/onceover/codequality/puppetfile.rb +4 -8
- data/lib/onceover/codequality/syntax.rb +8 -19
- data/lib/onceover/codequality/version.rb +1 -1
- data/onceover-codequality.gemspec +1 -1
- metadata +7 -4
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: ee41694d81a21ab44a8d2c7b6630740ac8caa219d64e2bbcf14fadf1f9d919af
|
|
4
|
+
data.tar.gz: a3a16cc00241852ee07f0cf162cdd2fb10187c9218912ef814f3f13dcd6ce44d
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 6f63484487dc3d9211652a827648879b1d8c9dc76e7720b959dff30e17357061bd249cc5eb1fc5a22ac3fe714809e36bdd2cff65f72e4ddf2ac6dedcb6b1ea78
|
|
7
|
+
data.tar.gz: 75e20bdd744457c8783c903f290cc4238d83f3d44479db02146f00f666daacab8041cb7d0abead69df1b468ed0e441b488cb0863a48f89d5b2e3e021b8757f65
|
data/.gitignore
CHANGED
data/Gemfile.lock
ADDED
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
PATH
|
|
2
|
+
remote: .
|
|
3
|
+
specs:
|
|
4
|
+
onceover-codequality (0.6.0)
|
|
5
|
+
onceover (~> 3)
|
|
6
|
+
puppet-lint (~> 2)
|
|
7
|
+
puppet-strings (~> 2)
|
|
8
|
+
puppet-syntax (~> 2)
|
|
9
|
+
|
|
10
|
+
GEM
|
|
11
|
+
remote: https://rubygems.org/
|
|
12
|
+
specs:
|
|
13
|
+
backticks (1.0.2)
|
|
14
|
+
blockenspiel (0.5.0)
|
|
15
|
+
colored (1.2)
|
|
16
|
+
cri (2.15.6)
|
|
17
|
+
deep_merge (1.2.1)
|
|
18
|
+
diff-lcs (1.3)
|
|
19
|
+
facter (2.5.1)
|
|
20
|
+
faraday (0.13.1)
|
|
21
|
+
multipart-post (>= 1.2, < 3)
|
|
22
|
+
faraday_middleware (0.12.2)
|
|
23
|
+
faraday (>= 0.7.4, < 1.0)
|
|
24
|
+
fast_gettext (1.1.2)
|
|
25
|
+
gettext (3.2.9)
|
|
26
|
+
locale (>= 2.0.5)
|
|
27
|
+
text (>= 1.3.0)
|
|
28
|
+
gettext-setup (0.30)
|
|
29
|
+
fast_gettext (~> 1.1.0)
|
|
30
|
+
gettext (>= 3.0.2)
|
|
31
|
+
locale
|
|
32
|
+
git (1.5.0)
|
|
33
|
+
hiera (3.5.0)
|
|
34
|
+
hocon (1.2.5)
|
|
35
|
+
httpclient (2.8.3)
|
|
36
|
+
json (2.2.0)
|
|
37
|
+
little-plugger (1.1.4)
|
|
38
|
+
locale (2.1.2)
|
|
39
|
+
log4r (1.1.10)
|
|
40
|
+
logging (2.2.2)
|
|
41
|
+
little-plugger (~> 1.1)
|
|
42
|
+
multi_json (~> 1.10)
|
|
43
|
+
metaclass (0.0.4)
|
|
44
|
+
minitar (0.8)
|
|
45
|
+
mocha (1.9.0)
|
|
46
|
+
metaclass (~> 0.0.1)
|
|
47
|
+
multi_json (1.13.1)
|
|
48
|
+
multipart-post (2.1.1)
|
|
49
|
+
onceover (3.13.4)
|
|
50
|
+
backticks (>= 1.0.2)
|
|
51
|
+
colored (~> 1.2)
|
|
52
|
+
cri (>= 2.6)
|
|
53
|
+
deep_merge (>= 1.0.0)
|
|
54
|
+
git
|
|
55
|
+
json (>= 1.8.2)
|
|
56
|
+
logging (>= 2.0.0)
|
|
57
|
+
parallel_tests (>= 2.0.0)
|
|
58
|
+
puppet (>= 3.4.0)
|
|
59
|
+
puppetlabs_spec_helper (>= 0.4.0)
|
|
60
|
+
r10k (>= 2.1.0)
|
|
61
|
+
rake (>= 10.0.0)
|
|
62
|
+
rspec (>= 3.0.0)
|
|
63
|
+
rspec-puppet (>= 2.4.0)
|
|
64
|
+
rspec_junit_formatter (>= 0.2.0)
|
|
65
|
+
table_print (>= 1.0.0)
|
|
66
|
+
versionomy (>= 0.5.0)
|
|
67
|
+
parallel (1.17.0)
|
|
68
|
+
parallel_tests (2.29.1)
|
|
69
|
+
parallel
|
|
70
|
+
pathspec (0.2.1)
|
|
71
|
+
puppet (6.4.2)
|
|
72
|
+
facter (> 2.0.1, < 4)
|
|
73
|
+
fast_gettext (~> 1.1.2)
|
|
74
|
+
hiera (>= 3.2.1, < 4)
|
|
75
|
+
httpclient (~> 2.8)
|
|
76
|
+
locale (~> 2.1)
|
|
77
|
+
multi_json (~> 1.10)
|
|
78
|
+
puppet-resource_api (~> 1.5)
|
|
79
|
+
semantic_puppet (~> 1.0)
|
|
80
|
+
puppet-lint (2.3.6)
|
|
81
|
+
puppet-resource_api (1.8.3)
|
|
82
|
+
hocon (>= 1.0)
|
|
83
|
+
puppet-strings (2.2.0)
|
|
84
|
+
rgen
|
|
85
|
+
yard (~> 0.9.5)
|
|
86
|
+
puppet-syntax (2.4.3)
|
|
87
|
+
rake
|
|
88
|
+
puppet_forge (2.2.9)
|
|
89
|
+
faraday (>= 0.9.0, < 0.14.0)
|
|
90
|
+
faraday_middleware (>= 0.9.0, < 0.13.0)
|
|
91
|
+
gettext-setup (~> 0.11)
|
|
92
|
+
minitar
|
|
93
|
+
semantic_puppet (~> 1.0)
|
|
94
|
+
puppetlabs_spec_helper (2.14.1)
|
|
95
|
+
mocha (~> 1.0)
|
|
96
|
+
pathspec (~> 0.2.1)
|
|
97
|
+
puppet-lint (~> 2.0)
|
|
98
|
+
puppet-syntax (~> 2.0)
|
|
99
|
+
rspec-puppet (~> 2.0)
|
|
100
|
+
r10k (3.3.0)
|
|
101
|
+
colored (= 1.2)
|
|
102
|
+
cri (= 2.15.6)
|
|
103
|
+
gettext-setup (~> 0.24)
|
|
104
|
+
log4r (= 1.1.10)
|
|
105
|
+
multi_json (~> 1.10)
|
|
106
|
+
puppet_forge (~> 2.2.8)
|
|
107
|
+
rake (10.5.0)
|
|
108
|
+
rgen (0.8.2)
|
|
109
|
+
rspec (3.8.0)
|
|
110
|
+
rspec-core (~> 3.8.0)
|
|
111
|
+
rspec-expectations (~> 3.8.0)
|
|
112
|
+
rspec-mocks (~> 3.8.0)
|
|
113
|
+
rspec-core (3.8.1)
|
|
114
|
+
rspec-support (~> 3.8.0)
|
|
115
|
+
rspec-expectations (3.8.4)
|
|
116
|
+
diff-lcs (>= 1.2.0, < 2.0)
|
|
117
|
+
rspec-support (~> 3.8.0)
|
|
118
|
+
rspec-mocks (3.8.1)
|
|
119
|
+
diff-lcs (>= 1.2.0, < 2.0)
|
|
120
|
+
rspec-support (~> 3.8.0)
|
|
121
|
+
rspec-puppet (2.7.5)
|
|
122
|
+
rspec
|
|
123
|
+
rspec-support (3.8.2)
|
|
124
|
+
rspec_junit_formatter (0.4.1)
|
|
125
|
+
rspec-core (>= 2, < 4, != 2.12.0)
|
|
126
|
+
semantic_puppet (1.0.2)
|
|
127
|
+
table_print (1.5.6)
|
|
128
|
+
text (1.3.1)
|
|
129
|
+
versionomy (0.5.0)
|
|
130
|
+
blockenspiel (~> 0.5)
|
|
131
|
+
yard (0.9.19)
|
|
132
|
+
|
|
133
|
+
PLATFORMS
|
|
134
|
+
ruby
|
|
135
|
+
|
|
136
|
+
DEPENDENCIES
|
|
137
|
+
bundler (~> 2.0)
|
|
138
|
+
onceover-codequality!
|
|
139
|
+
rake (~> 10.0)
|
|
140
|
+
rspec (~> 3.0)
|
|
141
|
+
|
|
142
|
+
BUNDLED WITH
|
|
143
|
+
2.0.1
|
data/lib/onceover/codequality.rb
CHANGED
|
@@ -2,6 +2,8 @@ require "onceover/codequality/lint"
|
|
|
2
2
|
require "onceover/codequality/syntax"
|
|
3
3
|
require "onceover/codequality/docs"
|
|
4
4
|
require "onceover/codequality/puppetfile"
|
|
5
|
+
require "onceover/codequality/executor"
|
|
6
|
+
require "onceover/codequality/formatter"
|
|
5
7
|
class Onceover
|
|
6
8
|
module CodeQuality
|
|
7
9
|
class CLI
|
|
@@ -29,6 +31,8 @@ class Onceover
|
|
|
29
31
|
html_docs = opts[:html_docs] || false
|
|
30
32
|
status = true
|
|
31
33
|
|
|
34
|
+
logger.info "Running Code Quality tests"
|
|
35
|
+
|
|
32
36
|
if ! no_puppetfile
|
|
33
37
|
status &= Onceover::CodeQuality::Puppetfile.puppetfile
|
|
34
38
|
end
|
|
@@ -46,9 +50,9 @@ class Onceover
|
|
|
46
50
|
end
|
|
47
51
|
|
|
48
52
|
if status
|
|
49
|
-
logger.info "Code Quality tests
|
|
53
|
+
logger.info "Code Quality tests PASSED, have a nice day"
|
|
50
54
|
else
|
|
51
|
-
logger.error "Code Quality tests
|
|
55
|
+
logger.error "Code Quality tests FAILED, see previous error(s)"
|
|
52
56
|
exit 1
|
|
53
57
|
end
|
|
54
58
|
end
|
|
@@ -6,18 +6,16 @@ class Onceover
|
|
|
6
6
|
LOCAL_MOD_DIR = "site"
|
|
7
7
|
|
|
8
8
|
def self.puppet_strings(html_docs)
|
|
9
|
-
logger.info "Generating documentation..."
|
|
10
9
|
status = true
|
|
11
|
-
format = html_docs ? "html" : "markdown"
|
|
10
|
+
format = html_docs ? "--markup html" : "--format markdown"
|
|
12
11
|
if Dir.exist?(LOCAL_MOD_DIR)
|
|
13
12
|
Dir.glob("#{LOCAL_MOD_DIR}/*/") { |dir|
|
|
14
13
|
Dir.chdir(dir) {
|
|
14
|
+
CodeQuality::Formatter.start_test("Generate documentation in #{dir}")
|
|
15
15
|
# puppet strings prints useful metrics so don't swallow its output
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
end
|
|
20
|
-
status &= s
|
|
16
|
+
output, ok = CodeQuality::Executor.run("puppet strings generate #{format}")
|
|
17
|
+
status &= ok
|
|
18
|
+
CodeQuality::Formatter.end_test(output, ok, true)
|
|
21
19
|
}
|
|
22
20
|
}
|
|
23
21
|
end
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
class Onceover
|
|
2
|
+
module CodeQuality
|
|
3
|
+
module Executor
|
|
4
|
+
|
|
5
|
+
# Capture all program output and check the exit status was zero
|
|
6
|
+
def self.run(*command)
|
|
7
|
+
output, s = Open3.capture2e(*command)
|
|
8
|
+
ok = s.exitstatus.zero?
|
|
9
|
+
|
|
10
|
+
return output, ok
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
end
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
class Onceover
|
|
2
|
+
module CodeQuality
|
|
3
|
+
module Formatter
|
|
4
|
+
|
|
5
|
+
START_TEST = "Checking".freeze
|
|
6
|
+
MSG_TEST_OK = "...OK".freeze
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
def self.start_test(test_name)
|
|
10
|
+
logger.info "Checking #{test_name}..."
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
def self.end_test(output, ok, show_output=false)
|
|
14
|
+
if !ok || show_output
|
|
15
|
+
output.each_line do |line|
|
|
16
|
+
logger.info("\t#{line.chomp}")
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
if ok
|
|
21
|
+
logger.info "...OK"
|
|
22
|
+
else
|
|
23
|
+
logger.error "...FAILED"
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
end
|
|
@@ -5,7 +5,7 @@ class Onceover
|
|
|
5
5
|
# Apply linting to the manifests directory and each module under `site`
|
|
6
6
|
LINT_PATHS = [
|
|
7
7
|
"manifests",
|
|
8
|
-
]
|
|
8
|
+
]
|
|
9
9
|
|
|
10
10
|
# use our default options unless user has created own settings
|
|
11
11
|
if ! File.exist? ".puppet-lint.rc"
|
|
@@ -23,15 +23,18 @@ class Onceover
|
|
|
23
23
|
|
|
24
24
|
def self.puppet
|
|
25
25
|
status = true
|
|
26
|
-
LINT_PATHS.each { |p|
|
|
27
|
-
if Dir.exists?(p)
|
|
28
|
-
logger.info("checking lint in #{p}...")
|
|
29
|
-
if ! system("puppet-lint #{LINT_OPTIONS.join ' '} #{p}")
|
|
30
|
-
status = false
|
|
31
|
-
else
|
|
32
|
-
logger.info("...ok")
|
|
33
|
-
end
|
|
34
26
|
|
|
27
|
+
# wait until runtime to scan directories for unit tests
|
|
28
|
+
lint_paths = LINT_PATHS.concat(
|
|
29
|
+
Dir.glob('site/*')
|
|
30
|
+
.select { |f| File.directory? f}
|
|
31
|
+
)
|
|
32
|
+
lint_paths.each { |p|
|
|
33
|
+
if Dir.exists?(p)
|
|
34
|
+
CodeQuality::Formatter.start_test("lint in #{p}")
|
|
35
|
+
output, ok = CodeQuality::Executor.run("puppet-lint #{LINT_OPTIONS.join ' '} #{p}")
|
|
36
|
+
status &= ok
|
|
37
|
+
CodeQuality::Formatter.end_test(output, ok)
|
|
35
38
|
end
|
|
36
39
|
}
|
|
37
40
|
|
|
@@ -6,16 +6,12 @@ class Onceover
|
|
|
6
6
|
def self.puppetfile
|
|
7
7
|
status = true
|
|
8
8
|
if File.exist?("Puppetfile")
|
|
9
|
-
|
|
10
|
-
output,
|
|
11
|
-
|
|
9
|
+
CodeQuality::Formatter.start_test("Puppetfile")
|
|
10
|
+
output, ok = CodeQuality::Executor.run("r10k puppetfile check")
|
|
11
|
+
|
|
12
12
|
status &= ok
|
|
13
13
|
|
|
14
|
-
|
|
15
|
-
logger.info("...ok")
|
|
16
|
-
else
|
|
17
|
-
logger.error("Puppetfile validation failed: #{output}")
|
|
18
|
-
end
|
|
14
|
+
CodeQuality::Formatter.end_test(output, ok)
|
|
19
15
|
else
|
|
20
16
|
logger.warn("No Puppetfile found... continuing")
|
|
21
17
|
end
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
|
|
1
|
+
|
|
2
2
|
class Onceover
|
|
3
3
|
module CodeQuality
|
|
4
4
|
module Syntax
|
|
@@ -10,7 +10,7 @@ class Onceover
|
|
|
10
10
|
# puppet-syntax
|
|
11
11
|
#
|
|
12
12
|
|
|
13
|
-
|
|
13
|
+
CodeQuality::Formatter.start_test("puppet-syntax rake task")
|
|
14
14
|
# puppet-syntax seems to assign $stdout/$stderr internally in ways that
|
|
15
15
|
# prevent capturing output. As a nasty hack, run it as inline ruby and
|
|
16
16
|
# capture the output from the process...
|
|
@@ -19,15 +19,10 @@ class Onceover
|
|
|
19
19
|
PuppetSyntax.exclude_paths = ['vendor/**/*','spec/templates/*.erb']
|
|
20
20
|
Rake::Task['syntax'].invoke
|
|
21
21
|
RUBY_CODE
|
|
22
|
-
output, s = Open3.capture2e("ruby", "-e", inline_ruby)
|
|
23
|
-
ok =
|
|
22
|
+
#output, s = Open3.capture2e("ruby", "-e", inline_ruby)
|
|
23
|
+
output, ok = CodeQuality::Executor.run("ruby", "-e", inline_ruby)
|
|
24
24
|
status &= ok
|
|
25
|
-
|
|
26
|
-
if ok
|
|
27
|
-
logger.info("...ok")
|
|
28
|
-
else
|
|
29
|
-
logger.error("puppet-syntax validation failed: #{output}")
|
|
30
|
-
end
|
|
25
|
+
CodeQuality::Formatter.end_test(output, ok)
|
|
31
26
|
|
|
32
27
|
#
|
|
33
28
|
# python yaml
|
|
@@ -45,17 +40,11 @@ class Onceover
|
|
|
45
40
|
# users would be advised to fix the file, so lets _also_ validate yaml
|
|
46
41
|
# files with python if available on our path...
|
|
47
42
|
if system("python --version && python -c 'import yaml'", :err => File::NULL)
|
|
48
|
-
|
|
43
|
+
CodeQuality::Formatter.start_test("Additional python YAML validation")
|
|
49
44
|
script = File.join(File.dirname(File.expand_path(__FILE__)), "../../../res/validate_yaml.py")
|
|
50
|
-
output,
|
|
51
|
-
ok = s.exitstatus.zero?
|
|
45
|
+
output, ok = CodeQuality::Executor.run("python #{script}")
|
|
52
46
|
status &= ok
|
|
53
|
-
|
|
54
|
-
if ok
|
|
55
|
-
logger.info("...ok")
|
|
56
|
-
else
|
|
57
|
-
logger.error("Puppetfile validation failed: #{output}")
|
|
58
|
-
end
|
|
47
|
+
CodeQuality::Formatter.end_test(output, ok)
|
|
59
48
|
else
|
|
60
49
|
logger.warn("Please install python and pyyaml for enhanced YAML validation (pip install pyyaml)")
|
|
61
50
|
end
|
|
@@ -20,7 +20,7 @@ Gem::Specification.new do |spec|
|
|
|
20
20
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
|
21
21
|
spec.require_paths = ["lib"]
|
|
22
22
|
|
|
23
|
-
spec.add_development_dependency "bundler", "~>
|
|
23
|
+
spec.add_development_dependency "bundler", "~> 2.0"
|
|
24
24
|
spec.add_development_dependency "rake", "~> 10.0"
|
|
25
25
|
spec.add_development_dependency "rspec", "~> 3.0"
|
|
26
26
|
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: onceover-codequality
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.6.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Declarative Systems
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: exe
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2019-
|
|
11
|
+
date: 2019-06-18 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: bundler
|
|
@@ -16,14 +16,14 @@ dependencies:
|
|
|
16
16
|
requirements:
|
|
17
17
|
- - "~>"
|
|
18
18
|
- !ruby/object:Gem::Version
|
|
19
|
-
version: '
|
|
19
|
+
version: '2.0'
|
|
20
20
|
type: :development
|
|
21
21
|
prerelease: false
|
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
|
23
23
|
requirements:
|
|
24
24
|
- - "~>"
|
|
25
25
|
- !ruby/object:Gem::Version
|
|
26
|
-
version: '
|
|
26
|
+
version: '2.0'
|
|
27
27
|
- !ruby/object:Gem::Dependency
|
|
28
28
|
name: rake
|
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -119,6 +119,7 @@ files:
|
|
|
119
119
|
- ".rspec"
|
|
120
120
|
- ".travis.yml"
|
|
121
121
|
- Gemfile
|
|
122
|
+
- Gemfile.lock
|
|
122
123
|
- LICENSE
|
|
123
124
|
- README.md
|
|
124
125
|
- Rakefile
|
|
@@ -127,6 +128,8 @@ files:
|
|
|
127
128
|
- lib/onceover/codequality.rb
|
|
128
129
|
- lib/onceover/codequality/cli.rb
|
|
129
130
|
- lib/onceover/codequality/docs.rb
|
|
131
|
+
- lib/onceover/codequality/executor.rb
|
|
132
|
+
- lib/onceover/codequality/formatter.rb
|
|
130
133
|
- lib/onceover/codequality/lint.rb
|
|
131
134
|
- lib/onceover/codequality/puppetfile.rb
|
|
132
135
|
- lib/onceover/codequality/syntax.rb
|