wfarr-github 0.4.1
Sign up to get free protection for your applications and to get access to all the features.
- data/History.txt +41 -0
- data/LICENSE +18 -0
- data/Manifest +38 -0
- data/README.md +187 -0
- data/Rakefile +44 -0
- data/bin/gh +8 -0
- data/bin/github +8 -0
- data/github.gemspec +38 -0
- data/lib/commands/commands.rb +249 -0
- data/lib/commands/helpers.rb +486 -0
- data/lib/commands/issues.rb +17 -0
- data/lib/commands/network.rb +110 -0
- data/lib/github.rb +185 -0
- data/lib/github/command.rb +131 -0
- data/lib/github/extensions.rb +39 -0
- data/lib/github/helper.rb +4 -0
- data/lib/github/ui.rb +19 -0
- data/setup.rb +1551 -0
- data/spec/command_spec.rb +82 -0
- data/spec/commands/command_browse_spec.rb +36 -0
- data/spec/commands/command_clone_spec.rb +87 -0
- data/spec/commands/command_create-from-local_spec.rb +7 -0
- data/spec/commands/command_fetch_spec.rb +56 -0
- data/spec/commands/command_fork_spec.rb +44 -0
- data/spec/commands/command_helper.rb +170 -0
- data/spec/commands/command_home_spec.rb +20 -0
- data/spec/commands/command_info_spec.rb +23 -0
- data/spec/commands/command_issues_spec.rb +97 -0
- data/spec/commands/command_network_spec.rb +30 -0
- data/spec/commands/command_pull-request_spec.rb +51 -0
- data/spec/commands/command_pull_spec.rb +82 -0
- data/spec/commands/command_search_spec.rb +34 -0
- data/spec/commands/command_track_spec.rb +82 -0
- data/spec/commands_spec.rb +49 -0
- data/spec/extensions_spec.rb +36 -0
- data/spec/github_spec.rb +85 -0
- data/spec/helper_spec.rb +368 -0
- data/spec/spec_helper.rb +165 -0
- data/spec/windoze_spec.rb +38 -0
- metadata +128 -0
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,165 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require 'spec'
|
3
|
+
require 'activerecord'
|
4
|
+
|
5
|
+
require File.dirname(__FILE__) + '/../lib/github'
|
6
|
+
|
7
|
+
class Module
|
8
|
+
def metaclass
|
9
|
+
class << self;self;end
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
class Spec::NextInstanceProxy
|
14
|
+
def initialize
|
15
|
+
@deferred = []
|
16
|
+
end
|
17
|
+
|
18
|
+
def method_missing(sym, *args)
|
19
|
+
proxy = Spec::NextInstanceProxy.new
|
20
|
+
@deferred << [sym, args, proxy]
|
21
|
+
proxy
|
22
|
+
end
|
23
|
+
|
24
|
+
def should_receive(*args)
|
25
|
+
method_missing(:should_receive, *args)
|
26
|
+
end
|
27
|
+
alias stub! should_receive
|
28
|
+
|
29
|
+
def invoke(obj)
|
30
|
+
@deferred.each do |(sym, args, proxy)|
|
31
|
+
result = obj.send(sym, *args)
|
32
|
+
proxy.invoke(result)
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
class Class
|
38
|
+
def next_instance
|
39
|
+
meth = metaclass.instance_method(:new)
|
40
|
+
proxy = Spec::NextInstanceProxy.new
|
41
|
+
metaclass.send :define_method, :new do |*args|
|
42
|
+
instance = meth.bind(self).call(*args)
|
43
|
+
proxy.invoke(instance)
|
44
|
+
metaclass.send :define_method, :new, meth
|
45
|
+
instance
|
46
|
+
end
|
47
|
+
proxy
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
module Spec::Example::ExampleGroupSubclassMethods
|
52
|
+
def add_guard(klass, name, is_class = false)
|
53
|
+
guarded = nil # define variable now for scoping
|
54
|
+
target = (is_class ? klass.metaclass : klass)
|
55
|
+
sep = (is_class ? "." : "#")
|
56
|
+
target.class_eval do
|
57
|
+
guarded = instance_method(name)
|
58
|
+
define_method name do |*args|
|
59
|
+
raise "Testing guards violated: Cannot call #{klass}#{sep}#{name} with args #{args.inspect}"
|
60
|
+
end
|
61
|
+
end
|
62
|
+
@guards ||= []
|
63
|
+
@guards << [klass, name, is_class, guarded]
|
64
|
+
end
|
65
|
+
|
66
|
+
def add_class_guard(klass, name)
|
67
|
+
add_guard(klass, name, true)
|
68
|
+
end
|
69
|
+
|
70
|
+
def unguard(klass, name, is_class = false)
|
71
|
+
row = @guards.find { |(k,n,i)| k == klass and n == name and i == is_class }
|
72
|
+
raise "#{klass}#{is_class ? "." : "#"}#{name} is not guarded" if row.nil?
|
73
|
+
(is_class ? klass.metaclass : klass).class_eval do
|
74
|
+
define_method name, row.last
|
75
|
+
end
|
76
|
+
@guards.delete row
|
77
|
+
end
|
78
|
+
|
79
|
+
def class_unguard(klass, name)
|
80
|
+
unguard(klass, name, true)
|
81
|
+
end
|
82
|
+
|
83
|
+
def unguard_all
|
84
|
+
@guards ||= []
|
85
|
+
@guards.each do |klass, name, is_class, guarded|
|
86
|
+
(is_class ? klass.metaclass : klass).class_eval do
|
87
|
+
define_method name, guarded
|
88
|
+
end
|
89
|
+
end
|
90
|
+
@guards.clear
|
91
|
+
end
|
92
|
+
end
|
93
|
+
|
94
|
+
# prevent the use of `` in tests
|
95
|
+
Spec::Runner.configure do |configuration|
|
96
|
+
# load this here so it's covered by the `` guard
|
97
|
+
configuration.prepend_before(:all) do
|
98
|
+
module GitHub
|
99
|
+
load 'helpers.rb'
|
100
|
+
load 'commands.rb'
|
101
|
+
load 'network.rb'
|
102
|
+
load 'issues.rb'
|
103
|
+
end
|
104
|
+
end
|
105
|
+
|
106
|
+
configuration.prepend_after(:each) do
|
107
|
+
GitHub.instance_variable_set :'@options', nil
|
108
|
+
GitHub.instance_variable_set :'@debug', nil
|
109
|
+
end
|
110
|
+
|
111
|
+
configuration.prepend_before(:all) do
|
112
|
+
self.class.send :include, Spec::Example::ExampleGroupSubclassMethods
|
113
|
+
end
|
114
|
+
|
115
|
+
configuration.prepend_before(:each) do
|
116
|
+
add_guard Kernel, :`
|
117
|
+
add_guard Kernel, :system
|
118
|
+
add_guard Kernel, :fork
|
119
|
+
add_guard Kernel, :exec
|
120
|
+
add_class_guard Process, :fork
|
121
|
+
end
|
122
|
+
|
123
|
+
configuration.append_after(:each) do
|
124
|
+
unguard_all
|
125
|
+
end
|
126
|
+
end
|
127
|
+
|
128
|
+
# include this in any example group that defines @helper
|
129
|
+
module SetupMethods
|
130
|
+
def setup_url_for(remote = "origin", user = nil, project = "project")
|
131
|
+
if user.nil?
|
132
|
+
user = remote
|
133
|
+
user = "user" if remote == "origin"
|
134
|
+
end
|
135
|
+
@helper.should_receive(:url_for).any_number_of_times.with(remote).and_return("git://github.com/#{user}/#{project}.git")
|
136
|
+
@helper.should_receive(:origin).any_number_of_times.and_return(remote.to_s)
|
137
|
+
end
|
138
|
+
|
139
|
+
def setup_user_and_branch(user = :user, branch = :master)
|
140
|
+
@helper.should_receive(:user_and_branch).any_number_of_times.and_return([user, branch])
|
141
|
+
end
|
142
|
+
|
143
|
+
def setup_github_token(user = 'drnic', token = 'MY_GITHUB_TOKEN')
|
144
|
+
@command.should_receive(:github_user).any_number_of_times.and_return(user)
|
145
|
+
@command.should_receive(:github_token).any_number_of_times.and_return(token)
|
146
|
+
end
|
147
|
+
end
|
148
|
+
|
149
|
+
# When running specs in TextMate, provide an rputs method to cleanly print objects into HTML display
|
150
|
+
# From http://talklikeaduck.denhaven2.com/2009/09/23/rspec-textmate-pro-tip
|
151
|
+
module Kernel
|
152
|
+
if ENV.keys.find {|env_var| env_var.index("TM_")}
|
153
|
+
def rputs(*args)
|
154
|
+
require 'cgi'
|
155
|
+
puts( *["<pre>", args.collect {|a| CGI.escapeHTML(a.to_s)}, "</pre>"])
|
156
|
+
end
|
157
|
+
def rp(*args)
|
158
|
+
require 'cgi'
|
159
|
+
puts( *["<pre>", args.collect {|a| CGI.escapeHTML(a.inspect)}, "</pre>"])
|
160
|
+
end
|
161
|
+
else
|
162
|
+
alias_method :rputs, :puts
|
163
|
+
alias_method :rp, :p
|
164
|
+
end
|
165
|
+
end
|
@@ -0,0 +1,38 @@
|
|
1
|
+
# this is an extremely hacky spec
|
2
|
+
# intended purely to test the Windoze-specific code
|
3
|
+
|
4
|
+
require 'rubygems'
|
5
|
+
require 'spec'
|
6
|
+
|
7
|
+
describe "github/command.rb" do
|
8
|
+
before(:all) do
|
9
|
+
@orig_platform = RUBY_PLATFORM
|
10
|
+
Object.send :remove_const, :RUBY_PLATFORM
|
11
|
+
Object.const_set :RUBY_PLATFORM, "mswin"
|
12
|
+
end
|
13
|
+
|
14
|
+
after(:all) do
|
15
|
+
Object.send :remove_const, :RUBY_PLATFORM
|
16
|
+
Object.const_set :RUBY_PLATFORM, @orig_platform
|
17
|
+
end
|
18
|
+
|
19
|
+
before(:each) do
|
20
|
+
@filename = File.dirname(__FILE__) + "/../lib/github/command.rb"
|
21
|
+
@data = File.read(@filename)
|
22
|
+
end
|
23
|
+
|
24
|
+
it "should require win32/open3 under Windows" do
|
25
|
+
mod = Module.new
|
26
|
+
mod.should_receive(:require).with("fileutils")
|
27
|
+
mod.should_receive(:require).with("win32/open3")
|
28
|
+
mod.class_eval @data, @filename
|
29
|
+
end
|
30
|
+
|
31
|
+
it "should blow up if win32/open3 isn't present under Windows" do
|
32
|
+
mod = Module.new
|
33
|
+
mod.should_receive(:require).with("fileutils")
|
34
|
+
mod.should_receive(:require).with("win32/open3").and_return { raise LoadError }
|
35
|
+
mod.should_receive(:warn).with("You must 'gem install win32-open3' to use the github command on Windows")
|
36
|
+
lambda { mod.class_eval @data, @filename }.should raise_error(SystemExit)
|
37
|
+
end
|
38
|
+
end
|
metadata
ADDED
@@ -0,0 +1,128 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: wfarr-github
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.4.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Chris Wanstrath, Kevin Ballard, Scott Chacon, Dr Nic Williams
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
|
12
|
+
date: 2009-11-11 00:00:00 -05:00
|
13
|
+
default_executable:
|
14
|
+
dependencies:
|
15
|
+
- !ruby/object:Gem::Dependency
|
16
|
+
name: text-format
|
17
|
+
type: :runtime
|
18
|
+
version_requirement:
|
19
|
+
version_requirements: !ruby/object:Gem::Requirement
|
20
|
+
requirements:
|
21
|
+
- - ">="
|
22
|
+
- !ruby/object:Gem::Version
|
23
|
+
version: 1.0.0
|
24
|
+
version:
|
25
|
+
- !ruby/object:Gem::Dependency
|
26
|
+
name: highline
|
27
|
+
type: :runtime
|
28
|
+
version_requirement:
|
29
|
+
version_requirements: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ~>
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: 1.5.1
|
34
|
+
version:
|
35
|
+
description: The official `github` command line helper for simplifying your GitHub experience.
|
36
|
+
email: chris@ozmm.org
|
37
|
+
executables:
|
38
|
+
- gh
|
39
|
+
- github
|
40
|
+
extensions: []
|
41
|
+
|
42
|
+
extra_rdoc_files:
|
43
|
+
- LICENSE
|
44
|
+
- README.md
|
45
|
+
- bin/gh
|
46
|
+
- bin/github
|
47
|
+
- lib/commands/commands.rb
|
48
|
+
- lib/commands/helpers.rb
|
49
|
+
- lib/commands/issues.rb
|
50
|
+
- lib/commands/network.rb
|
51
|
+
- lib/github.rb
|
52
|
+
- lib/github/command.rb
|
53
|
+
- lib/github/extensions.rb
|
54
|
+
- lib/github/helper.rb
|
55
|
+
- lib/github/ui.rb
|
56
|
+
files:
|
57
|
+
- History.txt
|
58
|
+
- LICENSE
|
59
|
+
- Manifest
|
60
|
+
- README.md
|
61
|
+
- Rakefile
|
62
|
+
- bin/gh
|
63
|
+
- bin/github
|
64
|
+
- lib/commands/commands.rb
|
65
|
+
- lib/commands/helpers.rb
|
66
|
+
- lib/commands/issues.rb
|
67
|
+
- lib/commands/network.rb
|
68
|
+
- lib/github.rb
|
69
|
+
- lib/github/command.rb
|
70
|
+
- lib/github/extensions.rb
|
71
|
+
- lib/github/helper.rb
|
72
|
+
- lib/github/ui.rb
|
73
|
+
- setup.rb
|
74
|
+
- spec/command_spec.rb
|
75
|
+
- spec/commands/command_browse_spec.rb
|
76
|
+
- spec/commands/command_clone_spec.rb
|
77
|
+
- spec/commands/command_create-from-local_spec.rb
|
78
|
+
- spec/commands/command_fetch_spec.rb
|
79
|
+
- spec/commands/command_fork_spec.rb
|
80
|
+
- spec/commands/command_helper.rb
|
81
|
+
- spec/commands/command_home_spec.rb
|
82
|
+
- spec/commands/command_info_spec.rb
|
83
|
+
- spec/commands/command_issues_spec.rb
|
84
|
+
- spec/commands/command_network_spec.rb
|
85
|
+
- spec/commands/command_pull-request_spec.rb
|
86
|
+
- spec/commands/command_pull_spec.rb
|
87
|
+
- spec/commands/command_search_spec.rb
|
88
|
+
- spec/commands/command_track_spec.rb
|
89
|
+
- spec/commands_spec.rb
|
90
|
+
- spec/extensions_spec.rb
|
91
|
+
- spec/github_spec.rb
|
92
|
+
- spec/helper_spec.rb
|
93
|
+
- spec/spec_helper.rb
|
94
|
+
- spec/windoze_spec.rb
|
95
|
+
- github.gemspec
|
96
|
+
has_rdoc: true
|
97
|
+
homepage: http://github.com/
|
98
|
+
post_install_message:
|
99
|
+
rdoc_options:
|
100
|
+
- --line-numbers
|
101
|
+
- --inline-source
|
102
|
+
- --title
|
103
|
+
- Github
|
104
|
+
- --main
|
105
|
+
- README.md
|
106
|
+
require_paths:
|
107
|
+
- lib
|
108
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
109
|
+
requirements:
|
110
|
+
- - ">="
|
111
|
+
- !ruby/object:Gem::Version
|
112
|
+
version: "0"
|
113
|
+
version:
|
114
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
115
|
+
requirements:
|
116
|
+
- - ">="
|
117
|
+
- !ruby/object:Gem::Version
|
118
|
+
version: "1.2"
|
119
|
+
version:
|
120
|
+
requirements: []
|
121
|
+
|
122
|
+
rubyforge_project: github
|
123
|
+
rubygems_version: 1.3.1
|
124
|
+
signing_key:
|
125
|
+
specification_version: 2
|
126
|
+
summary: The official `github` command line helper for simplifying your GitHub experience.
|
127
|
+
test_files: []
|
128
|
+
|