htty 1.3.3 → 1.3.4
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.
- data/.gitignore +0 -1
- data/.travis.yml +9 -0
- data/Gemfile +12 -2
- data/History.markdown +10 -4
- data/README.markdown +7 -7
- data/Rakefile +32 -43
- data/htty.gemspec +3 -3
- data/lib/htty/cli/commands/body_set.rb +3 -2
- data/lib/htty/cli.rb +17 -4
- data/lib/htty/version.rb +1 -1
- data/spec/unit/htty/cli/commands/body_set_spec.rb +1 -1
- metadata +16 -28
- data/spec/system/scenarios/exit/expected_stdout +0 -2
- data/spec/system/scenarios/exit/stdin +0 -1
- data/spec/system/scenarios/quit/expected_stdout +0 -2
- data/spec/system/scenarios/quit/stdin +0 -1
- data/spec/system/scenarios_spec.rb +0 -47
data/.gitignore
CHANGED
data/.travis.yml
ADDED
data/Gemfile
CHANGED
@@ -2,7 +2,17 @@ source 'http://rubygems.org'
|
|
2
2
|
|
3
3
|
gemspec
|
4
4
|
|
5
|
+
gem 'jruby-openssl', :platforms => :jruby
|
6
|
+
|
5
7
|
group :development do
|
6
|
-
gem 'ruby-debug',
|
7
|
-
|
8
|
+
gem 'ruby-debug', :platforms => :mri_18
|
9
|
+
|
10
|
+
# This is a dependency of ruby-debug. We're specifying it here because its
|
11
|
+
# v0.45 is incompatible with Ruby v1.8.7.
|
12
|
+
gem 'linecache', '<= 0.43', :platforms => :mri_18
|
13
|
+
|
14
|
+
gem 'ruby-debug19', :platforms => :mri_19
|
15
|
+
|
16
|
+
gem 'yard', :platforms => [:ruby, :mswin, :mingw]
|
17
|
+
gem 'rdiscount', :platforms => [:ruby, :mswin, :mingw]
|
8
18
|
end
|
data/History.markdown
CHANGED
@@ -1,6 +1,12 @@
|
|
1
1
|
Version history for the _htty_ project
|
2
2
|
======================================
|
3
3
|
|
4
|
+
<a name="v1.3.4"></a>v1.3.4, Mon 10/17/2011
|
5
|
+
-------------------------------------------
|
6
|
+
|
7
|
+
* Added support for Ctrl-D to exit and to terminate `body-set` command input \[with help from [[bofrede](http://github.com/bofrede "bofrede at GitHub")]\]
|
8
|
+
* Added `--version` and `--help` command-line arguments
|
9
|
+
|
4
10
|
<a name="v1.3.3"></a>v1.3.3, Sat 3/05/2011
|
5
11
|
-------------------------------------------
|
6
12
|
|
@@ -34,12 +40,12 @@ Version history for the _htty_ project
|
|
34
40
|
-------------------------------------------
|
35
41
|
|
36
42
|
* Added support for Tab-key completion of user input [[carsonmcdonald](http://github.com/carsonmcdonald "carsonmcdonald at GitHub")]
|
37
|
-
* Enhanced the `query-unset` command to accept an optional _value_ argument [[
|
43
|
+
* Enhanced the `query-unset` command to accept an optional _value_ argument [[nextmat](http://github.com/nextmat "nextmat at GitHub")]
|
38
44
|
|
39
45
|
<a name="v1.1.6"></a>v1.1.6, Mon 11/22/2010
|
40
46
|
-------------------------------------------
|
41
47
|
|
42
|
-
* Added the `query-add` and `query-remove` commands [[
|
48
|
+
* Added the `query-add` and `query-remove` commands [[nextmat](http://github.com/nextmat "nextmat at GitHub")]:
|
43
49
|
* Added context-sensitive help in connection with server certificate verification
|
44
50
|
* Upgraded various dependencies
|
45
51
|
|
@@ -47,13 +53,13 @@ Version history for the _htty_ project
|
|
47
53
|
-------------------------------------------
|
48
54
|
|
49
55
|
* Added the `ssl-verification*` commands for controlling the verification of server certificates [[dtjm](http://github.com/dtjm "dtjm at GitHub")]
|
50
|
-
* Fixed a bug in the `query-set` command [[
|
56
|
+
* Fixed a bug in the `query-set` command [[nextmat](http://github.com/nextmat "nextmat at GitHub")]
|
51
57
|
* Fixed a Ruby < v1.9 compatibility problem
|
52
58
|
|
53
59
|
<a name="v1.1.4"></a>v1.1.4, Sat 10/16/2010
|
54
60
|
-------------------------------------------
|
55
61
|
|
56
|
-
* Enhanced the `query-set` command [[
|
62
|
+
* Enhanced the `query-set` command [[nextmat](http://github.com/nextmat "nextmat at GitHub")] to:
|
57
63
|
- Accept an arbitrary number of arguments
|
58
64
|
- Support valueless keys
|
59
65
|
- Support duplicate keys
|
data/README.markdown
CHANGED
@@ -27,9 +27,9 @@
|
|
27
27
|
|____| |____| / ______|
|
28
28
|
\/
|
29
29
|
|
30
|
-
[htty](http://htty.github.com) is a console application for interacting with web servers. It’s a fun way to explore web APIs and to learn the ins and outs of HTTP.
|
30
|
+
[<img align="right" src="https://secure.travis-ci.org/htty/htty.png?branch=master" title="Travis CI build status" />](http://travis-ci.org/htty/htty) [htty](http://htty.github.com) is a console application for interacting with web servers. It’s a fun way to explore web APIs and to learn the ins and outs of HTTP.
|
31
31
|
|
32
|
-
See what’s changed lately by reading the [project history](http://htty.github.com/file.History.html).
|
32
|
+
See what’s changed lately by reading the [project history](http://htty.github.com/file.History.html).
|
33
33
|
|
34
34
|
<a name="installation"></a>Installation
|
35
35
|
=======================================
|
@@ -101,7 +101,7 @@ Exit your session at any time by typing `quit`.
|
|
101
101
|
<a name="cookies-example"></a>Working with cookies
|
102
102
|
--------------------------------------------------
|
103
103
|
|
104
|
-
The next example demonstrates
|
104
|
+
The next example demonstrates <i>htty</i>’s HTTP Secure support and cookies features, as well as how to review and revisit past requests.
|
105
105
|
|
106
106
|

|
107
107
|
|
@@ -124,7 +124,7 @@ The `reuse` command makes a copy of the headers and body of an earlier request f
|
|
124
124
|
<a name="history-example"></a>Understanding complex HTTP conversations at a glance using history
|
125
125
|
------------------------------------------------------------------------------------------------
|
126
126
|
|
127
|
-
Now we’ll look at
|
127
|
+
Now we’ll look at <i>htty</i>’s HTTP Basic Authentication support and learn how to display unabbreviated transcripts of _htty_ sessions.
|
128
128
|
|
129
129
|
Assume that we have the following Sinatra application listening on Sinatra’s default port, 4567.
|
130
130
|
|
@@ -217,7 +217,7 @@ Stay in touch with the _htty_ project by following [@get_htty](http://twitter.co
|
|
217
217
|
|
218
218
|
You can also get help in the [#htty channel on Freenode](http://webchat.freenode.net/?channels=htty).
|
219
219
|
|
220
|
-
<a name="credits"></a>Credits
|
220
|
+
<a name="credits"></a>Credits
|
221
221
|
=============================
|
222
222
|
|
223
223
|
The author, [Nils Jonsson](mailto:htty@nilsjonsson.com), owes a debt of inspiration to the [_http-console_](http://github.com/cloudhead/http-console) project.
|
@@ -228,9 +228,9 @@ Thanks to [contributors](http://github.com/htty/htty/contributors "htty contribu
|
|
228
228
|
* Bo Frederiksen ([bofrede](http://github.com/bofrede "bofrede at GitHub"))
|
229
229
|
* Johannes Gorset ([jgorset](http://github.com/jgorset "jgorset at GitHub"))
|
230
230
|
* Carson McDonald ([carsonmcdonald](http://github.com/carsonmcdonald "carsonmcdonald at GitHub"))
|
231
|
-
* Sam
|
231
|
+
* Sam X ([dtjm](http://github.com/dtjm "dtjm at GitHub"))
|
232
232
|
* Robert Pitts ([rbxbx](http://github.com/rbxbx "rbxbx at GitHub"))
|
233
|
-
* Matt Sanders ([
|
233
|
+
* Matt Sanders ([nextmat](http://github.com/nextmat "nextmat at GitHub"))
|
234
234
|
|
235
235
|
<a name="license"></a>License
|
236
236
|
=============================
|
data/Rakefile
CHANGED
@@ -1,19 +1,13 @@
|
|
1
|
+
require 'bundler'
|
2
|
+
require 'rspec/core/rake_task'
|
3
|
+
|
4
|
+
Bundler::GemHelper.install_tasks
|
5
|
+
|
1
6
|
begin
|
2
|
-
require '
|
7
|
+
require 'yard'
|
3
8
|
rescue LoadError
|
4
9
|
else
|
5
|
-
|
6
|
-
end
|
7
|
-
|
8
|
-
namespace :build do
|
9
|
-
begin
|
10
|
-
require 'yard'
|
11
|
-
rescue LoadError
|
12
|
-
desc "(Not available -- try 'gem install yard')"
|
13
|
-
task :doc do
|
14
|
-
STDERR.puts "*** 'gem install yard' in order to build documentation"
|
15
|
-
end
|
16
|
-
else
|
10
|
+
namespace :build do
|
17
11
|
YARD::Rake::YardocTask.new :doc
|
18
12
|
end
|
19
13
|
end
|
@@ -40,43 +34,38 @@ namespace :lib do
|
|
40
34
|
end
|
41
35
|
end
|
42
36
|
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
else
|
51
|
-
def define_spec_task(name, options={})
|
52
|
-
RSpec::Core::RakeTask.new name do |t|
|
53
|
-
t.rspec_opts = ['--color']
|
54
|
-
t.skip_bundler = options[:skip_bundler]
|
55
|
-
unless options[:debug] == false
|
37
|
+
def define_spec_task(name, options={})
|
38
|
+
RSpec::Core::RakeTask.new name do |t|
|
39
|
+
t.rspec_opts = ['--color']
|
40
|
+
unless options[:debug] == false
|
41
|
+
begin
|
42
|
+
require 'ruby-debug'
|
43
|
+
rescue LoadError
|
44
|
+
else
|
56
45
|
# TODO: Change '-d' to '--debug' when that `rspec` bug is fixed
|
57
46
|
t.rspec_opts << '-d'
|
58
47
|
end
|
59
|
-
|
60
|
-
directory = options[:as_subdirectory] ? "spec/#{name}" : 'spec'
|
61
|
-
t.pattern = "#{directory}/**/*_spec.rb"
|
62
48
|
end
|
49
|
+
|
50
|
+
directory = options[:as_subdirectory] ? "spec/#{name}" : 'spec'
|
51
|
+
t.pattern = "#{directory}/**/*_spec.rb"
|
63
52
|
end
|
53
|
+
end
|
64
54
|
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
end
|
55
|
+
namespace :spec do |n|
|
56
|
+
%w(unit integration).each do |type_of_spec|
|
57
|
+
desc "Run #{type_of_spec} specs"
|
58
|
+
define_spec_task type_of_spec, :as_subdirectory => true
|
70
59
|
end
|
60
|
+
end
|
71
61
|
|
72
|
-
|
73
|
-
|
62
|
+
desc 'Run all specs'
|
63
|
+
define_spec_task :spec
|
74
64
|
|
75
|
-
|
76
|
-
|
77
|
-
|
65
|
+
desc 'Run all specs'
|
66
|
+
task '' => :spec
|
67
|
+
task :default => :spec
|
78
68
|
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
end
|
69
|
+
# Support the 'gem test' command.
|
70
|
+
desc ''
|
71
|
+
define_spec_task :test, :debug => false
|
data/htty.gemspec
CHANGED
@@ -17,10 +17,10 @@ Gem::Specification.new do |s|
|
|
17
17
|
|
18
18
|
s.required_ruby_version = '>= 1.8.7'
|
19
19
|
|
20
|
-
s.add_dependency 'mime-types'
|
20
|
+
s.add_dependency 'mime-types'
|
21
21
|
|
22
|
-
s.add_development_dependency 'rake'
|
23
|
-
s.add_development_dependency 'rspec', '~> 2.
|
22
|
+
s.add_development_dependency 'rake'
|
23
|
+
s.add_development_dependency 'rspec', '~> 2.7'
|
24
24
|
|
25
25
|
s.rubyforge_project = 'htty'
|
26
26
|
s.has_rdoc = true
|
@@ -31,7 +31,7 @@ class HTTY::CLI::Commands::BodySet < HTTY::CLI::Command
|
|
31
31
|
'Sets the body content used for the request. Does not communicate with ' +
|
32
32
|
"the host.\n" +
|
33
33
|
"\n" +
|
34
|
-
'
|
34
|
+
'Enter two blank lines, or hit Ctrl-D, to signify the end of the body.'
|
35
35
|
end
|
36
36
|
|
37
37
|
# Returns related command classes for the _body-set_ command.
|
@@ -42,7 +42,8 @@ class HTTY::CLI::Commands::BodySet < HTTY::CLI::Command
|
|
42
42
|
# Performs the _body-set_ command.
|
43
43
|
def perform
|
44
44
|
add_request_if_new do |request|
|
45
|
-
puts notice('
|
45
|
+
puts notice('Enter two blank lines, or hit Ctrl-D, to signify the end ' +
|
46
|
+
'of the body')
|
46
47
|
lines = []
|
47
48
|
empty_line_count = 0
|
48
49
|
while empty_line_count < 2 do
|
data/lib/htty/cli.rb
CHANGED
@@ -4,6 +4,7 @@ require File.expand_path("#{File.dirname __FILE__}/cli/commands/help")
|
|
4
4
|
require File.expand_path("#{File.dirname __FILE__}/cli/commands/quit")
|
5
5
|
require File.expand_path("#{File.dirname __FILE__}/cli/display")
|
6
6
|
require File.expand_path("#{File.dirname __FILE__}/session")
|
7
|
+
require File.expand_path("#{File.dirname __FILE__}/version")
|
7
8
|
|
8
9
|
module HTTY; end
|
9
10
|
|
@@ -17,12 +18,23 @@ class HTTY::CLI
|
|
17
18
|
|
18
19
|
# Instantiates a new HTTY::CLI with the specified _command_line_arguments_.
|
19
20
|
def initialize(command_line_arguments)
|
21
|
+
if command_line_arguments.include?('--version')
|
22
|
+
puts "v#{HTTY::VERSION}"
|
23
|
+
exit
|
24
|
+
end
|
25
|
+
|
26
|
+
if command_line_arguments.include?('--help')
|
27
|
+
HTTY::CLI::Commands::Help.new.perform
|
28
|
+
exit
|
29
|
+
end
|
30
|
+
|
20
31
|
exit unless @session = rescuing_from(ArgumentError) do
|
21
32
|
everything_but_options = command_line_arguments.reject do |a|
|
22
33
|
a[0..0] == '-'
|
23
34
|
end
|
24
35
|
HTTY::Session.new(everything_but_options.first)
|
25
36
|
end
|
37
|
+
|
26
38
|
register_completion_proc
|
27
39
|
end
|
28
40
|
|
@@ -30,6 +42,7 @@ class HTTY::CLI
|
|
30
42
|
# interaction.
|
31
43
|
def run!
|
32
44
|
say_hello
|
45
|
+
|
33
46
|
catch :quit do
|
34
47
|
loop do
|
35
48
|
begin
|
@@ -39,10 +52,12 @@ class HTTY::CLI
|
|
39
52
|
strong(HTTY::CLI::Commands::Help.command_line))
|
40
53
|
next
|
41
54
|
end
|
55
|
+
|
42
56
|
if command == :unclosed_quote
|
43
57
|
$stderr.puts notice('Unclosed quoted expression -- try again')
|
44
58
|
next
|
45
59
|
end
|
60
|
+
|
46
61
|
if ARGV.include?('--debug')
|
47
62
|
command.perform
|
48
63
|
else
|
@@ -52,13 +67,11 @@ class HTTY::CLI
|
|
52
67
|
end
|
53
68
|
rescue Interrupt
|
54
69
|
puts
|
55
|
-
|
56
|
-
strong(HTTY::CLI::Commands::Quit.command_line) +
|
57
|
-
' to quit')
|
58
|
-
next
|
70
|
+
throw :quit
|
59
71
|
end
|
60
72
|
end
|
61
73
|
end
|
74
|
+
|
62
75
|
say_goodbye
|
63
76
|
end
|
64
77
|
|
data/lib/htty/version.rb
CHANGED
@@ -37,7 +37,7 @@ describe HTTY::CLI::Commands::BodySet do
|
|
37
37
|
expected = <<-end_help_extended
|
38
38
|
Sets the body content used for the request. Does not communicate with the host.
|
39
39
|
|
40
|
-
|
40
|
+
Enter two blank lines, or hit Ctrl-D, to signify the end of the body.
|
41
41
|
end_help_extended
|
42
42
|
klass.help_extended.should == expected.chomp
|
43
43
|
end
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: htty
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 19
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 1
|
8
8
|
- 3
|
9
|
-
-
|
10
|
-
version: 1.3.
|
9
|
+
- 4
|
10
|
+
version: 1.3.4
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Nils Jonsson
|
@@ -15,8 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2011-
|
19
|
-
default_executable:
|
18
|
+
date: 2011-10-17 00:00:00 Z
|
20
19
|
dependencies:
|
21
20
|
- !ruby/object:Gem::Dependency
|
22
21
|
name: mime-types
|
@@ -24,13 +23,12 @@ dependencies:
|
|
24
23
|
requirement: &id001 !ruby/object:Gem::Requirement
|
25
24
|
none: false
|
26
25
|
requirements:
|
27
|
-
- -
|
26
|
+
- - ">="
|
28
27
|
- !ruby/object:Gem::Version
|
29
|
-
hash:
|
28
|
+
hash: 3
|
30
29
|
segments:
|
31
|
-
- 1
|
32
30
|
- 0
|
33
|
-
version: "
|
31
|
+
version: "0"
|
34
32
|
type: :runtime
|
35
33
|
version_requirements: *id001
|
36
34
|
- !ruby/object:Gem::Dependency
|
@@ -39,13 +37,12 @@ dependencies:
|
|
39
37
|
requirement: &id002 !ruby/object:Gem::Requirement
|
40
38
|
none: false
|
41
39
|
requirements:
|
42
|
-
- -
|
40
|
+
- - ">="
|
43
41
|
- !ruby/object:Gem::Version
|
44
|
-
hash:
|
42
|
+
hash: 3
|
45
43
|
segments:
|
46
44
|
- 0
|
47
|
-
|
48
|
-
version: "0.8"
|
45
|
+
version: "0"
|
49
46
|
type: :development
|
50
47
|
version_requirements: *id002
|
51
48
|
- !ruby/object:Gem::Dependency
|
@@ -56,11 +53,11 @@ dependencies:
|
|
56
53
|
requirements:
|
57
54
|
- - ~>
|
58
55
|
- !ruby/object:Gem::Version
|
59
|
-
hash:
|
56
|
+
hash: 13
|
60
57
|
segments:
|
61
58
|
- 2
|
62
|
-
-
|
63
|
-
version: "2.
|
59
|
+
- 7
|
60
|
+
version: "2.7"
|
64
61
|
type: :development
|
65
62
|
version_requirements: *id003
|
66
63
|
description: htty is a console application for interacting with web servers. It's a fun way to explore web APIs and to learn the ins and outs of HTTP.
|
@@ -75,6 +72,7 @@ extra_rdoc_files: []
|
|
75
72
|
files:
|
76
73
|
- .gemtest
|
77
74
|
- .gitignore
|
75
|
+
- .travis.yml
|
78
76
|
- .yardopts
|
79
77
|
- Gemfile
|
80
78
|
- History.markdown
|
@@ -179,11 +177,6 @@ files:
|
|
179
177
|
- spec/integration/htty/cli/commands/query_remove_spec.rb
|
180
178
|
- spec/integration/htty/cli/commands/query_set_spec.rb
|
181
179
|
- spec/integration/htty/cli/commands/query_unset_spec.rb
|
182
|
-
- spec/system/scenarios/exit/expected_stdout
|
183
|
-
- spec/system/scenarios/exit/stdin
|
184
|
-
- spec/system/scenarios/quit/expected_stdout
|
185
|
-
- spec/system/scenarios/quit/stdin
|
186
|
-
- spec/system/scenarios_spec.rb
|
187
180
|
- spec/unit/htty/cli/commands/address_spec.rb
|
188
181
|
- spec/unit/htty/cli/commands/body_clear_spec.rb
|
189
182
|
- spec/unit/htty/cli/commands/body_request_spec.rb
|
@@ -258,7 +251,6 @@ files:
|
|
258
251
|
- spec/unit/htty/response_spec.rb
|
259
252
|
- spec/unit/htty/session_spec.rb
|
260
253
|
- spec/unit/htty/version_spec.rb
|
261
|
-
has_rdoc: true
|
262
254
|
homepage: http://htty.github.com
|
263
255
|
licenses:
|
264
256
|
- MIT
|
@@ -290,7 +282,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
290
282
|
requirements: []
|
291
283
|
|
292
284
|
rubyforge_project: htty
|
293
|
-
rubygems_version: 1.
|
285
|
+
rubygems_version: 1.8.5
|
294
286
|
signing_key:
|
295
287
|
specification_version: 3
|
296
288
|
summary: The HTTP TTY
|
@@ -299,11 +291,6 @@ test_files:
|
|
299
291
|
- spec/integration/htty/cli/commands/query_remove_spec.rb
|
300
292
|
- spec/integration/htty/cli/commands/query_set_spec.rb
|
301
293
|
- spec/integration/htty/cli/commands/query_unset_spec.rb
|
302
|
-
- spec/system/scenarios/exit/expected_stdout
|
303
|
-
- spec/system/scenarios/exit/stdin
|
304
|
-
- spec/system/scenarios/quit/expected_stdout
|
305
|
-
- spec/system/scenarios/quit/stdin
|
306
|
-
- spec/system/scenarios_spec.rb
|
307
294
|
- spec/unit/htty/cli/commands/address_spec.rb
|
308
295
|
- spec/unit/htty/cli/commands/body_clear_spec.rb
|
309
296
|
- spec/unit/htty/cli/commands/body_request_spec.rb
|
@@ -378,3 +365,4 @@ test_files:
|
|
378
365
|
- spec/unit/htty/response_spec.rb
|
379
366
|
- spec/unit/htty/session_spec.rb
|
380
367
|
- spec/unit/htty/version_spec.rb
|
368
|
+
has_rdoc: true
|
@@ -1 +0,0 @@
|
|
1
|
-
exit
|
@@ -1 +0,0 @@
|
|
1
|
-
quit
|
@@ -1,47 +0,0 @@
|
|
1
|
-
require 'rspec'
|
2
|
-
require 'pathname'
|
3
|
-
|
4
|
-
all_dir = Pathname.new("#{File.dirname __FILE__}/scenarios")
|
5
|
-
Dir.glob "#{all_dir}/**/*/" do |this_dir|
|
6
|
-
relative_path = Pathname.new(this_dir).relative_path_from(all_dir).to_s
|
7
|
-
context_name = relative_path.split('/').join(' ').gsub('_', ' ')
|
8
|
-
describe context_name do
|
9
|
-
define_method :content do |filename|
|
10
|
-
path = "#{this_dir}/#{filename}"
|
11
|
-
return nil unless File.file?(path)
|
12
|
-
content = File.read(path)
|
13
|
-
return nil if content.empty?
|
14
|
-
content
|
15
|
-
end
|
16
|
-
|
17
|
-
define_method :run_and_capture do |*args|
|
18
|
-
options = args.first || {}
|
19
|
-
stdin_filename = "#{this_dir}/stdin"
|
20
|
-
htty_filename = "#{File.dirname __FILE__}/../../bin/htty"
|
21
|
-
stderr_target = options[:combine_stdout_and_stderr] ?
|
22
|
-
'&1' :
|
23
|
-
"#{this_dir}/actual_stderr"
|
24
|
-
arguments = "#{content 'arguments'} 2>#{stderr_target}"
|
25
|
-
stdout_filename = "#{this_dir}/actual_stdout"
|
26
|
-
system "cat #{stdin_filename} | " +
|
27
|
-
"#{htty_filename} #{arguments} > " +
|
28
|
-
"#{this_dir}/actual_stdout"
|
29
|
-
end
|
30
|
-
|
31
|
-
it 'should produce the expected stdout' do
|
32
|
-
run_and_capture
|
33
|
-
content('actual_stdout').should == content('expected_stdout')
|
34
|
-
end
|
35
|
-
|
36
|
-
it 'should produce the expected stderr' do
|
37
|
-
run_and_capture
|
38
|
-
content('actual_stderr').should == content('expected_stderr')
|
39
|
-
end
|
40
|
-
|
41
|
-
it 'should produce the expected combined stdout and stderr' do
|
42
|
-
run_and_capture :combine_stdout_and_stderr => true
|
43
|
-
content('actual_stdout_and_stderr').should ==
|
44
|
-
content('expected_stdout_and_stderr')
|
45
|
-
end
|
46
|
-
end
|
47
|
-
end
|