teuton 2.1.8dev1 → 2.1.8
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/lib/teuton/application.rb +20 -2
- data/lib/teuton/case_manager/case/case.rb +21 -2
- data/lib/teuton/case_manager/case/play.rb +12 -1
- data/lib/teuton/case_manager/case_manager.rb +26 -9
- data/lib/teuton/case_manager/check_cases.rb +2 -1
- data/lib/teuton/cli/{test.rb → check.rb} +1 -1
- data/lib/teuton/cli/main.rb +1 -1
- data/lib/teuton/cli/play.rb +3 -3
- data/lib/teuton/project/name_file_finder.rb +26 -13
- data/lib/teuton/project/project.rb +21 -7
- data/lib/teuton/report/formatter/formatter_factory.rb +8 -8
- data/lib/teuton/report/formatter/html_formatter.rb +38 -15
- data/lib/teuton/report/formatter/resume_txt_formatter.rb +2 -2
- data/lib/teuton.rb +2 -2
- metadata +4 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: cfb81fb786d0111b84d43f68a98b222639f37cc620fcf1156bf8722416f78a25
|
4
|
+
data.tar.gz: 71ba4a3325eb5d2ed76b64efbe9476fc77d82794d620416482a7ac57b835f692
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 599b8e1e1dece4f9a3afad33c1d7e71417a280f31ed7e78632d62d8b2819d8cb99d04409b152a1e1cabfa90191e244863ca02593fbe44638ddd9fde9bdb682d7
|
7
|
+
data.tar.gz: d781970ef1d69087099915f6474df31af872fd64823e2643279407df6f9a83731127696c91bb5b8a0627b3543d0cfb6dac8c2db29b0edb006a64222a589ea01d
|
data/lib/teuton/application.rb
CHANGED
@@ -1,11 +1,13 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'singleton'
|
2
4
|
|
3
5
|
# This Singleton contains application params
|
4
6
|
class Application
|
5
7
|
include Singleton
|
6
8
|
|
7
|
-
VERSION = '2.1.
|
8
|
-
NAME = 'teuton'
|
9
|
+
VERSION = '2.1.8' # Application version
|
10
|
+
NAME = 'teuton' # Application name
|
9
11
|
|
10
12
|
attr_reader :letter
|
11
13
|
attr_reader :running_basedir, :output_basedir
|
@@ -17,10 +19,15 @@ class Application
|
|
17
19
|
attr_accessor :hall_of_fame
|
18
20
|
attr_accessor :project_path, :script_path, :config_path, :test_name
|
19
21
|
|
22
|
+
##
|
23
|
+
# Initialize Application instance
|
20
24
|
def initialize
|
21
25
|
reset
|
22
26
|
end
|
23
27
|
|
28
|
+
##
|
29
|
+
# Reset param values
|
30
|
+
# rubocop:disable Metrics/MethodLength
|
24
31
|
def reset
|
25
32
|
@letter = { good: '.', bad: 'F', error: '?', none: ' ' }
|
26
33
|
@running_basedir = Dir.getwd
|
@@ -36,18 +43,29 @@ class Application
|
|
36
43
|
@uses = [] # TODO
|
37
44
|
@hall_of_fame = []
|
38
45
|
end
|
46
|
+
# rubocop:enable Metrics/MethodLength
|
39
47
|
|
48
|
+
##
|
49
|
+
# Return debug param
|
50
|
+
# @return Boolean
|
40
51
|
def debug
|
41
52
|
@default[:debug]
|
42
53
|
end
|
43
54
|
|
55
|
+
##
|
56
|
+
# Return name param
|
57
|
+
# @return String
|
44
58
|
def name
|
45
59
|
@default[:name]
|
46
60
|
end
|
47
61
|
|
62
|
+
##
|
63
|
+
# Return quiet param
|
64
|
+
# @return Boolean
|
48
65
|
def quiet?
|
49
66
|
return true if Application.instance.options['quiet']
|
50
67
|
return true unless Application.instance.verbose
|
68
|
+
|
51
69
|
false
|
52
70
|
end
|
53
71
|
end
|
@@ -26,8 +26,11 @@ class Case
|
|
26
26
|
attr_accessor :result
|
27
27
|
attr_accessor :action # TODO: why not reader only???
|
28
28
|
attr_reader :id, :config, :uniques, :conn_status
|
29
|
-
@@id = '01'
|
29
|
+
@@id = '01' # First case ID value
|
30
30
|
|
31
|
+
##
|
32
|
+
# Initialize case from specified config
|
33
|
+
# @param config (Hash)
|
31
34
|
def initialize(config)
|
32
35
|
app = Application.instance
|
33
36
|
@config = Case::Config.new(local: config, global: app.global)
|
@@ -46,7 +49,7 @@ class Case
|
|
46
49
|
@skip = get(:tt_skip) unless get(:tt_skip) == 'NODATA'
|
47
50
|
unless app.options['case'].nil?
|
48
51
|
@skip = true
|
49
|
-
@skip = false if app.options['case'].include? @id
|
52
|
+
@skip = false if app.options['case'].include? @id.to_i
|
50
53
|
end
|
51
54
|
|
52
55
|
@conn_status = {}
|
@@ -70,8 +73,12 @@ class Case
|
|
70
73
|
tempfile :default
|
71
74
|
end
|
72
75
|
|
76
|
+
##
|
77
|
+
# Export Case with specific output format
|
78
|
+
# @param format (Symbol)
|
73
79
|
def export(format)
|
74
80
|
return if skip?
|
81
|
+
|
75
82
|
@report.export format
|
76
83
|
end
|
77
84
|
|
@@ -79,21 +86,33 @@ class Case
|
|
79
86
|
@report.filename #+ '.' + @report.format.to_s
|
80
87
|
end
|
81
88
|
|
89
|
+
##
|
90
|
+
# Return case grade
|
91
|
+
# @return grade
|
82
92
|
def grade
|
83
93
|
return 0.0 if skip
|
94
|
+
|
84
95
|
@report.tail[:grade]
|
85
96
|
end
|
86
97
|
|
98
|
+
## Return case members
|
99
|
+
# @return members
|
87
100
|
def members
|
88
101
|
return '-' if skip
|
102
|
+
|
89
103
|
@report.head[:tt_members] || 'noname'
|
90
104
|
end
|
91
105
|
|
106
|
+
##
|
107
|
+
# Return case skip value
|
108
|
+
# @return skip
|
92
109
|
def skip
|
93
110
|
@skip
|
94
111
|
end
|
95
112
|
alias skip? skip
|
96
113
|
|
114
|
+
##
|
115
|
+
# Show case
|
97
116
|
def show
|
98
117
|
@report.show
|
99
118
|
end
|
@@ -7,6 +7,8 @@
|
|
7
7
|
# * fill_report
|
8
8
|
# * close_opened_sessions
|
9
9
|
class Case
|
10
|
+
##
|
11
|
+
# Execute "play" order on this case
|
10
12
|
def play
|
11
13
|
if skip?
|
12
14
|
verbose "Skipping case <#{@config.get(:tt_members)}>\n"
|
@@ -21,6 +23,8 @@ class Case
|
|
21
23
|
end
|
22
24
|
alias start play
|
23
25
|
|
26
|
+
##
|
27
|
+
# Close opened sessions for this case
|
24
28
|
def close_opened_sessions
|
25
29
|
@sessions.each_value do |s|
|
26
30
|
s.close if s.class == Net::SSH::Connection::Session
|
@@ -29,6 +33,9 @@ class Case
|
|
29
33
|
|
30
34
|
private
|
31
35
|
|
36
|
+
##
|
37
|
+
# Execute every play#group in parallel
|
38
|
+
# TO-DO: Under construction!
|
32
39
|
def play_in_parallel
|
33
40
|
@groups.each do |t|
|
34
41
|
@action[:groupname] = t[:name]
|
@@ -36,6 +43,8 @@ class Case
|
|
36
43
|
end
|
37
44
|
end
|
38
45
|
|
46
|
+
##
|
47
|
+
# Execute every play#group in sequence
|
39
48
|
def play_in_sequence
|
40
49
|
verboseln "Starting case <#{@config.get(:tt_members)}>"
|
41
50
|
@groups.each do |t|
|
@@ -47,12 +56,14 @@ class Case
|
|
47
56
|
verboseln "\n"
|
48
57
|
end
|
49
58
|
|
59
|
+
##
|
60
|
+
# Fill case report with time information
|
50
61
|
def fill_report(start_time, finish_time)
|
51
62
|
@report.head.merge! @config.global
|
52
63
|
@report.head.merge! @config.local
|
53
64
|
@report.head.merge! @config.running
|
54
65
|
@report.tail[:case_id] = @id
|
55
|
-
@report.tail[:
|
66
|
+
@report.tail[:start_time] = start_time
|
56
67
|
@report.tail[:finish_time] = finish_time
|
57
68
|
@report.tail[:duration] = finish_time - start_time
|
58
69
|
end
|
@@ -23,12 +23,17 @@ class CaseManager
|
|
23
23
|
include Singleton
|
24
24
|
include Utils
|
25
25
|
|
26
|
+
##
|
27
|
+
# Initialize CaseManager
|
26
28
|
def initialize
|
27
29
|
@cases = []
|
28
30
|
@report = Report.new(0)
|
29
31
|
@report.filename = 'resume'
|
30
32
|
end
|
31
33
|
|
34
|
+
##
|
35
|
+
# Execute "play" order: Start every single case test
|
36
|
+
# @param block (Block)
|
32
37
|
def play(&block)
|
33
38
|
check_cases!
|
34
39
|
instance_eval(&block)
|
@@ -40,6 +45,9 @@ class CaseManager
|
|
40
45
|
export(format: i.to_sym) unless i.nil?
|
41
46
|
end
|
42
47
|
|
48
|
+
##
|
49
|
+
# Execute "export" order: Export every case report
|
50
|
+
# @param args (Hash) Export options
|
43
51
|
def export(args = {})
|
44
52
|
if args.class != Hash
|
45
53
|
puts "[ERROR] CaseManager#export: Argument = <#{args}>, " \
|
@@ -47,10 +55,27 @@ class CaseManager
|
|
47
55
|
puts ' Usage: export :format => :colored_text'
|
48
56
|
raise '[ERROR] CaseManager#export: Argument error!'
|
49
57
|
end
|
58
|
+
# First: export files
|
50
59
|
ExportManager.run(@report, @cases, args)
|
60
|
+
# Second: preserve files if required
|
51
61
|
preserve_files if args[:preserve] == true
|
52
62
|
end
|
53
63
|
|
64
|
+
##
|
65
|
+
# Execute "send" order: Send every case report
|
66
|
+
# @param args (Hash) Send options
|
67
|
+
def send(args = {})
|
68
|
+
threads = []
|
69
|
+
puts ''
|
70
|
+
puts "[INFO] Sending files...#{args.to_s}"
|
71
|
+
@cases.each { |c| threads << Thread.new { c.send(args) } }
|
72
|
+
threads.each(&:join)
|
73
|
+
end
|
74
|
+
|
75
|
+
private
|
76
|
+
|
77
|
+
##
|
78
|
+
# Preserve output files for current project
|
54
79
|
def preserve_files
|
55
80
|
app = Application.instance
|
56
81
|
t = Time.now
|
@@ -61,14 +86,6 @@ class CaseManager
|
|
61
86
|
srcdir = File.join(app.output_basedir, app.global[:tt_testname])
|
62
87
|
puts "[INFO] Preserving files => #{logdir}"
|
63
88
|
FileUtils.mkdir(logdir)
|
64
|
-
Dir.glob(srcdir, '**.*').each { |file| FileUtils.cp(file, logdir) }
|
65
|
-
end
|
66
|
-
|
67
|
-
def send(args = {})
|
68
|
-
threads = []
|
69
|
-
puts ''
|
70
|
-
puts "[INFO] Sending files...#{args.to_s}"
|
71
|
-
@cases.each { |c| threads << Thread.new { c.send(args) } }
|
72
|
-
threads.each(&:join)
|
89
|
+
Dir.glob(File.join(srcdir, '**.*')).each { |file| FileUtils.cp(file, logdir) }
|
73
90
|
end
|
74
91
|
end
|
data/lib/teuton/cli/main.rb
CHANGED
data/lib/teuton/cli/play.rb
CHANGED
@@ -30,8 +30,8 @@ class CLI < Thor
|
|
30
30
|
LONGDESC
|
31
31
|
##
|
32
32
|
# Execute Teuton test unit
|
33
|
-
# @param
|
34
|
-
def play(
|
35
|
-
Project.play(
|
33
|
+
# @param filepath [String] Route to main: rb file or folder
|
34
|
+
def play(filepath)
|
35
|
+
Project.play(filepath, options)
|
36
36
|
end
|
37
37
|
end
|
@@ -6,25 +6,31 @@ require_relative '../application'
|
|
6
6
|
# Project:
|
7
7
|
# * find_filenames_for, verbose, verboseln
|
8
8
|
module NameFileFinder
|
9
|
-
|
10
|
-
|
9
|
+
##
|
10
|
+
# Find project filenames from input project relative path
|
11
|
+
# @param relprojectpath (String)
|
12
|
+
def self.find_filenames_for(relprojectpath)
|
13
|
+
projectpath = File.absolute_path(relprojectpath)
|
11
14
|
|
12
15
|
# Define:
|
13
16
|
# script_path, must contain fullpath to DSL script file
|
14
17
|
# config_path, must contain fullpath to YAML config file
|
15
|
-
if File.directory?(
|
18
|
+
if File.directory?(projectpath)
|
16
19
|
# COMPLEX MODE: We use start.rb as main RB file
|
17
|
-
find_filenames_from_directory(
|
20
|
+
find_filenames_from_directory(projectpath)
|
18
21
|
else
|
19
22
|
# SIMPLE MODE: We use pathtofile as main RB file
|
20
|
-
find_filenames_from_rb(
|
23
|
+
find_filenames_from_rb(projectpath)
|
21
24
|
end
|
22
25
|
true
|
23
26
|
end
|
24
27
|
|
25
|
-
|
28
|
+
##
|
29
|
+
# Find project filenames from input folder path
|
30
|
+
# @param folder_path (String)
|
31
|
+
def self.find_filenames_from_directory(folder_path)
|
26
32
|
# COMPLEX MODE: We use start.rb as main RB file
|
27
|
-
script_path = File.join(
|
33
|
+
script_path = File.join(folder_path, 'start.rb')
|
28
34
|
unless File.exist? script_path
|
29
35
|
print Rainbow('[ERROR] File ').red
|
30
36
|
print Rainbow(script_path).bright.red
|
@@ -33,14 +39,17 @@ module NameFileFinder
|
|
33
39
|
end
|
34
40
|
|
35
41
|
app = Application.instance
|
36
|
-
app.project_path =
|
42
|
+
app.project_path = folder_path
|
37
43
|
app.script_path = script_path
|
38
|
-
app.test_name =
|
44
|
+
app.test_name = folder_path.split(File::SEPARATOR)[-1]
|
39
45
|
|
40
|
-
find_configfilename_from_directory(
|
46
|
+
find_configfilename_from_directory(folder_path)
|
41
47
|
end
|
42
48
|
|
43
|
-
|
49
|
+
##
|
50
|
+
# Find project config filename from input folder path
|
51
|
+
# @param folder_path (String)
|
52
|
+
def self.find_configfilename_from_directory(folder_path)
|
44
53
|
# COMPLEX MODE: We use config.yaml by default
|
45
54
|
app = Application.instance
|
46
55
|
|
@@ -49,9 +58,9 @@ module NameFileFinder
|
|
49
58
|
config_name = 'config'
|
50
59
|
# Config name file is introduced by cname arg option from teuton command
|
51
60
|
config_name = app.options['cname'] unless app.options['cname'].nil?
|
52
|
-
config_path = File.join(
|
61
|
+
config_path = File.join(folder_path, "#{config_name}.json")
|
53
62
|
unless File.exist? config_path
|
54
|
-
config_path = File.join(
|
63
|
+
config_path = File.join(folder_path, "#{config_name}.yaml")
|
55
64
|
end
|
56
65
|
else
|
57
66
|
# Config path file is introduced by cpath arg option from teuton command
|
@@ -111,6 +120,10 @@ module NameFileFinder
|
|
111
120
|
verboseln Rainbow(trim(app.test_name)).blue.bright
|
112
121
|
end
|
113
122
|
|
123
|
+
##
|
124
|
+
# Trim string text when is too long
|
125
|
+
# @param input (String)
|
126
|
+
# @return String
|
114
127
|
def self.trim(input)
|
115
128
|
output = input.to_s
|
116
129
|
output = "...#{input[input.size - 50, input.size]}" if output.size > 65
|
@@ -9,10 +9,14 @@ require_relative 'name_file_finder'
|
|
9
9
|
# * process_input_case_option
|
10
10
|
# * readme
|
11
11
|
# * require_dsl_and_script
|
12
|
-
module Project
|
13
|
-
|
12
|
+
module Project ##
|
13
|
+
##
|
14
|
+
# Check teuton test syntax
|
15
|
+
# @param projectpath (String) Path to teuton test
|
16
|
+
# @param options (Array) Array of input options
|
17
|
+
def self.check(projectpath, options)
|
14
18
|
Application.instance.options.merge! options
|
15
|
-
NameFileFinder.find_filenames_for(
|
19
|
+
NameFileFinder.find_filenames_for(projectpath)
|
16
20
|
NameFileFinder.puts_input_info_on_screen
|
17
21
|
require_dsl_and_script('laboratory/laboratory') # Define DSL keywords
|
18
22
|
|
@@ -23,14 +27,20 @@ module Project
|
|
23
27
|
lab.show_dsl unless options[:r] || options[:c]
|
24
28
|
end
|
25
29
|
|
26
|
-
|
30
|
+
##
|
31
|
+
# Run test
|
32
|
+
# @param projectpath (String) Path to teuton test
|
33
|
+
# @param options (Array) Array of input options
|
34
|
+
def self.play(projectpath, options)
|
27
35
|
Application.instance.options.merge! options
|
28
36
|
process_input_case_option
|
29
|
-
NameFileFinder.find_filenames_for(
|
37
|
+
NameFileFinder.find_filenames_for(projectpath)
|
30
38
|
NameFileFinder.puts_input_info_on_screen
|
31
39
|
require_dsl_and_script('../case_manager/dsl') # Define DSL keywords
|
32
40
|
end
|
33
41
|
|
42
|
+
##
|
43
|
+
# Convert input case options String to an Array of integers
|
34
44
|
def self.process_input_case_option
|
35
45
|
options = Application.instance.options
|
36
46
|
return if options['case'].nil?
|
@@ -39,9 +49,13 @@ module Project
|
|
39
49
|
options['case'] = a.collect!(&:to_i)
|
40
50
|
end
|
41
51
|
|
42
|
-
|
52
|
+
##
|
53
|
+
# Create Readme file for a test
|
54
|
+
# @param projectpath (String) Path to teuton test
|
55
|
+
# @param options (Array) Array of input options
|
56
|
+
def self.readme(projectpath, options)
|
43
57
|
Application.instance.options.merge! options
|
44
|
-
NameFileFinder.find_filenames_for(
|
58
|
+
NameFileFinder.find_filenames_for(projectpath)
|
45
59
|
require_dsl_and_script('readme/readme') # Define DSL keywords
|
46
60
|
|
47
61
|
app = Application.instance
|
@@ -11,7 +11,7 @@ require_relative 'resume_yaml_formatter'
|
|
11
11
|
require_relative 'resume_txt_formatter'
|
12
12
|
require_relative 'moodle_csv_formatter'
|
13
13
|
require_relative 'csv_formatter'
|
14
|
-
require_relative 'html_formatter'
|
14
|
+
#require_relative 'html_formatter'
|
15
15
|
require_relative 'xml_formatter'
|
16
16
|
|
17
17
|
# FormaterFactory module
|
@@ -23,11 +23,17 @@ module FormatterFactory
|
|
23
23
|
when :csv
|
24
24
|
f = CSVFormatter.new(report)
|
25
25
|
when :html
|
26
|
-
|
26
|
+
# f = HTMLFormatter.new(report)
|
27
27
|
when :json
|
28
28
|
f = JSONFormatter.new(report)
|
29
29
|
when :list
|
30
30
|
f = ListFormatter.new(report)
|
31
|
+
when :txt
|
32
|
+
f = TXTFormatter.new(report,false)
|
33
|
+
when :xml
|
34
|
+
f = XMLFormatter.new(report)
|
35
|
+
when :yaml
|
36
|
+
f = YAMLFormatter.new(report)
|
31
37
|
when :moodle_csv
|
32
38
|
f = MoodleCSVFormatter.new(report)
|
33
39
|
when :resume_txt
|
@@ -40,12 +46,6 @@ module FormatterFactory
|
|
40
46
|
f = ResumeListFormatter.new(report)
|
41
47
|
when :resume_yaml
|
42
48
|
f = ResumeYAMLFormatter.new(report)
|
43
|
-
when :txt
|
44
|
-
f = TXTFormatter.new(report,false)
|
45
|
-
when :xml
|
46
|
-
f = XMLFormatter.new(report)
|
47
|
-
when :yaml
|
48
|
-
f = YAMLFormatter.new(report)
|
49
49
|
else
|
50
50
|
raise Rainbow("[ERROR] FormaterFactory #{format} unkown!").red.bright
|
51
51
|
end
|
@@ -1,19 +1,41 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
|
2
|
-
require_relative '
|
3
|
+
require_relative 'yaml_formatter'
|
3
4
|
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
5
|
+
##
|
6
|
+
# HTMLFormatter class receive a [Report] and generates HAML output.
|
7
|
+
class HAMLFormatter < YAMLFormatter
|
8
|
+
##
|
9
|
+
# Class constructor
|
10
|
+
# @param report [Report] Parent object that contains data to be exported.
|
11
|
+
def initialize(report)
|
12
|
+
super(report)
|
13
|
+
@data = {}
|
8
14
|
end
|
9
15
|
|
16
|
+
##
|
17
|
+
# Process data from parent object and export it into YAML format.
|
18
|
+
# @return [nil]
|
10
19
|
def process
|
20
|
+
build_data
|
21
|
+
# w @data.to_yaml # Write data into ouput file
|
22
|
+
build_page
|
23
|
+
deinit
|
24
|
+
end
|
25
|
+
|
26
|
+
def build_page
|
11
27
|
puts "<html>"
|
12
|
-
puts "<head><title>
|
28
|
+
puts "<head><title>TEUTON report</title></head>"
|
13
29
|
puts "<body>"
|
30
|
+
build_config
|
31
|
+
build_targets
|
32
|
+
build_results
|
33
|
+
end
|
34
|
+
|
35
|
+
def build_config
|
14
36
|
puts "<header><h1><a name=\"index\">Checking Machines v0.4</a></h1>"
|
15
37
|
puts '<ul>'
|
16
|
-
@head.each do |key,value|
|
38
|
+
@data[:head].each do |key,value|
|
17
39
|
puts "<li><b>"+key.to_s+": </b>"+value.to_s+"</li>" if key!=:title
|
18
40
|
end
|
19
41
|
puts '</ul>'
|
@@ -22,19 +44,20 @@ class HTMLFormatter < BaseFormatter
|
|
22
44
|
puts "<tbody>"
|
23
45
|
|
24
46
|
counter=0
|
25
|
-
@
|
47
|
+
@data[:groups].each do |group|
|
48
|
+
group[:targets].each do |target|
|
26
49
|
counter+=1
|
27
|
-
|
28
|
-
puts "<td>"+
|
29
|
-
puts "<td>"+
|
50
|
+
puts "<tr><td><a href=\"#group"+counter.to_s+"\">"+target.head[:members]+"</a></td>"
|
51
|
+
puts "<td>"+target[:tail][:grade]+"</td>"
|
52
|
+
puts "<td>"+target[:tail][:fail_counter]+"</td></tr>"
|
30
53
|
end
|
31
54
|
puts "</tbody></table></header>"
|
32
55
|
puts "<h1>Cases</h1>"
|
33
56
|
|
34
57
|
counter=0
|
35
|
-
@
|
36
|
-
counter+=1
|
37
|
-
process_datagroup(
|
58
|
+
@data[:groups].each do |group|
|
59
|
+
counter += 1
|
60
|
+
process_datagroup(group, counter)
|
38
61
|
end
|
39
62
|
|
40
63
|
puts '<ul>'
|
@@ -77,5 +100,5 @@ class HTMLFormatter < BaseFormatter
|
|
77
100
|
end
|
78
101
|
puts '</ul>'
|
79
102
|
end
|
80
|
-
|
103
|
+
end
|
81
104
|
end
|
@@ -65,8 +65,8 @@ class ResumeTXTFormatter < ResumeArrayFormatter
|
|
65
65
|
end
|
66
66
|
end
|
67
67
|
return unless my_screen_table.rows.size > 1
|
68
|
-
|
69
|
-
w "#{my_screen_table}\n"
|
68
|
+
|
69
|
+
w "#{Rainbow('CONN ERRORS').bg(:red)}\n#{my_screen_table}\n"
|
70
70
|
end
|
71
71
|
|
72
72
|
def process_results
|
data/lib/teuton.rb
CHANGED
@@ -34,8 +34,8 @@ module Teuton
|
|
34
34
|
##
|
35
35
|
# Simulate play Teuton project, check syntax and display stats.
|
36
36
|
# @param path_to_rb_file [String] Path to main rb file.
|
37
|
-
def self.
|
38
|
-
Project.
|
37
|
+
def self.check(path_to_rb_file)
|
38
|
+
Project.check(path_to_rb_file, options)
|
39
39
|
end
|
40
40
|
|
41
41
|
##
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: teuton
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.1.
|
4
|
+
version: 2.1.8
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- David Vargas Ruiz
|
@@ -281,10 +281,10 @@ files:
|
|
281
281
|
- lib/teuton/case_manager/show.rb
|
282
282
|
- lib/teuton/case_manager/utils.rb
|
283
283
|
- lib/teuton/cli.rb
|
284
|
+
- lib/teuton/cli/check.rb
|
284
285
|
- lib/teuton/cli/main.rb
|
285
286
|
- lib/teuton/cli/play.rb
|
286
287
|
- lib/teuton/cli/readme.rb
|
287
|
-
- lib/teuton/cli/test.rb
|
288
288
|
- lib/teuton/cli/version.rb
|
289
289
|
- lib/teuton/files/README.md
|
290
290
|
- lib/teuton/files/config.yaml
|
@@ -336,9 +336,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
336
336
|
version: 2.5.0
|
337
337
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
338
338
|
requirements:
|
339
|
-
- - "
|
339
|
+
- - ">="
|
340
340
|
- !ruby/object:Gem::Version
|
341
|
-
version:
|
341
|
+
version: '0'
|
342
342
|
requirements: []
|
343
343
|
rubygems_version: 3.1.2
|
344
344
|
signing_key:
|