teuton 2.4.0 → 2.4.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (76) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +9 -6
  3. data/docs/changelog/todo.md +10 -1
  4. data/docs/changelog/v2.4.md +5 -1
  5. data/docs/commands/README.md +8 -17
  6. data/docs/commands/example_check.md +4 -4
  7. data/docs/commands/example_run.md +10 -32
  8. data/docs/dsl/README.md +27 -39
  9. data/docs/dsl/{definition/expect.md → expect.md} +2 -18
  10. data/docs/dsl/{execution/export.md → export.md} +4 -8
  11. data/docs/dsl/{setting/get.md → get.md} +4 -10
  12. data/docs/dsl/{definition/group.md → group.md} +2 -7
  13. data/docs/dsl/{execution/play.md → play.md} +1 -6
  14. data/docs/dsl/{definition/result.md → result.md} +1 -6
  15. data/docs/dsl/{definition/run_remote.md → run.md} +57 -23
  16. data/docs/dsl/{execution/send.md → send.md} +1 -8
  17. data/docs/dsl/{setting/set.md → set.md} +1 -7
  18. data/docs/dsl/{execution/show.md → show.md} +7 -16
  19. data/docs/dsl/target.md +33 -0
  20. data/docs/ideas/todo.md +35 -115
  21. data/docs/install/README.md +26 -42
  22. data/docs/install/s-node.md +35 -0
  23. data/docs/install/t-node.md +76 -0
  24. data/docs/learn/01-cmd_new.md +28 -0
  25. data/docs/learn/{01-target.md → 02-target.md} +21 -28
  26. data/docs/learn/03-remote_hosts.md +59 -87
  27. data/docs/learn/04-config.md +147 -0
  28. data/docs/learn/05-use.md +25 -45
  29. data/docs/learn/06-cmd_check.md +50 -0
  30. data/docs/learn/07-target_weight.md +44 -0
  31. data/docs/learn/08-unique_values.md +70 -0
  32. data/docs/learn/09-send.md +20 -0
  33. data/docs/learn/10-debug.md +45 -0
  34. data/docs/learn/11-export.md +35 -0
  35. data/docs/learn/{09-preserve.md → 12-preserve.md} +1 -1
  36. data/docs/learn/13-feedback.md +49 -0
  37. data/docs/learn/14-moodle_id.md +24 -0
  38. data/docs/learn/{08-readme.md → 15-readme.md} +5 -9
  39. data/docs/learn/{13-include.md → 16-include.md} +1 -3
  40. data/docs/learn/{14-alias.md → 17-alias.md} +0 -0
  41. data/docs/learn/{07-log.md → 18-log.md} +19 -23
  42. data/docs/learn/{12-get_vars.md → 19-read_vars.md} +3 -3
  43. data/docs/learn/20-macros.md +49 -0
  44. data/docs/learn/{16-exit_codes.md → 21-exit_codes.md} +0 -0
  45. data/docs/learn/{10-result.md → 22-result.md} +3 -3
  46. data/docs/learn/23-test-code.md +54 -0
  47. data/docs/learn/24-test-sql.md +69 -0
  48. data/docs/learn/README.md +31 -32
  49. data/lib/teuton/application.rb +2 -5
  50. data/lib/teuton/case_manager/case/case.rb +2 -1
  51. data/lib/teuton/case_manager/case/dsl/expect.rb +3 -1
  52. data/lib/teuton/case_manager/case/dsl/goto.rb +1 -1
  53. data/lib/teuton/case_manager/case/dsl/log.rb +5 -3
  54. data/lib/teuton/case_manager/case/dsl/send.rb +2 -2
  55. data/lib/teuton/case_manager/case/dsl/target.rb +1 -1
  56. data/lib/teuton/case_manager/case/result/ext_compare.rb +20 -21
  57. data/lib/teuton/case_manager/case/result/ext_filter.rb +15 -8
  58. data/lib/teuton/case_manager/case_manager.rb +10 -8
  59. data/lib/teuton/check/show.rb +1 -1
  60. data/lib/teuton/files/config.yaml +1 -2
  61. data/lib/teuton/files/start.rb +4 -4
  62. data/lib/teuton/readme/dsl.rb +9 -1
  63. data/lib/teuton/readme/readme.rb +8 -1
  64. data/lib/teuton/report/formatter/base_formatter.rb +2 -0
  65. data/lib/teuton/report/formatter/formatter.rb +1 -0
  66. data/lib/teuton/report/show.rb +8 -0
  67. data/lib/teuton/version.rb +1 -1
  68. data/lib/teuton.rb +2 -1
  69. metadata +72 -54
  70. data/docs/dsl/definition/run_local.md +0 -33
  71. data/docs/dsl/definition/target.md +0 -40
  72. data/docs/install/scripts.md +0 -96
  73. data/docs/learn/02-config.md +0 -121
  74. data/docs/learn/04-new_test.md +0 -87
  75. data/docs/learn/06-debug.md +0 -110
  76. data/docs/learn/11-moodle_id.md +0 -19
@@ -1,36 +1,27 @@
1
1
  [<< back](../../README.md)
2
2
 
3
- 1. [Description](#description)
4
- 2. [Usage](#usage)
5
- 3. [Parameters](#parameters)
6
-
7
- ## Description
3
+ # show
8
4
 
9
5
  When all tests are finished, the `show` command displays information on the screen about the final results.
10
6
 
11
- ## Usage
12
-
13
7
  ```ruby
14
8
  start do
15
9
  show
16
10
  end
17
11
  ```
18
12
 
19
- or
20
-
21
- ```ruby
22
- start do
23
- show verbose: 1
24
- end
25
- ```
26
-
27
- ## Parameters
13
+ ## Verbosity
28
14
 
29
15
  | Action | Description |
30
16
  | -------------------- | --------------------------------- |
31
17
  | `show` | Same as `show level: 0` (Default) |
32
18
  | `show verbose: NUMBER` | NUMBER is the value of the verbose level |
33
19
 
20
+ ```ruby
21
+ start do
22
+ show verbose: 1
23
+ end
24
+ ```
34
25
 
35
26
  | Verbosity level | Description |
36
27
  | :-------------: | ----------- |
@@ -0,0 +1,33 @@
1
+ [<< back](../README.md)
2
+
3
+ # target
4
+
5
+ `target` instruction is used to begin every new target and sets its description.
6
+
7
+ ```ruby
8
+ target "Write here your description"
9
+ ```
10
+
11
+ Describe your targets so everybody could understand what is going to be measured. This text will be shown into reports to help us understand output information easily.
12
+
13
+ ## Weight
14
+
15
+ By default weight is `1.0`, but it's posible specified other values:
16
+
17
+ ```ruby
18
+ target "Write here your description", weight: 2.5
19
+ ```
20
+
21
+ ## [DEPRECATED] Alias
22
+
23
+ `goal` keyword is an alias of `target`. So it's the same:
24
+
25
+ ```ruby
26
+ target "Write here your description"
27
+ ```
28
+
29
+ or
30
+
31
+ ```ruby
32
+ goal "Write here your description"
33
+ ```
data/docs/ideas/todo.md CHANGED
@@ -1,124 +1,44 @@
1
1
 
2
- # Ideas
2
+ # TODO list
3
3
 
4
- Esta es una lista de ideas para que no se me olvide... lo podemos ir ajustando 😊
4
+ ## Add
5
5
 
6
- 1. TEST-EN-CADENA (smart-shell): es un proyecto en curso que trabajará en colaboración ceon teuton. Detecta las acciones del usuario dentro de la shell y automáticamente lanza el test para validar el cumplimiento de los objetivos. Si se supera un % se pasa al siguiente test.
6
+ * Option roadmap_ok_only. When expect returns false... test stop. The rest of targets are forced to fails.
7
+ * `expect_equal "camaleon"`, same as `expect result.equal "camaleon"`.
8
+ * **FEATURE** Define a loop of executions of our activity. For example:
9
+ every 5 minutes, run the activity, and repeat this 10 times.
10
+ `start :times=>10, :every=>5 do`
11
+ * Script to set **static IP**
12
+ * Change export to show **command output** into reports.
13
+ * **TEST**: actualizar las pruebas con vagrant para la versión actual. Mejora de la calidad del código.
14
+ * **DOCS** PROMOCIONAR. Documentar y hacer videos. Tener foros de la comunidad o presencia en reddit o stackoverflow.... o algo parecido???
15
+ * Create 2 evaluation modes:
16
+ 1. Evaluate targets (current mode): `start eval: :targets`
17
+ 1. Evaluate task: `start eval: :groups` and perhaps add group weight?
18
+ 1. config file with `tt_eval: groups`
19
+
20
+ Improve RESUME report or create stat-report, with stat information:
21
+ * the worst target/task/case,
22
+ * the best target/task/case,
23
+ * the slowest target/task/case,
24
+ * the fastest target/task/case, etc.
25
+ * Related targets: group of targets that always have the same state in every case.
26
+
27
+ ## Ideas
7
28
 
8
- 2. SERVIDOR TEUTON: Teuton web para recibir peticiones de los clientes... ?! Enganchar con teuton-server y teuton-client
9
- NO. quizás mejor enfoque. Tener un servidor dedicado con una página Web para lanzar test desde el propio servidor.
29
+ Esta es una lista de ideas para que no se me olvide... lo podemos ir ajustando 😊
10
30
 
11
- 3. Editor de ficheros de configuración.... una especie de asistente de ayuda..
12
- no le veo mucho sentido tener un editor específico pero si al ejecutar un reto
13
- si hay valores con NODATA... entonces que pregunte al usuario y complete la
31
+ 1. TEST-EN-CADENA (smart-shell): es un proyecto en curso que trabajará en colaboración ceon teuton. Detecta las acciones del usuario dentro de la shell y automáticamente lanza el test para validar el cumplimiento de los objetivos. Si se supera un % se pasa al siguiente test.
32
+ 2. SERVIDOR TEUTON: Teuton web para recibir peticiones de los clientes... ?! Enganchar con teuton-server y teuton-client. NO. quizás mejor enfoque. Tener un servidor dedicado con una página Web para lanzar test desde el propio servidor.
33
+ 3. Editor de ficheros de configuración.... una especie de asistente de ayuda.. no le veo mucho sentido tener un editor específico pero si al ejecutar un reto si hay valores con NODATA... entonces que pregunte al usuario y complete la
14
34
  configuración sobre la marcha???
15
-
16
35
  4. Editor de tests ?! .... lo veo complejo... a menos que se empiece por una versión simplificada.. El DSL es tan sencillo que no le veo sentido a un editor de retos. Pero si podemos aprovechar y crear una" librería " de los módulos más frecuentes?!... una ayuda para facilitar la creación de test... esto se puede emparejar con el editor de test...
36
+ 5. `send :email_to => :members_emails`... esto requiere que cada caso tenga un email y que además el profesor tenga configurado el acceso a su cuenta de correo... para poder enviar copias de los informes....
37
+ 6. When students demand help they could recibe some advises. More ideas: bonus, lives, etc.
38
+ 7. save partial grades. Before play challenge read previous moodle.cvs. Then play challenge and when creates new moodle.csv... we could preseve old cases(grades) 100% for example.
17
39
 
18
- 5. `result.test("...")`
19
- 6. `send :email_to => :members_emails`
20
-
21
- 7. Empaquetar tests para facilitar su movilidad . Esto se combina muy bien con la opción de búsqueda de retos.... pensar en firma gpg o md5 de comprobación etc..
22
- Al ejecutar un test poder hacerlo "teuton run PATH/TO/FILE.zip"
23
-
24
-
25
- # Gamification ideas
26
-
27
- * When students demand help they could recibe some advises.
28
- * Define a loop of executions of our activity. For example:
29
- every 5 minutes, run the activity, and repeat this 10 times.
30
- `start :times=>10, :duration=>5 do`
31
- * More ideas: bonus, lives, etc.
32
-
33
- # Ideas para QA
34
-
35
- * actualizar las pruebas con vagrant para la versión actual. Mejora de la calidad del código.
36
-
37
- # Ideas para PROMOCIONAR
38
-
39
- * Documentar y hacer videos.
40
- * Tener foros de la comunidad o presencia en reddit o stackoverflow.... o algo parecido???
41
-
42
- Create 2 evaluation modes:
43
- 1. Evaluate targets (current mode): `start :score=>:targets do ...`
44
- 1. Evaluate task: `start :score=>:groups do ...`
45
-
46
-
47
- ## Pending
48
-
49
- ### moodle.csv and save partial grades.
50
-
51
- * Before play challenge read previous moodle.cvs. Then play challenge and when creates new moodle.csv... we could preseve old cases(grades) 100% for example.
52
-
53
- ### expect keyword
54
-
55
- * `expect_equal "camaleon"`, same as `expect result.equal "camaleon"`.
56
- * `expect_not_equal "lagarto"`, same as not expect equal.
57
- * `expect regexp("val1|var2")`, regexp function creates regular expresion from String.
58
- * `expect result.ok?`, result from previous goto exec.
59
- * `result.exit_code`, exit code from previous goto exec.
60
-
61
- ### Reports and export keyword
62
-
63
- * Work on more output formats: CSV, HTML, XML.
64
- * `export :format=>:html, :prefix => IAN`
65
- * `export :format=>:xml, :prefix => IAN`
66
- * `export :format=>:csv, :prefix => IAN`
67
- * Improve RESUME report or create stat-report, with stat information:
68
- * the worst target/task/case,
69
- * the best target/task/case,
70
- * the slowest target/task/case,
71
- * the fastest target/task/case, etc.
72
- * Related targets: group of targets that always have the same state in every case.
73
-
74
- ### File extension
75
-
76
- * Change ".rb" file extension by ".tt" for example. To avoid users think on ruby when using teuton files.
77
- * So move "ruby language" documentation to other section like "expert mode"...
78
- * Change "start.rb" or "play.rb" name to "run.tt".
79
-
80
- ### loop keyword
81
-
82
- * Create keyword to do loops without using ruby style:
83
- ```
84
- loop i: 1..5 do
85
- puts i
86
- end
87
-
88
- loop :a => [3,5,7] do
89
- puts a
90
- end
91
- ```
92
-
93
- ### Feedback
94
-
95
- Add new features to DSL
96
- * `feedback or advise "Some usefull information"` provide this information when studends demand help.
97
- ## Working
98
-
99
- ### Remote temp folder
100
-
101
- Modify send keyword so it could works with all OS. Now only work with GNU/Linux. So we need to detect remote OS, then choose remote teuton folder where uploading files.
102
-
103
- * First goto open new session to remote host. And then:
104
- 1. Detect remote OSTYPE: (a) GNU/Linux and MAC using "uname -a", (b) Windows using "ver" command.
105
- 2. Create teuton remote uploading folder: (a) /tmp/teuton for GNU/Linux and MAC, (b) %windir%/temp/teuton for Windows.
106
- * Every time we send files to remote host we will use this remote folder.
107
-
108
- ### Readme
109
-
110
- * Pass usefull information into README.md:
111
- ```
112
- readme do
113
- title ...
114
- intro ...
115
- author ...
116
- requirements ...
117
- tags ...
118
- end
119
- ```
120
-
121
- ---
40
+ # Propuestas de sdelquin
122
41
 
123
- * teuton run into
124
- * txt format -> remove conn_errors when errors = 0
42
+ - Docker en vez de vagrant?? → https://www.cloudbees.com/blog/ssh-into-a-docker-container-how-to-execute-your-commands
43
+ - Tablas "bonitas" en terminal https://github.com/piotrmurach/tty-markdown#17-table
44
+ - Documentación en https://readthedocs.org/ ??
@@ -1,44 +1,28 @@
1
1
  [<< back](../../README.md)
2
2
 
3
- # Installation
4
-
5
- > Definitions:
6
- > * **T-node**: Host where Teuton software is installed. A T-NODE monitors several S-NODE hosts.
7
- > * **S-node**: Host where SSH server is installed. This hosts are monitotized by T-NODE host.
8
- >
9
- > Read [Modes of use](modes_of_use.md) to know about different Teuton ways of using it.
10
-
11
- ## T-NODE installation
12
-
13
- * **Install** Teuton (T-NODE role host):
14
- 1. Install Ruby on your system.
15
- 2. `gem install teuton`
16
- * Run `teuton version` to check the installed version.
17
-
18
- > **PROBLEMS**: If you don't find `teuton` command (OpenSUSE distro, for example), try this:
19
- > * Option A:
20
- > * `ruby -v`, display your current ruby version. Suppose it is "2.5".
21
- > * Run `teuton.ruby2.5`, instead of `teuton`.
22
- > * Option B:
23
- > * `find /usr/lib64/ruby -name teuton`, to find absolute path to teuton command.
24
- > * `sudo ln -s /PATH/TO/bin/teuton /usr/local/bin/teuton`, to create symbolic link to teuton command.
25
-
26
- * **Update** Teuton with `gem teuton update`.
27
- * **Uninstall** Teuton with `gem uninstall teuton`.
28
-
29
- ## S-NODE installation
30
-
31
- * **Install** SSH server on every machine with S-NODE role.
32
-
33
- ---
34
- # Other installation ways
35
-
36
- **Scripts**: [Installation using scripts](scripts.md)
37
- * These scripts run automatical installation for your OS.
38
- * Choose this way if you don't know how to install Ruby on your system.
39
-
40
- **Vagrant or Docker**: [Installation using Vagrant or Docker](vagrant_docker.md)
41
- * Choose this way if you plan to install Teuton into virtual machines or containers, and you are familiar with Vagrant and Docker technologies.
42
-
43
- **Manual**: [Manual installation](manual.md)
44
- * If you want to install Teuton by your own, or there are not installation scripts for your OS, and you don't want to use Vagrant then... here you have information how to install all the required packages for Teuton.
3
+ # Installation process
4
+
5
+ There are 2 types of nodes/hosts:
6
+
7
+ | ID | Software | Description |
8
+ | -- | -------- | ----------- |
9
+ | **T-node** | [Teuton installation](t-node.md) | T-NODE host monitors one or severals S-NODE hosts |
10
+ | **S-node** | [SSH server installation](s-node.md) | S-NODE hosts are monitorized by T-NODE host |
11
+
12
+ Read [modes of use](modes_of_use.md) to know more about differents T-NODE/S-NODE schemes.
13
+
14
+ ## Tested OS list
15
+
16
+ | Type | O.S. | Version | Arch | T-node | S-node |
17
+ | --------- | --------- | -------------- | ------ | ------ | ------ |
18
+ | GNU/Linux | CentOS | 7 | x86-64 | | |
19
+ | | Debian | 9.7.0 | x86-64 | Ok | |
20
+ | | Fedora | Workstation 29 | x84-64 | Ok | |
21
+ | | LinuxMint | 18.3 | x86-64 | Ok | |
22
+ | | openSUSE | Leap 15 | x86-64 | Ok | Ok |
23
+ | | Ubuntu | 18.04 | x86-64 | Ok | Ok |
24
+ | Microsoft | Windows | 7 Enterprise | x86 | Ok | |
25
+ | | Windows | 10 Pro | x86-64 | Ok | Ok |
26
+ | | Windows | Server 2012 R2 | x86-64 | | |
27
+ | Apple | Mac OS X | Capitán (10.11.6) | x86-64 | Ok | Ok |
28
+ | | Mac OS X | Sierra (10.12) | x86-64 | Ok | |
@@ -0,0 +1,35 @@
1
+ [<< back](README.md)
2
+
3
+ # S-NODE installation
4
+
5
+ Install SSH server on every machine with S-NODE role.
6
+
7
+ **S-node**: Host where SSH server is installed. This hosts are monitorized by T-NODE host.
8
+
9
+ **S-node GNU/Linux installation**
10
+
11
+ Run this command as `root` user:
12
+
13
+ ```bash
14
+ wget -qO- https://raw.githubusercontent.com/teuton-software/teuton/master/install/linux/linux_s-node_install.sh | bash
15
+ ```
16
+
17
+ **S-node Windows installation**
18
+
19
+ Requirements:
20
+ * Windows 7+ / Windows Server 2003+
21
+ * PowerShell v2+
22
+
23
+ Run this command on **PowerShell (PS)** as `Administrator` user:
24
+
25
+ ```powershell
26
+ Set-ExecutionPolicy Bypass -Scope Process -Force; iex ((New-Object System.Net.WebClient).DownloadString('https://raw.githubusercontent.com/teuton-software/teuton/master/install/windows/windows_s-node_install.ps1'))
27
+ ```
28
+
29
+ **S-node Mac OS X installation**
30
+
31
+ Run this command as `root` user:
32
+
33
+ ```bash
34
+ curl -sL https://raw.githubusercontent.com/teuton-software/teuton/master/install/mac/macosx_s-node_install.sh | bash
35
+ ```
@@ -0,0 +1,76 @@
1
+ [<< back](README.md)
2
+
3
+ # T-NODE installation
4
+
5
+ # 1. Recommended
6
+
7
+ **Installation**
8
+
9
+ 1. Install Ruby on your system.
10
+ 2. `gem install teuton`
11
+
12
+ Run `teuton version` to check the installed version.
13
+
14
+ **Update**
15
+
16
+ `gem teuton update`.
17
+
18
+ **Uninstall**
19
+
20
+ `gem uninstall teuton`.
21
+
22
+ # 2. Problems
23
+
24
+ Don't find `teuton` command (OpenSUSE distro, for example), try this:
25
+
26
+ Option A:
27
+ * `ruby -v`, display your current ruby version. Suppose it is "2.5".
28
+ * Run `teuton.ruby2.5`, instead of `teuton`.
29
+
30
+ Option B:
31
+ * `find /usr/lib64/ruby -name teuton`, to find absolute path to teuton command.
32
+ * `sudo ln -s /PATH/TO/bin/teuton /usr/local/bin/teuton`, to create symbolic link to teuton command.
33
+
34
+ # 3. Installation scripts
35
+
36
+ If you don't know how to install Ruby on your system, execute this script to run automatical installation for your OS.
37
+
38
+ **T-node GNU/Linux installation**
39
+
40
+ Run this command as `root` user:
41
+
42
+ ```bash
43
+ wget -qO- https://raw.githubusercontent.com/teuton-software/teuton/master/install/linux/linux_t-node_install.sh | bash
44
+ ```
45
+
46
+ **T-node Windows installation**
47
+
48
+ Requirements:
49
+ * Windows 7+ / Windows Server 2003+
50
+ * PowerShell v2+
51
+
52
+ Run this command on **PowerShell (PS)** as `Administrator` user:
53
+
54
+ ```powershell
55
+ Set-ExecutionPolicy Bypass -Scope Process -Force; iex ((New-Object System.Net.WebClient).DownloadString('https://raw.githubusercontent.com/teuton-software/teuton/master/install/windows/windows_t-node_install.ps1'))
56
+ ```
57
+
58
+ **T-node Mac OS X installation**
59
+
60
+ Run this command as admin user (member of `admin` group):
61
+
62
+ ```bash
63
+ curl -sL https://raw.githubusercontent.com/teuton-software/teuton/master/install/mac/macosx_t-node_install.sh | bash
64
+ ```
65
+
66
+ # 4. Vagrant/Docker
67
+
68
+ Choose this way if you plan to install Teuton into virtual machines or containers, and you are familiar with Vagrant and Docker technologies.
69
+
70
+ [Installation using Vagrant or Docker](vagrant_docker.md)
71
+
72
+ # 5. Source code
73
+
74
+ If you want to install Teuton by your own, or there are not installation scripts for your OS, and you don't want to use Vagrant then... here you have information how to install all the required packages for Teuton.
75
+
76
+ [Manual installation](manual.md)
@@ -0,0 +1,28 @@
1
+
2
+ [<< back](README.md)
3
+
4
+ # new test
5
+
6
+ Create skeleton for a new project: `teuton create foo`
7
+
8
+ ```
9
+ > teuton new foo
10
+
11
+ [INFO] Creating foo project skeleton
12
+ * Create dir => foo
13
+ * Create file => foo/config.yaml
14
+ * Create file => foo/start.rb
15
+ ```
16
+
17
+ > NOTA: It is posible to create these files by hand.
18
+
19
+ This command will create:
20
+
21
+ | File/Directory | Description |
22
+ | --------------- | -------------- |
23
+ | foo | Base directory |
24
+ | foo/start.rb | Main Script |
25
+ | foo/config.yaml | YAML configuration file |
26
+
27
+
28
+ Now it is time to customize your targets.
@@ -1,18 +1,15 @@
1
1
  [<< back](README.md)
2
2
 
3
- # Example: 01-target
3
+ # target
4
4
 
5
- Let's learn how to create our first target.
6
- A target is a feature you want to measure or check.
5
+ A [target](../dsl/target.md) is a feature you want to check. Targets are defined into `group` sections and every evaluation has 3 parts:
7
6
 
8
- 1. [Definition section](#definition-section)
9
- 2. [Execution section](#execution-section)
10
- 3. [Run test](#run-test)
11
- 4. [Output reports](#output-reports)
7
+ ## Target definition
12
8
 
13
- ## Definition section
9
+ * [target](dsl/target.md): Description of the element to be tested.
10
+ * [run](../dsl/run.md): Execute a command `id david` on localhost.
11
+ * [expect](../&dsl/expect.md): Verify that the result contains expected value.
14
12
 
15
- Test definition section (Group):
16
13
  ```ruby
17
14
  group "Learn about targets" do
18
15
 
@@ -23,16 +20,14 @@ group "Learn about targets" do
23
20
  end
24
21
  ```
25
22
 
26
- Define targets using these lines:
27
- * **target**: Description of the element to be tested.
28
- * **run**: Execute a command `id david` on localhost.
29
- * **expect**: Ensure the result contains expected value.
30
-
31
- > In this example, localhost's OS must be GNU/Linux (any other compatible OS) because the command used is `id david`.
23
+ > In this example, our localhost's OS is GNU/Linux (or any other compatible OS) because the command executed is `id david`.
32
24
 
33
25
  ## Execution section
34
26
 
35
- Test execution section (Play):
27
+ When we run this teuton test, the execution section (`play`) is processed. This seccion now contains this:
28
+
29
+ * [show](../dsl/show.md): display process information on screen.
30
+ * [export](../dsl/export.md): build output reports.
36
31
 
37
32
  ```ruby
38
33
  play do
@@ -41,15 +36,13 @@ play do
41
36
  end
42
37
  ```
43
38
 
44
- DSL keywords:
45
- * **show**: display process information on screen.
46
- * **export**: build output reports.
39
+ ## Example
47
40
 
48
- ## Run test
41
+ Execute this command to run the test:
49
42
 
50
- **Let's see example**: Executing ` teuton run examples/01-target` command.
43
+ ```console
44
+ > teuton run examples/01-target
51
45
 
52
- ```bash
53
46
  CASE RESULTS
54
47
  +------+-----------+-------+-------+
55
48
  | CASE | MEMBERS | GRADE | STATE |
@@ -57,11 +50,9 @@ CASE RESULTS
57
50
  +------+-----------+-------+-------+
58
51
  ```
59
52
 
60
- ## Output reports
61
-
62
- **Output directory**: reports created into `var/01-target/` output directory.
53
+ Report files are created into `var/02-target/` folder:
63
54
 
64
- ```bash
55
+ ```console
65
56
  var
66
57
  └── 01-target
67
58
  ├── case-01.txt
@@ -69,9 +60,11 @@ var
69
60
  └── resume.txt
70
61
  ```
71
62
 
72
- **Let's see example**: Executing `more var/01-target/case-01.txt` command.
63
+ Let's see one report:
64
+
65
+ ```
66
+ > more var/02-target/case-01.txt
73
67
 
74
- ```bash
75
68
  CONFIGURATION
76
69
  +-------------+-----------+
77
70
  | tt_members | anonymous |