Skip to content

Commit

Permalink
Avoid testing Thor internals
Browse files Browse the repository at this point in the history
Thor's `apply` method is responsible for fetching a template when given
a URL.  Therefore, assume that `apply` behaves correctly, and simply
test that `apply` is called correctly.

This avoids errors like https://buildkite.com/rails/rails/builds/74245#540ecdf1-58ea-470a-a397-09f675520eb9/1100-1109
resulting from rails/thor@4ce38c5.
  • Loading branch information
jonathanhefner committed Jan 21, 2021
1 parent 9fcaac6 commit 9495a34
Showing 1 changed file with 8 additions and 9 deletions.
17 changes: 8 additions & 9 deletions railties/test/generators/shared_generator_tests.rb
Original file line number Diff line number Diff line change
Expand Up @@ -82,18 +82,17 @@ def test_template_raises_an_error_with_invalid_path
end

def test_template_is_executed_when_supplied_an_https_path
path = "https://gist.github.com/josevalim/103208/raw/"
template = +%{ say "It works!" }
template.instance_eval "def read; self; end" # Make the string respond to read
url = "https://gist.github.com/josevalim/103208/raw/"
generator([destination_root], template: url, skip_webpack_install: true)

check_open = -> *args do
assert_equal [ path, "Accept" => "application/x-thor-template" ], args
template
end
applied = nil
apply_stub = -> (path, *) { applied = path }

generator([destination_root], template: path, skip_webpack_install: true).stub(:open, check_open, template) do
assert_match(/It works!/, run_generator_instance)
generator.stub(:apply, apply_stub) do
run_generator_instance
end

assert_equal url, applied
end

def test_skip_gemfile
Expand Down

0 comments on commit 9495a34

Please sign in to comment.