ggem 1.7.0 → 1.8.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.
@@ -3,21 +3,38 @@ require "ggem/gem"
3
3
 
4
4
  class GGem::Gem
5
5
 
6
- class BaseTests < Assert::Context
6
+ class UnitTests < Assert::Context
7
7
  desc "GGem::Gem"
8
8
  setup do
9
- @gem = GGem::Gem.new(TMP_PATH, 'a-gem')
9
+ @gem_class = GGem::Gem
10
10
  end
11
- subject { @gem }
11
+
12
+ end
13
+
14
+ class InitTests < UnitTests
15
+ desc "when init"
16
+ setup do
17
+ @gem_name = Factory.string
18
+ @gem = @gem_class.new(TMP_PATH, @gem_name)
19
+ end
20
+ subject{ @gem }
12
21
 
13
22
  should have_readers :root_path, :name
14
23
  should have_imeths :save!, :path, :name=, :module_name, :ruby_name
15
24
 
16
25
  should "know its root path and path" do
17
26
  assert_equal TMP_PATH, subject.root_path
18
- assert_equal File.join(TMP_PATH, 'a-gem'), subject.path
27
+ assert_equal File.join(TMP_PATH, @gem_name), subject.path
28
+ end
29
+
30
+ should "complain if no name is provided" do
31
+ assert_raises(NoNameError) do
32
+ @gem_class.new(TMP_PATH, [nil, ''].choice)
33
+ end
19
34
  end
20
35
 
36
+ # most of the gem's behavior is covered in the system tests
37
+
21
38
  end
22
39
 
23
40
  end
@@ -0,0 +1,154 @@
1
+ require "assert"
2
+ require "ggem/gemspec"
3
+
4
+ require 'ggem/version'
5
+ require 'test/support/cmd_tests_helpers'
6
+
7
+ class GGem::Gemspec
8
+
9
+ class UnitTests < Assert::Context
10
+ desc "GGem::Gemspec"
11
+ setup do
12
+ @gemspec_class = GGem::Gemspec
13
+ end
14
+ subject{ @gemspec_class }
15
+
16
+ should "know the push host meta key" do
17
+ assert_equal 'allowed_push_host', subject::PUSH_HOST_META_KEY
18
+ end
19
+
20
+ should "use Rubygems as its default push host" do
21
+ assert_equal 'https://rubygems.org', subject::DEFAULT_PUSH_HOST
22
+ end
23
+
24
+ should "know which dir to build gems to" do
25
+ assert_equal 'pkg', subject::BUILD_TO_DIRNAME
26
+ end
27
+
28
+ should "know its exceptions" do
29
+ assert subject::NotFoundError < ArgumentError
30
+ assert subject::LoadError < ArgumentError
31
+ assert subject::CmdError < RuntimeError
32
+ end
33
+
34
+ end
35
+
36
+ class InitTests < UnitTests
37
+ desc "when init"
38
+ setup do
39
+ @gem1_root_path = TEST_SUPPORT_PATH.join('gem1')
40
+ @spec = @gemspec_class.new(@gem1_root_path)
41
+ end
42
+ subject{ @spec }
43
+
44
+ should have_readers :path, :name, :version, :version_tag
45
+ should have_readers :gem_file_name, :gem_file, :push_host
46
+ should have_imeths :run_build_cmd, :run_install_cmd, :run_push_cmd
47
+
48
+ should "know its attrs" do
49
+ exp = @gem1_root_path.join('gem1.gemspec')
50
+ assert_equal exp, subject.path
51
+
52
+ assert_equal 'gem1', subject.name
53
+ assert_equal '0.1.0', subject.version.to_s
54
+ assert_equal 'v0.1.0', subject.version_tag
55
+
56
+ exp = "#{subject.name}-#{subject.version}.gem"
57
+ assert_equal exp, subject.gem_file_name
58
+
59
+ exp = File.join(@gemspec_class::BUILD_TO_DIRNAME, subject.gem_file_name)
60
+ assert_equal exp, subject.gem_file
61
+ end
62
+
63
+ should "know its push host" do
64
+ # gem1 has no meta host specified, so the default push host is used
65
+ assert_equal @gemspec_class::DEFAULT_PUSH_HOST, subject.push_host
66
+
67
+ # gem2 has a meta host specified, so that is used over the default
68
+ gem2_spec = @gemspec_class.new(TEST_SUPPORT_PATH.join('gem2'))
69
+ assert_equal 'http://gems.example.com', gem2_spec.push_host
70
+
71
+ # prefer the env push hosts over configured and default hosts
72
+ prev_env_push_host = ENV['GGEM_PUSH_HOST']
73
+ ENV['GGEM_PUSH_HOST'] = Factory.string
74
+ spec = @gemspec_class.new(TEST_SUPPORT_PATH.join(['gem1', 'gem2'].choice))
75
+ assert_equal ENV['GGEM_PUSH_HOST'], spec.push_host
76
+ ENV['GGEM_PUSH_HOST'] = prev_env_push_host
77
+ end
78
+
79
+ should "complain if the given gemspec root doesn't exist" do
80
+ assert_raises(NotFoundError) do
81
+ @gemspec_class.new('path/that-is/not-found')
82
+ end
83
+ end
84
+
85
+ should "complain if the given gemspec root contains no gemspec file" do
86
+ assert_raises(NotFoundError) do
87
+ @gemspec_class.new(TEST_SUPPORT_PATH)
88
+ end
89
+ end
90
+
91
+ end
92
+
93
+ class CmdTests < InitTests
94
+ include GGem::CmdTestsHelpers
95
+ setup do
96
+ @exp_build_path = @gem1_root_path.join(subject.gem_file_name)
97
+ @exp_pkg_path = @gem1_root_path.join(@gemspec_class::BUILD_TO_DIRNAME, subject.gem_file_name)
98
+ end
99
+
100
+ end
101
+
102
+ class RunBuildCmdTests < CmdTests
103
+ desc "`run_build_cmd`"
104
+ setup do
105
+ @exp_cmds_run = [
106
+ "gem build --verbose #{subject.path}",
107
+ "mkdir -p #{@exp_pkg_path.dirname}",
108
+ "mv #{@exp_build_path} #{@exp_pkg_path}"
109
+ ]
110
+ end
111
+
112
+ should "run system cmds to build the gem" do
113
+ assert_exp_cmds_run{ subject.run_build_cmd }
114
+ end
115
+
116
+ should "complain if any system cmds are not successful" do
117
+ assert_exp_cmds_error(CmdError){ subject.run_build_cmd }
118
+ end
119
+
120
+ end
121
+
122
+ class RunInstallCmdTests < CmdTests
123
+ desc "`run_install_cmd`"
124
+ setup do
125
+ @exp_cmds_run = ["gem install #{@exp_pkg_path}"]
126
+ end
127
+
128
+ should "run a system cmd to install the gem" do
129
+ assert_exp_cmds_run{ subject.run_install_cmd }
130
+ end
131
+
132
+ should "complain if the system cmd is not successful" do
133
+ assert_exp_cmds_error(CmdError){ subject.run_install_cmd }
134
+ end
135
+
136
+ end
137
+
138
+ class RunPushCmdTests < CmdTests
139
+ desc "`run_push_cmd`"
140
+ setup do
141
+ @exp_cmds_run = ["gem push #{@exp_pkg_path} --host #{subject.push_host}"]
142
+ end
143
+
144
+ should "run a system cmd to push the gem to the push host" do
145
+ assert_exp_cmds_run{ subject.run_push_cmd }
146
+ end
147
+
148
+ should "complain if the system cmd is not successful" do
149
+ assert_exp_cmds_error(CmdError){ subject.run_push_cmd }
150
+ end
151
+
152
+ end
153
+
154
+ end
@@ -0,0 +1,162 @@
1
+ require "assert"
2
+ require "ggem/git_repo"
3
+
4
+ require 'test/support/cmd_tests_helpers'
5
+
6
+ class GGem::GitRepo
7
+
8
+ class UnitTests < Assert::Context
9
+ desc "GGem::GitRepo"
10
+ setup do
11
+ @git_repo_class = GGem::GitRepo
12
+ end
13
+ subject{ @git_repo_class }
14
+
15
+ should "know its exceptions" do
16
+ assert subject::NotFoundError < ArgumentError
17
+ assert subject::CmdError < RuntimeError
18
+ end
19
+
20
+ end
21
+
22
+ class InitTests < UnitTests
23
+ desc "when init"
24
+ setup do
25
+ @repo_path = TEST_SUPPORT_PATH.join('gem1')
26
+ @repo = @git_repo_class.new(@repo_path)
27
+ end
28
+ subject{ @repo }
29
+
30
+ should have_readers :path
31
+ should have_imeths :run_init_cmd
32
+ should have_imeths :run_validate_clean_cmd, :run_validate_committed_cmd
33
+ should have_imeths :run_push_cmd
34
+ should have_imeths :run_add_version_tag_cmd, :run_rm_tag_cmd
35
+
36
+ should "know its path" do
37
+ assert_equal @repo_path, subject.path
38
+ end
39
+
40
+ end
41
+
42
+ class CmdTests < InitTests
43
+ include GGem::CmdTestsHelpers
44
+
45
+ end
46
+
47
+ class RunInitCmdTests < CmdTests
48
+ desc "`run_init_cmd`"
49
+ setup do
50
+ @exp_cmds_run = [
51
+ "cd #{@repo_path} && git init",
52
+ "cd #{@repo_path} && git add --all && git add -f *.gitkeep"
53
+ ]
54
+ end
55
+
56
+ should "run a system cmd to init the repo and add any existing files" do
57
+ assert_exp_cmds_run{ subject.run_init_cmd }
58
+ end
59
+
60
+ should "complain if any system cmds are not successful" do
61
+ assert_exp_cmds_error(CmdError){ subject.run_init_cmd }
62
+ end
63
+
64
+ end
65
+
66
+ class RunValidateCleanCmdTests < CmdTests
67
+ desc "`run_validate_clean_cmd`"
68
+ setup do
69
+ @exp_cmds_run = [
70
+ "cd #{@repo_path} && git diff --exit-code"
71
+ ]
72
+ end
73
+
74
+ should "run a system cmd to see if there are any diffs" do
75
+ assert_exp_cmds_run{ subject.run_validate_clean_cmd }
76
+ end
77
+
78
+ should "complain if any system cmds are not successful" do
79
+ assert_exp_cmds_error(CmdError){ subject.run_validate_clean_cmd }
80
+ end
81
+
82
+ end
83
+
84
+ class RunValidateCommittedCmdTests < CmdTests
85
+ desc "`run_validate_committed_cmd`"
86
+ setup do
87
+ @exp_cmds_run = [
88
+ "cd #{@repo_path} && git diff-index --quiet --cached HEAD"
89
+ ]
90
+ end
91
+
92
+ should "run a system cmd to see if there is anything still uncommitted" do
93
+ assert_exp_cmds_run{ subject.run_validate_committed_cmd }
94
+ end
95
+
96
+ should "complain if any system cmds are not successful" do
97
+ assert_exp_cmds_error(CmdError){ subject.run_validate_committed_cmd }
98
+ end
99
+
100
+ end
101
+
102
+ class RunPushCmdTests < CmdTests
103
+ desc "`run_push_cmd`"
104
+ setup do
105
+ @exp_cmds_run = [
106
+ "cd #{@repo_path} && git push",
107
+ "cd #{@repo_path} && git push --tags"
108
+ ]
109
+ end
110
+
111
+ should "run a system cmds to push commits/tags" do
112
+ assert_exp_cmds_run{ subject.run_push_cmd }
113
+ end
114
+
115
+ should "complain if any system cmds are not successful" do
116
+ assert_exp_cmds_error(CmdError){ subject.run_push_cmd }
117
+ end
118
+
119
+ end
120
+
121
+ class RunAddVersionTagCmdTests < CmdTests
122
+ desc "`run_add_version_tag_cmd`"
123
+ setup do
124
+ @version = Factory.string
125
+ @tag = Factory.string
126
+
127
+ @exp_cmds_run = [
128
+ "cd #{@repo_path} && git tag -a -m \"Version #{@version}\" #{@tag}"
129
+ ]
130
+ end
131
+
132
+ should "run a system cmd to add a tag for a given version/tag string" do
133
+ assert_exp_cmds_run{ subject.run_add_version_tag_cmd(@version, @tag) }
134
+ end
135
+
136
+ should "complain if any system cmds are not successful" do
137
+ assert_exp_cmds_error(CmdError){ subject.run_add_version_tag_cmd(@version, @tag) }
138
+ end
139
+
140
+ end
141
+
142
+ class RunRmTagCmdTests < CmdTests
143
+ desc "`run_rm_tag_cmd`"
144
+ setup do
145
+ @tag = Factory.string
146
+
147
+ @exp_cmds_run = [
148
+ "cd #{@repo_path} && git tag -d #{@tag}"
149
+ ]
150
+ end
151
+
152
+ should "run a system cmd to remove a tag with the given tag string" do
153
+ assert_exp_cmds_run{ subject.run_rm_tag_cmd(@tag) }
154
+ end
155
+
156
+ should "complain if any system cmds are not successful" do
157
+ assert_exp_cmds_error(CmdError){ subject.run_rm_tag_cmd(@tag) }
158
+ end
159
+
160
+ end
161
+
162
+ end
metadata CHANGED
@@ -1,13 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ggem
3
3
  version: !ruby/object:Gem::Version
4
- hash: 11
5
- prerelease:
6
- segments:
7
- - 1
8
- - 7
9
- - 0
10
- version: 1.7.0
4
+ version: 1.8.0
11
5
  platform: ruby
12
6
  authors:
13
7
  - Kelly Redding
@@ -16,24 +10,39 @@ autorequire:
16
10
  bindir: bin
17
11
  cert_chain: []
18
12
 
19
- date: 2015-11-24 00:00:00 Z
13
+ date: 2016-01-04 00:00:00 Z
20
14
  dependencies:
21
15
  - !ruby/object:Gem::Dependency
22
- requirement: &id001 !ruby/object:Gem::Requirement
23
- none: false
16
+ version_requirements: &id001 !ruby/object:Gem::Requirement
24
17
  requirements:
25
18
  - - ~>
26
19
  - !ruby/object:Gem::Version
27
- hash: 29
28
- segments:
29
- - 2
30
- - 15
31
- version: "2.15"
20
+ version: 2.15.0
32
21
  type: :development
22
+ requirement: *id001
33
23
  name: assert
34
- version_requirements: *id001
35
24
  prerelease: false
36
- description: "\"Juh Gem\", baby! (a generator of gems this is)"
25
+ - !ruby/object:Gem::Dependency
26
+ version_requirements: &id002 !ruby/object:Gem::Requirement
27
+ requirements:
28
+ - - ~>
29
+ - !ruby/object:Gem::Version
30
+ version: 0.1.0
31
+ type: :runtime
32
+ requirement: *id002
33
+ name: much-plugin
34
+ prerelease: false
35
+ - !ruby/object:Gem::Dependency
36
+ version_requirements: &id003 !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ~>
39
+ - !ruby/object:Gem::Version
40
+ version: 3.0.1
41
+ type: :runtime
42
+ requirement: *id003
43
+ name: scmd
44
+ prerelease: false
45
+ description: "\"Juh Gem\", baby! (a gem utility CLI)"
37
46
  email:
38
47
  - kelly@kellyredding.com
39
48
  - collin.redding@me.com
@@ -53,12 +62,15 @@ files:
53
62
  - ggem.gemspec
54
63
  - lib/ggem.rb
55
64
  - lib/ggem/cli.rb
65
+ - lib/ggem/cli/clirb.rb
66
+ - lib/ggem/cli/commands.rb
56
67
  - lib/ggem/gem.rb
68
+ - lib/ggem/gemspec.rb
69
+ - lib/ggem/git_repo.rb
57
70
  - lib/ggem/template.rb
58
71
  - lib/ggem/template_file/Gemfile.erb
59
72
  - lib/ggem/template_file/LICENSE.erb
60
73
  - lib/ggem/template_file/README.md.erb
61
- - lib/ggem/template_file/Rakefile.erb
62
74
  - lib/ggem/template_file/gemspec.erb
63
75
  - lib/ggem/template_file/gitignore.erb
64
76
  - lib/ggem/template_file/lib.rb.erb
@@ -67,46 +79,51 @@ files:
67
79
  - lib/ggem/template_file/test_support_factory.rb.erb
68
80
  - lib/ggem/version.rb
69
81
  - test/helper.rb
82
+ - test/support/cmd_tests_helpers.rb
70
83
  - test/support/factory.rb
84
+ - test/support/gem1/gem1.gemspec
85
+ - test/support/gem2/gem2.gemspec
71
86
  - test/support/name_set.rb
72
87
  - test/system/ggem_tests.rb
88
+ - test/unit/cli_tests.rb
73
89
  - test/unit/gem_tests.rb
90
+ - test/unit/gemspec_tests.rb
91
+ - test/unit/git_repo_tests.rb
74
92
  homepage: http://github.com/redding/ggem
75
93
  licenses:
76
94
  - MIT
95
+ metadata: {}
96
+
77
97
  post_install_message:
78
98
  rdoc_options: []
79
99
 
80
100
  require_paths:
81
101
  - lib
82
102
  required_ruby_version: !ruby/object:Gem::Requirement
83
- none: false
84
103
  requirements:
85
- - - ">="
104
+ - &id004
105
+ - ">="
86
106
  - !ruby/object:Gem::Version
87
- hash: 3
88
- segments:
89
- - 0
90
107
  version: "0"
91
108
  required_rubygems_version: !ruby/object:Gem::Requirement
92
- none: false
93
109
  requirements:
94
- - - ">="
95
- - !ruby/object:Gem::Version
96
- hash: 3
97
- segments:
98
- - 0
99
- version: "0"
110
+ - *id004
100
111
  requirements: []
101
112
 
102
113
  rubyforge_project:
103
- rubygems_version: 1.8.29
114
+ rubygems_version: 2.5.1
104
115
  signing_key:
105
- specification_version: 3
106
- summary: "\"Juh Gem\", baby! (a generator of gems this is)"
116
+ specification_version: 4
117
+ summary: "\"Juh Gem\", baby! (a gem utility CLI)"
107
118
  test_files:
108
119
  - test/helper.rb
120
+ - test/support/cmd_tests_helpers.rb
109
121
  - test/support/factory.rb
122
+ - test/support/gem1/gem1.gemspec
123
+ - test/support/gem2/gem2.gemspec
110
124
  - test/support/name_set.rb
111
125
  - test/system/ggem_tests.rb
126
+ - test/unit/cli_tests.rb
112
127
  - test/unit/gem_tests.rb
128
+ - test/unit/gemspec_tests.rb
129
+ - test/unit/git_repo_tests.rb