1
0
Fork 0
mirror of https://github.com/rails/rails.git synced 2022-11-09 12:12:34 -05:00

Avoid testing Thor internals

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 erikhuda/thor@4ce38c5478.
This commit is contained in:
Jonathan Hefner 2021-01-21 13:22:55 -06:00
parent 9fcaac6fb9
commit 9495a340b9

View file

@ -82,18 +82,17 @@ module SharedGeneratorTests
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
applied = nil
apply_stub = -> (path, *) { applied = path }
generator.stub(:apply, apply_stub) do
run_generator_instance
end
generator([destination_root], template: path, skip_webpack_install: true).stub(:open, check_open, template) do
assert_match(/It works!/, run_generator_instance)
end
assert_equal url, applied
end
def test_skip_gemfile