teuton 2.10.8 → 3.0.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/LICENSE +373 -674
- data/README.md +65 -18
- data/docs/commands/README.md +18 -81
- data/docs/commands/check.md +66 -0
- data/docs/commands/config.md +120 -0
- data/docs/commands/help.md +37 -0
- data/docs/commands/new.md +34 -0
- data/docs/commands/readme.md +52 -0
- data/docs/commands/{run-tests.md → run.md} +1 -1
- data/docs/config_file.md +125 -0
- data/docs/devel/contribute.md +52 -0
- data/docs/devel/todo.md +162 -0
- data/docs/dsl/expect.md +7 -5
- data/docs/dsl/run.md +30 -67
- data/docs/install/s-node.md +9 -7
- data/docs/install/t-node.md +18 -19
- data/docs/learn/11-export.md +1 -1
- data/docs/learn/13-feedback.md +1 -1
- data/docs/learn/14-moodle_id.md +4 -4
- data/docs/learn/15-readme.md +14 -8
- data/docs/learn/16-include.md +21 -16
- data/docs/learn/17-alias.md +2 -2
- data/docs/learn/18-log.md +5 -3
- data/docs/learn/19-read_vars.md +7 -3
- data/docs/learn/20-macros.md +6 -4
- data/docs/learn/21-exit_codes.md +3 -3
- data/docs/learn/22-result.md +7 -3
- data/docs/learn/23-test-code.md +17 -7
- data/docs/learn/24-test-sql.md +19 -18
- data/docs/learn/25-expect-result.md +1 -0
- data/docs/learn/26-expect_sequence.md +12 -7
- data/docs/learn/27-run_script.md +11 -5
- data/docs/tutorial/es/nginx/README.md +546 -0
- data/lib/teuton/case/case.rb +0 -2
- data/lib/teuton/case/dsl/expect.rb +2 -2
- data/lib/teuton/case/dsl/log.rb +1 -1
- data/lib/teuton/case/dsl/run.rb +2 -3
- data/lib/teuton/case/dsl/upload.rb +1 -1
- data/lib/teuton/case/execute/execute_base.rb +3 -6
- data/lib/teuton/case/execute/execute_local.rb +5 -2
- data/lib/teuton/case/execute/execute_ssh.rb +0 -1
- data/lib/teuton/case/execute/execute_telnet.rb +0 -2
- data/lib/teuton/case/play.rb +2 -2
- data/lib/teuton/case/result/result.rb +1 -3
- data/lib/teuton/case_manager/case_manager.rb +14 -17
- data/lib/teuton/case_manager/dsl.rb +4 -4
- data/lib/teuton/case_manager/export_manager.rb +22 -17
- data/lib/teuton/case_manager/{check_cases.rb → ext/check_cases.rb} +7 -6
- data/lib/teuton/case_manager/ext/hall_of_fame.rb +28 -0
- data/lib/teuton/case_manager/{report.rb → ext/report.rb} +6 -8
- data/lib/teuton/case_manager/send_manager.rb +1 -0
- data/lib/teuton/case_manager/{show_report.rb → show_resume_report.rb} +12 -26
- data/lib/teuton/case_manager/stats_manager.rb +26 -0
- data/lib/teuton/check/checker.rb +16 -8
- data/lib/teuton/check/main.rb +2 -2
- data/lib/teuton/check/show.rb +3 -3
- data/lib/teuton/cli.rb +3 -2
- data/lib/teuton/readme/dsl/getset.rb +1 -0
- data/lib/teuton/readme/main.rb +2 -2
- data/lib/teuton/readme/readme.rb +2 -2
- data/lib/teuton/report/formatter/default/array.rb +1 -3
- data/lib/teuton/report/formatter/default/markdown.rb +1 -1
- data/lib/teuton/report/formatter/default/txt.rb +1 -1
- data/lib/teuton/report/formatter/default/xml.rb +93 -29
- data/lib/teuton/report/formatter/formatter.rb +2 -1
- data/lib/teuton/report/formatter/resume/array.rb +1 -3
- data/lib/teuton/report/formatter/resume/txt.rb +6 -2
- data/lib/teuton/report/formatter/resume/xml.rb +92 -0
- data/lib/teuton/report/report.rb +1 -1
- data/lib/teuton/utils/config_file_reader.rb +141 -0
- data/lib/teuton/utils/name_file_finder.rb +12 -15
- data/lib/teuton/utils/project.rb +19 -21
- data/lib/teuton/utils/settings.rb +3 -1
- data/lib/teuton/version.rb +1 -1
- data/lib/teuton.rb +11 -10
- metadata +37 -32
- data/docs/commands/check-example.md +0 -53
- data/docs/es/aprender/01-cmd_new.md +0 -27
- data/docs/es/aprender/02-target.md +0 -131
- data/docs/es/aprender/README.md +0 -36
- data/docs/ideas/contributions.md +0 -32
- data/docs/ideas/todo.md +0 -44
- data/docs/install/README.md +0 -38
- data/lib/teuton/case_manager/hall_of_fame.rb +0 -29
- data/lib/teuton/files/README.md +0 -9
- data/lib/teuton/utils/configfile_reader.rb +0 -135
- /data/docs/{ideas → es}/Challenge-Server-Project.md +0 -0
- /data/docs/{ideas → es}/servidor-de-retos.md +0 -0
- /data/docs/{install/modes_of_use.md → modes_of_use.md} +0 -0
- /data/lib/teuton/{case_manager → deprecated}/utils.rb +0 -0
|
@@ -1,135 +0,0 @@
|
|
|
1
|
-
# require "json/pure"
|
|
2
|
-
require "json"
|
|
3
|
-
require "yaml"
|
|
4
|
-
|
|
5
|
-
##
|
|
6
|
-
# Functions that read data from ConfigFile using YAML or JSON formats
|
|
7
|
-
module ConfigFileReader
|
|
8
|
-
##
|
|
9
|
-
# Read config file
|
|
10
|
-
# @param filepath (String) Path to config file
|
|
11
|
-
# @return Hash with config data
|
|
12
|
-
def self.read(filepath)
|
|
13
|
-
unless File.exist?(filepath)
|
|
14
|
-
data = {}
|
|
15
|
-
data[:global] = {}
|
|
16
|
-
data[:alias] = {}
|
|
17
|
-
data[:cases] = [{tt_members: "anonymous"}]
|
|
18
|
-
return data
|
|
19
|
-
end
|
|
20
|
-
return read_yaml(filepath) if File.extname(filepath) == ".yaml"
|
|
21
|
-
|
|
22
|
-
return read_json(filepath) if File.extname(filepath) == ".json"
|
|
23
|
-
|
|
24
|
-
raise "[ERROR] ConfigFileReader: #{filepath}"
|
|
25
|
-
end
|
|
26
|
-
|
|
27
|
-
##
|
|
28
|
-
# Read YAML config file
|
|
29
|
-
# @param filepath (String) Path to YAML config file
|
|
30
|
-
# @return Hash with config data
|
|
31
|
-
def self.read_yaml(filepath)
|
|
32
|
-
begin
|
|
33
|
-
data = YAML.load(File.open(filepath))
|
|
34
|
-
# data = YAML.safe_load(
|
|
35
|
-
# File.open(filepath),
|
|
36
|
-
# permitted_classes: [Array, Date, Hash, Symbol]
|
|
37
|
-
# )
|
|
38
|
-
rescue => e
|
|
39
|
-
warn "\n" + ("=" * 80)
|
|
40
|
-
warn "[ERROR] ConfigFileReader#read <#{filepath}>"
|
|
41
|
-
warn " I suggest to revise file format!"
|
|
42
|
-
warn " #{e.message}\n" + ("=" * 80)
|
|
43
|
-
exit 1
|
|
44
|
-
end
|
|
45
|
-
data = convert_string_keys_to_symbol(data)
|
|
46
|
-
data[:global] = data[:global] || {}
|
|
47
|
-
data[:alias] = data[:alias] || {}
|
|
48
|
-
data[:cases] = data[:cases] || []
|
|
49
|
-
read_included_files!(filepath, data)
|
|
50
|
-
data
|
|
51
|
-
end
|
|
52
|
-
|
|
53
|
-
##
|
|
54
|
-
# Read JSON config file
|
|
55
|
-
# @param filepath (String) Path to JSON config file
|
|
56
|
-
# @return Hash with config data
|
|
57
|
-
def self.read_json(filepath)
|
|
58
|
-
data = JSON.parse(File.read(filepath), symbolize_names: true)
|
|
59
|
-
data = convert_string_keys_to_symbol(data)
|
|
60
|
-
data[:global] = data[:global] || {}
|
|
61
|
-
data[:alias] = data[:alias] || {}
|
|
62
|
-
data[:cases] = data[:cases] || []
|
|
63
|
-
read_included_files!(filepath, data)
|
|
64
|
-
data
|
|
65
|
-
end
|
|
66
|
-
|
|
67
|
-
##
|
|
68
|
-
# Read all configuration files from "filepath" folder.
|
|
69
|
-
# @param filepath (String) Folder with config files
|
|
70
|
-
# @param data (Hash) Input configuration
|
|
71
|
-
private_class_method def self.read_included_files!(filepath, data)
|
|
72
|
-
return if data[:global][:tt_include].nil?
|
|
73
|
-
|
|
74
|
-
include_dir = data[:global][:tt_include]
|
|
75
|
-
basedir = if include_dir == File.absolute_path(include_dir)
|
|
76
|
-
include_dir
|
|
77
|
-
else
|
|
78
|
-
File.join(File.dirname(filepath), data[:global][:tt_include])
|
|
79
|
-
end
|
|
80
|
-
exts = {
|
|
81
|
-
yaml: ['.yaml', '.YAML', '.yml', '.YML'],
|
|
82
|
-
json: ['.json', '.JSON']
|
|
83
|
-
}
|
|
84
|
-
files = Dir.glob(File.join(basedir, "**/*"))
|
|
85
|
-
files.each { |filename|
|
|
86
|
-
begin
|
|
87
|
-
ext = File.extname(filename)
|
|
88
|
-
if exts[:yaml].include? ext
|
|
89
|
-
begin
|
|
90
|
-
data[:cases] << YAML.load(File.open(filename))
|
|
91
|
-
rescue
|
|
92
|
-
msg = "[ERROR] Loading configuration file(#{filename})"
|
|
93
|
-
warn msg
|
|
94
|
-
end
|
|
95
|
-
elsif exts[:json].include? ext
|
|
96
|
-
begin
|
|
97
|
-
data[:cases] = JSON.parse(File.read(filename), symbolize_names: true)
|
|
98
|
-
rescue
|
|
99
|
-
msg = "[ERROR] Loading configuration file(#{filename})"
|
|
100
|
-
warn msg
|
|
101
|
-
end
|
|
102
|
-
elsif File.file? filename
|
|
103
|
-
msg = "[ERROR] Loading configuration files: " \
|
|
104
|
-
" No yaml/json valid extension " \
|
|
105
|
-
" (#{file})"
|
|
106
|
-
warn msg
|
|
107
|
-
end
|
|
108
|
-
rescue => e
|
|
109
|
-
puts "\n" + ("=" * 80)
|
|
110
|
-
puts "[ERROR] ConfigFileReader#read <#{file}>"
|
|
111
|
-
puts " I suggest to revise file format!"
|
|
112
|
-
puts " #{e.message}\n" + ("=" * 80)
|
|
113
|
-
end
|
|
114
|
-
}
|
|
115
|
-
end
|
|
116
|
-
|
|
117
|
-
private_class_method def self.convert_string_keys_to_symbol(input)
|
|
118
|
-
return input if input.class != Hash
|
|
119
|
-
|
|
120
|
-
output = {}
|
|
121
|
-
input.each_pair do |key, value|
|
|
122
|
-
key2 = key
|
|
123
|
-
key2 = key.to_sym if key.class
|
|
124
|
-
value2 = value
|
|
125
|
-
if value.instance_of? Hash
|
|
126
|
-
value2 = convert_string_keys_to_symbol(value)
|
|
127
|
-
elsif value.instance_of? Array
|
|
128
|
-
value2 = []
|
|
129
|
-
value.each { |i| value2 << convert_string_keys_to_symbol(i) }
|
|
130
|
-
end
|
|
131
|
-
output[key2] = value2
|
|
132
|
-
end
|
|
133
|
-
output
|
|
134
|
-
end
|
|
135
|
-
end
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|