teuton 2.1.8 → 2.1.9

Sign up to get free protection for your applications and to get access to all the features.
Files changed (91) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +5 -8
  3. data/bin/check_teuton +43 -0
  4. data/docs/changelog/contributions.md +32 -0
  5. data/docs/changelog/v2.1.md +22 -0
  6. data/docs/changelog/v2.2.md +29 -0
  7. data/docs/commands/README.md +105 -7
  8. data/docs/commands/example_check.md +54 -0
  9. data/docs/commands/example_run.md +112 -0
  10. data/docs/dsl/README.md +11 -9
  11. data/docs/dsl/definition/expect.md +25 -21
  12. data/docs/dsl/definition/group.md +5 -1
  13. data/docs/dsl/definition/result.md +45 -34
  14. data/docs/dsl/definition/run_local.md +34 -0
  15. data/docs/dsl/definition/run_remote.md +119 -0
  16. data/docs/dsl/definition/target.md +6 -0
  17. data/docs/dsl/execution/export.md +27 -19
  18. data/docs/dsl/execution/play.md +4 -0
  19. data/docs/dsl/execution/send.md +21 -2
  20. data/docs/dsl/execution/show.md +13 -8
  21. data/docs/dsl/setting/get.md +24 -8
  22. data/docs/dsl/setting/set.md +8 -3
  23. data/docs/install/README.md +19 -26
  24. data/docs/install/modes_of_use.md +27 -26
  25. data/docs/install/scripts.md +53 -36
  26. data/docs/install/vagrant_docker.md +56 -0
  27. data/docs/learn/README.md +13 -6
  28. data/docs/learn/example-01-target.md +78 -61
  29. data/docs/learn/example-02-config.md +152 -0
  30. data/docs/learn/example-03-remote-hosts.md +31 -25
  31. data/docs/learn/example-04-use.md +23 -17
  32. data/docs/learn/example-05-debug.md +24 -17
  33. data/docs/learn/example-06-log.md +70 -0
  34. data/lib/teuton/application.rb +7 -4
  35. data/lib/teuton/case_manager/case/case.rb +4 -1
  36. data/lib/teuton/case_manager/case/dsl/expect.rb +3 -1
  37. data/lib/teuton/case_manager/case/dsl/goto.rb +12 -7
  38. data/lib/teuton/case_manager/case/dsl/macro.rb +38 -0
  39. data/lib/teuton/case_manager/case/dsl/main.rb +1 -2
  40. data/lib/teuton/case_manager/case/dsl/target.rb +1 -1
  41. data/lib/teuton/case_manager/case/runner.rb +7 -7
  42. data/lib/teuton/case_manager/case_manager.rb +1 -20
  43. data/lib/teuton/case_manager/check_cases.rb +12 -2
  44. data/lib/teuton/case_manager/dsl.rb +4 -6
  45. data/lib/teuton/case_manager/export_manager.rb +29 -3
  46. data/lib/teuton/case_manager/report.rb +29 -8
  47. data/lib/teuton/case_manager/show.rb +8 -4
  48. data/lib/teuton/cli.rb +1 -0
  49. data/lib/teuton/cli/play.rb +1 -0
  50. data/lib/teuton/cli/version.rb +1 -4
  51. data/lib/teuton/files/config.yaml +0 -1
  52. data/lib/teuton/files/start.rb +1 -1
  53. data/lib/teuton/files/template/case.html +135 -0
  54. data/lib/teuton/files/template/resume.html +115 -0
  55. data/lib/teuton/project/laboratory/builtin.rb +2 -1
  56. data/lib/teuton/project/laboratory/dsl.rb +13 -15
  57. data/lib/teuton/project/laboratory/laboratory.rb +5 -1
  58. data/lib/teuton/project/laboratory/show.rb +21 -13
  59. data/lib/teuton/project/name_file_finder.rb +6 -1
  60. data/lib/teuton/project/project.rb +7 -3
  61. data/lib/teuton/project/readme/dsl.rb +3 -1
  62. data/lib/teuton/project/readme/readme.rb +37 -26
  63. data/lib/teuton/project/skeleton.rb +20 -4
  64. data/lib/teuton/report/close.rb +15 -11
  65. data/lib/teuton/report/formatter/formatter_factory.rb +10 -6
  66. data/lib/teuton/report/formatter/html_formatter.rb +16 -79
  67. data/lib/teuton/report/formatter/resume_html_formatter.rb +39 -0
  68. data/lib/teuton/report/formatter/resume_yaml_formatter.rb +7 -1
  69. data/lib/teuton/report/report.rb +5 -4
  70. data/lib/teuton/report/show.rb +55 -26
  71. metadata +26 -39
  72. data/docs/changelog/todo.md +0 -46
  73. data/docs/commands/create_skeleton.md +0 -31
  74. data/docs/commands/help.md +0 -13
  75. data/docs/commands/revise_test.md +0 -46
  76. data/docs/commands/run_test_unit.md +0 -78
  77. data/docs/commands/show_version.md +0 -9
  78. data/docs/developers/01-telnet.md +0 -121
  79. data/docs/developers/02-ssh.md +0 -93
  80. data/docs/developers/03-encoding.md +0 -153
  81. data/docs/developers/comparative.md +0 -17
  82. data/docs/dsl/_Sidebar.md +0 -30
  83. data/docs/dsl/definition/goto.md +0 -112
  84. data/docs/dsl/definition/run.md +0 -23
  85. data/docs/install/tested_os.md +0 -25
  86. data/docs/install/vagrant.md +0 -9
  87. data/docs/learn/example-02-configfile.md +0 -174
  88. data/docs/learn/quick-demo.md +0 -170
  89. data/lib/teuton/case_manager/case/dsl/check.rb +0 -24
  90. data/lib/teuton/case_manager/case/dsl/missing.rb +0 -12
  91. data/lib/teuton/files/gitignore +0 -2
data/docs/learn/README.md CHANGED
@@ -1,26 +1,33 @@
1
1
 
2
2
  [<< back](../../README.md)
3
3
 
4
+ 1. [Learning](#learning)
5
+ 2. [Examples](#examples)
6
+ 3. [Videos](#videos)
7
+
4
8
  # Learning
5
9
 
6
- Learn how to write your own tests reading examples.
7
- - [Quick demo](quick-demo.md)
10
+ Learn how to use Teuton language to write your own tests:
8
11
  - [Example 01 - Target](example-01-target.md)
9
- - [Example 02 - Config file](example-02-configfile.md)
12
+ - [Example 02 - Config file](example-02-config.md)
10
13
  - [Example 03 - Remote hosts](example-03-remote-hosts.md)
11
14
  - [Example 04 - Use](example-04-use.md)
12
15
  - [Example 05 - Debug](example-05-debug.md)
16
+ - [Example 06 - Log](example-06-log.md)
17
+ - Example 07 - Preserve
18
+ - Example 08 - Readme
19
+ - Example 09 - Macros
20
+ - Example 10 - Alias
13
21
  - [Example 11 - Create your first test](example-11-first-test.md)
14
22
  - [Videos](videos.md)
15
23
 
16
- ---
17
- # More examples
24
+ # Examples
18
25
 
26
+ More examples
19
27
  * Let's see examples at [teuton-challenges](https://github.com/teuton-software/teuton-challenges) GitHub repository.
20
28
  * Ask us by email at `teuton.software@protonmail.com` or Twitter at `@SoftwareTeuton`.
21
29
  * [CHAPI19 - Spanish Teuton demo](https://github.com/dvarrui/proyectos-de-ejemplo/tree/master/charlas/teuton)
22
30
 
23
- ---
24
31
  # Videos
25
32
 
26
33
  By now there are no English videos. We are sorry!
@@ -1,5 +1,10 @@
1
1
  [<< back](README.md)
2
2
 
3
+ 1. [Definition section](#definition-section)
4
+ 2. [Execution section](#execution-section)
5
+ 3. [Run test](#run-test)
6
+ 4. [Output reports](#output-reports)
7
+
3
8
  # Example: learn-01-target
4
9
 
5
10
  Let's learn how to create our first target.
@@ -7,26 +12,29 @@ A target is a feature you want to measure or check.
7
12
 
8
13
  > This example is on GitHub repository at `examples/learn-01-target/`.
9
14
 
10
- ## Definitions (Group section)
15
+ ## Definition section
11
16
 
17
+ Test definition section (Group):
12
18
  ```ruby
13
- group "learn-01-target" do
19
+ group "Learn about targets" do
14
20
 
15
- target "Exist <david> user"
21
+ target "Create user david"
16
22
  run "id david"
17
23
  expect "david"
18
24
 
19
25
  end
20
26
  ```
21
27
 
22
- We define targets using these words:
23
- * **target**: Description of the goal to be tested.
24
- * **run**: Execute a command `id david` on localhost machine.
25
- * **expect**: Evaluate if the result contains expected value.
28
+ Define targets using these lines:
29
+ * **target**: Description of the element to be tested.
30
+ * **run**: Execute a command `id david` on localhost.
31
+ * **expect**: Ensure the result contains expected value.
26
32
 
27
33
  > In this example, localhost's OS must be GNU/Linux (any other compatible OS) because the command used is `id david`.
28
34
 
29
- ## Main execution block (Play section)
35
+ ## Execution section
36
+
37
+ Test execution section (Play):
30
38
 
31
39
  ```ruby
32
40
  play do
@@ -35,81 +43,90 @@ play do
35
43
  end
36
44
  ```
37
45
 
38
- Runing this example:
46
+ DSL keywords:
47
+ * **show**: display process information on screen.
48
+ * **export**: build output reports.
49
+
50
+ ## Run test
51
+
52
+ **Let's see example**: Executing ` teuton run examples/learn-01-target` command.
39
53
 
40
54
  ```bash
41
- $ teuton learn/learn-01-target
42
- [INFO] ScriptPath => /home/david/proy/repos/teuton.d/challenges/learn/learn-01-target/start.rb
43
- [INFO] ConfigPath => /home/david/proy/repos/teuton.d/challenges/learn/learn-01-target/config.yaml
55
+ [INFO] ScriptPath => examples/learn-01-target/start.rb
56
+ [INFO] ConfigPath => examples/learn-01-target/config.yaml
57
+ [INFO] Pwd => /mnt/home/leap/proy/repos/teuton.d/teuton
44
58
  [INFO] TestName => learn-01-target
59
+
45
60
  ==================================
46
- Executing [teuton] (version 2.0.0)
47
- [INFO] Running in parallel (2019-06-20 01:37:57 +0100)
61
+ Executing [teuton] (version 2.1.9)
62
+ [INFO] Running in parallel (2020-04-18 21:32:16 +0100)
48
63
  .
49
- [INFO] Duration = 0.013580866 (2019-06-20 01:37:58 +0100)
50
-
51
-
64
+ [INFO] Duration = 0.003 (2020-04-18 21:32:16 +0100)
52
65
  ==================================
66
+
53
67
  INITIAL CONFIGURATIONS
54
- +---------------+------------------------------------------------------------------------------+
55
- | tt_title | Executing [teuton] (version 2.0.0) |
56
- | tt_scriptname | /home/david/proy/repos/teuton.d/challenges/learn/learn-01-target/start.rb |
57
- | tt_configfile | /home/david/proy/repos/teuton.d/challenges/learn/learn-01-target/config.yaml |
58
- | tt_testname | learn-01-target |
59
- | tt_sequence | false |
60
- +---------------+------------------------------------------------------------------------------+
68
+ +---------------+-------------------------------------------+
69
+ | tt_title | Executing [teuton] (version 2.1.9) |
70
+ | tt_scriptname | examples/learn-01-target/start.rb |
71
+ | tt_configfile | examples/learn-01-target/config.yaml |
72
+ | tt_pwd | /mnt/home/leap/proy/repos/teuton.d/teuton |
73
+ | tt_testname | learn-01-target |
74
+ | tt_sequence | false |
75
+ +---------------+-------------------------------------------+
76
+
61
77
  CASE RESULTS
62
- +---------+-------------+-----------+
63
- | Case ID | % Completed | Members |
64
- | Case_01 | 100% | anonymous |
65
- +---------+-------------+-----------+
78
+ +------+-----------+-------+-------+
79
+ | CASE | MEMBERS | GRADE | STATE |
80
+ | 01 | anonymous | 100.0 | |
81
+ +------+-----------+-------+-------+
82
+
66
83
  FINAL VALUES
67
84
  +-------------+---------------------------+
68
- | start_time | 2019-06-20 01:37:57 +0100 |
69
- | finish_time | 2019-06-20 01:37:58 +0100 |
70
- | duration | 0.013580866 |
85
+ | start_time | 2020-04-18 21:32:16 +0100 |
86
+ | finish_time | 2020-04-18 21:32:16 +0100 |
87
+ | duration | 0.003310235 |
71
88
  +-------------+---------------------------+
72
89
  ```
73
90
 
74
- ## Results
91
+ ## Output reports
75
92
 
76
- Output reports are saved into `var/learn-01-target/` directory.
93
+ **Output directory**: reports created into `var/learn-01-target/` output directory.
77
94
 
78
95
  ```bash
79
- var/learn-01-targets
80
- ├── case-01.txt
81
- └── resume.txt
96
+ var
97
+ └── learn-01-target
98
+ ├── case-01.txt
99
+ ├── moodle.csv
100
+ └── resume.txt
82
101
  ```
83
102
 
84
- Let's see `export` keyword output.
103
+ **Let's see example**: Executing `more var/learn-01-target/case-01.txt` command.
85
104
 
86
105
  ```bash
87
- $ more var/learn-01-target/case-01.txt
88
-
89
- CONFIGURATIONS
90
- +------------+-----------+
91
- | tt_members | anonymous |
92
- | tt_skip | false |
93
- +------------+-----------+
94
-
95
- TEST
96
- ======================
97
-
98
- GROUP: learn-01-target
99
-
100
- 01 (1.0/1.0)
101
- Description : Exist <david> user
102
- Command : id david
103
- Duration : 0.004 (local)
104
- Alterations : find(david) & count
105
- Expected : Greater than 0 (String)
106
- Result : 1 (Integer)
106
+ CONFIGURATION
107
+ +-------------+-----------------+
108
+ | tt_members | anonymous |
109
+ | tt_sequence | false |
110
+ | tt_skip | false |
111
+ | tt_testname | learn-01-target |
112
+ +-------------+-----------------+
113
+
114
+ GROUPS
115
+ - Learn about targets
116
+ 01 (1.0/1.0)
117
+ Description : Create user david
118
+ Command : id david
119
+ Duration : 0.003 (local)
120
+ Alterations : find(david) & count
121
+ Expected : Greater than 0 (String)
122
+ Result : 1 (Integer)
123
+
107
124
  RESULTS
108
125
  +--------------+---------------------------+
109
- | case_id | 1 |
110
- | start_time_ | 2019-06-20 12:27:50 +0100 |
111
- | finish_time | 2019-06-20 12:27:50 +0100 |
112
- | duration | 0.004641837 |
126
+ | case_id | 01 |
127
+ | start_time | 2020-04-18 21:32:16 +0100 |
128
+ | finish_time | 2020-04-18 21:32:16 +0100 |
129
+ | duration | 0.002835857 |
113
130
  | unique_fault | 0 |
114
131
  | max_weight | 1.0 |
115
132
  | good_weight | 1.0 |
@@ -0,0 +1,152 @@
1
+ [<< back](README.md)
2
+
3
+ 1. [Config file](#config-file).
4
+ 2. [Definition section](#definition-section).
5
+ 3. [Execution section](#execution-section).
6
+ 4. [Results](#results).
7
+
8
+ # Example: learn-02-config
9
+
10
+ This example is on GitHub repository at `examples/learn-02-config`.
11
+
12
+ * Learn how to use config file.
13
+ * Tests use params defined into config files.
14
+ * It's good idea save variable data separated into external config file.
15
+
16
+ ## Config file
17
+
18
+ By default, `config.yaml` is our config file. Let's an example:
19
+
20
+ ```yaml
21
+ ---
22
+ :global:
23
+ :cases:
24
+ - :tt_members: Student-name-1
25
+ :username: root
26
+ - :tt_members: Student-name-2
27
+ :username: vargas
28
+ ```
29
+
30
+ ## Definition section
31
+
32
+ By default, `start.rb` it's our main execution file.
33
+
34
+ ```ruby
35
+ group "Reading params from config file" do
36
+
37
+ target "Create user #{gett(:username)}"
38
+ run "id #{get(:username)}"
39
+ expect get(:username)
40
+
41
+ end
42
+ ```
43
+
44
+ In this section we define targets using keywords: target, run, expect and get.
45
+
46
+ * **get** keyword is used to read params from configuracion file. It's posible personalize tests with diferent values for every case.
47
+
48
+ > NOTE: In this example, we assume GNU/Linux as localhost's OS.
49
+
50
+ ## Execution section
51
+
52
+ Main execution block:
53
+ ```ruby
54
+ play do
55
+ show
56
+ export
57
+ end
58
+ ```
59
+
60
+ Runing this example and see `show` keyword output:
61
+
62
+ ```bash
63
+ > teuton run --no-color examples/learn-02-config
64
+ [INFO] ScriptPath => examples/learn-02-config/start.rb
65
+ [INFO] ConfigPath => examples/learn-02-config/config.yaml
66
+ [INFO] Pwd => /mnt/home/leap/proy/repos/teuton.d/teuton
67
+ [INFO] TestName => learn-02-config
68
+
69
+ ==================================
70
+ Executing [teuton] (version 2.1.9)
71
+ [INFO] Running in parallel (2020-04-18 21:46:38 +0100)
72
+ id: «vargas»: no existe ese usuario
73
+ .F
74
+ [INFO] Duration = 0.004 (2020-04-18 21:46:38 +0100)
75
+ ==================================
76
+
77
+ INITIAL CONFIGURATIONS
78
+ +---------------+-------------------------------------------+
79
+ | tt_title | Executing [teuton] (version 2.1.9) |
80
+ | tt_scriptname | examples/learn-02-config/start.rb |
81
+ | tt_configfile | examples/learn-02-config/config.yaml |
82
+ | tt_pwd | /mnt/home/leap/proy/repos/teuton.d/teuton |
83
+ | tt_testname | learn-02-config |
84
+ | tt_sequence | false |
85
+ +---------------+-------------------------------------------+
86
+
87
+ CASE RESULTS
88
+ +------+----------------+-------+-------+
89
+ | CASE | MEMBERS | GRADE | STATE |
90
+ | 01 | Student-name-1 | 100.0 | |
91
+ | 02 | Student-name-2 | 0.0 | ? |
92
+ +------+----------------+-------+-------+
93
+
94
+ FINAL VALUES
95
+ +-------------+---------------------------+
96
+ | start_time | 2020-04-18 21:46:38 +0100 |
97
+ | finish_time | 2020-04-18 21:46:38 +0100 |
98
+ | duration | 0.003665655 |
99
+ +-------------+---------------------------+
100
+ ```
101
+
102
+ ## Results
103
+
104
+ Output reports are saved into `var/learn-02-config/` directory. Detail output report is created for every case.
105
+
106
+ ```
107
+ var/learn-02-config
108
+ ├── case-01.txt
109
+ ├── case-02.txt
110
+ ├── moodle.csv
111
+ └── resume.txt
112
+ ```
113
+
114
+ Let's see `export` keyword output for case 01.
115
+
116
+ ```
117
+ > more var/learn-02-config/case-01.txt
118
+ CONFIGURATION
119
+ +-------------+-----------------+
120
+ | tt_members | Student-name-1 |
121
+ | tt_sequence | false |
122
+ | tt_skip | false |
123
+ | tt_testname | learn-02-config |
124
+ | username | root |
125
+ +-------------+-----------------+
126
+
127
+ GROUPS
128
+ - Using config file values
129
+ 01 (1.0/1.0)
130
+ Description : Create user root (username)
131
+ Command : id root
132
+ Duration : 0.003 (local)
133
+ Alterations : find(root) & count
134
+ Expected : Greater than 0 (String)
135
+ Result : 1 (Integer)
136
+
137
+ RESULTS
138
+ +--------------+---------------------------+
139
+ | case_id | 01 |
140
+ | start_time | 2020-04-18 21:46:38 +0100 |
141
+ | finish_time | 2020-04-18 21:46:38 +0100 |
142
+ | duration | 0.002899065 |
143
+ | unique_fault | 0 |
144
+ | max_weight | 1.0 |
145
+ | good_weight | 1.0 |
146
+ | fail_weight | 0.0 |
147
+ | fail_counter | 0 |
148
+ | grade | 100 |
149
+ +--------------+---------------------------+
150
+ ```
151
+
152
+ > **How to choose another config file?** Read this [document](../commands/example_run.md#3-choosing-config-file).
@@ -1,18 +1,25 @@
1
-
2
1
  [<< back](README.md)
3
2
 
3
+ 1. [Config file](#config-file)
4
+ 2. [Definition section](#definition-section).
5
+ 3. [Execution section](#execution-section).
6
+ 4. [Results](#results).
7
+
4
8
  # Example: learn-03-remote-hosts
5
9
 
6
- Learn how to:
10
+ This example is on GitHub repository at `examples/learn-03-remote-hosts`.
11
+
12
+ Summary:
7
13
  * Check a group of remote hosts.
8
14
  * Export reports using other output formats.
9
15
  * Checking remote machine (host1) with Windows OS.
10
16
 
11
- > This example is on GitHub repository at `examples/learn-03-remote-hosts`.
12
-
13
17
  ## Config file
14
18
 
15
- `config.yaml` file:
19
+ This configuration file contains:
20
+ * 2 global params denitions.
21
+ * 3 cases.
22
+ * 4 specific case params definitions.
16
23
 
17
24
  ```yaml
18
25
  ---
@@ -34,37 +41,37 @@ Learn how to:
34
41
  :username: obiwan
35
42
  ```
36
43
 
37
- ## Definitions (group section)
44
+ ## Definition section
38
45
 
39
46
  Define 3 targets (items to be checked):
40
47
 
41
48
  ```ruby
42
- group "learn 03 remote hosts" do
49
+ group "How to test remote Windows hosts" do
43
50
 
44
- target "Hostname is <#{get(:host1_hostname)}>"
45
- goto :host1, :exec => "hostname"
51
+ target "Update hostname with #{gett(:host1_hostname)}"
52
+ run "hostname", on: :host1
46
53
  expect_one get(:host1_hostname)
47
54
 
48
- target "DNS Server OK"
49
- goto :host1, :exec => "nslookup www.google.es"
55
+ target "Ensure network DNS configuration is working"
56
+ run "nslookup www.google.es", on: :host1
50
57
  expect "Nombre:"
51
58
 
52
- target "Exist user <#{get(:username)}>"
53
- goto :host1, :exec => "net user"
59
+ target "Create user #{gett(:username)}"
60
+ run "net user", on: :host1
54
61
  expect get(:username)
55
62
 
56
63
  end
57
64
  ```
58
65
 
59
- > Remote machine (host1) OS must be Windows.
66
+ > NOTE: This example requires Windows OS on remote machine (host1).
60
67
 
61
- ## Execution (play section)
68
+ ## Execution section
62
69
 
63
70
  ```ruby
64
71
  play do
65
72
  show
66
73
  # export using other output formats
67
- export :format => :colored_text
74
+ export :format => :txt
68
75
  export :format => :json
69
76
  send :copy_to => :host1
70
77
  end
@@ -74,23 +81,22 @@ end
74
81
  * `export :format => :json`, create output reports into `var/learn-03-remote-host/` directory. We can use diferents format to export: txt, colored_text, json and yaml.
75
82
  * `send :copy_to => :host1` keyword copy output report into remote machine (host1).
76
83
 
77
- ## Output reports
84
+ ## Results
78
85
 
79
86
  ```
80
- $ tree var
81
87
  var
82
88
  └── learn-03-remote-hosts
83
- ├── case-01.colored_text
84
89
  ├── case-01.json
85
- ├── case-02.colored_text
86
- ├── case-02.json
87
- ├── case-03.colored_text
90
+ ├── case-01.txt
88
91
  ├── case-03.json
89
- ├── resume.colored_text
90
- └── resume.json
92
+ ├── case-03.txt
93
+ ├── moodle.csv
94
+ ├── resume.json
95
+ └── resume.txt
91
96
  ```
92
97
 
93
98
  * `case-01`, report with details about case 01 (maul)
94
- * `case-02`, report with details about case 02 (r2d2)
99
+ * Case 02 (r2ds) is skipped. So there are no report `case-02`.
95
100
  * `case-03`, report with details about case 03 (obiwan)
96
101
  * `resume`, report with global resumed information about all cases.
102
+ * `moodle.csv`, CVS file with required fields to upload grades into Moodle eLearning platform.