git-precommit 1.2.3 → 1.2.4

Sign up to get free protection for your applications and to get access to all the features.
data/.gitignore CHANGED
@@ -1 +1,5 @@
1
- pkg
1
+ pkg/*
2
+ .bundle
3
+ *.gem
4
+ tmp/*
5
+ rerun.txt
data/.rvmrc ADDED
@@ -0,0 +1 @@
1
+ rvm --create @git-precommit
data/Gemfile ADDED
@@ -0,0 +1,2 @@
1
+ source "http://rubygems.org"
2
+ gemspec
data/Gemfile.lock ADDED
@@ -0,0 +1,49 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ git-precommit (1.2.4)
5
+ rake
6
+
7
+ GEM
8
+ remote: http://rubygems.org/
9
+ specs:
10
+ aruba (0.2.3)
11
+ background_process
12
+ cucumber (~> 0.9.0)
13
+ background_process (1.2)
14
+ builder (2.1.2)
15
+ cucumber (0.9.2)
16
+ builder (~> 2.1.2)
17
+ diff-lcs (~> 1.1.2)
18
+ gherkin (~> 2.2.5)
19
+ json (~> 1.4.6)
20
+ term-ansicolor (~> 1.0.5)
21
+ diff-lcs (1.1.2)
22
+ gherkin (2.2.9)
23
+ json (~> 1.4.6)
24
+ term-ansicolor (~> 1.0.5)
25
+ json (1.4.6)
26
+ rake (0.8.7)
27
+ rspec (2.0.0)
28
+ rspec-core (= 2.0.0)
29
+ rspec-expectations (= 2.0.0)
30
+ rspec-mocks (= 2.0.0)
31
+ rspec-core (2.0.0)
32
+ rspec-expectations (2.0.0)
33
+ diff-lcs (>= 1.1.2)
34
+ rspec-mocks (2.0.0)
35
+ rspec-core (= 2.0.0)
36
+ rspec-expectations (= 2.0.0)
37
+ syntax (1.0.0)
38
+ term-ansicolor (1.0.5)
39
+
40
+ PLATFORMS
41
+ ruby
42
+
43
+ DEPENDENCIES
44
+ aruba
45
+ cucumber (~> 0.9.0)
46
+ git-precommit!
47
+ rake
48
+ rspec (~> 2.0.0)
49
+ syntax
data/Rakefile CHANGED
@@ -1,17 +1,17 @@
1
+ require "rake"
2
+ require "rake/rdoctask"
3
+
1
4
  begin
2
- require 'jeweler'
3
- Jeweler::Tasks.new do |gemspec|
4
- gemspec.name = "git-precommit"
5
- gemspec.summary = "Fail commits if the tests fail."
6
- gemspec.description = <<-EOS
7
- A set of rake tasks that install git pre-commit hooks to call your build.
8
- If your build fails, the commit will not proceed.
9
- EOS
10
- gemspec.email = "toby.tripp+git@gmail.com"
11
- gemspec.homepage = "http://github.com/tobytripp/git-pre-commit"
12
- gemspec.authors = ["Toby Tripp"]
13
- end
14
- Jeweler::GemcutterTasks.new
5
+ require 'bundler/setup'
6
+ Bundler::GemHelper.install_tasks
15
7
  rescue LoadError
16
- puts "Jeweler not available. Install it with: gem install jeweler"
8
+ puts "Bundler not available. Install it with: gem install bundler"
17
9
  end
10
+
11
+ Dir["./tasks/**/*.rake"].each { |task| load task }
12
+
13
+ require "git_precommit"
14
+ GitPrecommit::PrecommitTasks.new
15
+
16
+ task :default => ".git/hooks/pre-commit"
17
+ task :precommit => :default
@@ -0,0 +1,12 @@
1
+ <%
2
+ rerun = File.file?('rerun.txt') ? IO.read('rerun.txt') : ""
3
+ rerun_opts = rerun.to_s.strip.empty? ?
4
+ "--format progress features" :
5
+ "--format #{ENV['CUCUMBER_FORMAT'] || 'pretty'} #{rerun}"
6
+ std_opts =
7
+ "#{rerun_opts} --format rerun --out rerun.txt --strict --tags ~@wip"
8
+ html_opts =
9
+ "--format html --out log/cucumber.out.html"
10
+ %>
11
+ default: <%= std_opts %>
12
+ wip: --tags @wip:10 --wip features
@@ -0,0 +1,27 @@
1
+ #!/usr/bin/env cucumber
2
+ Feature: Draconian option
3
+ Background:
4
+ Given a directory named ".git/hooks"
5
+ And a file named "Rakefile" with:
6
+ """
7
+ require "../../lib/git_precommit"
8
+ GitPrecommit::PrecommitTasks.new :draconian => true
9
+
10
+ task :default => ".git/hooks/pre-commit"
11
+ """
12
+
13
+ Scenario: No pre-commit hook is installed
14
+ When I successfully run "rake"
15
+
16
+ Then the following files should exist:
17
+ | .git/hooks/pre-commit |
18
+
19
+ Scenario: The pre-commit hook is modified
20
+ When I append to ".git/hooks/pre-commit" with:
21
+ """
22
+ echo "My new hook!"
23
+ """
24
+
25
+ And I successfully run "rake"
26
+
27
+ Then the file ".git/hooks/pre-commit" should not contain "echo"
@@ -0,0 +1,28 @@
1
+ #!/usr/bin/env cucumber
2
+ Feature: Pre commit hook installation
3
+ Background:
4
+ Given a directory named ".git/hooks"
5
+ And a file named "Rakefile" with:
6
+ """
7
+ require "../../lib/git_precommit"
8
+ GitPrecommit::PrecommitTasks.new
9
+
10
+ task :default => ".git/hooks/pre-commit"
11
+ """
12
+
13
+ Scenario: No pre-commit hook is installed
14
+ When I successfully run "rake"
15
+
16
+ Then the following files should exist:
17
+ | .git/hooks/pre-commit |
18
+
19
+ Scenario: The pre-commit hook is modified
20
+ When I append to ".git/hooks/pre-commit" with:
21
+ """
22
+ echo "My new hook!"
23
+ """
24
+
25
+ And I successfully run "rake --trace"
26
+
27
+ Then the file ".git/hooks/pre-commit" should contain "echo"
28
+
@@ -0,0 +1 @@
1
+ require 'aruba'
@@ -1,51 +1,38 @@
1
- # Generated by jeweler
2
- # DO NOT EDIT THIS FILE DIRECTLY
3
- # Instead, edit Jeweler::Tasks in rakefile, and run the gemspec command
4
1
  # -*- encoding: utf-8 -*-
2
+ $:.push File.expand_path("../lib", __FILE__)
3
+ require "git-precommit/version"
5
4
 
6
5
  Gem::Specification.new do |s|
7
6
  s.name = %q{git-precommit}
8
- s.version = "1.2.3"
7
+ s.version = GitPrecommit::VERSION
9
8
 
10
- s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
- s.authors = ["Toby Tripp"]
12
- s.date = %q{2010-03-10}
13
- s.default_executable = %q{setpairs}
14
- s.description = %q{ A set of rake tasks that install git pre-commit hooks to call your build.
15
- If your build fails, the commit will not proceed.
16
- }
17
- s.email = %q{toby.tripp+git@gmail.com}
18
- s.executables = ["setpairs"]
19
- s.extra_rdoc_files = [
20
- "README.rdoc"
21
- ]
22
- s.files = [
23
- ".gitignore",
24
- "README.rdoc",
25
- "Rakefile",
26
- "VERSION",
27
- "bin/setpairs",
28
- "git-hooks/post-commit",
29
- "git-hooks/pre-commit",
30
- "git-precommit.gemspec",
31
- "lib/git-precommit/precommit_tasks.rb",
32
- "lib/git-precommit/tasks.rb",
33
- "lib/git_precommit.rb"
34
- ]
9
+ s.authors = ["Toby Tripp"]
10
+ s.email = %q{toby.tripp+git@gmail.com}
35
11
  s.homepage = %q{http://github.com/tobytripp/git-pre-commit}
36
- s.rdoc_options = ["--charset=UTF-8"]
37
- s.require_paths = ["lib"]
12
+
13
+ s.summary = %q{Abort git commit if the tests fail.}
14
+ s.description = %q{
15
+ A set of rake tasks that install git pre-commit hooks to run your tests.
16
+ If your build fails, the commit will not proceed.
17
+
18
+ Git-precommit will call `rake precommit` to run your tests. Be sure to define this task.
19
+ }
20
+
21
+ s.files = `git ls-files`.split("\n")
22
+ s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
23
+ s.require_paths = ["lib"]
24
+
25
+ s.extra_rdoc_files = %w[README.rdoc]
26
+ s.rdoc_options = ["--charset=UTF-8"]
38
27
  s.rubygems_version = %q{1.3.6}
39
- s.summary = %q{Fail commits if the tests fail.}
40
28
 
41
- if s.respond_to? :specification_version then
42
- current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
43
- s.specification_version = 3
29
+ s.rubyforge_project = "git-precommit"
44
30
 
45
- if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
46
- else
47
- end
48
- else
49
- end
31
+ s.add_dependency "rake"
32
+
33
+ s.add_development_dependency "rspec", "~> 2.0.0"
34
+ s.add_development_dependency "cucumber", "~> 0.9.0"
35
+ s.add_development_dependency "aruba"
36
+ s.add_development_dependency "syntax"
50
37
  end
51
38
 
@@ -1,4 +1,4 @@
1
- # encoding: utf-8
1
+ # -*- encoding: utf-8 -*-
2
2
  require "rake"
3
3
  require "rake/tasklib"
4
4
 
@@ -8,7 +8,11 @@ module GitPrecommit
8
8
  File.expand_path File.join( File.dirname(__FILE__), '..', '..', 'git-hooks' )
9
9
  attr_accessor :template_path
10
10
 
11
- def initialize()
11
+ def initialize( options={} )
12
+ @options = {
13
+ :draconian => false
14
+ }.merge options
15
+
12
16
  yield self if block_given?
13
17
  @template_path ||= TEMPLATE_PATH
14
18
 
@@ -16,8 +20,21 @@ module GitPrecommit
16
20
  end
17
21
 
18
22
  def define()
23
+ pre_commit = ".git/hooks/pre-commit"
24
+ pre_commit_src = "#{template_path}/pre-commit"
25
+
26
+ task :overwrite do |t|
27
+ if @options[:draconian]
28
+ copy pre_commit_src, pre_commit
29
+ chmod 0755, pre_commit
30
+ end
31
+ end
32
+
33
+ deps = [pre_commit_src]
34
+ deps += [:overwrite] if @options[:draconian]
35
+
19
36
  desc "Install the git pre-commit hook"
20
- file ".git/hooks/pre-commit" => "#{template_path}/pre-commit" do |t|
37
+ file pre_commit => deps do |t|
21
38
  warn "Git pre-commit hook missing, setting up…"
22
39
  copy t.prerequisites.first, t.name
23
40
  chmod 0755, t.name
@@ -31,7 +48,7 @@ module GitPrecommit
31
48
 
32
49
  namespace :git do
33
50
  desc "Install the git pre-commit hook"
34
- task :precommit => ".git/hooks/pre-commit"
51
+ task :precommit => pre_commit
35
52
 
36
53
  desc "Install the git post-commit hook"
37
54
  task :postcommit => ".git/hooks/post-commit"
@@ -2,10 +2,11 @@ if defined? Rails
2
2
  ENVIRONMENT = Rails.env
3
3
  else
4
4
  ENVIRONMENT = RAILS_ENV if defined? RAILS_ENV
5
+ ENVIRONMENT ||= ENV["RACK_ENV"] if ENV["RACK_ENV"]
5
6
  ENVIRONMENT ||= "development"
6
7
  end
7
8
 
8
- if %w[development test].include? ENVIRONMENT
9
+ if %w[development cucumber test].include? ENVIRONMENT
9
10
  require "git_precommit"
10
11
 
11
12
  GitPrecommit::PrecommitTasks.new
@@ -0,0 +1,3 @@
1
+ module GitPrecommit
2
+ VERSION = "1.2.4"
3
+ end
data/lib/git_precommit.rb CHANGED
@@ -1,3 +1,4 @@
1
1
  $:.unshift File.dirname(__FILE__)
2
2
 
3
+ require "rake"
3
4
  require "git-precommit/precommit_tasks.rb"
@@ -0,0 +1,53 @@
1
+ task :default => [:cucumber]
2
+
3
+ begin
4
+ require 'cucumber/rake/task'
5
+
6
+ namespace :cucumber do
7
+ Cucumber::Rake::Task.new( :ok,
8
+ 'Run features that should pass') do |t|
9
+ t.fork = true # You may get faster startup if you set this to false
10
+ t.profile = 'default'
11
+ end
12
+
13
+ Cucumber::Rake::Task.new(:wip,
14
+ 'Run features that are being worked on') do |t|
15
+ t.fork = true # You may get faster startup if you set this to false
16
+ t.profile = 'wip'
17
+ end
18
+
19
+ Cucumber::Rake::Task.new( :cruise,
20
+ "Run features and generate HTML report" ) do |t|
21
+ t.fork = true
22
+ t.profile = 'cruise'
23
+ end
24
+
25
+ desc 'Run all features'
26
+ task :all => [:ok, :wip]
27
+
28
+ desc 'list uncommented feature and scenario names'
29
+ task :list, [:file_pattern] do |t, args|
30
+ scenario_count = 0
31
+ Dir["#{RUBY_ROOT}/features/**/#{args.file_pattern || '*'}.feature"].sort.each do |file|
32
+ puts file
33
+ File.read(file).split(/\n/).each do |line|
34
+ puts $1 if line =~ /^\s*(Feature:.+)/
35
+ printf("\t%3d:%s\n", scenario_count += 1, $1) if line =~ /^\s*Scenario:(.+)/
36
+ end
37
+ puts
38
+ end
39
+ end
40
+ end
41
+
42
+ desc 'Alias for cucumber:ok'
43
+ task :cucumber => 'cucumber:ok'
44
+
45
+ task :features => :cucumber do
46
+ STDERR.puts "*** The 'features' task is deprecated. See rake -T cucumber ***"
47
+ end
48
+ rescue LoadError
49
+ desc 'cucumber rake task not available (cucumber not installed)'
50
+ task :cucumber do
51
+ abort 'Cucumber rake task is not available. Be sure to install cucumber as a gem or plugin'
52
+ end
53
+ end
metadata CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 1
7
7
  - 2
8
- - 3
9
- version: 1.2.3
8
+ - 4
9
+ version: 1.2.4
10
10
  platform: ruby
11
11
  authors:
12
12
  - Toby Tripp
@@ -14,11 +14,79 @@ autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
16
 
17
- date: 2010-03-10 00:00:00 -06:00
18
- default_executable: setpairs
19
- dependencies: []
20
-
21
- description: " A set of rake tasks that install git pre-commit hooks to call your build.\n If your build fails, the commit will not proceed.\n"
17
+ date: 2010-11-04 00:00:00 -05:00
18
+ default_executable:
19
+ dependencies:
20
+ - !ruby/object:Gem::Dependency
21
+ name: rake
22
+ prerelease: false
23
+ requirement: &id001 !ruby/object:Gem::Requirement
24
+ none: false
25
+ requirements:
26
+ - - ">="
27
+ - !ruby/object:Gem::Version
28
+ segments:
29
+ - 0
30
+ version: "0"
31
+ type: :runtime
32
+ version_requirements: *id001
33
+ - !ruby/object:Gem::Dependency
34
+ name: rspec
35
+ prerelease: false
36
+ requirement: &id002 !ruby/object:Gem::Requirement
37
+ none: false
38
+ requirements:
39
+ - - ~>
40
+ - !ruby/object:Gem::Version
41
+ segments:
42
+ - 2
43
+ - 0
44
+ - 0
45
+ version: 2.0.0
46
+ type: :development
47
+ version_requirements: *id002
48
+ - !ruby/object:Gem::Dependency
49
+ name: cucumber
50
+ prerelease: false
51
+ requirement: &id003 !ruby/object:Gem::Requirement
52
+ none: false
53
+ requirements:
54
+ - - ~>
55
+ - !ruby/object:Gem::Version
56
+ segments:
57
+ - 0
58
+ - 9
59
+ - 0
60
+ version: 0.9.0
61
+ type: :development
62
+ version_requirements: *id003
63
+ - !ruby/object:Gem::Dependency
64
+ name: aruba
65
+ prerelease: false
66
+ requirement: &id004 !ruby/object:Gem::Requirement
67
+ none: false
68
+ requirements:
69
+ - - ">="
70
+ - !ruby/object:Gem::Version
71
+ segments:
72
+ - 0
73
+ version: "0"
74
+ type: :development
75
+ version_requirements: *id004
76
+ - !ruby/object:Gem::Dependency
77
+ name: syntax
78
+ prerelease: false
79
+ requirement: &id005 !ruby/object:Gem::Requirement
80
+ none: false
81
+ requirements:
82
+ - - ">="
83
+ - !ruby/object:Gem::Version
84
+ segments:
85
+ - 0
86
+ version: "0"
87
+ type: :development
88
+ version_requirements: *id005
89
+ description: "\n A set of rake tasks that install git pre-commit hooks to run your tests.\n If your build fails, the commit will not proceed.\n \n Git-precommit will call `rake precommit` to run your tests. Be sure to define this task.\n "
22
90
  email: toby.tripp+git@gmail.com
23
91
  executables:
24
92
  - setpairs
@@ -28,16 +96,24 @@ extra_rdoc_files:
28
96
  - README.rdoc
29
97
  files:
30
98
  - .gitignore
99
+ - .rvmrc
100
+ - Gemfile
101
+ - Gemfile.lock
31
102
  - README.rdoc
32
103
  - Rakefile
33
- - VERSION
34
104
  - bin/setpairs
105
+ - config/cucumber.yml
106
+ - features/draconian.feature
107
+ - features/pre-commit.feature
108
+ - features/support/setup.rb
35
109
  - git-hooks/post-commit
36
110
  - git-hooks/pre-commit
37
111
  - git-precommit.gemspec
38
112
  - lib/git-precommit/precommit_tasks.rb
39
113
  - lib/git-precommit/tasks.rb
114
+ - lib/git-precommit/version.rb
40
115
  - lib/git_precommit.rb
116
+ - tasks/cucumber.rake
41
117
  has_rdoc: true
42
118
  homepage: http://github.com/tobytripp/git-pre-commit
43
119
  licenses: []
@@ -48,6 +124,7 @@ rdoc_options:
48
124
  require_paths:
49
125
  - lib
50
126
  required_ruby_version: !ruby/object:Gem::Requirement
127
+ none: false
51
128
  requirements:
52
129
  - - ">="
53
130
  - !ruby/object:Gem::Version
@@ -55,6 +132,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
55
132
  - 0
56
133
  version: "0"
57
134
  required_rubygems_version: !ruby/object:Gem::Requirement
135
+ none: false
58
136
  requirements:
59
137
  - - ">="
60
138
  - !ruby/object:Gem::Version
@@ -63,10 +141,10 @@ required_rubygems_version: !ruby/object:Gem::Requirement
63
141
  version: "0"
64
142
  requirements: []
65
143
 
66
- rubyforge_project:
67
- rubygems_version: 1.3.6
144
+ rubyforge_project: git-precommit
145
+ rubygems_version: 1.3.7
68
146
  signing_key:
69
147
  specification_version: 3
70
- summary: Fail commits if the tests fail.
148
+ summary: Abort git commit if the tests fail.
71
149
  test_files: []
72
150
 
data/VERSION DELETED
@@ -1 +0,0 @@
1
- 1.2.3