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.
Files changed (91) hide show
  1. checksums.yaml +4 -4
  2. data/LICENSE +373 -674
  3. data/README.md +65 -18
  4. data/docs/commands/README.md +18 -81
  5. data/docs/commands/check.md +66 -0
  6. data/docs/commands/config.md +120 -0
  7. data/docs/commands/help.md +37 -0
  8. data/docs/commands/new.md +34 -0
  9. data/docs/commands/readme.md +52 -0
  10. data/docs/commands/{run-tests.md → run.md} +1 -1
  11. data/docs/config_file.md +125 -0
  12. data/docs/devel/contribute.md +52 -0
  13. data/docs/devel/todo.md +162 -0
  14. data/docs/dsl/expect.md +7 -5
  15. data/docs/dsl/run.md +30 -67
  16. data/docs/install/s-node.md +9 -7
  17. data/docs/install/t-node.md +18 -19
  18. data/docs/learn/11-export.md +1 -1
  19. data/docs/learn/13-feedback.md +1 -1
  20. data/docs/learn/14-moodle_id.md +4 -4
  21. data/docs/learn/15-readme.md +14 -8
  22. data/docs/learn/16-include.md +21 -16
  23. data/docs/learn/17-alias.md +2 -2
  24. data/docs/learn/18-log.md +5 -3
  25. data/docs/learn/19-read_vars.md +7 -3
  26. data/docs/learn/20-macros.md +6 -4
  27. data/docs/learn/21-exit_codes.md +3 -3
  28. data/docs/learn/22-result.md +7 -3
  29. data/docs/learn/23-test-code.md +17 -7
  30. data/docs/learn/24-test-sql.md +19 -18
  31. data/docs/learn/25-expect-result.md +1 -0
  32. data/docs/learn/26-expect_sequence.md +12 -7
  33. data/docs/learn/27-run_script.md +11 -5
  34. data/docs/tutorial/es/nginx/README.md +546 -0
  35. data/lib/teuton/case/case.rb +0 -2
  36. data/lib/teuton/case/dsl/expect.rb +2 -2
  37. data/lib/teuton/case/dsl/log.rb +1 -1
  38. data/lib/teuton/case/dsl/run.rb +2 -3
  39. data/lib/teuton/case/dsl/upload.rb +1 -1
  40. data/lib/teuton/case/execute/execute_base.rb +3 -6
  41. data/lib/teuton/case/execute/execute_local.rb +5 -2
  42. data/lib/teuton/case/execute/execute_ssh.rb +0 -1
  43. data/lib/teuton/case/execute/execute_telnet.rb +0 -2
  44. data/lib/teuton/case/play.rb +2 -2
  45. data/lib/teuton/case/result/result.rb +1 -3
  46. data/lib/teuton/case_manager/case_manager.rb +14 -17
  47. data/lib/teuton/case_manager/dsl.rb +4 -4
  48. data/lib/teuton/case_manager/export_manager.rb +22 -17
  49. data/lib/teuton/case_manager/{check_cases.rb → ext/check_cases.rb} +7 -6
  50. data/lib/teuton/case_manager/ext/hall_of_fame.rb +28 -0
  51. data/lib/teuton/case_manager/{report.rb → ext/report.rb} +6 -8
  52. data/lib/teuton/case_manager/send_manager.rb +1 -0
  53. data/lib/teuton/case_manager/{show_report.rb → show_resume_report.rb} +12 -26
  54. data/lib/teuton/case_manager/stats_manager.rb +26 -0
  55. data/lib/teuton/check/checker.rb +16 -8
  56. data/lib/teuton/check/main.rb +2 -2
  57. data/lib/teuton/check/show.rb +3 -3
  58. data/lib/teuton/cli.rb +3 -2
  59. data/lib/teuton/readme/dsl/getset.rb +1 -0
  60. data/lib/teuton/readme/main.rb +2 -2
  61. data/lib/teuton/readme/readme.rb +2 -2
  62. data/lib/teuton/report/formatter/default/array.rb +1 -3
  63. data/lib/teuton/report/formatter/default/markdown.rb +1 -1
  64. data/lib/teuton/report/formatter/default/txt.rb +1 -1
  65. data/lib/teuton/report/formatter/default/xml.rb +93 -29
  66. data/lib/teuton/report/formatter/formatter.rb +2 -1
  67. data/lib/teuton/report/formatter/resume/array.rb +1 -3
  68. data/lib/teuton/report/formatter/resume/txt.rb +6 -2
  69. data/lib/teuton/report/formatter/resume/xml.rb +92 -0
  70. data/lib/teuton/report/report.rb +1 -1
  71. data/lib/teuton/utils/config_file_reader.rb +141 -0
  72. data/lib/teuton/utils/name_file_finder.rb +12 -15
  73. data/lib/teuton/utils/project.rb +19 -21
  74. data/lib/teuton/utils/settings.rb +3 -1
  75. data/lib/teuton/version.rb +1 -1
  76. data/lib/teuton.rb +11 -10
  77. metadata +37 -32
  78. data/docs/commands/check-example.md +0 -53
  79. data/docs/es/aprender/01-cmd_new.md +0 -27
  80. data/docs/es/aprender/02-target.md +0 -131
  81. data/docs/es/aprender/README.md +0 -36
  82. data/docs/ideas/contributions.md +0 -32
  83. data/docs/ideas/todo.md +0 -44
  84. data/docs/install/README.md +0 -38
  85. data/lib/teuton/case_manager/hall_of_fame.rb +0 -29
  86. data/lib/teuton/files/README.md +0 -9
  87. data/lib/teuton/utils/configfile_reader.rb +0 -135
  88. /data/docs/{ideas → es}/Challenge-Server-Project.md +0 -0
  89. /data/docs/{ideas → es}/servidor-de-retos.md +0 -0
  90. /data/docs/{install/modes_of_use.md → modes_of_use.md} +0 -0
  91. /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