monkeyhelper-jeweler 1.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (126) hide show
  1. data/.gitignore +7 -0
  2. data/ChangeLog.markdown +83 -0
  3. data/LICENSE +20 -0
  4. data/README.markdown +170 -0
  5. data/ROADMAP +12 -0
  6. data/Rakefile +106 -0
  7. data/VERSION.yml +4 -0
  8. data/bin/jeweler +8 -0
  9. data/features/generator/cucumber.feature +83 -0
  10. data/features/generator/directory_layout.feature +76 -0
  11. data/features/generator/dotdocument.feature +14 -0
  12. data/features/generator/env_options.feature +9 -0
  13. data/features/generator/git.feature +94 -0
  14. data/features/generator/license.feature +11 -0
  15. data/features/generator/rakefile.feature +110 -0
  16. data/features/generator/readme.feature +12 -0
  17. data/features/generator/test.feature +41 -0
  18. data/features/generator/test_helper.feature +49 -0
  19. data/features/placeholder.feature +5 -0
  20. data/features/step_definitions/debug_steps.rb +6 -0
  21. data/features/step_definitions/filesystem_steps.rb +65 -0
  22. data/features/step_definitions/generator_steps.rb +251 -0
  23. data/features/step_definitions/task_steps.rb +6 -0
  24. data/features/support/env.rb +19 -0
  25. data/features/tasks/build_gem.feature +9 -0
  26. data/features/tasks/version.feature +24 -0
  27. data/features/tasks/version_bumping.feature +33 -0
  28. data/jeweler.gemspec +204 -0
  29. data/lib/jeweler.rb +142 -0
  30. data/lib/jeweler/commands.rb +12 -0
  31. data/lib/jeweler/commands/build_gem.rb +31 -0
  32. data/lib/jeweler/commands/install_gem.rb +26 -0
  33. data/lib/jeweler/commands/release.rb +83 -0
  34. data/lib/jeweler/commands/release_to_rubyforge.rb +51 -0
  35. data/lib/jeweler/commands/setup_rubyforge.rb +38 -0
  36. data/lib/jeweler/commands/validate_gemspec.rb +30 -0
  37. data/lib/jeweler/commands/version/base.rb +41 -0
  38. data/lib/jeweler/commands/version/bump_major.rb +13 -0
  39. data/lib/jeweler/commands/version/bump_minor.rb +12 -0
  40. data/lib/jeweler/commands/version/bump_patch.rb +14 -0
  41. data/lib/jeweler/commands/version/write.rb +12 -0
  42. data/lib/jeweler/commands/write_gemspec.rb +39 -0
  43. data/lib/jeweler/errors.rb +20 -0
  44. data/lib/jeweler/gemspec_helper.rb +76 -0
  45. data/lib/jeweler/generator.rb +284 -0
  46. data/lib/jeweler/generator/application.rb +54 -0
  47. data/lib/jeweler/generator/bacon_mixin.rb +39 -0
  48. data/lib/jeweler/generator/micronaut_mixin.rb +38 -0
  49. data/lib/jeweler/generator/minitest_mixin.rb +39 -0
  50. data/lib/jeweler/generator/options.rb +77 -0
  51. data/lib/jeweler/generator/rspec_mixin.rb +39 -0
  52. data/lib/jeweler/generator/shoulda_mixin.rb +39 -0
  53. data/lib/jeweler/generator/testunit_mixin.rb +39 -0
  54. data/lib/jeweler/rubyforge_tasks.rb +46 -0
  55. data/lib/jeweler/specification.rb +67 -0
  56. data/lib/jeweler/tasks.rb +124 -0
  57. data/lib/jeweler/templates/.document +5 -0
  58. data/lib/jeweler/templates/.gitignore +5 -0
  59. data/lib/jeweler/templates/LICENSE +20 -0
  60. data/lib/jeweler/templates/README.rdoc +7 -0
  61. data/lib/jeweler/templates/Rakefile +102 -0
  62. data/lib/jeweler/templates/bacon/flunking.rb +7 -0
  63. data/lib/jeweler/templates/bacon/helper.rb +8 -0
  64. data/lib/jeweler/templates/features/default.feature +9 -0
  65. data/lib/jeweler/templates/features/support/env.rb +8 -0
  66. data/lib/jeweler/templates/micronaut/flunking.rb +7 -0
  67. data/lib/jeweler/templates/micronaut/helper.rb +17 -0
  68. data/lib/jeweler/templates/minitest/flunking.rb +7 -0
  69. data/lib/jeweler/templates/minitest/helper.rb +11 -0
  70. data/lib/jeweler/templates/rspec/flunking.rb +7 -0
  71. data/lib/jeweler/templates/rspec/helper.rb +9 -0
  72. data/lib/jeweler/templates/shoulda/flunking.rb +7 -0
  73. data/lib/jeweler/templates/shoulda/helper.rb +10 -0
  74. data/lib/jeweler/templates/testunit/flunking.rb +7 -0
  75. data/lib/jeweler/templates/testunit/helper.rb +9 -0
  76. data/lib/jeweler/version_helper.rb +128 -0
  77. data/test/fixtures/bar/VERSION.yml +4 -0
  78. data/test/fixtures/bar/bin/foo_the_ultimate_bin +1 -0
  79. data/test/fixtures/bar/hey_include_me_in_gemspec +0 -0
  80. data/test/fixtures/bar/lib/foo_the_ultimate_lib.rb +1 -0
  81. data/test/fixtures/existing-project-with-version-plaintext/.document +5 -0
  82. data/test/fixtures/existing-project-with-version-plaintext/.gitignore +5 -0
  83. data/test/fixtures/existing-project-with-version-plaintext/LICENSE +20 -0
  84. data/test/fixtures/existing-project-with-version-plaintext/README.rdoc +7 -0
  85. data/test/fixtures/existing-project-with-version-plaintext/Rakefile +82 -0
  86. data/test/fixtures/existing-project-with-version-plaintext/VERSION +1 -0
  87. data/test/fixtures/existing-project-with-version-plaintext/existing-project-with-version.gemspec +29 -0
  88. data/test/fixtures/existing-project-with-version-plaintext/lib/existing_project_with_version.rb +0 -0
  89. data/test/fixtures/existing-project-with-version-plaintext/test/existing_project_with_version_test.rb +7 -0
  90. data/test/fixtures/existing-project-with-version-plaintext/test/test_helper.rb +10 -0
  91. data/test/fixtures/existing-project-with-version-yaml/.document +5 -0
  92. data/test/fixtures/existing-project-with-version-yaml/.gitignore +5 -0
  93. data/test/fixtures/existing-project-with-version-yaml/LICENSE +20 -0
  94. data/test/fixtures/existing-project-with-version-yaml/README.rdoc +7 -0
  95. data/test/fixtures/existing-project-with-version-yaml/Rakefile +82 -0
  96. data/test/fixtures/existing-project-with-version-yaml/VERSION.yml +4 -0
  97. data/test/fixtures/existing-project-with-version-yaml/existing-project-with-version.gemspec +29 -0
  98. data/test/fixtures/existing-project-with-version-yaml/lib/existing_project_with_version.rb +0 -0
  99. data/test/fixtures/existing-project-with-version-yaml/test/existing_project_with_version_test.rb +7 -0
  100. data/test/fixtures/existing-project-with-version-yaml/test/test_helper.rb +10 -0
  101. data/test/geminstaller.yml +12 -0
  102. data/test/jeweler/commands/test_build_gem.rb +72 -0
  103. data/test/jeweler/commands/test_install_gem.rb +21 -0
  104. data/test/jeweler/commands/test_release.rb +405 -0
  105. data/test/jeweler/commands/test_release_to_rubyforge.rb +157 -0
  106. data/test/jeweler/commands/test_setup_rubyforge.rb +88 -0
  107. data/test/jeweler/commands/test_validate_gemspec.rb +27 -0
  108. data/test/jeweler/commands/test_write_gemspec.rb +92 -0
  109. data/test/jeweler/commands/version/test_base.rb +32 -0
  110. data/test/jeweler/commands/version/test_bump_major.rb +22 -0
  111. data/test/jeweler/commands/version/test_bump_minor.rb +19 -0
  112. data/test/jeweler/commands/version/test_bump_patch.rb +20 -0
  113. data/test/jeweler/commands/version/test_write.rb +23 -0
  114. data/test/shoulda_macros/jeweler_macros.rb +35 -0
  115. data/test/test_application.rb +139 -0
  116. data/test/test_gemspec_helper.rb +40 -0
  117. data/test/test_generator.rb +154 -0
  118. data/test/test_generator_initialization.rb +113 -0
  119. data/test/test_generator_mixins.rb +18 -0
  120. data/test/test_helper.rb +133 -0
  121. data/test/test_jeweler.rb +174 -0
  122. data/test/test_options.rb +116 -0
  123. data/test/test_specification.rb +61 -0
  124. data/test/test_tasks.rb +51 -0
  125. data/test/test_version_helper.rb +153 -0
  126. metadata +228 -0
@@ -0,0 +1,174 @@
1
+ require 'test_helper'
2
+
3
+ class TestJeweler < Test::Unit::TestCase
4
+
5
+ def build_jeweler(base_dir = nil)
6
+ base_dir ||= non_git_dir_path
7
+ FileUtils.mkdir_p base_dir
8
+
9
+ Jeweler.new(build_spec, base_dir)
10
+ end
11
+
12
+ def git_dir_path
13
+ File.join(tmp_dir, 'git')
14
+ end
15
+
16
+ def non_git_dir_path
17
+ File.join(tmp_dir, 'nongit')
18
+ end
19
+
20
+ def build_git_dir
21
+
22
+ FileUtils.mkdir_p git_dir_path
23
+ Dir.chdir git_dir_path do
24
+ Git.init
25
+ end
26
+ end
27
+
28
+ def build_non_git_dir
29
+ FileUtils.mkdir_p non_git_dir_path
30
+ end
31
+
32
+ should "raise an error if a nil gemspec is given" do
33
+ assert_raises Jeweler::GemspecError do
34
+ Jeweler.new(nil)
35
+ end
36
+ end
37
+
38
+ should "know if it is in a git repo" do
39
+ build_git_dir
40
+
41
+ assert build_jeweler(git_dir_path).in_git_repo?
42
+ end
43
+
44
+ should "know if it is not in a git repo" do
45
+ build_non_git_dir
46
+
47
+ jeweler = build_jeweler(non_git_dir_path)
48
+ assert ! jeweler.in_git_repo?, "jeweler doesn't know that #{jeweler.base_dir} is not a git repository"
49
+ end
50
+
51
+ should "build and run write gemspec command when writing gemspec" do
52
+ jeweler = build_jeweler
53
+
54
+ command = Object.new
55
+ mock(command).run
56
+
57
+ mock(Jeweler::Commands::WriteGemspec).build_for(jeweler) { command }
58
+
59
+ jeweler.write_gemspec
60
+ end
61
+
62
+ should "build and run validate gemspec command when validating gemspec" do
63
+ jeweler = build_jeweler
64
+
65
+ command = Object.new
66
+ mock(command).run
67
+
68
+ mock(Jeweler::Commands::ValidateGemspec).build_for(jeweler) { command }
69
+
70
+ jeweler.validate_gemspec
71
+ end
72
+
73
+ should "build and run build gem command when building gem" do
74
+ jeweler = build_jeweler
75
+
76
+ command = Object.new
77
+ mock(command).run
78
+
79
+ mock(Jeweler::Commands::BuildGem).build_for(jeweler) { command }
80
+
81
+ jeweler.build_gem
82
+ end
83
+
84
+ should "build and run build gem command when installing gem" do
85
+ jeweler = build_jeweler
86
+
87
+ command = Object.new
88
+ mock(command).run
89
+
90
+ mock(Jeweler::Commands::InstallGem).build_for(jeweler) { command }
91
+
92
+ jeweler.install_gem
93
+ end
94
+
95
+ should "build and run bump major version command when bumping major version" do
96
+ jeweler = build_jeweler
97
+
98
+ command = Object.new
99
+ mock(command).run
100
+
101
+ mock(Jeweler::Commands::Version::BumpMajor).build_for(jeweler) { command }
102
+
103
+ jeweler.bump_major_version
104
+ end
105
+
106
+ should "build and run bump minor version command when bumping minor version" do
107
+ jeweler = build_jeweler
108
+
109
+ command = Object.new
110
+ mock(command).run
111
+
112
+ mock(Jeweler::Commands::Version::BumpMinor).build_for(jeweler) { command }
113
+
114
+ jeweler.bump_minor_version
115
+ end
116
+
117
+ should "build and run write version command when writing version" do
118
+ jeweler = build_jeweler
119
+
120
+ command = Object.new
121
+ mock(command).run
122
+ mock(command).major=(1)
123
+ mock(command).minor=(5)
124
+ mock(command).patch=(2)
125
+
126
+ mock(Jeweler::Commands::Version::Write).build_for(jeweler) { command }
127
+
128
+ jeweler.write_version(1, 5, 2)
129
+ end
130
+
131
+ should "build and run release command when running release" do
132
+ jeweler = build_jeweler
133
+
134
+ command = Object.new
135
+ mock(command).run
136
+
137
+ mock(Jeweler::Commands::Release).build_for(jeweler) { command }
138
+
139
+ jeweler.release
140
+ end
141
+
142
+ should "build and run release to rubyforge command when running release to rubyforge" do
143
+ jeweler = build_jeweler
144
+
145
+ command = Object.new
146
+ mock(command).run
147
+
148
+ mock(Jeweler::Commands::ReleaseToRubyforge).build_for(jeweler) { command }
149
+
150
+ jeweler.release_gem_to_rubyforge
151
+ end
152
+
153
+
154
+ should "respond to gemspec_helper" do
155
+ assert_respond_to build_jeweler, :gemspec_helper
156
+ end
157
+
158
+ should "respond to version_helper" do
159
+ assert_respond_to build_jeweler, :version_helper
160
+ end
161
+
162
+ should "respond to repo" do
163
+ assert_respond_to build_jeweler, :repo
164
+ end
165
+
166
+ should "respond to commit" do
167
+ assert_respond_to build_jeweler, :commit
168
+ end
169
+
170
+ should "respond to rubyforge" do
171
+ assert_respond_to build_jeweler, :rubyforge
172
+ end
173
+
174
+ end
@@ -0,0 +1,116 @@
1
+ require 'test_helper'
2
+
3
+ class TestOptions < Test::Unit::TestCase
4
+
5
+ def self.should_have_testing_framework(testing_framework)
6
+ should "use #{testing_framework} for testing" do
7
+ assert_equal testing_framework.to_sym, @options[:testing_framework]
8
+ end
9
+ end
10
+
11
+ def setup_options(*arguments)
12
+ @options = Jeweler::Generator::Options.new(arguments)
13
+ end
14
+
15
+ def self.for_options(*options)
16
+ context options.join(' ') do
17
+ setup { setup_options *options }
18
+ yield
19
+ end
20
+ end
21
+
22
+ context "default options" do
23
+ setup { setup_options }
24
+ should_have_testing_framework :shoulda
25
+ should 'not create repository' do
26
+ assert ! @options[:create_repo]
27
+ end
28
+ end
29
+
30
+ for_options '--shoulda' do
31
+ should_have_testing_framework :shoulda
32
+ end
33
+
34
+ for_options "--bacon" do
35
+ should_have_testing_framework :bacon
36
+ end
37
+
38
+ for_options "--testunit" do
39
+ should_have_testing_framework :testunit
40
+ end
41
+
42
+ for_options '--minitest' do
43
+ should_have_testing_framework :minitest
44
+ end
45
+
46
+ for_options '--rspec' do
47
+ should_have_testing_framework :rspec
48
+ end
49
+
50
+ for_options '--micronaut' do
51
+ should_have_testing_framework :micronaut
52
+ end
53
+
54
+ for_options '--cucumber' do
55
+ should 'enable cucumber' do
56
+ assert_equal true, @options[:use_cucumber]
57
+ end
58
+ end
59
+
60
+ for_options '--create-repo' do
61
+ should 'create repository' do
62
+ assert @options[:create_repo]
63
+ end
64
+ end
65
+
66
+ for_options '--rubyforge' do
67
+ should 'enable rubyforge' do
68
+ assert @options[:rubyforge]
69
+ end
70
+ end
71
+
72
+ for_options '--summary', 'zomg so awesome' do
73
+ should 'have summary zomg so awesome' do
74
+ assert_equal 'zomg so awesome', @options[:summary]
75
+ end
76
+ end
77
+
78
+ for_options '--directory', 'foo' do
79
+ should 'have directory foo' do
80
+ assert_equal 'foo', @options[:directory]
81
+ end
82
+ end
83
+
84
+ for_options '--help' do
85
+ should 'show help' do
86
+ assert @options[:show_help]
87
+ end
88
+ end
89
+
90
+ for_options '-h' do
91
+ should 'show help' do
92
+ assert @options[:show_help]
93
+ end
94
+ end
95
+
96
+ for_options '--zomg-invalid' do
97
+ should 'be an invalid argument' do
98
+ assert @options[:invalid_argument]
99
+ end
100
+ end
101
+
102
+ context "merging options" do
103
+ should "take options from each" do
104
+ options = Jeweler::Generator::Options.new(["--rspec"]).
105
+ merge Jeweler::Generator::Options.new(["--create-repo"])
106
+ assert_equal :rspec, options[:testing_framework]
107
+ assert options[:create_repo]
108
+ end
109
+
110
+ should "shadow options" do
111
+ options = Jeweler::Generator::Options.new(["--bacon"]).
112
+ merge Jeweler::Generator::Options.new(["--rspec"])
113
+ assert_equal :rspec, options[:testing_framework]
114
+ end
115
+ end
116
+ end
@@ -0,0 +1,61 @@
1
+ require 'test_helper'
2
+
3
+ class TestSpecification < Test::Unit::TestCase
4
+ def setup
5
+ remove_tmpdir!
6
+ path = File.join(FIXTURE_DIR, "existing-project-with-version-yaml")
7
+ Git.init(path)
8
+ FileUtils.cp_r path, tmp_dir
9
+ #breakpoint
10
+
11
+
12
+ @spec = Gem::Specification.new
13
+ @spec.extend(Jeweler::Specification)
14
+ @spec.set_jeweler_defaults(tmp_dir)
15
+ end
16
+
17
+ def teardown
18
+ remove_tmpdir!
19
+ end
20
+
21
+ context "Gem::Specification with Jeweler monkey-patches" do
22
+ context "when setting defaults" do
23
+ should_eventually "should populate `files'" do
24
+ # this implementation changed to use ruby-git
25
+ assert_equal %w{Rakefile VERSION.yml bin/foo_the_ultimate_bin lib/foo_the_ultimate_lib.rb }, @spec.files.sort
26
+ end
27
+
28
+ should "should populate `executables'" do
29
+ assert_equal %w{ foo_the_ultimate_bin }, @spec.executables
30
+ end
31
+
32
+ context "with values already set" do
33
+ setup do
34
+ @spec.files = %w{ hey_include_me_in_gemspec }
35
+ @spec.set_jeweler_defaults(fixture_dir)
36
+ end
37
+
38
+ should "not re-populate `files'" do
39
+ assert_equal %w{ hey_include_me_in_gemspec }, @spec.files
40
+ end
41
+ end
42
+
43
+ context "for rdoc" do
44
+ should "be enabled" do
45
+ assert @spec.has_rdoc
46
+ end
47
+
48
+ should "be utf-8" do
49
+ assert @spec.rdoc_options.include?('--charset=UTF-8')
50
+ end
51
+ end
52
+ end
53
+
54
+ should "allow the user to concat files to the existing `files' array" do
55
+ before = @spec.files.dup
56
+ @spec.files << 'extra'
57
+
58
+ assert_equal before + %w{ extra }, @spec.files
59
+ end
60
+ end
61
+ end
@@ -0,0 +1,51 @@
1
+ require 'test_helper'
2
+
3
+ require 'rake'
4
+ class TestTasks < Test::Unit::TestCase
5
+ include Rake
6
+
7
+ context 'instantiating Jeweler::Tasks' do
8
+ setup do
9
+ Task.clear
10
+
11
+ @jt = Jeweler::Tasks.new {}
12
+ end
13
+
14
+ should 'assign @gemspec' do
15
+ assert_not_nil @jt.gemspec
16
+ end
17
+
18
+ should 'assign @jeweler' do
19
+ assert_not_nil @jt.jeweler
20
+ end
21
+
22
+ should 'yield the gemspec instance' do
23
+ spec = nil; Jeweler::Tasks.new { |s| spec = s }
24
+ assert_not_nil spec
25
+ end
26
+
27
+ should 'set the gemspec defaults before yielding it' do
28
+ Jeweler::Tasks.new do |s|
29
+ assert !s.files.empty?
30
+ end
31
+ end
32
+
33
+ should 'define tasks' do
34
+ assert Task.task_defined?(:build)
35
+ assert Task.task_defined?(:install)
36
+ assert Task.task_defined?(:gemspec)
37
+ assert Task.task_defined?(:build)
38
+ assert Task.task_defined?(:install)
39
+ assert Task.task_defined?(:'gemspec:validate')
40
+ assert Task.task_defined?(:'gemspec:generate')
41
+ assert Task.task_defined?(:version)
42
+ assert Task.task_defined?(:'version:write')
43
+ assert Task.task_defined?(:'version:bump:major')
44
+ assert Task.task_defined?(:'version:bump:minor')
45
+ assert Task.task_defined?(:'version:bump:patch')
46
+ assert Task.task_defined?(:'release')
47
+ assert Task.task_defined?(:'rubyforge:release:gem')
48
+ assert Task.task_defined?(:'rubyforge:setup')
49
+ end
50
+ end
51
+ end
@@ -0,0 +1,153 @@
1
+ require 'test_helper'
2
+
3
+ class TestVersionHelper < Test::Unit::TestCase
4
+
5
+ VERSION_TMP_DIR = File.dirname(__FILE__) + '/version_tmp'
6
+
7
+ def self.should_have_version(major, minor, patch)
8
+ should "have major version #{major}" do
9
+ assert_equal major, @version_helper.major
10
+ end
11
+
12
+ should "have minor version #{minor}" do
13
+ assert_equal minor, @version_helper.minor
14
+ end
15
+
16
+ should "have patch version #{patch}" do
17
+ assert_equal patch, @version_helper.patch
18
+ end
19
+
20
+ version_s = "#{major}.#{minor}.#{patch}"
21
+ should "render string as #{version_s.inspect}" do
22
+ assert_equal version_s, @version_helper.to_s
23
+ end
24
+
25
+ #version_hash = {:major => major, :minor => minor, :patch => patch}
26
+ #should "render hash as #{version_hash.inspect}" do
27
+ #assert_equal version_hash, @version_helper.to_hash
28
+ #end
29
+
30
+ end
31
+
32
+ context "VERSION.yml with 3.5.4" do
33
+ setup do
34
+ FileUtils.rm_rf VERSION_TMP_DIR
35
+ FileUtils.mkdir_p VERSION_TMP_DIR
36
+
37
+ build_version_yml VERSION_TMP_DIR, 3, 5, 4
38
+
39
+ @version_helper = Jeweler::VersionHelper.new VERSION_TMP_DIR
40
+ end
41
+
42
+ should_have_version 3, 5, 4
43
+
44
+ context "bumping major version" do
45
+ setup { @version_helper.bump_major }
46
+ should_have_version 4, 0, 0
47
+ end
48
+
49
+ context "bumping the minor version" do
50
+ setup { @version_helper.bump_minor }
51
+ should_have_version 3, 6, 0
52
+ end
53
+
54
+ context "bumping the patch version" do
55
+ setup { @version_helper.bump_patch }
56
+ should_have_version 3, 5, 5
57
+ end
58
+ end
59
+
60
+ context "VERSION with 3.5.4" do
61
+ setup do
62
+ FileUtils.rm_rf VERSION_TMP_DIR
63
+ FileUtils.mkdir_p VERSION_TMP_DIR
64
+
65
+ build_version_plaintext VERSION_TMP_DIR, 3, 5, 4
66
+
67
+ @version_helper = Jeweler::VersionHelper.new VERSION_TMP_DIR
68
+ end
69
+
70
+ should_have_version 3, 5, 4
71
+
72
+ context "bumping major version" do
73
+ setup { @version_helper.bump_major }
74
+ should_have_version 4, 0, 0
75
+ end
76
+
77
+ context "bumping the minor version" do
78
+ setup { @version_helper.bump_minor }
79
+ should_have_version 3, 6, 0
80
+ end
81
+
82
+ context "bumping the patch version" do
83
+ setup { @version_helper.bump_patch }
84
+ should_have_version 3, 5, 5
85
+ end
86
+ end
87
+
88
+ context "Non-existant VERSION.yml" do
89
+ setup do
90
+ FileUtils.rm_rf VERSION_TMP_DIR
91
+ FileUtils.mkdir_p VERSION_TMP_DIR
92
+ end
93
+
94
+ should "not raise error if the VERSION.yml doesn't exist" do
95
+ assert_nothing_raised Jeweler::VersionYmlError do
96
+ Jeweler::VersionHelper.new(VERSION_TMP_DIR)
97
+ end
98
+ end
99
+
100
+ context "setting an initial version" do
101
+ setup do
102
+ @version_helper = Jeweler::VersionHelper.new(VERSION_TMP_DIR)
103
+ @version_helper.update_to 0, 0, 1
104
+ end
105
+
106
+ should_have_version 0, 0, 1
107
+ should "not create VERSION.yml" do
108
+ assert ! File.exists?(File.join(VERSION_TMP_DIR, 'VERSION.yml'))
109
+ end
110
+ should "not create VERSION" do
111
+ assert ! File.exists?(File.join(VERSION_TMP_DIR, 'VERSION'))
112
+ end
113
+
114
+ context "outputting" do
115
+ setup do
116
+ @version_helper.write
117
+ end
118
+
119
+ should "create VERSION" do
120
+ assert File.exists?(File.join(VERSION_TMP_DIR, 'VERSION'))
121
+ end
122
+
123
+ context "re-reading VERSION" do
124
+ setup do
125
+ @version_helper = Jeweler::VersionHelper.new(VERSION_TMP_DIR)
126
+ end
127
+
128
+ should_have_version 0, 0, 1
129
+ end
130
+ end
131
+ end
132
+ end
133
+
134
+ def build_version_yml(base_dir, major, minor, patch)
135
+ version_path = File.join(base_dir, 'VERSION.yml')
136
+
137
+ File.open(version_path, 'w+') do |f|
138
+ version_hash = {
139
+ 'major' => major.to_i,
140
+ 'minor' => minor.to_i,
141
+ 'patch' => patch.to_i
142
+ }
143
+ YAML.dump(version_hash, f)
144
+ end
145
+ end
146
+
147
+ def build_version_plaintext(base_dir, major, minor, patch)
148
+ version_path = File.join(base_dir, 'VERSION')
149
+ File.open(version_path, 'w+') do |f|
150
+ f.puts "#{major}.#{minor}.#{patch}"
151
+ end
152
+ end
153
+ end