ikran 0.1.2 → 0.2.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.
data/.document CHANGED
@@ -1,5 +1,5 @@
1
- README.rdoc
2
- lib/**/*.rb
3
- bin/*
4
- features/**/*.feature
5
- LICENSE
1
+ README.rdoc
2
+ lib/**/*.rb
3
+ bin/*
4
+ features/**/*.feature
5
+ LICENSE
data/Gemfile ADDED
@@ -0,0 +1,8 @@
1
+ # A sample Gemfile
2
+ source "http://rubygems.org"
3
+
4
+ # gem "rails"
5
+ gem "addressable", ">=2.1.1"
6
+ gem "rspec", ">=1.2.9"
7
+ gem "cucumber", ">=0.6.2"
8
+
@@ -0,0 +1,33 @@
1
+ GEM
2
+ remote: http://rubygems.org/
3
+ specs:
4
+ addressable (2.2.2)
5
+ builder (2.1.2)
6
+ cucumber (0.9.4)
7
+ builder (~> 2.1.2)
8
+ diff-lcs (~> 1.1.2)
9
+ gherkin (~> 2.2.9)
10
+ json (~> 1.4.6)
11
+ term-ansicolor (~> 1.0.5)
12
+ diff-lcs (1.1.2)
13
+ gherkin (2.2.9)
14
+ json (~> 1.4.6)
15
+ term-ansicolor (~> 1.0.5)
16
+ json (1.4.6)
17
+ rspec (2.2.0)
18
+ rspec-core (~> 2.2)
19
+ rspec-expectations (~> 2.2)
20
+ rspec-mocks (~> 2.2)
21
+ rspec-core (2.2.1)
22
+ rspec-expectations (2.2.0)
23
+ diff-lcs (~> 1.1.2)
24
+ rspec-mocks (2.2.0)
25
+ term-ansicolor (1.0.5)
26
+
27
+ PLATFORMS
28
+ ruby
29
+
30
+ DEPENDENCIES
31
+ addressable (>= 2.1.1)
32
+ cucumber (>= 0.6.2)
33
+ rspec (>= 1.2.9)
data/LICENSE CHANGED
@@ -1,20 +1,20 @@
1
- Copyright (c) 2009 darthdeus
2
-
3
- Permission is hereby granted, free of charge, to any person obtaining
4
- a copy of this software and associated documentation files (the
5
- "Software"), to deal in the Software without restriction, including
6
- without limitation the rights to use, copy, modify, merge, publish,
7
- distribute, sublicense, and/or sell copies of the Software, and to
8
- permit persons to whom the Software is furnished to do so, subject to
9
- the following conditions:
10
-
11
- The above copyright notice and this permission notice shall be
12
- included in all copies or substantial portions of the Software.
13
-
14
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
- EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
- NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
- LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
- OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
- WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
1
+ Copyright (c) 2009 darthdeus
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining
4
+ a copy of this software and associated documentation files (the
5
+ "Software"), to deal in the Software without restriction, including
6
+ without limitation the rights to use, copy, modify, merge, publish,
7
+ distribute, sublicense, and/or sell copies of the Software, and to
8
+ permit persons to whom the Software is furnished to do so, subject to
9
+ the following conditions:
10
+
11
+ The above copyright notice and this permission notice shall be
12
+ included in all copies or substantial portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@@ -1,17 +1,17 @@
1
- = ikran
2
-
3
- Description goes here.
4
-
5
- == Note on Patches/Pull Requests
6
-
7
- * Fork the project.
8
- * Make your feature addition or bug fix.
9
- * Add tests for it. This is important so I don't break it in a
10
- future version unintentionally.
11
- * Commit, do not mess with rakefile, version, or history.
12
- (if you want to have your own version, that is fine but bump version in a commit by itself I can ignore when I pull)
13
- * Send me a pull request. Bonus points for topic branches.
14
-
15
- == Copyright
16
-
17
- Copyright (c) 2010 darthdeus. See LICENSE for details.
1
+ = ikran
2
+
3
+ Description goes here.
4
+
5
+ == Note on Patches/Pull Requests
6
+
7
+ * Fork the project.
8
+ * Make your feature addition or bug fix.
9
+ * Add tests for it. This is important so I don't break it in a
10
+ future version unintentionally.
11
+ * Commit, do not mess with rakefile, version, or history.
12
+ (if you want to have your own version, that is fine but bump version in a commit by itself I can ignore when I pull)
13
+ * Send me a pull request. Bonus points for topic branches.
14
+
15
+ == Copyright
16
+
17
+ Copyright (c) 2010 darthdeus. See LICENSE for details.
data/Rakefile CHANGED
@@ -1,47 +1,39 @@
1
- require 'rubygems'
2
- require 'rake'
3
-
4
- begin
5
- require 'jeweler'
6
- Jeweler::Tasks.new do |gem|
7
- gem.name = "ikran"
8
- gem.summary = %Q{Simple HTTP console testing framework}
9
- gem.description = %Q{Simple console application for testing HTTP server}
10
- gem.email = "darthdeus@gmail.com"
11
- gem.homepage = "http://github.com/darthdeus/ikran"
12
- gem.authors = ["darthdeus"]
13
- gem.add_dependency "addressable", ">= 2.1.1"
14
- gem.add_development_dependency "rspec", ">= 1.2.9"
15
- gem.add_development_dependency "cucumber", ">= 0.6.2"
16
- # gem is a Gem::Specification... see http://www.rubygems.org/read/chapter/20 for additional settings
17
- end
18
- Jeweler::GemcutterTasks.new
19
- rescue LoadError
20
- puts "Jeweler (or a dependency) not available. Install it with: gem install jeweler"
21
- end
22
-
23
- require 'spec/rake/spectask'
24
- Spec::Rake::SpecTask.new(:spec) do |spec|
25
- spec.libs << 'lib' << 'spec'
26
- spec.spec_files = FileList['spec/**/*_spec.rb']
27
- end
28
-
29
- Spec::Rake::SpecTask.new(:rcov) do |spec|
30
- spec.libs << 'lib' << 'spec'
31
- spec.pattern = 'spec/**/*_spec.rb'
32
- spec.rcov = true
33
- end
34
-
35
- task :spec => :check_dependencies
36
-
37
- task :default => :spec
38
-
39
- require 'rake/rdoctask'
40
- Rake::RDocTask.new do |rdoc|
41
- version = File.exist?('VERSION') ? File.read('VERSION') : ""
42
-
43
- rdoc.rdoc_dir = 'rdoc'
44
- rdoc.title = "ikran #{version}"
45
- rdoc.rdoc_files.include('README*')
46
- rdoc.rdoc_files.include('lib/**/*.rb')
47
- end
1
+ require 'rubygems'
2
+ require 'rake'
3
+
4
+ begin
5
+ require 'jeweler'
6
+ Jeweler::Tasks.new do |gem|
7
+ gem.name = "ikran"
8
+ gem.summary = %Q{Simple HTTP console testing framework}
9
+ gem.description = %Q{Simple console application for testing HTTP server}
10
+ gem.email = "darthdeus@gmail.com"
11
+ gem.homepage = "http://github.com/darthdeus/ikran"
12
+ gem.authors = ["darthdeus"]
13
+ gem.add_dependency "addressable", ">= 2.1.1"
14
+ gem.add_development_dependency "rspec", ">= 2.0.0"
15
+ gem.add_development_dependency "cucumber", ">= 0.9.4"
16
+ # gem is a Gem::Specification... see http://www.rubygems.org/read/chapter/20 for additional settings
17
+ end
18
+ Jeweler::GemcutterTasks.new
19
+ rescue LoadError
20
+ puts "Jeweler (or a dependency) not available. Install it with: gem install jeweler"
21
+ end
22
+
23
+ require "rspec/core/rake_task"
24
+ RSpec::Core::RakeTask.new(:core) do |spec|
25
+ spec.pattern = 'spec/**/*_spec.rb'
26
+ spec.rspec_opts = ['--backtrace']
27
+ end
28
+
29
+ task :default => :spec
30
+
31
+ require 'rake/rdoctask'
32
+ Rake::RDocTask.new do |rdoc|
33
+ version = File.exist?('VERSION') ? File.read('VERSION') : ""
34
+
35
+ rdoc.rdoc_dir = 'rdoc'
36
+ rdoc.title = "ikran #{version}"
37
+ rdoc.rdoc_files.include('README*')
38
+ rdoc.rdoc_files.include('lib/**/*.rb')
39
+ end
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.2
1
+ 0.2.0
data/bin/ikran CHANGED
@@ -1,4 +1,4 @@
1
- #!/usr/bin/env ruby
2
- $LOAD_PATH << File.join(File.dirname(__FILE__), '..', 'lib')
3
- require 'ikran'
4
-
1
+ #!/usr/bin/env ruby
2
+ $LOAD_PATH << File.join(File.dirname(__FILE__), '..', 'lib')
3
+ require 'ikran'
4
+
@@ -1,65 +1,73 @@
1
- # Generated by jeweler
2
- # DO NOT EDIT THIS FILE DIRECTLY
3
- # Instead, edit Jeweler::Tasks in rakefile, and run the gemspec command
4
- # -*- encoding: utf-8 -*-
5
-
6
- Gem::Specification.new do |s|
7
- s.name = %q{ikran}
8
- s.version = "0.1.2"
9
-
10
- s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
- s.authors = ["darthdeus"]
12
- s.date = %q{2010-01-30}
13
- s.default_executable = %q{ikran}
14
- s.description = %q{Simple console application for testing HTTP server}
15
- s.email = %q{darthdeus@gmail.com}
16
- s.executables = ["ikran"]
17
- s.extra_rdoc_files = [
18
- "LICENSE",
19
- "README.rdoc"
20
- ]
21
- s.files = [
22
- ".document",
23
- ".gitignore",
24
- "LICENSE",
25
- "README.rdoc",
26
- "Rakefile",
27
- "VERSION",
28
- "bin/ikran",
29
- "ikran.gemspec",
30
- "lib/ikran.rb",
31
- "lib/ikran/reader.rb",
32
- "spec/ikran_spec.rb",
33
- "spec/spec.opts",
34
- "spec/spec_helper.rb"
35
- ]
36
- s.homepage = %q{http://github.com/darthdeus/ikran}
37
- s.rdoc_options = ["--charset=UTF-8"]
38
- s.require_paths = ["lib"]
39
- s.rubygems_version = %q{1.3.5}
40
- s.summary = %q{Simple HTTP console testing framework}
41
- s.test_files = [
42
- "spec/ikran_spec.rb",
43
- "spec/spec_helper.rb"
44
- ]
45
-
46
- if s.respond_to? :specification_version then
47
- current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
48
- s.specification_version = 3
49
-
50
- if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
51
- s.add_runtime_dependency(%q<addressable>, [">= 2.1.1"])
52
- s.add_development_dependency(%q<rspec>, [">= 1.2.9"])
53
- s.add_development_dependency(%q<cucumber>, [">= 0.6.2"])
54
- else
55
- s.add_dependency(%q<addressable>, [">= 2.1.1"])
56
- s.add_dependency(%q<rspec>, [">= 1.2.9"])
57
- s.add_dependency(%q<cucumber>, [">= 0.6.2"])
58
- end
59
- else
60
- s.add_dependency(%q<addressable>, [">= 2.1.1"])
61
- s.add_dependency(%q<rspec>, [">= 1.2.9"])
62
- s.add_dependency(%q<cucumber>, [">= 0.6.2"])
63
- end
64
- end
65
-
1
+ # Generated by jeweler
2
+ # DO NOT EDIT THIS FILE DIRECTLY
3
+ # Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
4
+ # -*- encoding: utf-8 -*-
5
+
6
+ Gem::Specification.new do |s|
7
+ s.name = %q{ikran}
8
+ s.version = "0.2.0"
9
+
10
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
+ s.authors = ["darthdeus"]
12
+ s.date = %q{2010-12-02}
13
+ s.default_executable = %q{ikran}
14
+ s.description = %q{Simple console application for testing HTTP server}
15
+ s.email = %q{darthdeus@gmail.com}
16
+ s.executables = ["ikran"]
17
+ s.extra_rdoc_files = [
18
+ "LICENSE",
19
+ "README.rdoc"
20
+ ]
21
+ s.files = [
22
+ ".document",
23
+ "Gemfile",
24
+ "Gemfile.lock",
25
+ "LICENSE",
26
+ "README.rdoc",
27
+ "Rakefile",
28
+ "VERSION",
29
+ "bin/ikran",
30
+ "ikran.gemspec",
31
+ "lib/ikran.rb",
32
+ "lib/ikran/reader.rb",
33
+ "spec/ikran_spec.rb",
34
+ "spec/spec_helper.rb"
35
+ ]
36
+ s.homepage = %q{http://github.com/darthdeus/ikran}
37
+ s.require_paths = ["lib"]
38
+ s.rubygems_version = %q{1.3.7}
39
+ s.summary = %q{Simple HTTP console testing framework}
40
+ s.test_files = [
41
+ "spec/ikran_spec.rb",
42
+ "spec/spec_helper.rb"
43
+ ]
44
+
45
+ if s.respond_to? :specification_version then
46
+ current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
47
+ s.specification_version = 3
48
+
49
+ if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
50
+ s.add_runtime_dependency(%q<addressable>, [">= 2.1.1"])
51
+ s.add_runtime_dependency(%q<rspec>, [">= 1.2.9"])
52
+ s.add_runtime_dependency(%q<cucumber>, [">= 0.6.2"])
53
+ s.add_runtime_dependency(%q<addressable>, [">= 2.1.1"])
54
+ s.add_development_dependency(%q<rspec>, [">= 2.0.0"])
55
+ s.add_development_dependency(%q<cucumber>, [">= 0.9.4"])
56
+ else
57
+ s.add_dependency(%q<addressable>, [">= 2.1.1"])
58
+ s.add_dependency(%q<rspec>, [">= 1.2.9"])
59
+ s.add_dependency(%q<cucumber>, [">= 0.6.2"])
60
+ s.add_dependency(%q<addressable>, [">= 2.1.1"])
61
+ s.add_dependency(%q<rspec>, [">= 2.0.0"])
62
+ s.add_dependency(%q<cucumber>, [">= 0.9.4"])
63
+ end
64
+ else
65
+ s.add_dependency(%q<addressable>, [">= 2.1.1"])
66
+ s.add_dependency(%q<rspec>, [">= 1.2.9"])
67
+ s.add_dependency(%q<cucumber>, [">= 0.6.2"])
68
+ s.add_dependency(%q<addressable>, [">= 2.1.1"])
69
+ s.add_dependency(%q<rspec>, [">= 2.0.0"])
70
+ s.add_dependency(%q<cucumber>, [">= 0.9.4"])
71
+ end
72
+ end
73
+
@@ -1,4 +1,4 @@
1
- require 'ikran/reader'
2
-
3
- reader = Ikran::Reader.new
1
+ require 'ikran/reader'
2
+
3
+ reader = Ikran::Reader.new
4
4
  reader.run
@@ -1,114 +1,124 @@
1
- require 'rubygems'
2
- require 'addressable/uri'
3
- require 'net/http'
4
- require 'uri'
5
-
6
- module Ikran
7
- class Reader
8
- attr_accessor :verbose
9
-
10
- COMMANDS = ["exit", "server", "ping", "head", "verbose", "truncate"]
11
- STATUS_REGEXP = /#<Net::HTTP[a-zA-Z]+ (.+) readbody=(?:true|false)>/
12
-
13
- def parse(command)
14
- cmd = command.split(' ')
15
- if COMMANDS.include? cmd.first
16
- cmd.length > 1 ? ("#{cmd[0]} '#{cmd[1]}'") : cmd.first
17
- end
18
- end
19
-
20
- def exit
21
- @running = false
22
- "exiting ..."
23
- end
24
-
25
- def server(val = nil)
26
- if val
27
- begin
28
- @server = Addressable::URI.heuristic_parse(val).to_s
29
- "remote set to #{@server}"
30
- rescue Addressable::URI::InvalidURIError => e
31
- "invalid url"
32
- end
33
- else
34
- @server ? "current remote is #{@server}" : "remote is not set"
35
- end
36
- end
37
-
38
- def ping
39
- if not @server
40
- "remote must be set before executing ping without parameters"
41
- elsif http_ping(@server)
42
- "#{@server} is alive"
43
- else
44
- "#{@server} is unreachable"
45
- end
46
- end
47
-
48
- def http_ping(url)
49
- get_url(url).to_i < 400
50
- end
51
-
52
- def get_url(url)
53
- Net::HTTP.get_response(URI.parse(url)).inspect =~ STATUS_REGEXP
54
- end
55
-
56
- def head
57
- return "remote must be set before executing head" unless @server
58
- res = Net::HTTP.get_response(URI.parse(@server))
59
- if res.inspect =~ STATUS_REGEXP
60
- if @verbose
61
- (@size.to_i > 0) ? res.body[0, @size] : res.body
62
- else
63
- $1
64
- end
65
- else
66
- "invalid response #{res.inspect}"
67
- end
68
- end
69
-
70
- def verbose
71
- # TODO - add option to truncate output to max number of characters
72
- "verbose is now " + ((@verbose = !@verbose) ? "ON" : "OFF")
73
- end
74
-
75
- def truncate(size = nil)
76
- if size
77
- @size = (size.to_i == 0 ? nil : size.to_i)
78
- @size ? "maximum size set to #{@size}" : "maximum size set to infinite"
79
- else
80
- @size ? "maximum size is #{@size}" : "maximum size is infinite"
81
- end
82
- end
83
-
84
- def exec(command)
85
- cmd = parse(command)
86
- if cmd
87
- instance_eval(cmd)
88
- else
89
- "command #{command} doesn't exist"
90
- end
91
- end
92
-
93
- def run
94
- @running = true
95
- while @running
96
- print ">> "
97
- line = gets.chomp!
98
- puts exec(line)
99
- end
100
- end
101
-
102
- def self.aliases(opts)
103
- opts.each do |original, aliased|
104
- [*aliased].each do |a|
105
- alias_method a, original
106
- COMMANDS << a.to_s
107
- end
108
- end
109
- end
110
-
111
- aliases :server => [:s, :r, :remote], :head => :h, :ping => :p, :verbose => :v, :exit => :e,
112
- :truncate => :t
113
- end
114
- end
1
+ require 'rubygems'
2
+ require 'addressable/uri'
3
+ require 'net/http'
4
+ require 'uri'
5
+
6
+ module Ikran
7
+ class Reader
8
+ attr_accessor :verbose
9
+
10
+ COMMANDS = ["exit", "server", "ping", "head", "verbose", "truncate"]
11
+ STATUS_REGEXP = /#<Net::HTTP[a-zA-Z]+ (.+) readbody=(?:true|false)>/
12
+
13
+ HELP = """
14
+ command doesn't exist
15
+
16
+ head, h - HEAD request
17
+ ping, p - try to ping the remote server
18
+ verbose, v - turn on/off verbose mod
19
+ remote, r - set remote server
20
+ truncate, t - set maximum size of response to display
21
+ """
22
+
23
+ def parse(command)
24
+ cmd = command.split(' ')
25
+ if COMMANDS.include? cmd.first
26
+ cmd.length > 1 ? ("#{cmd[0]} '#{cmd[1]}'") : cmd.first
27
+ end
28
+ end
29
+
30
+ def exit
31
+ @running = false
32
+ "exiting ..."
33
+ end
34
+
35
+ def server(val = nil)
36
+ if val
37
+ begin
38
+ @server = Addressable::URI.heuristic_parse(val).to_s
39
+ "remote set to #{@server}"
40
+ rescue Addressable::URI::InvalidURIError => e
41
+ "invalid url"
42
+ end
43
+ else
44
+ @server ? "current remote is #{@server}" : "remote is not set"
45
+ end
46
+ end
47
+
48
+ def ping
49
+ if not @server
50
+ "remote must be set before executing ping without parameters"
51
+ elsif http_ping(@server)
52
+ "#{@server} is alive"
53
+ else
54
+ "#{@server} is unreachable"
55
+ end
56
+ end
57
+
58
+ def http_ping(url)
59
+ get_url(url).to_i < 400
60
+ end
61
+
62
+ def get_url(url)
63
+ Net::HTTP.get_response(URI.parse(url)).inspect =~ STATUS_REGEXP
64
+ end
65
+
66
+ def head
67
+ return "remote must be set before executing head" unless @server
68
+ res = Net::HTTP.get_response(URI.parse(@server))
69
+ if res.inspect =~ STATUS_REGEXP
70
+ if @verbose
71
+ (@size.to_i > 0) ? res.body[0, @size] : res.body
72
+ else
73
+ $1
74
+ end
75
+ else
76
+ "invalid response #{res.inspect}"
77
+ end
78
+ end
79
+
80
+ def verbose
81
+ # TODO - add option to truncate output to max number of characters
82
+ "verbose is now " + ((@verbose = !@verbose) ? "ON" : "OFF")
83
+ end
84
+
85
+ def truncate(size = nil)
86
+ if size
87
+ @size = (size.to_i == 0 ? nil : size.to_i)
88
+ @size ? "maximum size set to #{@size}" : "maximum size set to infinite"
89
+ else
90
+ @size ? "maximum size is #{@size}" : "maximum size is infinite"
91
+ end
92
+ end
93
+
94
+ def exec(command)
95
+ cmd = parse(command)
96
+ if cmd
97
+ instance_eval(cmd)
98
+ else
99
+ HELP
100
+ end
101
+ end
102
+
103
+ def run
104
+ @running = true
105
+ while @running
106
+ print ">> "
107
+ line = gets.chomp!
108
+ puts exec(line)
109
+ end
110
+ end
111
+
112
+ def self.aliases(opts)
113
+ opts.each do |original, aliased|
114
+ [*aliased].each do |a|
115
+ alias_method a, original
116
+ COMMANDS << a.to_s
117
+ end
118
+ end
119
+ end
120
+
121
+ aliases :server => [:s, :r, :remote], :head => :h, :ping => :p, :verbose => :v, :exit => :e,
122
+ :truncate => :t
123
+ end
124
+ end
@@ -1,106 +1,106 @@
1
- require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
2
-
3
- describe "Ikran" do
4
-
5
- before :each do
6
- @reader = Ikran::Reader.new
7
- end
8
-
9
- it "should stop expecting input after 'exit' command'" do
10
- @reader.exec('exit').should == 'exiting ...'
11
- end
12
-
13
- it "should allow me to set remote server via 'server' command" do
14
- server = 'example.com'
15
- @reader.exec("server #{server}").should == "remote set to http://example.com"
16
- end
17
-
18
- it "should return error if server is not set and 'server' command is invoked without any parameters" do
19
- @reader.exec("server").should == "remote is not set"
20
- end
21
-
22
- it "should return current remote server on 'server' command without any parameters" do
23
- server = 'example.com'
24
- @reader.exec("server #{server}")
25
- @reader.exec("server").should == "current remote is http://example.com"
26
- end
27
-
28
- it "should accept only valid url for server command" do
29
- # port can't be string
30
- @reader.exec("server http://example.com:foo").should == "invalid url"
31
- end
32
-
33
- it "should show error on non-existing command" do
34
- @reader.exec("foo").should == "command foo doesn't exist"
35
- end
36
-
37
- context "ping command" do
38
- it "should require remote to be set if executing ping without parameters" do
39
- @reader.exec("ping").should == "remote must be set before executing ping without parameters"
40
- end
41
-
42
- context "testing availability" do
43
- it "should return 'server is alive' if server is available" do
44
- @reader.stub!(:http_ping).and_return(true)
45
- @reader.exec("server example.com")
46
- @reader.exec("ping").should == "http://example.com is alive"
47
- end
48
-
49
- it "should return 'server is unreachable' if server is unreachable" do
50
- @reader.stub!(:http_ping).and_return(false)
51
- @reader.exec("server example.com")
52
- @reader.exec("ping").should == "http://example.com is unreachable"
53
- end
54
- end
55
- end
56
-
57
- it "should toggle verbose on 'verbose' command" do
58
- @reader.exec("verbose").should == "verbose is now ON"
59
- @reader.exec("verbose").should == "verbose is now OFF"
60
- end
61
-
62
- it "should require remote to be set before executing 'head' command" do
63
- @reader.exec("head").should == "remote must be set before executing head"
64
- end
65
-
66
- it "should have default maximum size set to infinite" do
67
- @reader.exec("truncate").should == "maximum size is infinite"
68
- end
69
-
70
- it "should return actual maximum size after truncate with parameter" do
71
- @reader.exec("truncate 20").should == "maximum size set to 20"
72
- end
73
-
74
- it "should return actual maximum size after setting it with truncate" do
75
- @reader.exec("truncate 20")
76
- @reader.exec("truncate").should == "maximum size is 20"
77
- end
78
-
79
- context "non verbose mod" do
80
- it "should send a request to given url on 'head' command" do
81
- @reader = Ikran::Reader.new
82
- @reader.exec("server example.com")
83
- @reader.exec("head").should == "200 OK"
84
- end
85
- end
86
-
87
- context "parsing" do
88
- it "should return entire command if no parameters are passed" do
89
- @reader.parse("server").should == "server"
90
- end
91
-
92
- it "should return entire command if only one parameter is passed with quoted parameter" do
93
- @reader.parse("server first").should == "server 'first'"
94
- end
95
-
96
- it "should parse and return only first two words in command with quoted parameter" do
97
- @reader.parse("server first second").should == "server 'first'"
98
- end
99
-
100
- it "should return nil if command is invalid" do
101
- @reader.parse("foo").should == nil
102
- end
103
-
104
- end
105
-
106
- end
1
+ require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
2
+
3
+ describe "Ikran" do
4
+
5
+ before :each do
6
+ @reader = Ikran::Reader.new
7
+ end
8
+
9
+ it "should stop expecting input after 'exit' command'" do
10
+ @reader.exec('exit').should == 'exiting ...'
11
+ end
12
+
13
+ it "should allow me to set remote server via 'server' command" do
14
+ server = 'example.com'
15
+ @reader.exec("server #{server}").should == "remote set to http://example.com"
16
+ end
17
+
18
+ it "should return error if server is not set and 'server' command is invoked without any parameters" do
19
+ @reader.exec("server").should == "remote is not set"
20
+ end
21
+
22
+ it "should return current remote server on 'server' command without any parameters" do
23
+ server = 'example.com'
24
+ @reader.exec("server #{server}")
25
+ @reader.exec("server").should == "current remote is http://example.com"
26
+ end
27
+
28
+ it "should accept only valid url for server command" do
29
+ # port can't be string
30
+ @reader.exec("server http://example.com:foo").should == "invalid url"
31
+ end
32
+
33
+ it "should show error on non-existing command" do
34
+ @reader.exec("foo").should == Ikran::Reader::HELP
35
+ end
36
+
37
+ context "ping command" do
38
+ it "should require remote to be set if executing ping without parameters" do
39
+ @reader.exec("ping").should == "remote must be set before executing ping without parameters"
40
+ end
41
+
42
+ context "testing availability" do
43
+ it "should return 'server is alive' if server is available" do
44
+ @reader.stub!(:http_ping).and_return(true)
45
+ @reader.exec("server example.com")
46
+ @reader.exec("ping").should == "http://example.com is alive"
47
+ end
48
+
49
+ it "should return 'server is unreachable' if server is unreachable" do
50
+ @reader.stub!(:http_ping).and_return(false)
51
+ @reader.exec("server example.com")
52
+ @reader.exec("ping").should == "http://example.com is unreachable"
53
+ end
54
+ end
55
+ end
56
+
57
+ it "should toggle verbose on 'verbose' command" do
58
+ @reader.exec("verbose").should == "verbose is now ON"
59
+ @reader.exec("verbose").should == "verbose is now OFF"
60
+ end
61
+
62
+ it "should require remote to be set before executing 'head' command" do
63
+ @reader.exec("head").should == "remote must be set before executing head"
64
+ end
65
+
66
+ it "should have default maximum size set to infinite" do
67
+ @reader.exec("truncate").should == "maximum size is infinite"
68
+ end
69
+
70
+ it "should return actual maximum size after truncate with parameter" do
71
+ @reader.exec("truncate 20").should == "maximum size set to 20"
72
+ end
73
+
74
+ it "should return actual maximum size after setting it with truncate" do
75
+ @reader.exec("truncate 20")
76
+ @reader.exec("truncate").should == "maximum size is 20"
77
+ end
78
+
79
+ context "non verbose mod" do
80
+ it "should send a request to given url on 'head' command" do
81
+ @reader = Ikran::Reader.new
82
+ @reader.exec("server example.com")
83
+ @reader.exec("head").should == "200 OK"
84
+ end
85
+ end
86
+
87
+ context "parsing" do
88
+ it "should return entire command if no parameters are passed" do
89
+ @reader.parse("server").should == "server"
90
+ end
91
+
92
+ it "should return entire command if only one parameter is passed with quoted parameter" do
93
+ @reader.parse("server first").should == "server 'first'"
94
+ end
95
+
96
+ it "should parse and return only first two words in command with quoted parameter" do
97
+ @reader.parse("server first second").should == "server 'first'"
98
+ end
99
+
100
+ it "should return nil if command is invalid" do
101
+ @reader.parse("foo").should == nil
102
+ end
103
+
104
+ end
105
+
106
+ end
@@ -1,9 +1,8 @@
1
- $LOAD_PATH.unshift(File.dirname(__FILE__))
2
- $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
3
- require 'ikran/reader'
4
- require 'spec'
5
- require 'spec/autorun'
6
-
7
- Spec::Runner.configure do |config|
8
-
9
- end
1
+ $LOAD_PATH.unshift(File.dirname(__FILE__))
2
+ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
3
+ require 'ikran/reader'
4
+ require 'rspec'
5
+
6
+ Rspec.configure do |c|
7
+ c.mock_with :rspec
8
+ end
metadata CHANGED
@@ -1,7 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ikran
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ hash: 23
5
+ prerelease: false
6
+ segments:
7
+ - 0
8
+ - 2
9
+ - 0
10
+ version: 0.2.0
5
11
  platform: ruby
6
12
  authors:
7
13
  - darthdeus
@@ -9,39 +15,105 @@ autorequire:
9
15
  bindir: bin
10
16
  cert_chain: []
11
17
 
12
- date: 2010-01-30 00:00:00 +01:00
18
+ date: 2010-12-02 00:00:00 +01:00
13
19
  default_executable: ikran
14
20
  dependencies:
15
21
  - !ruby/object:Gem::Dependency
16
22
  name: addressable
17
- type: :runtime
18
- version_requirement:
19
- version_requirements: !ruby/object:Gem::Requirement
23
+ prerelease: false
24
+ requirement: &id001 !ruby/object:Gem::Requirement
25
+ none: false
20
26
  requirements:
21
27
  - - ">="
22
28
  - !ruby/object:Gem::Version
29
+ hash: 9
30
+ segments:
31
+ - 2
32
+ - 1
33
+ - 1
23
34
  version: 2.1.1
24
- version:
35
+ type: :runtime
36
+ version_requirements: *id001
25
37
  - !ruby/object:Gem::Dependency
26
38
  name: rspec
27
- type: :development
28
- version_requirement:
29
- version_requirements: !ruby/object:Gem::Requirement
39
+ prerelease: false
40
+ requirement: &id002 !ruby/object:Gem::Requirement
41
+ none: false
30
42
  requirements:
31
43
  - - ">="
32
44
  - !ruby/object:Gem::Version
45
+ hash: 13
46
+ segments:
47
+ - 1
48
+ - 2
49
+ - 9
33
50
  version: 1.2.9
34
- version:
51
+ type: :runtime
52
+ version_requirements: *id002
35
53
  - !ruby/object:Gem::Dependency
36
54
  name: cucumber
37
- type: :development
38
- version_requirement:
39
- version_requirements: !ruby/object:Gem::Requirement
55
+ prerelease: false
56
+ requirement: &id003 !ruby/object:Gem::Requirement
57
+ none: false
40
58
  requirements:
41
59
  - - ">="
42
60
  - !ruby/object:Gem::Version
61
+ hash: 3
62
+ segments:
63
+ - 0
64
+ - 6
65
+ - 2
43
66
  version: 0.6.2
44
- version:
67
+ type: :runtime
68
+ version_requirements: *id003
69
+ - !ruby/object:Gem::Dependency
70
+ name: addressable
71
+ prerelease: false
72
+ requirement: &id004 !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - ">="
76
+ - !ruby/object:Gem::Version
77
+ hash: 9
78
+ segments:
79
+ - 2
80
+ - 1
81
+ - 1
82
+ version: 2.1.1
83
+ type: :runtime
84
+ version_requirements: *id004
85
+ - !ruby/object:Gem::Dependency
86
+ name: rspec
87
+ prerelease: false
88
+ requirement: &id005 !ruby/object:Gem::Requirement
89
+ none: false
90
+ requirements:
91
+ - - ">="
92
+ - !ruby/object:Gem::Version
93
+ hash: 15
94
+ segments:
95
+ - 2
96
+ - 0
97
+ - 0
98
+ version: 2.0.0
99
+ type: :development
100
+ version_requirements: *id005
101
+ - !ruby/object:Gem::Dependency
102
+ name: cucumber
103
+ prerelease: false
104
+ requirement: &id006 !ruby/object:Gem::Requirement
105
+ none: false
106
+ requirements:
107
+ - - ">="
108
+ - !ruby/object:Gem::Version
109
+ hash: 51
110
+ segments:
111
+ - 0
112
+ - 9
113
+ - 4
114
+ version: 0.9.4
115
+ type: :development
116
+ version_requirements: *id006
45
117
  description: Simple console application for testing HTTP server
46
118
  email: darthdeus@gmail.com
47
119
  executables:
@@ -53,7 +125,8 @@ extra_rdoc_files:
53
125
  - README.rdoc
54
126
  files:
55
127
  - .document
56
- - .gitignore
128
+ - Gemfile
129
+ - Gemfile.lock
57
130
  - LICENSE
58
131
  - README.rdoc
59
132
  - Rakefile
@@ -63,33 +136,38 @@ files:
63
136
  - lib/ikran.rb
64
137
  - lib/ikran/reader.rb
65
138
  - spec/ikran_spec.rb
66
- - spec/spec.opts
67
139
  - spec/spec_helper.rb
68
140
  has_rdoc: true
69
141
  homepage: http://github.com/darthdeus/ikran
70
142
  licenses: []
71
143
 
72
144
  post_install_message:
73
- rdoc_options:
74
- - --charset=UTF-8
145
+ rdoc_options: []
146
+
75
147
  require_paths:
76
148
  - lib
77
149
  required_ruby_version: !ruby/object:Gem::Requirement
150
+ none: false
78
151
  requirements:
79
152
  - - ">="
80
153
  - !ruby/object:Gem::Version
154
+ hash: 3
155
+ segments:
156
+ - 0
81
157
  version: "0"
82
- version:
83
158
  required_rubygems_version: !ruby/object:Gem::Requirement
159
+ none: false
84
160
  requirements:
85
161
  - - ">="
86
162
  - !ruby/object:Gem::Version
163
+ hash: 3
164
+ segments:
165
+ - 0
87
166
  version: "0"
88
- version:
89
167
  requirements: []
90
168
 
91
169
  rubyforge_project:
92
- rubygems_version: 1.3.5
170
+ rubygems_version: 1.3.7
93
171
  signing_key:
94
172
  specification_version: 3
95
173
  summary: Simple HTTP console testing framework
data/.gitignore DELETED
@@ -1,24 +0,0 @@
1
- ## MAC OS
2
- .DS_Store
3
-
4
- ## TEXTMATE
5
- *.tmproj
6
- tmtags
7
-
8
- ## EMACS
9
- *~
10
- \#*
11
- .\#*
12
-
13
- ## VIM
14
- *.swp
15
-
16
- ## RubyMine
17
- .idea
18
-
19
- ## PROJECT::GENERAL
20
- coverage
21
- rdoc
22
- pkg
23
-
24
- ## PROJECT::SPECIFIC
@@ -1 +0,0 @@
1
- --color