methadone 1.9.5 → 2.0.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.
- checksums.yaml +5 -5
- data/.gitignore +1 -0
- data/.ruby-version +1 -1
- data/.travis.yml +2 -5
- data/README.rdoc +75 -47
- data/Rakefile +25 -29
- data/bin/methadone +13 -5
- data/lib/methadone.rb +1 -1
- data/lib/methadone/cli_logger.rb +0 -1
- data/lib/methadone/cli_logging.rb +1 -1
- data/lib/methadone/cucumber.rb +4 -0
- data/lib/methadone/main.rb +4 -1
- data/lib/methadone/test/base_integration_test.rb +29 -0
- data/lib/methadone/test/integration_test_assertions.rb +63 -0
- data/lib/methadone/version.rb +1 -1
- data/methadone.gemspec +3 -5
- data/templates/full/Rakefile.erb +9 -12
- data/templates/full/bin/executable.erb +2 -0
- data/templates/rspec/spec/something_spec.rb.erb +1 -1
- data/templates/test_unit/test/integration/test_cli.rb.erb +11 -0
- data/templates/test_unit/test/{tc_something.rb.erb → unit/test_something.rb.erb} +0 -0
- data/test/integration/base_integration_test.rb +60 -0
- data/test/integration/test_bootstrap.rb +150 -0
- data/test/integration/test_cli.rb +21 -0
- data/test/integration/test_license.rb +56 -0
- data/test/integration/test_readme.rb +53 -0
- data/test/integration/test_rspec.rb +28 -0
- data/test/integration/test_version.rb +21 -0
- data/test/{base_test.rb → unit/base_test.rb} +0 -0
- data/test/{command_for_tests.sh → unit/command_for_tests.sh} +0 -0
- data/test/{execution_strategy → unit/execution_strategy}/test_base.rb +0 -0
- data/test/{execution_strategy → unit/execution_strategy}/test_jvm.rb +4 -4
- data/test/{execution_strategy → unit/execution_strategy}/test_mri.rb +0 -0
- data/test/{execution_strategy → unit/execution_strategy}/test_open_3.rb +5 -5
- data/test/{execution_strategy → unit/execution_strategy}/test_open_4.rb +5 -5
- data/test/{execution_strategy → unit/execution_strategy}/test_rbx_open_4.rb +0 -0
- data/test/unit/test/test_integration_test_assertions.rb +211 -0
- data/test/{test_cli_logger.rb → unit/test_cli_logger.rb} +17 -17
- data/test/{test_cli_logging.rb → unit/test_cli_logging.rb} +12 -12
- data/test/{test_exit_now.rb → unit/test_exit_now.rb} +4 -4
- data/test/{test_main.rb → unit/test_main.rb} +48 -48
- data/test/{test_sh.rb → unit/test_sh.rb} +37 -37
- metadata +61 -93
- data/features/bootstrap.feature +0 -153
- data/features/license.feature +0 -43
- data/features/readme.feature +0 -26
- data/features/rspec_support.feature +0 -27
- data/features/step_definitions/bootstrap_steps.rb +0 -47
- data/features/step_definitions/license_steps.rb +0 -30
- data/features/step_definitions/readme_steps.rb +0 -26
- data/features/step_definitions/version_steps.rb +0 -4
- data/features/support/env.rb +0 -26
- data/features/version.feature +0 -17
- data/templates/full/features/executable.feature.erb +0 -13
- data/templates/full/features/step_definitions/executable_steps.rb.erb +0 -1
- data/templates/full/features/support/env.rb.erb +0 -16
    
        data/lib/methadone/version.rb
    CHANGED
    
    
    
        data/methadone.gemspec
    CHANGED
    
    | @@ -20,12 +20,10 @@ Gem::Specification.new do |s| | |
| 20 20 | 
             
              s.add_dependency("bundler")
         | 
| 21 21 | 
             
              s.add_development_dependency("rake")
         | 
| 22 22 | 
             
              s.add_development_dependency("rdoc","~> 5.0")
         | 
| 23 | 
            -
              s.add_development_dependency("cucumber")
         | 
| 24 | 
            -
              s.add_development_dependency("aruba", "0.5.1")
         | 
| 25 23 | 
             
              s.add_development_dependency("simplecov", "~> 0.5")
         | 
| 26 24 | 
             
              s.add_development_dependency("clean_test")
         | 
| 27 | 
            -
              s.add_development_dependency("mocha" | 
| 25 | 
            +
              s.add_development_dependency("mocha")
         | 
| 28 26 | 
             
              s.add_development_dependency("sdoc", "1.0.0.rc1")
         | 
| 29 | 
            -
              s.add_development_dependency("rspec" | 
| 30 | 
            -
              s.add_development_dependency("i18n" | 
| 27 | 
            +
              s.add_development_dependency("rspec") # needed for testing the generated tests
         | 
| 28 | 
            +
              s.add_development_dependency("i18n")
         | 
| 31 29 | 
             
            end
         | 
    
        data/templates/full/Rakefile.erb
    CHANGED
    
    | @@ -35,8 +35,6 @@ end | |
| 35 35 | 
             
            <% else %>
         | 
| 36 36 | 
             
            require 'rake/testtask'
         | 
| 37 37 | 
             
            <% end %>
         | 
| 38 | 
            -
            require 'cucumber'
         | 
| 39 | 
            -
            require 'cucumber/rake/task'
         | 
| 40 38 | 
             
            gem 'rdoc' # we need the installed RDoc gem, not the system one
         | 
| 41 39 | 
             
            require 'rdoc/task'
         | 
| 42 40 |  | 
| @@ -50,25 +48,24 @@ RSpec::Core::RakeTask.new do |t| | |
| 50 48 | 
             
            end
         | 
| 51 49 | 
             
            <% else %>
         | 
| 52 50 | 
             
            Rake::TestTask.new do |t|
         | 
| 53 | 
            -
              t.pattern = 'test/ | 
| 51 | 
            +
              t.pattern = 'test/unit/test_*.rb'
         | 
| 54 52 | 
             
            end
         | 
| 55 | 
            -
            <% end %>
         | 
| 56 53 |  | 
| 57 | 
            -
             | 
| 58 | 
            -
             | 
| 59 | 
            -
            Cucumber::Rake::Task.new(:features) do |t|
         | 
| 60 | 
            -
              t.cucumber_opts = "features --format html -o #{CUKE_RESULTS} --format pretty --no-source -x"
         | 
| 61 | 
            -
              t.fork = false
         | 
| 54 | 
            +
            Rake::TestTask.new("test:integration") do |t|
         | 
| 55 | 
            +
              t.pattern = 'test/integration/test_*.rb'
         | 
| 62 56 | 
             
            end
         | 
| 57 | 
            +
            <% end %>
         | 
| 63 58 |  | 
| 64 59 | 
             
            Rake::RDocTask.new do |rd|
         | 
| 65 60 | 
             
              <% if using_readme %>
         | 
| 66 61 | 
             
              rd.main = "README.rdoc"
         | 
| 67 | 
            -
              <% end %>
         | 
| 68 62 | 
             
              rd.rdoc_files.include("README.rdoc","lib/**/*.rb","bin/**/*")
         | 
| 63 | 
            +
              <% else %>
         | 
| 64 | 
            +
              rd.rdoc_files.include("lib/**/*.rb","bin/**/*")
         | 
| 65 | 
            +
              <% end %>
         | 
| 69 66 | 
             
            end
         | 
| 70 67 | 
             
            <% if rspec %>
         | 
| 71 | 
            -
            task :default => [:spec | 
| 68 | 
            +
            task :default => [:spec]
         | 
| 72 69 | 
             
            <% else %>
         | 
| 73 | 
            -
            task :default => [:test | 
| 70 | 
            +
            task :default => [:test,"test:integration"]
         | 
| 74 71 | 
             
            <% end %>
         | 
| @@ -0,0 +1,11 @@ | |
| 1 | 
            +
            require "methadone/test/base_integration_test"
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            class TestSomething < Methadone::BaseIntegrationTest
         | 
| 4 | 
            +
              def test_truth
         | 
| 5 | 
            +
                stdout,stderr,results = run_app("<%= gemname %>","--help")
         | 
| 6 | 
            +
                assert_banner(stdout, "<%= gemname %>", takes_options: true, takes_arguments: false)
         | 
| 7 | 
            +
                assert_option(stdout,"-h", "--help")
         | 
| 8 | 
            +
                assert_option(stdout,"--version")
         | 
| 9 | 
            +
                assert_oneline_summary(stdout)
         | 
| 10 | 
            +
              end
         | 
| 11 | 
            +
            end
         | 
| 
            File without changes
         | 
| @@ -0,0 +1,60 @@ | |
| 1 | 
            +
            require "methadone/test/base_integration_test"
         | 
| 2 | 
            +
            require "clean_test/test_case"
         | 
| 3 | 
            +
             | 
| 4 | 
            +
            class BaseIntegrationTest < Methadone::BaseIntegrationTest
         | 
| 5 | 
            +
              include Clean::Test::GivenWhenThen
         | 
| 6 | 
            +
              include Clean::Test::TestThat
         | 
| 7 | 
            +
              include Clean::Test::Any
         | 
| 8 | 
            +
              def setup
         | 
| 9 | 
            +
                root = (Pathname(__FILE__).dirname / ".." / "..").expand_path
         | 
| 10 | 
            +
                ENV["PATH"] = (root / "bin").to_s + File::PATH_SEPARATOR + ENV["PATH"]
         | 
| 11 | 
            +
                ENV["RUBYLIB"] = (root / "lib").to_s + File::PATH_SEPARATOR + ENV["RUBYLIB"]
         | 
| 12 | 
            +
                @pwd = pwd
         | 
| 13 | 
            +
                @tmdir = Dir.mktmpdir
         | 
| 14 | 
            +
                chdir @tmdir
         | 
| 15 | 
            +
              end
         | 
| 16 | 
            +
             | 
| 17 | 
            +
              def teardown
         | 
| 18 | 
            +
                chdir @pwd
         | 
| 19 | 
            +
                rm_rf @tmdir
         | 
| 20 | 
            +
              end
         | 
| 21 | 
            +
             | 
| 22 | 
            +
            private
         | 
| 23 | 
            +
             | 
| 24 | 
            +
              def methadone(args, allow_failure: false)
         | 
| 25 | 
            +
                command = "methadone #{args}"
         | 
| 26 | 
            +
                stdout, stderr, status = Open3.capture3(command)
         | 
| 27 | 
            +
                if !status.success? && !allow_failure
         | 
| 28 | 
            +
                  raise "'#{command}' failed: #{status.inspect}\n\nSTDOUT:\n\n#{stdout}\n\nSTDERR:\n\n#{stderr}\nEND"
         | 
| 29 | 
            +
                end
         | 
| 30 | 
            +
                [ stdout, stderr, status ]
         | 
| 31 | 
            +
              end
         | 
| 32 | 
            +
             | 
| 33 | 
            +
              def run_app(gemname,args="")
         | 
| 34 | 
            +
                run_in_gem(gemname, "bin/#{gemname}", args)
         | 
| 35 | 
            +
              end
         | 
| 36 | 
            +
             | 
| 37 | 
            +
              # Runs rake inside the app for an integration test, returning stdout and stderr as strings
         | 
| 38 | 
            +
              def rake(gemname,args="")
         | 
| 39 | 
            +
                run_in_gem(gemname, "rake", args)
         | 
| 40 | 
            +
              end
         | 
| 41 | 
            +
             | 
| 42 | 
            +
              # Runs an arbitrary command inside the gem, returning stdout and stderr as strings.
         | 
| 43 | 
            +
              def run_in_gem(gemname, command, args)
         | 
| 44 | 
            +
                stdout = nil
         | 
| 45 | 
            +
                stderr = nil
         | 
| 46 | 
            +
                original_rubylib = ENV["RUBYLIB"]
         | 
| 47 | 
            +
                chdir gemname do
         | 
| 48 | 
            +
                  ENV["RUBYLIB"] = "lib" + File::PATH_SEPARATOR + original_rubylib
         | 
| 49 | 
            +
                  stdout, stderr, result = Open3.capture3("#{command} #{args}")
         | 
| 50 | 
            +
                  unless result.success?
         | 
| 51 | 
            +
                    raise "#{stdout}\n#{stderr}"
         | 
| 52 | 
            +
                  end
         | 
| 53 | 
            +
                end
         | 
| 54 | 
            +
                [ stdout, stderr ]
         | 
| 55 | 
            +
              ensure
         | 
| 56 | 
            +
                ENV["RUBYLIB"] = original_rubylib
         | 
| 57 | 
            +
              end
         | 
| 58 | 
            +
             | 
| 59 | 
            +
             | 
| 60 | 
            +
            end
         | 
| @@ -0,0 +1,150 @@ | |
| 1 | 
            +
            require_relative "base_integration_test"
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            include FileUtils
         | 
| 4 | 
            +
             | 
| 5 | 
            +
            class TestBootstrap < BaseIntegrationTest
         | 
| 6 | 
            +
              test_that "bootstrapping a new app generates basic boilerplate" do
         | 
| 7 | 
            +
                When { methadone "newgem" }
         | 
| 8 | 
            +
                Then {
         | 
| 9 | 
            +
                  [
         | 
| 10 | 
            +
                    "bin/newgem",
         | 
| 11 | 
            +
                    "lib/newgem.rb",
         | 
| 12 | 
            +
                    "lib/newgem/version.rb",
         | 
| 13 | 
            +
                    "newgem.gemspec",
         | 
| 14 | 
            +
                    "README.rdoc",
         | 
| 15 | 
            +
                    "Rakefile",
         | 
| 16 | 
            +
                  ].each do |file|
         | 
| 17 | 
            +
                    assert File.exist?("newgem/#{file}"), "Expected newgem/#{file} to exist"
         | 
| 18 | 
            +
                  end
         | 
| 19 | 
            +
                }
         | 
| 20 | 
            +
                And {
         | 
| 21 | 
            +
                  assert_all_files_staged_in_git
         | 
| 22 | 
            +
                }
         | 
| 23 | 
            +
                When { @stdout, _ = run_app("newgem", "--help") }
         | 
| 24 | 
            +
                Then {
         | 
| 25 | 
            +
                  assert_banner(@stdout, "newgem", takes_options: true, takes_arguments: false)
         | 
| 26 | 
            +
                  assert_standard_options(@stdout)
         | 
| 27 | 
            +
                }
         | 
| 28 | 
            +
                When { @stdout, _ = rake("newgem", "-T") }
         | 
| 29 | 
            +
                Then {
         | 
| 30 | 
            +
                  assert_supports_basic_rake_tasks(@stdout)
         | 
| 31 | 
            +
                }
         | 
| 32 | 
            +
                When { @stdout, _ = rake("newgem", "") }
         | 
| 33 | 
            +
                Then {
         | 
| 34 | 
            +
                  assert_match(/1 tests, 1 assertions, 0 failures, 0 errors/,@stdout)
         | 
| 35 | 
            +
                  assert_match(/1 tests, 8 assertions, 0 failures, 0 errors/,@stdout) # integration test
         | 
| 36 | 
            +
                }
         | 
| 37 | 
            +
                And {
         | 
| 38 | 
            +
                  gemspec = File.read("newgem/newgem.gemspec")
         | 
| 39 | 
            +
                  refute_match(/TODO/,gemspec)
         | 
| 40 | 
            +
                  refute_match(/FIXME/,gemspec)
         | 
| 41 | 
            +
                }
         | 
| 42 | 
            +
              end
         | 
| 43 | 
            +
             | 
| 44 | 
            +
              test_that "bootstrapping a new app with a dash in its name works" do
         | 
| 45 | 
            +
                When { methadone "new-gem" }
         | 
| 46 | 
            +
                Then {
         | 
| 47 | 
            +
                  [
         | 
| 48 | 
            +
                    "bin/new-gem",
         | 
| 49 | 
            +
                    "lib/new/gem.rb",
         | 
| 50 | 
            +
                    "lib/new/gem/version.rb",
         | 
| 51 | 
            +
                    "new-gem.gemspec",
         | 
| 52 | 
            +
                    "README.rdoc",
         | 
| 53 | 
            +
                    "Rakefile",
         | 
| 54 | 
            +
                  ].each do |file|
         | 
| 55 | 
            +
                    assert File.exist?("new-gem/#{file}"), "Expected new-gem/#{file} to exist: #{`ls -ltR new-gem`}}"
         | 
| 56 | 
            +
                  end
         | 
| 57 | 
            +
                }
         | 
| 58 | 
            +
                When { @stdout, _ = run_app("new-gem", "--help") }
         | 
| 59 | 
            +
                Then {
         | 
| 60 | 
            +
                  assert_banner(@stdout, "new-gem", takes_options: true, takes_arguments: false)
         | 
| 61 | 
            +
                  assert_standard_options(@stdout)
         | 
| 62 | 
            +
                }
         | 
| 63 | 
            +
                When { @stdout, _ = rake("new-gem", "-T") }
         | 
| 64 | 
            +
                Then {
         | 
| 65 | 
            +
                  assert_supports_basic_rake_tasks(@stdout)
         | 
| 66 | 
            +
                }
         | 
| 67 | 
            +
                When { @stdout, _ = rake("new-gem", "") }
         | 
| 68 | 
            +
                Then {
         | 
| 69 | 
            +
                  assert_match(/1 tests, 1 assertions, 0 failures, 0 errors/,@stdout)
         | 
| 70 | 
            +
                  assert_match(/1 tests, 8 assertions, 0 failures, 0 errors/,@stdout) # integration test
         | 
| 71 | 
            +
                }
         | 
| 72 | 
            +
                And {
         | 
| 73 | 
            +
                  gemspec = File.read("new-gem/new-gem.gemspec")
         | 
| 74 | 
            +
                  refute_match(/TODO/,gemspec)
         | 
| 75 | 
            +
                  refute_match(/FIXME/,gemspec)
         | 
| 76 | 
            +
                }
         | 
| 77 | 
            +
              end
         | 
| 78 | 
            +
             | 
| 79 | 
            +
              test_that "won't overwrite an existing dir" do
         | 
| 80 | 
            +
                Given { methadone "newgem" }
         | 
| 81 | 
            +
                And {
         | 
| 82 | 
            +
                  File.open("newgem/new_file.txt","w") do |file|
         | 
| 83 | 
            +
                    file.puts "Creating a file to verify it doesn't get blown away"
         | 
| 84 | 
            +
                  end
         | 
| 85 | 
            +
                }
         | 
| 86 | 
            +
                When { @stdout, @stderr, @status = methadone "newgem", allow_failure: true }
         | 
| 87 | 
            +
                Then {
         | 
| 88 | 
            +
                  assert File.exist?("newgem/new_file.txt")
         | 
| 89 | 
            +
                }
         | 
| 90 | 
            +
                And {
         | 
| 91 | 
            +
                  refute @status.success?
         | 
| 92 | 
            +
                }
         | 
| 93 | 
            +
                And {
         | 
| 94 | 
            +
                  assert_match(/#{Regexp.escape("error: newgem exists, use --force to override")}/,@stderr)
         | 
| 95 | 
            +
                }
         | 
| 96 | 
            +
              end
         | 
| 97 | 
            +
             | 
| 98 | 
            +
              test_that "will overwrite an existing dir with --force" do
         | 
| 99 | 
            +
                Given { methadone "newgem" }
         | 
| 100 | 
            +
                And {
         | 
| 101 | 
            +
                  File.open("newgem/new_file.txt","w") do |file|
         | 
| 102 | 
            +
                    file.puts "Creating a file to verify it doesn't get blown away"
         | 
| 103 | 
            +
                  end
         | 
| 104 | 
            +
                }
         | 
| 105 | 
            +
                When { @stdout, @stderr, @status = methadone "newgem --force", allow_failure: true }
         | 
| 106 | 
            +
                Then {
         | 
| 107 | 
            +
                  refute File.exist?("newgem/new_file.txt")
         | 
| 108 | 
            +
                }
         | 
| 109 | 
            +
                And {
         | 
| 110 | 
            +
                  assert @status.success?
         | 
| 111 | 
            +
                }
         | 
| 112 | 
            +
              end
         | 
| 113 | 
            +
             | 
| 114 | 
            +
              test_that "must supply a gem name" do
         | 
| 115 | 
            +
                When { _, @stderr, @status = methadone "", allow_failure: true }
         | 
| 116 | 
            +
                Then {
         | 
| 117 | 
            +
                  refute @status.success?
         | 
| 118 | 
            +
                }
         | 
| 119 | 
            +
                And {
         | 
| 120 | 
            +
                  assert_match(/\'app_name\' is required/,@stderr)
         | 
| 121 | 
            +
                }
         | 
| 122 | 
            +
              end
         | 
| 123 | 
            +
             | 
| 124 | 
            +
              def assert_standard_options(stdout)
         | 
| 125 | 
            +
                assert_option(stdout,"--version")
         | 
| 126 | 
            +
                assert_option(stdout,"--help")
         | 
| 127 | 
            +
                assert_option(stdout,"--log-level")
         | 
| 128 | 
            +
              end
         | 
| 129 | 
            +
             | 
| 130 | 
            +
              def assert_supports_basic_rake_tasks(stdout)
         | 
| 131 | 
            +
                [
         | 
| 132 | 
            +
                  :clean,
         | 
| 133 | 
            +
                  :clobber,
         | 
| 134 | 
            +
                  :clobber_rdoc,
         | 
| 135 | 
            +
                  :rdoc,
         | 
| 136 | 
            +
                  :release,
         | 
| 137 | 
            +
                  :rerdoc,
         | 
| 138 | 
            +
                  :test,
         | 
| 139 | 
            +
                  :install,
         | 
| 140 | 
            +
                  :build,
         | 
| 141 | 
            +
                ].each do |rake_task|
         | 
| 142 | 
            +
                  assert_match(/rake #{rake_task}/,stdout)
         | 
| 143 | 
            +
                end
         | 
| 144 | 
            +
              end
         | 
| 145 | 
            +
             | 
| 146 | 
            +
              def assert_all_files_staged_in_git
         | 
| 147 | 
            +
                stdout, _, __ = run_in_gem("newgem", "git", "ls-files --others --deleted")
         | 
| 148 | 
            +
                assert_match(/\A\Z/, stdout)
         | 
| 149 | 
            +
              end
         | 
| 150 | 
            +
            end
         | 
| @@ -0,0 +1,21 @@ | |
| 1 | 
            +
            require_relative "base_integration_test"
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            include FileUtils
         | 
| 4 | 
            +
             | 
| 5 | 
            +
            class TestCli < BaseIntegrationTest
         | 
| 6 | 
            +
              test_that "methadone CLI is properly documented" do
         | 
| 7 | 
            +
                When { @stdout, _, __ = methadone "--help" }
         | 
| 8 | 
            +
                Then {
         | 
| 9 | 
            +
                  assert_banner(@stdout, "methadone", takes_options: true, takes_arguments: { app_name: :required })
         | 
| 10 | 
            +
                }
         | 
| 11 | 
            +
                And {
         | 
| 12 | 
            +
                  assert_option(@stdout, "--force")
         | 
| 13 | 
            +
                  assert_option(@stdout, "--[no-]readme")
         | 
| 14 | 
            +
                  assert_option(@stdout, "-l", "--license")
         | 
| 15 | 
            +
                  assert_option(@stdout, "--log-level")
         | 
| 16 | 
            +
                }
         | 
| 17 | 
            +
                And {
         | 
| 18 | 
            +
                  assert_oneline_summary(@stdout)
         | 
| 19 | 
            +
                }
         | 
| 20 | 
            +
              end
         | 
| 21 | 
            +
            end
         | 
| @@ -0,0 +1,56 @@ | |
| 1 | 
            +
            require_relative "base_integration_test"
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            include FileUtils
         | 
| 4 | 
            +
             | 
| 5 | 
            +
            class TestLicense < BaseIntegrationTest
         | 
| 6 | 
            +
              test_that "omitting a license generates a warning" do
         | 
| 7 | 
            +
                When { _, @stderr, __ = methadone "newgem" }
         | 
| 8 | 
            +
                Then {
         | 
| 9 | 
            +
                  assert_match(/warning: your app has no license/,@stderr)
         | 
| 10 | 
            +
                }
         | 
| 11 | 
            +
              end
         | 
| 12 | 
            +
             | 
| 13 | 
            +
              test_that "explicitly omitting a license does not generate a warning" do
         | 
| 14 | 
            +
                When { _, @stderr, __ = methadone "newgem -l NONE" }
         | 
| 15 | 
            +
                Then {
         | 
| 16 | 
            +
                  refute_match(/warning: your app has no license/,@stderr)
         | 
| 17 | 
            +
                }
         | 
| 18 | 
            +
              end
         | 
| 19 | 
            +
             | 
| 20 | 
            +
              [
         | 
| 21 | 
            +
                "apache",
         | 
| 22 | 
            +
                "mit",
         | 
| 23 | 
            +
                "gplv2",
         | 
| 24 | 
            +
                "gplv3",
         | 
| 25 | 
            +
              ].each do |license|
         | 
| 26 | 
            +
                test_that "the #{license} license can be included" do
         | 
| 27 | 
            +
                  When { methadone "newgem -l #{license}" }
         | 
| 28 | 
            +
                  Then {
         | 
| 29 | 
            +
                    assert File.exist?("newgem/LICENSE.txt")
         | 
| 30 | 
            +
                  }
         | 
| 31 | 
            +
                  And {
         | 
| 32 | 
            +
                    assert_file("newgem/newgem.gemspec", contains: /#{license.upcase}/)
         | 
| 33 | 
            +
                  }
         | 
| 34 | 
            +
                end
         | 
| 35 | 
            +
              end
         | 
| 36 | 
            +
             | 
| 37 | 
            +
              test_that "a custom license can be included" do
         | 
| 38 | 
            +
                When { methadone "newgem -l custom" }
         | 
| 39 | 
            +
                Then {
         | 
| 40 | 
            +
                  assert File.exist?("newgem/LICENSE.txt")
         | 
| 41 | 
            +
                }
         | 
| 42 | 
            +
                And {
         | 
| 43 | 
            +
                  assert_equal "", File.read("newgem/LICENSE.txt").strip
         | 
| 44 | 
            +
                }
         | 
| 45 | 
            +
              end
         | 
| 46 | 
            +
             | 
| 47 | 
            +
              test_that "a non-custom non-supported license causes an error" do
         | 
| 48 | 
            +
                When { _, @stderr, @result = methadone "newgem -l foobar", allow_failure: true }
         | 
| 49 | 
            +
                Then {
         | 
| 50 | 
            +
                  refute @result.success?
         | 
| 51 | 
            +
                }
         | 
| 52 | 
            +
                And {
         | 
| 53 | 
            +
                  assert_match(/invalid argument: -l foobar/,@stderr)
         | 
| 54 | 
            +
                }
         | 
| 55 | 
            +
              end
         | 
| 56 | 
            +
            end
         | 
| @@ -0,0 +1,53 @@ | |
| 1 | 
            +
            require_relative "base_integration_test"
         | 
| 2 | 
            +
            class TestReadme < BaseIntegrationTest
         | 
| 3 | 
            +
              test_that "a reasonable README is created" do
         | 
| 4 | 
            +
                When {
         | 
| 5 | 
            +
                  methadone "newgem --readme"
         | 
| 6 | 
            +
                }
         | 
| 7 | 
            +
                Then {
         | 
| 8 | 
            +
                  assert File.exist?("newgem/README.rdoc")
         | 
| 9 | 
            +
                }
         | 
| 10 | 
            +
                And {
         | 
| 11 | 
            +
                  readmes = Dir["newgem/README*"].to_a
         | 
| 12 | 
            +
                  assert_equal 1, readmes.size,"Found more than one README: #{readmes.inspect}"
         | 
| 13 | 
            +
                }
         | 
| 14 | 
            +
                And {
         | 
| 15 | 
            +
                  rakefile_contents = File.read("newgem/Rakefile")
         | 
| 16 | 
            +
                  assert_match(/README.rdoc/,rakefile_contents)
         | 
| 17 | 
            +
                  assert_match(/rd.main = ["']README.rdoc["']/,rakefile_contents)
         | 
| 18 | 
            +
                }
         | 
| 19 | 
            +
                And {
         | 
| 20 | 
            +
                  assert_file("newgem/README.rdoc",
         | 
| 21 | 
            +
                              contains: [
         | 
| 22 | 
            +
                                /newgem/,
         | 
| 23 | 
            +
                                /Author::  YOUR NAME \(YOUR EMAIL\)/,
         | 
| 24 | 
            +
                                /\* \{Source on Github\}\[LINK TO GITHUB\]/,
         | 
| 25 | 
            +
                                /RDoc\[LINK TO RDOC.INFO\]/,
         | 
| 26 | 
            +
                                /^== Install/,
         | 
| 27 | 
            +
                                /^== Examples/,
         | 
| 28 | 
            +
                                /^== Contributing/,
         | 
| 29 | 
            +
                  ])
         | 
| 30 | 
            +
                }
         | 
| 31 | 
            +
              end
         | 
| 32 | 
            +
             | 
| 33 | 
            +
              test_that "a readme is created by default" do
         | 
| 34 | 
            +
                When {
         | 
| 35 | 
            +
                  methadone "newgem"
         | 
| 36 | 
            +
                }
         | 
| 37 | 
            +
                Then {
         | 
| 38 | 
            +
                  assert File.exist?("newgem/README.rdoc")
         | 
| 39 | 
            +
                }
         | 
| 40 | 
            +
              end
         | 
| 41 | 
            +
             | 
| 42 | 
            +
              test_that "we can omit a README" do
         | 
| 43 | 
            +
                When {
         | 
| 44 | 
            +
                  methadone "--no-readme newgem"
         | 
| 45 | 
            +
                }
         | 
| 46 | 
            +
                Then {
         | 
| 47 | 
            +
                  refute File.exist?("newgem/README.rdoc")
         | 
| 48 | 
            +
                }
         | 
| 49 | 
            +
                And {
         | 
| 50 | 
            +
                  refute_match(/README/,File.read("newgem/Rakefile"))
         | 
| 51 | 
            +
                }
         | 
| 52 | 
            +
              end
         | 
| 53 | 
            +
            end
         | 
| @@ -0,0 +1,28 @@ | |
| 1 | 
            +
            require_relative "base_integration_test"
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            include FileUtils
         | 
| 4 | 
            +
             | 
| 5 | 
            +
            class TestRSpec < BaseIntegrationTest
         | 
| 6 | 
            +
              test_that "we can generate an app using RSpec instead of Test::Unit" do
         | 
| 7 | 
            +
                When { methadone "--rspec newgem" }
         | 
| 8 | 
            +
                Then {
         | 
| 9 | 
            +
                  refute Dir.exist?("newgem/test")
         | 
| 10 | 
            +
                  assert Dir.exist?("newgem/spec")
         | 
| 11 | 
            +
                  assert File.exist?("newgem/spec/something_spec.rb")
         | 
| 12 | 
            +
                }
         | 
| 13 | 
            +
                And {
         | 
| 14 | 
            +
                  assert_file("newgem/newgem.gemspec", contains: /add_development_dependency\(["']rspec["']/)
         | 
| 15 | 
            +
                }
         | 
| 16 | 
            +
                And {
         | 
| 17 | 
            +
                  stdout,_ = rake("newgem", "-T")
         | 
| 18 | 
            +
                  assert_match(/rake spec/,stdout)
         | 
| 19 | 
            +
                  refute_match(/rake testa/,stdout)
         | 
| 20 | 
            +
                }
         | 
| 21 | 
            +
                When {
         | 
| 22 | 
            +
                  @stdout, _ = rake("newgem","spec")
         | 
| 23 | 
            +
                }
         | 
| 24 | 
            +
                Then {
         | 
| 25 | 
            +
                  assert_match(/1 example,.*0 failures/,@stdout)
         | 
| 26 | 
            +
                }
         | 
| 27 | 
            +
              end
         | 
| 28 | 
            +
            end
         |