cucumber-sinatra 0.1.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/LICENSE ADDED
@@ -0,0 +1,13 @@
1
+ Copyright (c) 2010 Bernd Ahlers <bernd@tuneafish.de>
2
+
3
+ Permission to use, copy, modify, and distribute this software for any
4
+ purpose with or without fee is hereby granted, provided that the above
5
+ copyright notice and this permission notice appear in all copies.
6
+
7
+ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
8
+ WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
9
+ MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
10
+ ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
11
+ WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
12
+ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
13
+ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,42 @@
1
+ cucumber-sinatra
2
+ ================
3
+
4
+ # Description
5
+
6
+ This little gem will help you to initialize a cucumber environment for a sinatra
7
+ application. It will generate the required files from templates.
8
+
9
+ For now it's generating an `env.rb` that is using [rspec](http://github.com/dchelimsky/rspec)
10
+ and [capybara](http://github.com/jnicklas/capybara). More options might be added later.
11
+
12
+ # Installation
13
+
14
+ It's available as a gem that can be installed with the following command.
15
+
16
+ gem install cucumber-sinatra
17
+
18
+ # Usage
19
+
20
+ To initialize the cucumber environment, just execute `cucumber-sinatra` like this:
21
+
22
+ # cucumber-sinatra init MyApp lib/my_app.rb
23
+ [ADDED] features/step_definitions
24
+ [ADDED] features/support/env.rb
25
+ #
26
+
27
+ * The first argument is the class name of your application.
28
+ * The second argument is the path to the application file that should be required.
29
+
30
+ Using the `--app` option with `init` will also generate the given application file
31
+ and a working `config.ru`.
32
+
33
+ # cucumber-sinatra init --app MyApp lib/my_app.rb
34
+ [ADDED] features/step_definitions
35
+ [ADDED] features/support/env.rb
36
+ [ADDED] lib/my_app.rb
37
+ [ADDED] config.ru
38
+ #
39
+
40
+ # Copyright
41
+
42
+ Copyright (c) 2010 Bernd Ahlers. See LICENSE for details.
data/Rakefile ADDED
@@ -0,0 +1,148 @@
1
+ require 'rubygems'
2
+ require 'rake'
3
+ require 'date'
4
+
5
+ #############################################################################
6
+ #
7
+ # Helper functions
8
+ #
9
+ #############################################################################
10
+
11
+ def name
12
+ @name ||= Dir['*.gemspec'].first.split('.').first
13
+ end
14
+
15
+ def name_path
16
+ name.gsub('-', '/')
17
+ end
18
+
19
+ def version
20
+ line = File.read("lib/#{name_path}.rb")[/^\s*VERSION\s*=\s*.*/]
21
+ line.match(/.*VERSION\s*=\s*['"](.*)['"]/)[1]
22
+ end
23
+
24
+ def date
25
+ Date.today.to_s
26
+ end
27
+
28
+ def rubyforge_project
29
+ name
30
+ end
31
+
32
+ def gemspec_file
33
+ "#{name}.gemspec"
34
+ end
35
+
36
+ def gem_file
37
+ "#{name}-#{version}.gem"
38
+ end
39
+
40
+ def replace_header(head, header_name)
41
+ head.sub!(/(\.#{header_name}\s*= ').*'/) { "#{$1}#{send(header_name)}'"}
42
+ end
43
+
44
+ #############################################################################
45
+ #
46
+ # Standard tasks
47
+ #
48
+ #############################################################################
49
+
50
+ task :default => :test
51
+
52
+ require 'rake/testtask'
53
+ Rake::TestTask.new(:test) do |test|
54
+ test.libs << 'lib' << 'test'
55
+ test.pattern = 'test/**/test_*.rb'
56
+ test.verbose = true
57
+ end
58
+
59
+ desc "Generate RCov test coverage and open in your browser"
60
+ task :coverage do
61
+ require 'rcov'
62
+ sh "rm -fr coverage"
63
+ sh "rcov test/test_*.rb"
64
+ sh "open coverage/index.html"
65
+ end
66
+
67
+ require 'rake/rdoctask'
68
+ Rake::RDocTask.new do |rdoc|
69
+ rdoc.rdoc_dir = 'rdoc'
70
+ rdoc.title = "#{name} #{version}"
71
+ rdoc.rdoc_files.include('README*')
72
+ rdoc.rdoc_files.include('lib/**/*.rb')
73
+ end
74
+
75
+ desc "Open an irb session preloaded with this library"
76
+ task :console do
77
+ sh "irb -rubygems -r ./lib/#{name_path}.rb"
78
+ end
79
+
80
+ #############################################################################
81
+ #
82
+ # Custom tasks (add your own tasks here)
83
+ #
84
+ #############################################################################
85
+
86
+
87
+
88
+ #############################################################################
89
+ #
90
+ # Packaging tasks
91
+ #
92
+ #############################################################################
93
+
94
+ desc "Update gemspec, build gem, commit with 'Release x.x.x', create tag, push to github and gemcutter"
95
+ task :release => :build do
96
+ unless `git branch` =~ /^\* master$/
97
+ puts "You must be on the master branch to release!"
98
+ exit!
99
+ end
100
+ sh "git commit --allow-empty -a -m 'Release #{version}'"
101
+ sh "git tag v#{version}"
102
+ sh "git push origin master"
103
+ sh "git push v#{version}"
104
+ sh "gem push pkg/#{name}-#{version}.gem"
105
+ end
106
+
107
+ desc "Update gemspec and build gem"
108
+ task :build => :gemspec do
109
+ sh "mkdir -p pkg"
110
+ sh "gem build #{gemspec_file}"
111
+ sh "mv #{gem_file} pkg"
112
+ end
113
+
114
+ desc "Update gemspec with the latest version and file list"
115
+ task :gemspec => :validate do
116
+ # read spec file and split out manifest section
117
+ spec = File.read(gemspec_file)
118
+ head, manifest, tail = spec.split(" # = MANIFEST =\n")
119
+
120
+ # replace name version and date
121
+ replace_header(head, :name)
122
+ replace_header(head, :version)
123
+ replace_header(head, :date)
124
+ #comment this out if your rubyforge_project has a different name
125
+ replace_header(head, :rubyforge_project)
126
+
127
+ # determine file list from git ls-files
128
+ files = `git ls-files`.
129
+ split("\n").
130
+ sort.
131
+ reject { |file| file =~ /^\./ }.
132
+ reject { |file| file =~ /^(rdoc|pkg)/ }.
133
+ map { |file| " #{file}" }.
134
+ join("\n")
135
+
136
+ # piece file back together and write
137
+ manifest = " s.files = %w[\n#{files}\n ]\n"
138
+ spec = [head, manifest, tail].join(" # = MANIFEST =\n")
139
+ File.open(gemspec_file, 'w') { |io| io.write(spec) }
140
+ puts "Updated #{gemspec_file}"
141
+ end
142
+
143
+ task :validate do
144
+ unless Dir['VERSION*'].empty?
145
+ puts "A `VERSION` file at root level violates Gem best practices."
146
+ exit!
147
+ end
148
+ end
@@ -0,0 +1,7 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'rubygems'
4
+ require 'cucumber/sinatra'
5
+ require 'cucumber/sinatra/generators'
6
+
7
+ Cucumber::Sinatra::Generators.run_cli Dir.pwd, File.basename(__FILE__), Cucumber::Sinatra::VERSION, ARGV
@@ -0,0 +1,51 @@
1
+ Gem::Specification.new do |s|
2
+ s.specification_version = 2 if s.respond_to? :specification_version=
3
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
4
+ s.rubygems_version = '1.3.5'
5
+
6
+ ## Leave these as is they will be modified for you by the rake gemspec task.
7
+ ## If your rubyforge_project name is different, then edit it and comment out
8
+ ## the sub! line in the Rakefile
9
+ s.name = 'cucumber-sinatra'
10
+ s.version = '0.1.0'
11
+ s.date = '2010-05-20'
12
+ s.rubyforge_project = 'cucumber-sinatra'
13
+
14
+ s.summary = "Initialize a cucumber environment for sinatra"
15
+ s.description = "This little gem will help you to initialize a cucumber environment for a sinatra application. It will generate the required files from templates."
16
+
17
+ s.authors = ["Bernd Ahlers"]
18
+ s.email = 'bernd@tuneafish.de'
19
+ s.homepage = 'http://github.com/bernd/cucumber-sinatra'
20
+
21
+ ## This gets added to the $LOAD_PATH so that 'lib/NAME.rb' can be required as
22
+ ## require 'NAME.rb' or'/lib/NAME/file.rb' can be as require 'NAME/file.rb'
23
+ s.require_paths = %w[lib]
24
+
25
+ s.executables = ["cucumber-sinatra"]
26
+ s.default_executable = 'cucumber-sinatra'
27
+
28
+ s.rdoc_options = ["--charset=UTF-8"]
29
+ s.extra_rdoc_files = %w[README.md LICENSE]
30
+
31
+ s.add_dependency('templater', [">= 1.0.0"])
32
+
33
+ # = MANIFEST =
34
+ s.files = %w[
35
+ LICENSE
36
+ README.md
37
+ Rakefile
38
+ bin/cucumber-sinatra
39
+ cucumber-sinatra.gemspec
40
+ lib/cucumber/sinatra.rb
41
+ lib/cucumber/sinatra/generators.rb
42
+ lib/cucumber/sinatra/templates/app.rbt
43
+ lib/cucumber/sinatra/templates/config.ru
44
+ lib/cucumber/sinatra/templates/features/support/env.rbt
45
+ ]
46
+ # = MANIFEST =
47
+
48
+ ## Test files will be grabbed from the file list. Make sure the path glob
49
+ ## matches what you actually use.
50
+ #s.test_files = s.files.select { |path| path =~ /^test\/test_.*\.rb/ }
51
+ end
@@ -0,0 +1,38 @@
1
+ require 'templater'
2
+
3
+ module Cucumber
4
+ module Sinatra
5
+ module Generators
6
+ extend Templater::Manifold
7
+
8
+ class InitGenerator < Templater::Generator
9
+ def self.source_root
10
+ File.join(File.dirname(__FILE__), 'templates')
11
+ end
12
+
13
+ desc <<-DESC
14
+ Initialize a cucumber environment for a sinatra application.
15
+ cucumber-sinatra MyApp lib/myapp.rb
16
+ DESC
17
+
18
+ first_argument :app_class, :required => true, :desc => 'Application class'
19
+ second_argument :app_file, :required => true, :desc => 'Application file'
20
+
21
+ option :app, :as => :boolean, :default => false, :desc => 'Create the application files as well.'
22
+
23
+ template :env, 'features/support/env.rb'
24
+ template :app_file, 'app.rbt', '%app_file_path%', :app => true
25
+ template :rackup_file, 'config.ru', 'config.ru', :app => true
26
+
27
+ empty_directory :step_definitions, 'features/step_definitions'
28
+
29
+ def app_file_path
30
+ app_file
31
+ end
32
+ end
33
+
34
+ desc "Generators to simplify the usage of cucumber with sinatra."
35
+ add :init, InitGenerator
36
+ end
37
+ end
38
+ end
@@ -0,0 +1,7 @@
1
+ require 'sinatra/base'
2
+
3
+ class <%= app_class -%> < Sinatra::Base
4
+ get '/' do
5
+ 'Hello <%= app_class -%>!'
6
+ end
7
+ end
@@ -0,0 +1,4 @@
1
+ require 'rubygems'
2
+ require File.join(File.dirname(__FILE__), '<%= app_file -%>')
3
+
4
+ run <%= app_class -%>
@@ -0,0 +1,15 @@
1
+ # Generated by cucumber-sinatra. (<%= Time.now %>)
2
+
3
+ require File.join(File.dirname(__FILE__), '..', '..', '<%= app_file -%>')
4
+
5
+ require 'capybara'
6
+ require 'capybara/cucumber'
7
+ require 'spec'
8
+
9
+ World do
10
+ Capybara.app = <%= app_class -%>
11
+
12
+ include Capybara
13
+ include Spec::Expectations
14
+ include Spec::Matchers
15
+ end
@@ -0,0 +1,5 @@
1
+ module Cucumber
2
+ module Sinatra
3
+ VERSION = '0.1.0'
4
+ end
5
+ end
metadata ADDED
@@ -0,0 +1,85 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: cucumber-sinatra
3
+ version: !ruby/object:Gem::Version
4
+ prerelease: false
5
+ segments:
6
+ - 0
7
+ - 1
8
+ - 0
9
+ version: 0.1.0
10
+ platform: ruby
11
+ authors:
12
+ - Bernd Ahlers
13
+ autorequire:
14
+ bindir: bin
15
+ cert_chain: []
16
+
17
+ date: 2010-05-20 00:00:00 +02:00
18
+ default_executable: cucumber-sinatra
19
+ dependencies:
20
+ - !ruby/object:Gem::Dependency
21
+ name: templater
22
+ prerelease: false
23
+ requirement: &id001 !ruby/object:Gem::Requirement
24
+ requirements:
25
+ - - ">="
26
+ - !ruby/object:Gem::Version
27
+ segments:
28
+ - 1
29
+ - 0
30
+ - 0
31
+ version: 1.0.0
32
+ type: :runtime
33
+ version_requirements: *id001
34
+ description: This little gem will help you to initialize a cucumber environment for a sinatra application. It will generate the required files from templates.
35
+ email: bernd@tuneafish.de
36
+ executables:
37
+ - cucumber-sinatra
38
+ extensions: []
39
+
40
+ extra_rdoc_files:
41
+ - README.md
42
+ - LICENSE
43
+ files:
44
+ - LICENSE
45
+ - README.md
46
+ - Rakefile
47
+ - bin/cucumber-sinatra
48
+ - cucumber-sinatra.gemspec
49
+ - lib/cucumber/sinatra.rb
50
+ - lib/cucumber/sinatra/generators.rb
51
+ - lib/cucumber/sinatra/templates/app.rbt
52
+ - lib/cucumber/sinatra/templates/config.ru
53
+ - lib/cucumber/sinatra/templates/features/support/env.rbt
54
+ has_rdoc: true
55
+ homepage: http://github.com/bernd/cucumber-sinatra
56
+ licenses: []
57
+
58
+ post_install_message:
59
+ rdoc_options:
60
+ - --charset=UTF-8
61
+ require_paths:
62
+ - lib
63
+ required_ruby_version: !ruby/object:Gem::Requirement
64
+ requirements:
65
+ - - ">="
66
+ - !ruby/object:Gem::Version
67
+ segments:
68
+ - 0
69
+ version: "0"
70
+ required_rubygems_version: !ruby/object:Gem::Requirement
71
+ requirements:
72
+ - - ">="
73
+ - !ruby/object:Gem::Version
74
+ segments:
75
+ - 0
76
+ version: "0"
77
+ requirements: []
78
+
79
+ rubyforge_project: cucumber-sinatra
80
+ rubygems_version: 1.3.6
81
+ signing_key:
82
+ specification_version: 2
83
+ summary: Initialize a cucumber environment for sinatra
84
+ test_files: []
85
+