lolcommits 0.1.5 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
data/.gitignore CHANGED
@@ -3,4 +3,6 @@
3
3
  Gemfile.lock
4
4
  pkg/*
5
5
  .rvmrc
6
-
6
+ results.html
7
+ html
8
+ tmp
data/CHANGELOG CHANGED
@@ -1,3 +1,10 @@
1
+ 0.2.0 (6 July 2012)
2
+ * improved build system and testing with cucumber/methadone
3
+ - goal is to get into a better framework to start doing major feature work
4
+ - this should lead to increased reliability across systems as we refactor
5
+ * writing tests (please help!)
6
+ * fix issues with packaged files not being readable after a sudo gem install
7
+
1
8
  0.1.5 (25 June 2012)
2
9
  * fix tranzlate on ruby1.8
3
10
 
data/README.md CHANGED
@@ -1,11 +1,12 @@
1
- [![Build Status](https://secure.travis-ci.org/mroth/lolcommits.png?branch=master)](http://travis-ci.org/mroth/lolcommits)
2
-
3
- # git + webcam = lol
1
+ # lolcommits (git + webcam = lol)
4
2
 
5
3
  Takes a snapshot with your Mac's built-in iSight/FaceTime webcam (or any working webcam on Linux) every time you git commit code, and archives a lolcat style image with it.
6
4
 
7
5
  By default, the lolimages are stored by a Github style short SHA in a `~/.lolcommits` directory created for you.
8
6
 
7
+ [![Build Status](https://secure.travis-ci.org/mroth/lolcommits.png?branch=master)](http://travis-ci.org/mroth/lolcommits)
8
+ [![Dependency Status](https://gemnasium.com/mroth/lolcommits.png)](https://gemnasium.com/mroth/lolcommits)
9
+
9
10
  ## Installation (Mac OS X)
10
11
  You'll need ImageMagick installed. [Homebrew](http://mxcl.github.com/homebrew/) makes this easy. Simply do:
11
12
 
@@ -74,22 +75,15 @@ environment variables.
74
75
  * TRANZLATE YOAR COMMIT_MSG TO LOLSPEKK - set
75
76
  `LOLCOMMITS_TRANZLATE=1`.
76
77
 
77
- ## Troubles?
78
- Started a [FAQ](https://github.com/mroth/lolcommits/wiki/FAQ).
78
+ ## Contributing
79
79
 
80
- <!--
81
- ## Upgrading from an old (non-gem) version?
82
- If you used the autoinstaller, here's how to get rid of the old stuff (I think)
80
+ 1. Fork it
81
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
82
+ 3. Commit your changes (`git commit -am 'Added some feature'`)
83
+ 4. Push to the branch (`git push origin my-new-feature`)
84
+ 5. Create new Pull Request
83
85
 
84
- For all active lolrepos, go into them and do:
86
+ Please, if at all possible, write a passing test for the functionality you added.
85
87
 
86
- git hooks --uninstall
87
-
88
- You might want to get rid of the copied binary for imagesnap and switch over to the homebrew-managed version, if so `rm /usr/local/bin/imagesnap`.
89
-
90
- If you want to get rid of git-hooks entirly (it won't hurt anything, but we dont use it anymore), you can also do:
91
-
92
- rm /usr/local/bin/git-hooks
93
- rm -rf ~/.git_hooks
94
- rm -rf ~/.githooks_src
95
- -->
88
+ ## Troubles?
89
+ Started a [FAQ](https://github.com/mroth/lolcommits/wiki/FAQ).
data/Rakefile CHANGED
@@ -1,13 +1,40 @@
1
- require "bundler/gem_tasks"
1
+ require 'bundler'
2
+ require 'rake/clean'
3
+
2
4
  require 'rake/testtask'
3
5
 
6
+ require 'cucumber'
7
+ require 'cucumber/rake/task'
8
+ gem 'rdoc' # we need the installed RDoc gem, not the system one
9
+ require 'rdoc/task'
10
+
11
+ include Rake::DSL
12
+
13
+ Bundler::GemHelper.install_tasks
14
+
15
+
4
16
  Rake::TestTask.new do |t|
5
- #t.libs << 'test'
6
- t.test_files = Dir.glob('test/test_*.rb')
17
+ t.pattern = 'test/test_*.rb'
18
+ end
19
+
20
+
21
+ CUKE_RESULTS = 'results.html'
22
+ CLEAN << CUKE_RESULTS
23
+ Cucumber::Rake::Task.new(:features) do |t|
24
+ t.cucumber_opts = "features --format html -o #{CUKE_RESULTS} --format pretty --no-source -x"
25
+ t.fork = false
7
26
  end
8
27
 
9
- desc "Run tests"
10
- task :default => :test
28
+ Rake::RDocTask.new do |rd|
29
+
30
+ rd.main = "README.rdoc"
31
+
32
+ rd.rdoc_files.include("README.rdoc","lib/**/*.rb","bin/**/*")
33
+ end
34
+
35
+ task :default => [:test,:features]
36
+
37
+
11
38
 
12
39
  desc "Migrate an existing local .lolcommits directory to Dropbox"
13
40
  task :dropboxify do
@@ -26,12 +26,20 @@ if is_mac?
26
26
  # puts "Easiest way to get it is to install homebrew and do `brew install imagesnap`"
27
27
  # exit 1
28
28
  #end
29
+ unless File.executable? File.join(LOLCOMMITS_ROOT, "ext", "imagesnap", "imagesnap")
30
+ puts "Couldn't properly execute imagesnap for some reason, please file a bug?!"
31
+ exit 1
32
+ end
29
33
  elsif is_linux?
30
34
  if not command?('mplayer')
31
35
  puts "Couldn't find mplayer in your PATH!"
32
36
  exit 1
33
37
  end
34
38
  end
39
+ unless File.readable? File.join(LOLCOMMITS_ROOT, "fonts", "Impact.ttf")
40
+ puts "Couldn't properly read Impact font from gem package, please file a bug?!"
41
+ exit 1
42
+ end
35
43
 
36
44
  #
37
45
  # NO ARGUMENTS SPECIFIED, HELP THE USER OUT
@@ -0,0 +1,41 @@
1
+ Feature: Basic functionality
2
+
3
+ Scenario: App just runs
4
+ When I get help for "lolcommits"
5
+ Then the exit status should be 0
6
+ And the banner should be present
7
+
8
+ Scenario: Enable in a naked git repository
9
+ Given a git repository named "loltest"
10
+ And the git repository named "loltest" has no "post-commit" hook
11
+
12
+ When I cd to "loltest"
13
+ And I successfully run `lolcommits --enable`
14
+
15
+ Then the output should contain "installed lolcommmit hook as:"
16
+ And the output should contain "(to remove later, you can use: lolcommits --disable)"
17
+ And a file named ".git/hooks/post-commit" should exist
18
+ And the exit status should be 0
19
+
20
+ Scenario: Disable in a enabled git repository
21
+ Given a git repository named "lolenabled"
22
+ And the git repository named "lolenabled" has a "post-commit" hook
23
+
24
+ When I cd to "lolenabled"
25
+ And I successfully run `lolcommits --disable`
26
+
27
+ Then the output should contain "removed"
28
+ And a file named ".git/hooks/post-commit" should not exist
29
+ And the exit status should be 0
30
+
31
+ @simulate-capture
32
+ Scenario: Commiting in an enabled repo triggers capture
33
+ Given a git repository named "testcapture"
34
+ And an empty file named "testcapture/FOOBAR"
35
+
36
+ When I cd to "testcapture"
37
+ And I successfully run `lolcommits --enable`
38
+ And I successfully run `git add .`
39
+ And I successfully run `git commit -m 'can haz commit'`
40
+ Then the output should contain "*** Preserving this moment in history."
41
+
@@ -0,0 +1,20 @@
1
+ include FileUtils
2
+
3
+
4
+ Given /^a git repository named "(.*?)"$/ do |repo_name|
5
+ repo_dir = File.join current_dir, repo_name
6
+ mkdir_p repo_dir
7
+ Dir.chdir repo_dir do
8
+ sh "git init ."
9
+ end
10
+ end
11
+
12
+ Given /^the git repository named "(.*?)" has no "(.*?)" hook$/ do |repo_name, hook_name|
13
+ hook_file = File.join current_dir, repo_name, ".git", "hooks", hook_name
14
+ delete(hook_file) if File.exists? hook_file
15
+ end
16
+
17
+ Given /^the git repository named "(.*?)" has a "(.*?)" hook$/ do |repo_name, hook_name|
18
+ hook_file = File.join current_dir, repo_name, ".git", "hooks", hook_name
19
+ touch(hook_file) if not File.exists? hook_file
20
+ end
@@ -0,0 +1,25 @@
1
+ require 'aruba/cucumber'
2
+ require 'methadone/cucumber'
3
+
4
+ ENV['PATH'] = "#{File.expand_path(File.dirname(__FILE__) + '/../../bin')}#{File::PATH_SEPARATOR}#{ENV['PATH']}"
5
+ LIB_DIR = File.join(File.expand_path(File.dirname(__FILE__)),'..','..','lib')
6
+
7
+ Before do
8
+ # Using "announce" causes massive warnings on 1.9.2
9
+ @puts = true
10
+ @original_rubylib = ENV['RUBYLIB']
11
+ ENV['RUBYLIB'] = LIB_DIR + File::PATH_SEPARATOR + ENV['RUBYLIB'].to_s
12
+ end
13
+
14
+ After do
15
+ ENV['RUBYLIB'] = @original_rubylib
16
+ end
17
+
18
+ Before('@simulate-capture') do
19
+ @original_fakecapture = ENV['LOLCOMMITS_FAKECAPTURE']
20
+ ENV['LOLCOMMITS_FAKECAPTURE'] = "1"
21
+ end
22
+
23
+ After('@simulate-capture') do
24
+ ENV['LOLCOMMITS_FAKECAPTURE'] = @original_fakecapture
25
+ end
@@ -29,6 +29,10 @@ module Lolcommits
29
29
  end
30
30
  end
31
31
 
32
+ def is_fakecapture?
33
+ (ENV['LOLCOMMITS_FAKECAPTURE'] == '1' || false)
34
+ end
35
+
32
36
  def most_recent(dir='.')
33
37
  loldir, commit_sha, commit_msg = parse_git
34
38
  Dir.glob(File.join loldir, "*").max_by {|f| File.mtime(f)}
@@ -84,7 +88,11 @@ module Lolcommits
84
88
  #
85
89
  puts "*** Preserving this moment in history."
86
90
  snapshot_loc = File.join loldir, "tmp_snapshot.jpg"
87
- if is_mac?
91
+ # if (ENV['LOLCOMMITS_FAKECAPTURE'] == '1' || false)
92
+ if is_fakecapture?
93
+ test_image = File.join LOLCOMMITS_ROOT, "test", "images", "test_image.jpg"
94
+ FileUtils.cp test_image, snapshot_loc
95
+ elsif is_mac?
88
96
  imagesnap_bin = File.join LOLCOMMITS_ROOT, "ext", "imagesnap", "imagesnap"
89
97
  capture_device = "-d '#{capture_device}'" if capture_device
90
98
  system("#{imagesnap_bin} -q #{snapshot_loc} -w #{capture_delay} #{capture_device}")
@@ -1,3 +1,3 @@
1
1
  module Lolcommits
2
- VERSION = "0.1.5"
2
+ VERSION = "0.2.0"
3
3
  end
@@ -18,12 +18,13 @@ Gem::Specification.new do |s|
18
18
  s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
19
19
  s.require_paths = ["lib"]
20
20
 
21
- # specify any dependencies here; for example:
22
- # s.add_development_dependency "rspec"
23
- # s.add_runtime_dependency "rest-client"
24
- s.add_development_dependency "rake"
25
- s.add_runtime_dependency "rmagick"
26
- s.add_runtime_dependency "git"
27
- s.add_runtime_dependency "choice", ">= 0.1.6"
28
- s.add_runtime_dependency "launchy"
21
+ s.add_runtime_dependency('rmagick', '~> 2.13.1')
22
+ s.add_runtime_dependency('git', '~> 1.2.5')
23
+ s.add_runtime_dependency('choice', '~> 0.1.6')
24
+ s.add_runtime_dependency('launchy')
25
+
26
+ s.add_development_dependency('rdoc')
27
+ s.add_development_dependency('aruba')
28
+ s.add_development_dependency('rake','~> 0.9.2')
29
+ s.add_dependency('methadone', '~>1.2.1')
29
30
  end
@@ -14,6 +14,9 @@ class LolTest < Test::Unit::TestCase
14
14
  end
15
15
  end
16
16
 
17
+ #
18
+ # issue #57, https://github.com/mroth/lolcommits/issues/57
19
+ #
17
20
  def test_tranzlate
18
21
  [["what the hell","(WH|W)UT TEH HELL"],["seriously wtf", "SRSLEH WTF"]].each do |normal, lol|
19
22
  tranzlated = normal.tranzlate
@@ -21,10 +24,20 @@ class LolTest < Test::Unit::TestCase
21
24
  end
22
25
  end
23
26
 
27
+ #
28
+ # issue #53, https://github.com/mroth/lolcommits/issues/53
29
+ # this will test the permissions but only locally, important before building a gem package!
30
+ #
31
+ def test_permissions
32
+ assert File.readable? File.join(LOLCOMMITS_ROOT, "fonts", "Impact.ttf")
33
+ assert File.executable? File.join(LOLCOMMITS_ROOT, "ext", "imagesnap", "imagesnap")
34
+ end
35
+
24
36
  # Hmm.. webcam capture breaks travis-ci tests
25
37
  #def test_can_capture
26
38
  # assert_nothing_raised do
27
39
  # Lolcommits.capture(0,true,'test commit message','test-sha-001')
28
40
  # end
29
41
  #end
42
+
30
43
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: lolcommits
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.5
4
+ version: 0.2.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,17 +9,65 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-06-26 00:00:00.000000000 Z
12
+ date: 2012-07-06 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
- name: rake
15
+ name: rmagick
16
+ requirement: !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ~>
20
+ - !ruby/object:Gem::Version
21
+ version: 2.13.1
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ~>
28
+ - !ruby/object:Gem::Version
29
+ version: 2.13.1
30
+ - !ruby/object:Gem::Dependency
31
+ name: git
32
+ requirement: !ruby/object:Gem::Requirement
33
+ none: false
34
+ requirements:
35
+ - - ~>
36
+ - !ruby/object:Gem::Version
37
+ version: 1.2.5
38
+ type: :runtime
39
+ prerelease: false
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ~>
44
+ - !ruby/object:Gem::Version
45
+ version: 1.2.5
46
+ - !ruby/object:Gem::Dependency
47
+ name: choice
48
+ requirement: !ruby/object:Gem::Requirement
49
+ none: false
50
+ requirements:
51
+ - - ~>
52
+ - !ruby/object:Gem::Version
53
+ version: 0.1.6
54
+ type: :runtime
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ~>
60
+ - !ruby/object:Gem::Version
61
+ version: 0.1.6
62
+ - !ruby/object:Gem::Dependency
63
+ name: launchy
16
64
  requirement: !ruby/object:Gem::Requirement
17
65
  none: false
18
66
  requirements:
19
67
  - - ! '>='
20
68
  - !ruby/object:Gem::Version
21
69
  version: '0'
22
- type: :development
70
+ type: :runtime
23
71
  prerelease: false
24
72
  version_requirements: !ruby/object:Gem::Requirement
25
73
  none: false
@@ -28,14 +76,14 @@ dependencies:
28
76
  - !ruby/object:Gem::Version
29
77
  version: '0'
30
78
  - !ruby/object:Gem::Dependency
31
- name: rmagick
79
+ name: rdoc
32
80
  requirement: !ruby/object:Gem::Requirement
33
81
  none: false
34
82
  requirements:
35
83
  - - ! '>='
36
84
  - !ruby/object:Gem::Version
37
85
  version: '0'
38
- type: :runtime
86
+ type: :development
39
87
  prerelease: false
40
88
  version_requirements: !ruby/object:Gem::Requirement
41
89
  none: false
@@ -44,14 +92,14 @@ dependencies:
44
92
  - !ruby/object:Gem::Version
45
93
  version: '0'
46
94
  - !ruby/object:Gem::Dependency
47
- name: git
95
+ name: aruba
48
96
  requirement: !ruby/object:Gem::Requirement
49
97
  none: false
50
98
  requirements:
51
99
  - - ! '>='
52
100
  - !ruby/object:Gem::Version
53
101
  version: '0'
54
- type: :runtime
102
+ type: :development
55
103
  prerelease: false
56
104
  version_requirements: !ruby/object:Gem::Requirement
57
105
  none: false
@@ -60,37 +108,37 @@ dependencies:
60
108
  - !ruby/object:Gem::Version
61
109
  version: '0'
62
110
  - !ruby/object:Gem::Dependency
63
- name: choice
111
+ name: rake
64
112
  requirement: !ruby/object:Gem::Requirement
65
113
  none: false
66
114
  requirements:
67
- - - ! '>='
115
+ - - ~>
68
116
  - !ruby/object:Gem::Version
69
- version: 0.1.6
70
- type: :runtime
117
+ version: 0.9.2
118
+ type: :development
71
119
  prerelease: false
72
120
  version_requirements: !ruby/object:Gem::Requirement
73
121
  none: false
74
122
  requirements:
75
- - - ! '>='
123
+ - - ~>
76
124
  - !ruby/object:Gem::Version
77
- version: 0.1.6
125
+ version: 0.9.2
78
126
  - !ruby/object:Gem::Dependency
79
- name: launchy
127
+ name: methadone
80
128
  requirement: !ruby/object:Gem::Requirement
81
129
  none: false
82
130
  requirements:
83
- - - ! '>='
131
+ - - ~>
84
132
  - !ruby/object:Gem::Version
85
- version: '0'
133
+ version: 1.2.1
86
134
  type: :runtime
87
135
  prerelease: false
88
136
  version_requirements: !ruby/object:Gem::Requirement
89
137
  none: false
90
138
  requirements:
91
- - - ! '>='
139
+ - - ~>
92
140
  - !ruby/object:Gem::Version
93
- version: '0'
141
+ version: 1.2.1
94
142
  description: Takes a snapshot with your Mac's built-in iSight/FaceTime webcam (or
95
143
  any working webcam on Linux or Windows) every time you git commit code, and archives
96
144
  a lolcat style image with it.
@@ -114,11 +162,15 @@ files:
114
162
  - ext/CommandCam/LICENSE
115
163
  - ext/imagesnap/ReadMeOrDont.rtf
116
164
  - ext/imagesnap/imagesnap
165
+ - features/lolcommits.feature
166
+ - features/step_definitions/lolcommits_steps.rb
167
+ - features/support/env.rb
117
168
  - fonts/Impact.ttf
118
169
  - lib/lolcommits.rb
119
170
  - lib/lolcommits/version.rb
120
171
  - lib/tranzlate/lolspeak.rb
121
172
  - lolcommits.gemspec
173
+ - test/images/test_image.jpg
122
174
  - test/test_lolcommits.rb
123
175
  homepage: http://github.com/mroth/lolcommits
124
176
  licenses:
@@ -146,4 +198,8 @@ signing_key:
146
198
  specification_version: 3
147
199
  summary: Capture webcam image on git commit for lulz.
148
200
  test_files:
201
+ - features/lolcommits.feature
202
+ - features/step_definitions/lolcommits_steps.rb
203
+ - features/support/env.rb
204
+ - test/images/test_image.jpg
149
205
  - test/test_lolcommits.rb