aruba 0.11.0.pre4 → 0.11.1

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 (42) hide show
  1. checksums.yaml +4 -4
  2. data/History.md +11 -3
  3. data/README.md +32 -311
  4. data/aruba.gemspec +1 -1
  5. data/features/api/filesystem/fixtures.feature +104 -0
  6. data/features/{core/cleanup_aruba_directory.feature → getting_started/cleanup.feature} +16 -1
  7. data/features/{usage → getting_started}/install.feature +0 -0
  8. data/features/getting_started/writing_good_feature_tests.feature +38 -0
  9. data/features/hooks/after/command.feature +10 -0
  10. data/features/hooks/before/command.feature +10 -0
  11. data/features/platforms/jruby.feature +14 -0
  12. data/features/{commands/debug_command.feature → steps/command/debug.feature} +0 -0
  13. data/features/steps/command/in_process.feature +11 -0
  14. data/features/{commands → steps/command}/interactive.feature +1 -1
  15. data/features/{commands/output/all_output.feature → steps/command/output.feature} +142 -0
  16. data/features/steps/command/stderr.feature +68 -0
  17. data/features/{commands/output → steps/command}/stdout.feature +45 -2
  18. data/features/{announce.feature → steps/core/announce.feature} +0 -0
  19. data/features/steps/filesystem/append_to_file.feature +45 -0
  20. data/features/steps/filesystem/cd_to_directory.feature +33 -0
  21. data/features/steps/filesystem/check_file_content.feature +61 -0
  22. data/features/steps/filesystem/check_permissions_of_file.feature +39 -0
  23. data/features/steps/filesystem/compare_files.feature +42 -0
  24. data/features/steps/filesystem/create_directory.feature +15 -5
  25. data/features/steps/filesystem/create_file.feature +26 -3
  26. data/features/steps/filesystem/existence_of_directory.feature +57 -0
  27. data/features/steps/filesystem/existence_of_file.feature +43 -0
  28. data/features/steps/filesystem/file_content.feature +22 -0
  29. data/features/steps/filesystem/fixtures.feature +64 -0
  30. data/features/steps/filesystem/non_existence_of_directory.feature +69 -0
  31. data/features/steps/filesystem/non_existence_of_file.feature +80 -0
  32. data/features/steps/filesystem/remove_directory.feature +38 -0
  33. data/features/steps/filesystem/remove_file.feature +38 -0
  34. data/lib/aruba/cucumber/file.rb +17 -15
  35. data/lib/aruba/version.rb +1 -1
  36. metadata +52 -31
  37. data/features/commands/environment_variables.feature +0 -64
  38. data/features/commands/flushing.feature +0 -74
  39. data/features/file_system_commands.feature +0 -220
  40. data/features/output.feature +0 -131
  41. data/features/utf-8.feature +0 -14
  42. data/fixtures/fixtures-app/test.txt +0 -1
@@ -1,4 +1,4 @@
1
- Feature: No clobber
1
+ Feature: Cleanup Aruba Working Directory
2
2
 
3
3
  By default Aruba removes its scratch directory before
4
4
  every scenario. This isn't always the right thing
@@ -50,3 +50,18 @@ Feature: No clobber
50
50
  """
51
51
  When I run `cucumber`
52
52
  Then the features should all pass
53
+
54
+ Scenario: Current directory from previous scenario is reseted
55
+ Given a file named "features/non-existence.feature" with:
56
+ """
57
+ Feature: Reset
58
+ Scenario: Reset #1
59
+ Given a directory named "dir1"
60
+ When I cd to "dir1"
61
+
62
+ Scenario: Reset #2
63
+ When I run `pwd`
64
+ Then the output should match %r</tmp/aruba$>
65
+ """
66
+ When I run `cucumber`
67
+ Then the features should all pass
@@ -0,0 +1,38 @@
1
+ Feature: Writing good feature tests with aruba to create documentations
2
+
3
+ You can use Markdown within your feature tests. This is quite good to write a
4
+ living documentation.
5
+
6
+ There are some edge cases where Gherkin and Markdown don't agree. Bullet lists
7
+ using `*` is one example. The `*` is also an alias for step keywords in
8
+ Gherkin. Markdown headers (the kind starting with a `#`) is another example.
9
+ They are parsed as comments by Gherkin. To use either of these, just escape
10
+ them with a backslash. Alternatively just use the "-".
11
+
12
+ You'd write:
13
+
14
+ ```gherkin
15
+ Scenario: Make tea
16
+ \## Making tea
17
+ \* Get a pot
18
+ \* And some hot water
19
+
20
+ Given...
21
+ ```
22
+
23
+ This way Gherkin won't recognize these lines as special tokens, and the
24
+ reporter will render them as Markdown. (The reporter strips away any leading
25
+ the backslashes before handing it off to the Markdown parser).
26
+
27
+ Another option is to use alternative Markdown syntax and omit conflicts and
28
+ escaping altogether:
29
+
30
+ ```gherkin
31
+ Scenario: Make tea
32
+ Making tea
33
+ ----------
34
+ - Get a pot
35
+ - And some hot water
36
+
37
+ Given...
38
+ ```
@@ -3,6 +3,16 @@ Feature: After command hooks
3
3
  You can configure Aruba to run blocks of code after it has run
4
4
  a command. The command will be passed to the block.
5
5
 
6
+ You can hook into Aruba's lifecycle just before it runs a command and after it has run the command:
7
+
8
+ ```ruby
9
+ Aruba.configure do |config|
10
+ config.after :command do |cmd|
11
+ puts "After the run of '#{cmd}'"
12
+ end
13
+ end
14
+ ```
15
+
6
16
  Background:
7
17
  Given I use a fixture named "cli-app"
8
18
 
@@ -5,6 +5,16 @@ Feature: before_cmd hooks
5
5
 
6
6
  The command will be passed to the block.
7
7
 
8
+ You can hook into Aruba's lifecycle just before it runs a command and after it has run the command:
9
+
10
+ ```ruby
11
+ Aruba.configure do |config|
12
+ config.before :command do |cmd|
13
+ puts "About to run '#{cmd}'"
14
+ end
15
+ end
16
+ ```
17
+
8
18
  Background:
9
19
  Given I use a fixture named "cli-app"
10
20
 
@@ -0,0 +1,14 @@
1
+ Feature: Support for JRuby
2
+
3
+ Improve startup time by disabling JIT and forcing client JVM mode. This can
4
+ be accomplished by adding
5
+
6
+ ```ruby
7
+ require 'aruba/jruby'
8
+ ```
9
+
10
+ *Note* - no conflict resolution on the JAVA/JRuby environment options is
11
+ done; only merging. For more complex settings please manually set the
12
+ environment variables in the hook or externally.
13
+
14
+ Refer to http://blog.headius.com/2010/03/jruby-startup-time-tips.html for other tips on startup time.
@@ -34,6 +34,17 @@ Feature: Run commands in ruby process
34
34
  and not during "loadtime", when the `ruby`-interpreter reads in you class
35
35
  files.
36
36
 
37
+ *Pros*:
38
+ * Very fast compared to spawning processes
39
+ * You can use libraries like
40
+ [simplecov](https://github.com/colszowka/simplecov) more easily, because
41
+ there is only one "process" which adds data to `simplecov`'s database
42
+
43
+ *Cons*:
44
+ * You might oversee some bugs: You might forget to require libraries in your
45
+ "production" code, because you have required them in your testing code
46
+ * Using `:in_process` interactively is not supported
47
+
37
48
  **WARNING**: Using `:in_process` interactively is not supported
38
49
 
39
50
  Background:
@@ -1,4 +1,4 @@
1
- Feature: Interactive process control
1
+ Feature: Running an interactive command
2
2
 
3
3
  In order to test interactive command line applications
4
4
  As a developer using Cucumber
@@ -444,3 +444,145 @@ Feature: All output of commands which were executed
444
444
  """
445
445
  When I run `cucumber`
446
446
  Then the features should all pass
447
+
448
+ Scenario: Handle little output
449
+ Given an executable named "bin/cli" with:
450
+ """bash
451
+ #!/usr/bin/env bash
452
+
453
+ for ((c=0; c<256; c = c+1)); do
454
+ echo -n "a"
455
+ done
456
+ """
457
+ And a file named "features/flushing.feature" with:
458
+ """cucumber
459
+ Feature: Flushing output
460
+ Scenario: Run command
461
+ When I run `cli`
462
+ Then the output should contain "a"
463
+ And the output should be 256 bytes long
464
+ And the exit status should be 0
465
+ """
466
+ When I run `cucumber`
467
+ Then the features should all pass
468
+
469
+ Scenario: Handle tons of output
470
+
471
+ In order to test processes that output a lot of data
472
+ As a developer using Aruba
473
+ I want to make sure that large amounts of output aren't buffered
474
+
475
+ Given the default aruba exit timeout is 10 seconds
476
+ And an executable named "bin/cli" with:
477
+ """bash
478
+ #!/usr/bin/env bash
479
+
480
+ for ((c=0; c<65536; c = c+1)); do
481
+ echo -n "a"
482
+ done
483
+ """
484
+ And a file named "features/flushing.feature" with:
485
+ """cucumber
486
+ Feature: Flushing output
487
+ Scenario: Run command
488
+ When I run `cli`
489
+ Then the output should contain "a"
490
+ And the output should be 65536 bytes long
491
+ And the exit status should be 0
492
+ """
493
+ When I run `cucumber`
494
+ Then the features should all pass
495
+
496
+ Scenario: Handle tons of interactive output
497
+ Given the default aruba exit timeout is 10 seconds
498
+ And an executable named "bin/cli" with:
499
+ """bash
500
+ #!/usr/bin/env bash
501
+
502
+ read size; for ((c=0; c<$size; c = c+1)); do
503
+ echo -n "a"
504
+ done
505
+ """
506
+ And a file named "features/flushing.feature" with:
507
+ """cucumber
508
+ Feature: Flushing output
509
+ Scenario: Run command
510
+ When I run `cli` interactively
511
+ And I type "65536"
512
+ Then the output should contain "a"
513
+ And the output should be 65536 bytes long
514
+ And the exit status should be 0
515
+ """
516
+ When I run `cucumber`
517
+ Then the features should all pass
518
+
519
+ @requires-aruba-version-1
520
+ Scenario: Detect output from all processes normal and interactive ones
521
+ Given an executable named "bin/cli1" with:
522
+ """
523
+ #!/usr/bin/env bash
524
+ echo 'This is cli1'
525
+ """
526
+ And an executable named "bin/cli2" with:
527
+ """
528
+ #!/usr/bin/env ruby
529
+
530
+ while input = gets do
531
+ break if "" == input
532
+ puts input
533
+ end
534
+ """
535
+ And a file named "features/output.feature" with:
536
+ """
537
+ Feature: Run command
538
+ Scenario: Run command
539
+ When I run `cli1`
540
+ When I run `cli2` interactively
541
+ And I type "This is cli2"
542
+ And I type ""
543
+ Then the stdout should contain exactly:
544
+ \"\"\"
545
+ This is cli1
546
+ \"\"\"
547
+ And the stdout should contain exactly:
548
+ \"\"\"
549
+ This is cli2
550
+ \"\"\"
551
+ """
552
+ When I run `cucumber`
553
+ Then the features should all pass
554
+
555
+ Scenario: Detect output from named source
556
+ Given a file named "features/output.feature" with:
557
+ """
558
+ Feature: Run command
559
+ Scenario: Run command
560
+ When I run `printf 'simple'`
561
+ And I run `cat` interactively
562
+ And I type "interactive"
563
+ And I type ""
564
+ Then the output from "printf 'simple'" should contain "simple"
565
+ And the output from "printf 'simple'" should contain exactly "simple"
566
+ And the output from "printf 'simple'" should contain exactly:
567
+ \"\"\"
568
+ simple
569
+ \"\"\"
570
+ And the output from "cat" should not contain "simple"
571
+ """
572
+ When I run `cucumber`
573
+ Then the features should all pass
574
+
575
+ Scenario: Detect second output from named source with custom name
576
+ Given a file named "features/output.feature" with:
577
+ """
578
+ Feature: Run command
579
+ Scenario: Run command
580
+ When I set the environment variable "ARUBA_TEST_VAR" to "first"
581
+ And I run `bash -c 'printf $ARUBA_TEST_VAR'`
582
+ Then the output from "bash -c 'printf $ARUBA_TEST_VAR'" should contain "first"
583
+ When I set the environment variable "ARUBA_TEST_VAR" to "second"
584
+ And I run `bash -c 'printf $ARUBA_TEST_VAR'`
585
+ Then the output from "bash -c 'printf $ARUBA_TEST_VAR'" should contain "second"
586
+ """
587
+ When I run `cucumber`
588
+ Then the features should all pass
@@ -0,0 +1,68 @@
1
+ Feature: STDERR of commands which were executed
2
+
3
+ In order to specify expected output
4
+ As a developer using Cucumber
5
+ I want to use the "the stderr should contain" step
6
+
7
+ Background:
8
+ Given I use a fixture named "cli-app"
9
+
10
+ Scenario: Detect stderr from all processes
11
+ Given a file named "features/output.feature" with:
12
+ """
13
+ Feature: Run command
14
+ Scenario: Run command
15
+ When I run `bash -c 'printf "hello world!\n" >&2'`
16
+ And I run `bash -c 'cat >&2 '` interactively
17
+ And I type "hola"
18
+ And I type ""
19
+ Then the stderr should contain:
20
+ \"\"\"
21
+ hello world!
22
+ \"\"\"
23
+ And the stderr should contain:
24
+ \"\"\"
25
+ hola
26
+ \"\"\"
27
+ And the stdout should not contain anything
28
+ """
29
+ When I run `cucumber`
30
+ Then the features should all pass
31
+
32
+ Scenario: Detect stderr from all processes (deprecated)
33
+ Given a file named "features/output.feature" with:
34
+ """
35
+ Feature: Run command
36
+ Scenario: Run command
37
+ When I run `bash -c 'printf "hello world!\n" >&2'`
38
+ And I run `bash -c 'cat >&2 '` interactively
39
+ And I type "hola"
40
+ And I type ""
41
+ Then the stderr should contain:
42
+ \"\"\"
43
+ hello world!
44
+ hola
45
+ \"\"\"
46
+ And the stdout should not contain anything
47
+ """
48
+ When I run `cucumber`
49
+ Then the features should all pass
50
+
51
+ Scenario: Detect stderr from named source
52
+ Given a file named "features/output.feature" with:
53
+ """
54
+ Feature: Run command
55
+ Scenario: Run command
56
+ When I run `bash -c 'printf hello >&2'`
57
+ And I run `printf goodbye`
58
+ Then the stderr from "bash -c 'printf hello >&2'" should contain "hello"
59
+ And the stderr from "bash -c 'printf hello >&2'" should contain exactly "hello"
60
+ And the stderr from "bash -c 'printf hello >&2'" should contain exactly:
61
+ \"\"\"
62
+ hello
63
+ \"\"\"
64
+ And the stdout from "bash -c 'printf hello >&2'" should not contain "hello"
65
+ And the stderr from "printf goodbye" should not contain "hello"
66
+ """
67
+ When I run `cucumber`
68
+ Then the features should all pass
@@ -1,8 +1,8 @@
1
- Feature: Stdout of commands which were executed
1
+ Feature: STDOUT of commands which were executed
2
2
 
3
3
  In order to specify expected output
4
4
  As a developer using Cucumber
5
- I want to use the "the output should contain" step
5
+ I want to use the "the stdout should contain" step
6
6
 
7
7
  Background:
8
8
  Given I use a fixture named "cli-app"
@@ -64,3 +64,46 @@ Feature: Stdout of commands which were executed
64
64
  """
65
65
  When I run `cucumber`
66
66
  Then the features should all pass
67
+
68
+ Scenario: Detect stdout from all processes including interactive ones
69
+ Given a file named "features/output.feature" with:
70
+ """
71
+ Feature: Run command
72
+ Scenario: Run command
73
+ When I run `printf "hello world!\n"`
74
+ And I run `cat` interactively
75
+ And I type "hola"
76
+ And I type ""
77
+ Then the stdout should contain:
78
+ \"\"\"
79
+ hello world!
80
+ \"\"\"
81
+ And the stdout should contain:
82
+ \"\"\"
83
+ hola
84
+ \"\"\"
85
+ And the stderr should not contain anything
86
+ """
87
+ When I run `cucumber`
88
+ Then the features should all pass
89
+
90
+ Scenario: Detect stdout from named source
91
+ Given a file named "features/output.feature" with:
92
+ """
93
+ Feature: Run command
94
+ Scenario: Run command
95
+ When I run `printf 'hello'`
96
+ And I run `printf 'goodbye'`
97
+ Then the stdout from "printf 'hello'" should contain "hello"
98
+ And the stdout from "printf 'hello'" should contain exactly "hello"
99
+ And the stdout from "printf 'hello'" should contain exactly:
100
+ \"\"\"
101
+ hello
102
+ \"\"\"
103
+ And the stderr from "printf 'hello'" should not contain "hello"
104
+ And the stdout from "printf 'goodbye'" should not contain "hello"
105
+ """
106
+ When I run `cucumber`
107
+ Then the features should all pass
108
+
109
+
@@ -0,0 +1,45 @@
1
+ Feature: Append content to file
2
+
3
+ You might want to append some content to a file.
4
+
5
+ Background:
6
+ Given I use a fixture named "cli-app"
7
+
8
+ Scenario: Append to a existing file
9
+ Given a file named "features/non-existence.feature" with:
10
+ """
11
+ Feature: Existence
12
+ Scenario: Existence
13
+ Given a file named "foo/bar/example.txt" with:
14
+ \"\"\"
15
+ hello world
16
+ \"\"\"
17
+ When I append to "foo/bar/example.txt" with:
18
+ \"\"\"
19
+ this was appended
20
+ \"\"\"
21
+ Then the file named "foo/bar/example.txt" should contain:
22
+ \"\"\"
23
+ hello worldthis was appended
24
+ \"\"\"
25
+ """
26
+ When I run `cucumber`
27
+ Then the features should all pass
28
+
29
+ Scenario: Append to a non-existing file
30
+ Given a file named "features/non-existence.feature" with:
31
+ """
32
+ Feature: Existence
33
+ Scenario: Existence
34
+ Given a file named "foo/bar/example.txt" does not exist
35
+ When I append to "foo/bar/example.txt" with:
36
+ \"\"\"
37
+ this was appended
38
+ \"\"\"
39
+ Then the file named "foo/bar/example.txt" should contain:
40
+ \"\"\"
41
+ this was appended
42
+ \"\"\"
43
+ """
44
+ When I run `cucumber`
45
+ Then the features should all pass