11require "minitest/autorun"
22require "hoe"
3-
4- Hoe . load_plugins
3+ require_relative "../lib/hoe/package.rb"
54
65class TestHoePackage < Minitest ::Test
76 def setup
@@ -23,6 +22,10 @@ def setup
2322 end
2423
2524 attr_reader :spec
25+
26+ def with_config
27+ yield ( { "otp_command" => "echo my_otp_code" } , "~/.hoerc" )
28+ end
2629 end
2730 end
2831
@@ -31,6 +34,55 @@ def teardown
3134 ENV [ "PRERELEASE" ] = @orig_PRERELEASE
3235 end
3336
37+ def assert_task name , *deps
38+ dep = Rake ::Task [ name ]
39+ assert dep
40+ prereqs = dep . prerequisites . map ( &:to_sym )
41+ deps . each do |dep |
42+ # not asserting existence of tasks because they might be in other plugins
43+ assert_includes prereqs , dep . to_sym
44+ end
45+ end
46+
47+ def test_package_tasks_defined
48+ @tester . define_package_tasks
49+
50+ assert_task :gem , :clean
51+ assert_task :install_gem , :clean , :package , :check_extra_deps
52+ assert_task :postrelease
53+ assert_task :prerelease
54+ assert_task :release , :prerelease , :release_to , :postrelease
55+ assert_task :release_sanity
56+ assert_task :release_to
57+ assert_task :release_to , :release_to_rubygems
58+ assert_task :release_to_rubygems , :clean , :package , :release_sanity
59+ end
60+
61+ def save_env
62+ orig_env = ENV . to_h
63+ yield
64+ ensure
65+ ENV . replace orig_env
66+ end
67+
68+ def test_gem_push
69+ def @tester . sh *cmd_args
70+ @cmd_args = cmd_args
71+ end
72+
73+ def @tester . cmd_args
74+ @cmd_args
75+ end
76+
77+ save_env do
78+ @tester . gem_push %w[ pkg/blah-123.gem ]
79+
80+ exp = %W[ #{ Gem . ruby } -S gem push pkg/blah-123.gem ]
81+ assert_equal exp , @tester . cmd_args
82+ assert_equal "my_otp_code" , ENV [ "GEM_HOST_OTP_CODE" ]
83+ end
84+ end
85+
3486 def test_prerelease_version_pre
3587 ENV [ "PRE" ] = "pre.0"
3688
0 commit comments