easy-auto 0.0.1

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.
Files changed (41) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +39 -0
  3. data/Gemfile +4 -0
  4. data/Gemfile.lock +27 -0
  5. data/LICENSE.txt +22 -0
  6. data/README.md +55 -0
  7. data/Rakefile +11 -0
  8. data/bin/create-branch +8 -0
  9. data/bin/create-repo +5 -0
  10. data/bin/easy-authorize +5 -0
  11. data/bin/easy-setup +5 -0
  12. data/bin/pull-request +5 -0
  13. data/easy-auto.gemspec +25 -0
  14. data/lib/easy_auto.rb +13 -0
  15. data/lib/easy_auto/authorize.rb +49 -0
  16. data/lib/easy_auto/client_wrapper.rb +21 -0
  17. data/lib/easy_auto/config_manager.rb +60 -0
  18. data/lib/easy_auto/config_manager_wrapper.rb +9 -0
  19. data/lib/easy_auto/create_branch.rb +53 -0
  20. data/lib/easy_auto/create_repo.rb +75 -0
  21. data/lib/easy_auto/easy_setup.rb +58 -0
  22. data/lib/easy_auto/easy_utilities.rb +14 -0
  23. data/lib/easy_auto/git.rb +57 -0
  24. data/lib/easy_auto/git_wrapper.rb +9 -0
  25. data/lib/easy_auto/pull_request.rb +68 -0
  26. data/lib/easy_auto/set_upstream.rb +16 -0
  27. data/lib/easy_auto/system_helper.rb +29 -0
  28. data/lib/easy_auto/version.rb +3 -0
  29. data/test/lib/easy_auto/authorize_test.rb +17 -0
  30. data/test/lib/easy_auto/create_branch_test.rb +74 -0
  31. data/test/lib/easy_auto/create_repo_test.rb +51 -0
  32. data/test/lib/easy_auto/easy_setup_test.rb +32 -0
  33. data/test/lib/easy_auto/easy_utilities_test.rb +20 -0
  34. data/test/lib/easy_auto/git_test.rb +69 -0
  35. data/test/lib/easy_auto/git_wrapper_test.rb +20 -0
  36. data/test/lib/easy_auto/pull_request_test.rb +78 -0
  37. data/test/lib/easy_auto/set_upstream_test.rb +41 -0
  38. data/test/lib/easy_auto/version_test.rb +7 -0
  39. data/test/test_helper.rb +3 -0
  40. data/todo.md +3 -0
  41. metadata +141 -0
@@ -0,0 +1,32 @@
1
+ require_relative '../../test_helper'
2
+
3
+ SetupMock = Class.new(EasyAuto::EasySetup) do
4
+ def initialize os
5
+ @os = os
6
+ end
7
+
8
+ def os
9
+ @os
10
+ end
11
+
12
+ def system_exit; end
13
+ end
14
+
15
+ describe EasyAuto::EasySetup do
16
+ describe 'checking user os' do
17
+ it 'should reject non-osx/linux machines' do
18
+ subject = SetupMock.new 'not-unix'
19
+ -> { subject.os_check }.must_output "Sorry, your OS isn't supported.\n"
20
+ end
21
+
22
+ it 'should accept linux machines' do
23
+ subject = SetupMock.new 'Linux'
24
+ -> { subject.os_check }.must_output "You have an acceptable os!\n"
25
+ end
26
+
27
+ it 'should accept linux machines' do
28
+ subject = SetupMock.new 'Darwin'
29
+ -> { subject.os_check }.must_output "You have an acceptable os!\n"
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,20 @@
1
+ require_relative '../../test_helper'
2
+
3
+ module EasyAuto
4
+ UtilitiesMock = Class.new do
5
+ include EasyUtilities
6
+ end
7
+ end
8
+
9
+ describe EasyAuto::EasyUtilities do
10
+
11
+ subject { EasyAuto::UtilitiesMock.new }
12
+
13
+ it "should give the class access to :hidden_input" do
14
+ subject.must_respond_to :hidden_input
15
+ end
16
+
17
+ it "should give the class access to :ask" do
18
+ subject.must_respond_to :ask
19
+ end
20
+ end
@@ -0,0 +1,69 @@
1
+ require_relative '../../test_helper'
2
+
3
+ GitMock = Class.new(EasyAuto::Git) do
4
+ def self.perform command
5
+ mock.send "git #{command}"
6
+ end
7
+
8
+ def self.mock
9
+ @mock
10
+ end
11
+
12
+ def self.mock=(mock)
13
+ @mock = mock
14
+ end
15
+ end
16
+
17
+ describe EasyAuto::Git do
18
+
19
+ subject { GitMock }
20
+
21
+ before do
22
+ @mock = MiniTest::Mock.new
23
+ subject.mock = @mock
24
+ end
25
+
26
+ it 'responds to :cli_send (use extend!)' do
27
+ subject.must_respond_to :cli_send
28
+ end
29
+
30
+ describe '#delete_local_and_remote_branch' do
31
+ it 'uses the right git commands to delete the local and remote branch' do
32
+ @mock.expect :send, true, ["git checkout master"]
33
+ @mock.expect :send, true, ["git branch -D test-123"]
34
+ @mock.expect :send, true, ["git push origin :test-123"]
35
+ subject.delete_local_and_remote_branch 'test-123'
36
+ @mock.verify
37
+ end
38
+ end
39
+
40
+ describe '#create_and_switch_to' do
41
+ it 'with one argument' do
42
+ @mock.expect :send, true, ["git checkout -b test-123 "]
43
+ subject.create_and_switch_to 'test-123'
44
+ @mock.verify
45
+ end
46
+
47
+ it 'with two arguments' do
48
+ @mock.expect :send, true, ["git checkout -b test-123 other-branch"]
49
+ subject.create_and_switch_to 'test-123', 'other-branch'
50
+ @mock.verify
51
+ end
52
+ end
53
+
54
+ describe '#current_branch_name' do
55
+ it 'uses the right git commands' do
56
+ @mock.expect :send, true, ["git rev-parse --abbrev-ref HEAD"]
57
+ subject.current_branch_name
58
+ @mock.verify
59
+ end
60
+ end
61
+
62
+ describe '#remote_branch' do
63
+ it 'uses the right git commands' do
64
+ @mock.expect :send, true, ["git rev-parse --abbrev-ref --symbolic-full-name @{u}"]
65
+ subject.remote_branch
66
+ @mock.verify
67
+ end
68
+ end
69
+ end
@@ -0,0 +1,20 @@
1
+ require_relative '../../test_helper'
2
+
3
+ module EasyAuto
4
+ GitMock = Class.new do
5
+ include GitWrapper
6
+ end
7
+ end
8
+
9
+ describe EasyAuto::GitWrapper do
10
+
11
+ subject { EasyAuto::GitMock.new }
12
+
13
+ it "should give the class access to :git" do
14
+ subject.must_respond_to :git
15
+ end
16
+
17
+ it "should return the EasyAuto::Git class" do
18
+ subject.git.must_equal EasyAuto::Git
19
+ end
20
+ end
@@ -0,0 +1,78 @@
1
+ require_relative '../../test_helper'
2
+
3
+ module EasyAuto::ClientWrapper
4
+ def client
5
+ OpenStruct.new login: 'sample-user'
6
+ end
7
+ end
8
+
9
+ class PRMock < EasyAuto::PullRequest
10
+ def initialize mock
11
+ @mock = mock
12
+ end
13
+
14
+ def remote_paths
15
+ "origin\tgit@github.com:repo_owner/easy-auto.git (fetch)\norigin\tgit@github.com:repo_owner/easy-auto.git (push)"
16
+ end
17
+
18
+ def head
19
+ 'awesome-new-feature'
20
+ end
21
+
22
+ def cli_send browser_open_command
23
+ @mock.call browser_open_command
24
+ end
25
+ end
26
+
27
+ describe EasyAuto::PullRequest do
28
+ before do
29
+ @mock = MiniTest::Mock.new
30
+ end
31
+
32
+ subject { PRMock.new @mock }
33
+
34
+ it 'states what branch is requesting to be merged into what branch' do
35
+ repo_owner = 'repo_owner'
36
+ repo_name = 'easy-auto'
37
+ pr_branch = 'awesome-new-feature'
38
+ -> { subject.state_merge_intent }.must_output "Preparing pull request:\n#{repo_owner}/#{repo_name}/#{pr_branch} -> #{repo_owner}/#{repo_name}/master\n"
39
+ end
40
+
41
+ it 'requires the git wrapper' do
42
+ subject.must_respond_to :git
43
+ end
44
+
45
+ it 'requires the client wrapper' do
46
+ subject.must_respond_to :client
47
+ end
48
+
49
+ it 'returns the git class' do
50
+ subject.git.must_be_same_as EasyAuto::Git
51
+ end
52
+
53
+ it 'finds the right username' do
54
+ subject.username.must_equal 'sample-user'
55
+ end
56
+
57
+ it 'returns a string for repo_name' do
58
+ subject.repo_name.must_be_instance_of String
59
+ end
60
+
61
+ it 'returns the first match' do
62
+ subject.repo_name.must_equal 'easy-auto'
63
+ end
64
+
65
+ it 'finds the repo name from #remote_paths' do
66
+ subject.repo_owner.must_equal 'repo_owner'
67
+ end
68
+
69
+ it 'returns the right repo_path' do
70
+ subject.repo_path.must_equal 'repo_owner/easy-auto'
71
+ end
72
+
73
+ it 'opens the right web address' do
74
+ pr_number = 10
75
+ @mock.expect :call, true, ["open 'https://github.com/#{subject.repo_path}/pull/#{pr_number}'"]
76
+ subject.open_in_browser pr_number
77
+ end
78
+ end
@@ -0,0 +1,41 @@
1
+ require_relative '../../test_helper'
2
+
3
+ describe EasyAuto::SetUpstream do
4
+
5
+ subject { EasyAuto::SetUpstream.new 'test-123' }
6
+ let(:git) { subject.git }
7
+
8
+ it 'requires the git wrapper' do
9
+ subject.must_respond_to :git
10
+ end
11
+
12
+ it 'returns the git class' do
13
+ git.must_be_same_as EasyAuto::Git
14
+ end
15
+ end
16
+
17
+ SUMock = Class.new(EasyAuto::SetUpstream) do
18
+ def initialize mock, upstream_branch
19
+ @mock = mock
20
+ @upstream_branch = upstream_branch
21
+ end
22
+
23
+ def set
24
+ @mock.perform "push --set-upstream origin #{upstream_branch}"
25
+ end
26
+ end
27
+
28
+ describe SUMock do
29
+ before do
30
+ @mock = MiniTest::Mock.new
31
+ end
32
+
33
+ subject { SUMock.new @mock, 'test-123' }
34
+
35
+ it 'should correctly set the upstream branch' do
36
+ upstream_branch = 'test-123'
37
+ @mock.expect :perform, true, ["push --set-upstream origin #{upstream_branch}"]
38
+ subject.set
39
+ @mock.verify
40
+ end
41
+ end
@@ -0,0 +1,7 @@
1
+ require_relative '../../test_helper'
2
+
3
+ describe EasyAuto do
4
+ it "must be defined" do
5
+ EasyAuto::VERSION.wont_be_nil
6
+ end
7
+ end
@@ -0,0 +1,3 @@
1
+ require 'minitest/autorun'
2
+ require 'minitest/pride'
3
+ require 'easy_auto'
data/todo.md ADDED
@@ -0,0 +1,3 @@
1
+ change create branch to create-branch <new branch name>, and also add option for
2
+ create-branch <new branch name> <branch to branch from> (defaults to master if not given).
3
+ do the argv thing in the bin script.
metadata ADDED
@@ -0,0 +1,141 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: easy-auto
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Stuart Nelson
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2013-09-23 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ~>
18
+ - !ruby/object:Gem::Version
19
+ version: '1.3'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ~>
25
+ - !ruby/object:Gem::Version
26
+ version: '1.3'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - '>='
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - '>='
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: octokit
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ~>
46
+ - !ruby/object:Gem::Version
47
+ version: '2.0'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ~>
53
+ - !ruby/object:Gem::Version
54
+ version: '2.0'
55
+ description: Easy access to git commands
56
+ email:
57
+ - stuartnelson3@gmail.com
58
+ executables:
59
+ - create-branch
60
+ - create-repo
61
+ - easy-authorize
62
+ - easy-setup
63
+ - pull-request
64
+ extensions: []
65
+ extra_rdoc_files: []
66
+ files:
67
+ - .gitignore
68
+ - Gemfile
69
+ - Gemfile.lock
70
+ - LICENSE.txt
71
+ - README.md
72
+ - Rakefile
73
+ - bin/create-branch
74
+ - bin/create-repo
75
+ - bin/easy-authorize
76
+ - bin/easy-setup
77
+ - bin/pull-request
78
+ - easy-auto.gemspec
79
+ - lib/easy_auto.rb
80
+ - lib/easy_auto/authorize.rb
81
+ - lib/easy_auto/client_wrapper.rb
82
+ - lib/easy_auto/config_manager.rb
83
+ - lib/easy_auto/config_manager_wrapper.rb
84
+ - lib/easy_auto/create_branch.rb
85
+ - lib/easy_auto/create_repo.rb
86
+ - lib/easy_auto/easy_setup.rb
87
+ - lib/easy_auto/easy_utilities.rb
88
+ - lib/easy_auto/git.rb
89
+ - lib/easy_auto/git_wrapper.rb
90
+ - lib/easy_auto/pull_request.rb
91
+ - lib/easy_auto/set_upstream.rb
92
+ - lib/easy_auto/system_helper.rb
93
+ - lib/easy_auto/version.rb
94
+ - test/lib/easy_auto/authorize_test.rb
95
+ - test/lib/easy_auto/create_branch_test.rb
96
+ - test/lib/easy_auto/create_repo_test.rb
97
+ - test/lib/easy_auto/easy_setup_test.rb
98
+ - test/lib/easy_auto/easy_utilities_test.rb
99
+ - test/lib/easy_auto/git_test.rb
100
+ - test/lib/easy_auto/git_wrapper_test.rb
101
+ - test/lib/easy_auto/pull_request_test.rb
102
+ - test/lib/easy_auto/set_upstream_test.rb
103
+ - test/lib/easy_auto/version_test.rb
104
+ - test/test_helper.rb
105
+ - todo.md
106
+ homepage: https://github.com/stuartnelson3/easy-auto
107
+ licenses:
108
+ - MIT
109
+ metadata: {}
110
+ post_install_message:
111
+ rdoc_options: []
112
+ require_paths:
113
+ - lib
114
+ required_ruby_version: !ruby/object:Gem::Requirement
115
+ requirements:
116
+ - - '>='
117
+ - !ruby/object:Gem::Version
118
+ version: '0'
119
+ required_rubygems_version: !ruby/object:Gem::Requirement
120
+ requirements:
121
+ - - '>='
122
+ - !ruby/object:Gem::Version
123
+ version: '0'
124
+ requirements: []
125
+ rubyforge_project:
126
+ rubygems_version: 2.0.7
127
+ signing_key:
128
+ specification_version: 4
129
+ summary: Use the command line to simplify interacting with git
130
+ test_files:
131
+ - test/lib/easy_auto/authorize_test.rb
132
+ - test/lib/easy_auto/create_branch_test.rb
133
+ - test/lib/easy_auto/create_repo_test.rb
134
+ - test/lib/easy_auto/easy_setup_test.rb
135
+ - test/lib/easy_auto/easy_utilities_test.rb
136
+ - test/lib/easy_auto/git_test.rb
137
+ - test/lib/easy_auto/git_wrapper_test.rb
138
+ - test/lib/easy_auto/pull_request_test.rb
139
+ - test/lib/easy_auto/set_upstream_test.rb
140
+ - test/lib/easy_auto/version_test.rb
141
+ - test/test_helper.rb