shoe 0.6.2 → 0.7.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (70) hide show
  1. data/{data/shoe/templates/gitignore.erb → .gitignore} +1 -1
  2. data/.rvmrc +1 -0
  3. data/CHANGELOG.rdoc +9 -1
  4. data/Gemfile +2 -0
  5. data/Gemfile.lock +39 -0
  6. data/README.rdoc +20 -72
  7. data/Rakefile +6 -0
  8. data/TODO.rdoc +10 -5
  9. data/lib/shoe.rb +29 -13
  10. data/lib/shoe/extensions.rb +0 -4
  11. data/lib/shoe/extensions/specification.rb +0 -4
  12. data/lib/shoe/extensions/validator.rb +40 -11
  13. data/lib/shoe/tasks.rb +13 -22
  14. data/lib/shoe/tasks/clean.rb +4 -4
  15. data/lib/shoe/tasks/compile.rb +2 -4
  16. data/lib/shoe/tasks/cucumber.rb +5 -9
  17. data/lib/shoe/tasks/rdoc.rb +2 -3
  18. data/lib/shoe/tasks/ronn.rb +5 -5
  19. data/lib/shoe/tasks/{abstract.rb → task.rb} +1 -1
  20. data/lib/shoe/tasks/test.rb +17 -57
  21. data/lib/shoe/util/minitest_colors.rb +60 -0
  22. data/lib/shoe/version.rb +3 -0
  23. data/man/shoe.3 +5 -11
  24. data/man/shoe.3.ronn +4 -13
  25. data/shoe.gemspec +35 -0
  26. data/test/helper.rb +6 -12
  27. data/test/support/assertions.rb +45 -0
  28. data/test/support/command_runner.rb +11 -0
  29. data/test/support/declarative_tests.rb +24 -0
  30. data/test/support/example_project.rb +37 -0
  31. data/test/support/file_manipulation.rb +43 -0
  32. data/test/support/gemspec_manipulation.rb +24 -0
  33. data/test/support/project_files.rb +60 -0
  34. data/test/support/redgreen.rb +6 -0
  35. data/test/system/rake_test.rb +124 -0
  36. metadata +75 -96
  37. data/bin/shoe +0 -18
  38. data/data/shoe/templates/application.erb +0 -23
  39. data/data/shoe/templates/executable.erb +0 -18
  40. data/data/shoe/templates/extconf.erb +0 -2
  41. data/data/shoe/templates/extension.erb +0 -25
  42. data/data/shoe/templates/gemspec.erb +0 -44
  43. data/data/shoe/templates/gitkeep.erb +0 -0
  44. data/data/shoe/templates/manpage_1.erb +0 -29
  45. data/data/shoe/templates/manpage_3.erb +0 -19
  46. data/data/shoe/templates/module.erb +0 -31
  47. data/data/shoe/templates/module_test.rb +0 -7
  48. data/data/shoe/templates/rakefile.erb +0 -3
  49. data/data/shoe/templates/readme.erb +0 -3
  50. data/data/shoe/templates/test_helper.erb +0 -9
  51. data/lib/shoe/extensions/option_parser.rb +0 -52
  52. data/lib/shoe/extensions/pathname.rb +0 -16
  53. data/lib/shoe/extensions/source_index.rb +0 -17
  54. data/lib/shoe/extensions/test_runner.rb +0 -28
  55. data/lib/shoe/generator.rb +0 -147
  56. data/lib/shoe/tasks/release.rb +0 -81
  57. data/man/shoe.1 +0 -63
  58. data/man/shoe.1.ronn +0 -60
  59. data/test/extensions/fake_rubygems_server.rb +0 -62
  60. data/test/extensions/helper_methods.rb +0 -73
  61. data/test/extensions/isolated_environment.rb +0 -50
  62. data/test/extensions/test_case.rb +0 -40
  63. data/test/system/rake_clean_test.rb +0 -36
  64. data/test/system/rake_compile_test.rb +0 -25
  65. data/test/system/rake_cucumber_test.rb +0 -51
  66. data/test/system/rake_rdoc_test.rb +0 -26
  67. data/test/system/rake_release_test.rb +0 -94
  68. data/test/system/rake_ronn_test.rb +0 -25
  69. data/test/system/rake_test_test.rb +0 -45
  70. data/test/system/shoe_test.rb +0 -79
@@ -1,25 +0,0 @@
1
- require 'test/helper'
2
-
3
- class RakeCompileTest < Test::Unit::TestCase
4
- isolate_environment
5
- include_helper_methods
6
-
7
- def setup
8
- super
9
- in_project 'foo'
10
- system 'shoe'
11
- end
12
-
13
- test 'rake compile is active only if there are extensions' do
14
- assert_no_task 'compile'
15
- add_files_for_c_extension
16
- assert_task 'compile'
17
- end
18
-
19
- test 'rake compile builds extensions' do
20
- add_files_for_c_extension
21
- system 'rake compile'
22
- system 'ruby -Ilib -rfoo/extension -e "puts Foo::Extension.name"'
23
- assert_equal 'Foo::Extension', stdout.chomp
24
- end
25
- end
@@ -1,51 +0,0 @@
1
- require 'test/helper'
2
- require 'yaml'
3
-
4
- class RakeCucumberTest < Test::Unit::TestCase
5
- isolate_environment
6
- include_helper_methods
7
-
8
- def setup
9
- super
10
- in_project 'foo'
11
- system 'shoe'
12
- end
13
-
14
- test 'rake cucumber is active only if there are profiles in cucumber.yml', :require => 'cucumber' do
15
- assert_no_task 'cucumber'
16
- add_files_for_cucumber
17
- assert_task 'cucumber'
18
- assert_task 'cucumber:wip'
19
- end
20
-
21
- test 'rake cucumber runs cucumber features', :require => 'cucumber' do
22
- add_files_for_cucumber
23
- system 'rake cucumber'
24
- assert_match '1 scenario (1 passed)', stdout
25
- end
26
-
27
- test 'rake cucumber depends on rake compile', :require => 'cucumber' do
28
- add_files_for_c_extension
29
- add_files_for_cucumber 'require "foo/extension"'
30
- system 'rake cucumber'
31
- assert_match '1 scenario (1 passed)', stdout
32
- end
33
-
34
- private
35
-
36
- def add_files_for_cucumber(assertion='')
37
- write_file 'cucumber.yml', { 'default' => 'features', 'wip' => 'features' }.to_yaml
38
-
39
- write_file 'features/api.feature', <<-END.gsub(/^ /, '')
40
- Feature: The API
41
- Scenario: Exercising something
42
- Then I should pass
43
- END
44
-
45
- write_file 'features/step_definitions/steps.rb', <<-END
46
- Then /^I should pass$/ do
47
- #{assertion}
48
- end
49
- END
50
- end
51
- end
@@ -1,26 +0,0 @@
1
- require 'test/helper'
2
-
3
- class RakeRdocTest < Test::Unit::TestCase
4
- isolate_environment
5
- include_helper_methods
6
-
7
- def setup
8
- super
9
- in_project 'foo'
10
- system 'shoe'
11
- end
12
-
13
- test 'rake rdoc is unconditionally active' do
14
- assert_task 'rdoc'
15
- end
16
-
17
- test 'rake rdoc generates rdoc' do
18
- # Launchy runs BROWSER in a subshell, sending output to /dev/null, so if I
19
- # want to test it, I'm going to have to be more clever than this. For the
20
- # meantime, though, using /bin/echo at least keeps from opening a real
21
- # browser at test time.
22
- ENV['BROWSER'] = '/bin/echo'
23
- system 'rake rdoc'
24
- assert_file 'rdoc/index.html'
25
- end
26
- end
@@ -1,94 +0,0 @@
1
- require 'test/helper'
2
-
3
- class RakeReleaseTest < Test::Unit::TestCase
4
- isolate_environment
5
- include_helper_methods
6
-
7
- def setup
8
- super
9
- in_project 'foo'
10
- system 'shoe --no-test-unit'
11
- end
12
-
13
- test 'rake release is enabled once the version is greater than 0' do
14
- perform_initial_commit
15
- assert_no_task 'release'
16
- bump_version_to '0.1.0'
17
- assert_task 'release'
18
- end
19
-
20
- test 'rake release is disabled if the version has already been tagged' do
21
- perform_initial_commit
22
- bump_version_to '0.1.0'
23
- system 'git tag v0.1.0'
24
- assert_no_task 'release'
25
- end
26
-
27
- test 'rake release is disabled if current branch is not master' do
28
- perform_initial_commit
29
- bump_version_to '0.1.0'
30
- system 'git checkout -b other'
31
- assert_no_task 'release'
32
- end
33
-
34
- test 'rake release tags, builds, and pushes' do
35
- perform_initial_commit
36
- add_git_remote 'origin'
37
- bump_version_to '0.1.0'
38
-
39
- uploaded_gem = with_fake_rubygems_server do
40
- system 'rake release'
41
- end
42
-
43
- # local should have tag
44
- system 'git tag'
45
- assert_match 'v0.1.0', stdout
46
-
47
- # origin should have refs and tags
48
- system "git ls-remote --heads --tags . master"
49
- local = stdout
50
- system "git ls-remote --heads --tags origin master"
51
- assert_match local, stdout
52
-
53
- # gem should be pushed
54
- assert_equal File.read('foo-0.1.0.gem'), uploaded_gem
55
- end
56
-
57
- test 'rake release depends on rake ronn', :require => 'ronn' do
58
- perform_initial_commit
59
- bump_version_to '0.1.0'
60
-
61
- uploaded_gem = with_fake_rubygems_server do
62
- system 'rake release'
63
- end
64
-
65
- assert uploaded_gem.contents.include?('man/foo.3'),
66
- uploaded_gem.contents.inspect
67
- end
68
-
69
- private
70
-
71
- def add_git_remote(name)
72
- path = File.expand_path("../#{name}.git")
73
- system "git init --bare #{path}"
74
- system "git remote add #{name} #{path}"
75
- end
76
-
77
- def bump_version_to(version)
78
- write_file 'lib/foo.rb', <<-END
79
- module Foo
80
- VERSION = '#{version}'
81
- end
82
- END
83
- end
84
-
85
- def perform_initial_commit
86
- system 'git init'
87
- system 'git add .'
88
- system 'git commit -a -m "Initial commit."'
89
- end
90
-
91
- def with_fake_rubygems_server(&block)
92
- Shoe::TestExtensions::FakeRubygemsServer.start(&block)
93
- end
94
- end
@@ -1,25 +0,0 @@
1
- require 'test/helper'
2
-
3
- class RakeRonnTest < Test::Unit::TestCase
4
- isolate_environment
5
- include_helper_methods
6
-
7
- def setup
8
- super
9
- in_project 'foo'
10
- system 'shoe'
11
- end
12
-
13
- test 'rake ronn is enabled if there are ronn files', :require => 'ronn' do
14
- assert_task 'ronn'
15
- system 'rm **/*.ronn'
16
- assert_no_task 'ronn'
17
- end
18
-
19
- test 'rake ronn generates man pages', :require => 'ronn' do
20
- ENV['MANPAGER'] = '/bin/cat'
21
- system 'rake ronn'
22
- assert_file 'man/foo.3'
23
- assert_match 'FOO(3)', stdout.chomp
24
- end
25
- end
@@ -1,45 +0,0 @@
1
- require 'test/helper'
2
-
3
- class RakeTestTest < Test::Unit::TestCase
4
- isolate_environment
5
- include_helper_methods
6
-
7
- def setup
8
- super
9
- in_project 'foo'
10
- system 'shoe --no-test-unit'
11
- end
12
-
13
- test 'rake test is active only if there are test files present' do
14
- assert_no_task 'test'
15
- add_files_for_test
16
- assert_task 'test'
17
- end
18
-
19
- test 'rake test runs tests' do
20
- add_files_for_test
21
- system 'rake test'
22
- assert_match '1 tests, 1 assertions, 0 failures, 0 errors', stdout
23
- end
24
-
25
- test 'rake test depends (perhaps indirectly) on rake compile' do
26
- add_files_for_c_extension
27
- add_files_for_test 'require "foo/extension"'
28
- system 'rake test'
29
- assert_match '1 tests, 0 assertions, 0 failures, 0 errors', stdout
30
- end
31
-
32
- private
33
-
34
- def add_files_for_test(assertion='assert true')
35
- write_file 'test/foo_test.rb', <<-END
36
- require 'test/unit'
37
- class FooTest < Test::Unit::TestCase
38
- def test_something
39
- #{assertion}
40
- end
41
- end
42
- END
43
- end
44
-
45
- end
@@ -1,79 +0,0 @@
1
- require 'test/helper'
2
-
3
- class ShoeTest < Test::Unit::TestCase
4
- isolate_environment
5
- include_helper_methods
6
-
7
- test 'running without arguments generates files named after the current directory' do
8
- Dir.mkdir 'existing_project'
9
- Dir.chdir 'existing_project'
10
- system 'shoe'
11
- assert_find '.', %w(
12
- .gitignore
13
- README.rdoc
14
- Rakefile
15
- existing_project.gemspec
16
- lib/existing_project.rb
17
- man/existing_project.3.ronn
18
- test/helper.rb
19
- test/existing_project_test.rb
20
- )
21
- end
22
-
23
- test 'running with a path generates files named after the path' do
24
- system 'shoe new_project'
25
- assert_file 'new_project/new_project.gemspec'
26
- end
27
-
28
- test 'running in an existing project does not clobber existing files' do
29
- in_project 'existing_project'
30
- write_file 'Rakefile', '# original'
31
- system 'shoe'
32
- assert_match 'WARN: not clobbering existing Rakefile', stderr
33
- assert_equal '# original', File.read('Rakefile')
34
- end
35
-
36
- test 'running produces a buildable gemspec' do
37
- in_project 'foo'
38
- system 'shoe'
39
- system 'gem build foo.gemspec'
40
- assert_file 'foo-0.0.0.gem'
41
- end
42
-
43
- test 'running generates a module with a VERSION constant' do
44
- in_project 'foo'
45
- system 'shoe'
46
- system 'ruby -Ilib -rfoo -e "puts Foo::VERSION"'
47
- assert_equal '0.0.0', stdout.chomp
48
- end
49
-
50
- test 'running --application generates an executable script' do
51
- in_project 'foo'
52
- system 'shoe --application'
53
- system './bin/foo --version'
54
- assert_equal 'foo 0.0.0', stdout.chomp
55
- end
56
-
57
- test 'running --data generates a datadir helper method' do
58
- in_project 'foo'
59
- system 'shoe --data'
60
- write_file 'data/foo/file', 'DATA!'
61
- system 'ruby -Ilib -rfoo -e "puts Foo.datadir.join(\"file\").read"'
62
- assert_equal 'DATA!', stdout.chomp
63
- end
64
-
65
- test 'running --extension generates an Extension' do
66
- in_project 'foo'
67
- system 'shoe --extension'
68
- Dir.chdir('ext/foo') { system 'ruby extconf.rb && make' }
69
- system 'ruby -Ilib -Iext -rfoo -e "puts Foo::Extension.name"'
70
- assert_equal 'Foo::Extension', stdout.chomp
71
- end
72
-
73
- test 'running --test generates passing tests' do
74
- in_project 'foo'
75
- system 'shoe --test'
76
- system 'testrb -I. -Ilib test/*_test.rb'
77
- assert_match '1 tests, 1 assertions, 0 failures, 0 errors', stdout
78
- end
79
- end