aboutsummaryrefslogtreecommitdiffstats
path: root/actionview/test
Commit message (Collapse)AuthorAgeFilesLines
* Empty array instead of nil for source_extractGuilherme Mansur2019-07-141-0/+16
| | | | | | | | | | The source_extract method will return nil when it can't find the file name in the backtrace, methods that consume this method expect an array and the nil ends up causing type errors down the road like it happened here: #36341. This patch refactors the source_extract method so that it returns an empty array instead of nil when it can't find the source code. Co-authored-by: Kasper Timm Hansen <kaspth@gmail.com>
* Merge pull request #36482 from Shopify/fix-translation-helper-default-hashRafael França2019-06-171-0/+5
|\ | | | | Fix TranslationHelper#translate handling of Hash defaults
| * Fix TranslationHelper#translate handling of Hash defaultsJean Boussier2019-06-141-0/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | It is sometimes expected of the `translate` methods to return a Hash, for instance it's the case of the `number.format` key. As such users might need to specify a Hash default, e.g. `translate(:'some.format', default: { separator: '.', delimiter: ',' })`. This works as expected with the `I18n.translate` methods, however `TranslationHelper#translate` apply `Array()` on the default value. As a result the default value end up as `[:separator, '.', :delimiter, ',']`.
* | Fix rubocop violationsRyuta Kamizono2019-06-141-1/+0
|/
* Merge pull request #36437 from sudara/fix_programmatic_clicks_with_data_remoteGannon McGibbon2019-06-131-0/+14
|\ | | | | Fix programmatic clicks with data-remote
| * Ensure non-mouse/programmatic clicks work with data-remoteSudara2019-06-131-0/+14
| |
* | Merge pull request #36388 from joelhawksley/actionview-componentAaron Patterson2019-06-132-0/+63
|\ \ | | | | | | Introduce ActionView::Component
| * | `RenderingHelper` supports rendering objects that `respond_to?` `:render_in`Joel Hawksley2019-06-122-0/+63
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Co-authored-by: Natasha Umer <natashau@github.com> Co-authored-by: Aaron Patterson <tenderlove@github.com> Co-authored-by: Shawn Allen <shawnbot@github.com> Co-authored-by: Emily Plummer <emplums@github.com> Co-authored-by: Diana Mounter <broccolini@github.com> Co-authored-by: John Hawthorn <jhawthorn@github.com> Co-authored-by: Nathan Herald <myobie@github.com> Co-authored-by: Zaid Zawaideh <zawaideh@github.com> Co-authored-by: Zach Ahn <engineering@zachahn.com>
* | | Enable `Layout/EmptyLinesAroundAccessModifier` copRyuta Kamizono2019-06-137-6/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We sometimes say "✂️ newline after `private`" in a code review (e.g. https://github.com/rails/rails/pull/18546#discussion_r23188776, https://github.com/rails/rails/pull/34832#discussion_r244847195). Now `Layout/EmptyLinesAroundAccessModifier` cop have new enforced style `EnforcedStyle: only_before` (https://github.com/rubocop-hq/rubocop/pull/7059). That cop and enforced style will reduce the our code review cost.
* | | Merge pull request #36422 from jhawthorn/parallelize_actionviewJohn Hawthorn2019-06-063-39/+13
|\ \ \ | |_|/ |/| | Run actionview tests in parallel
| * | Run actionview tests in parallelJohn Hawthorn2019-06-052-0/+12
| | |
| * | Remove actionview tests which modify fixturesJohn Hawthorn2019-06-051-39/+1
| |/ | | | | | | | | | | | | | | | | | | We shouldn't modify fixtures (or any files which are checked-in). It prevents us from parallelizing, and probably has other issues. We could fix these tests by copying the file to a tmpdir and modifying it there, but I don't think they are testing anything useful anymore. Re-initializing a resolver isn't representative of "uncached" rendering (either in dev-mode or using lookup_context.disable_cache).
* / Bump rubocop to 0.71Abhay Nikam2019-06-061-1/+1
|/
* Change `ActionDispatch::Response#content_type` returning Content-Type header ↵yuuji.yaginuma2019-06-011-12/+12
| | | | | | | | | | | | | | | | | | | | | | | | | | as it is Since #35709, `Response#conten_type` returns only MIME type correctly. It is a documented behavior that this method only returns MIME type, so this change seems appropriate. https://github.com/rails/rails/blob/39de7fac0507070e3c5f8b33fbad6fced84d97ed/actionpack/lib/action_dispatch/http/response.rb#L245-L249 But unfortunately, some users expect this method to return all Content-Type that does not contain charset. This seems to be breaking changes. We can change this behavior with the deprecate cycle. But, in that case, a method needs that include Content-Type with additional parameters. And that method name is probably the `content_type` seems to properly. So I changed the new behavior to more appropriate `media_type` method. And `Response#content_type` changed (as the method name) to return Content-Type header as it is. Fixes #35709. [Rafael Mendonça França & Yuuji Yaginuma ]
* Fix select_tag so that is doesn't change options when include_blank is setYounes SERRAJ2019-05-221-0/+7
|
* Remove useless `GC.start` in `test/template/render_test.rb`Ryuta Kamizono2019-05-061-14/+0
| | | | | The `GC.start` was added at b29e893, but the finalizer has been removed at 7d0ce78 in #35036.
* Clear Resolvers' cache after running RenderTestCases' test casesst00122019-05-061-4/+9
| | | | | | | | | The templates rendered in RenderTestCases tests will be cached by the resolvers unexpectedly. And this will break other tests when executed in certain order. (See https://github.com/rails/rails/issues/36154 for more detail) So to fix this issue, we just need to clear the caches on all resolvers.
* Merge pull request #32313 from lulalala/model_error_as_objectRafael França2019-04-242-7/+17
|\ | | | | Model error as object
| * Raise deprecation for calling `[:f] = 'b'` or `[:f] << 'b'`lulalala2019-03-312-7/+17
| | | | | | | | Revert some tests to ensure back compatibility
* | Bump RuboCop to 0.67.2Koichi ITO2019-04-161-2/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Performance cops will be extracted from RuboCop to RuboCop Performance when next RuboCop 0.68 will be released. https://github.com/rubocop-hq/rubocop/issues/5977 RuboCop 0.67 is its transition period. Since rails/rails repository uses Performance cops, This PR added rubocop-performance gem to Gemfile. And this PR fixes some offenses using the following auto-correct. ```console % bundle exec rubocop -a Offenses: activerecord/test/cases/connection_adapters/connection_handlers_multi_db_test.rb:212:26: C: [Corrected] Layout/SpaceAroundOperators: Operator = > should be surrounded by a single space. "primary" => { adapter: "sqlite3", database: "db/primary.sqlite3" } ^^ activerecord/test/cases/connection_adapters/connection_handlers_multi_db_test.rb:239:26: C: [Corrected] Layout/SpaceAroundOperators: Operator => should be surrounded by a single space. "primary" => { adapter: "sqlite3", database: "db/primary.sqlite3" } ^^ actionview/test/template/resolver_shared_tests.rb:1:1: C: [Corrected] Style/FrozenStringLiteralComment: Missing magic comment # frozen_string_literal: true. module ResolverSharedTests ^ actionview/test/template/resolver_shared_tests.rb:10:33: C: [Corrected] Layout/SpaceAroundEqualsInParameterDefault: Surrounding space missing in default value assignment. def with_file(filename, source="File at #{filename}") ^ actionview/test/template/resolver_shared_tests.rb:106:5: C: [Corrected] Rails/RefuteMethods: Prefer assert_not_same over refute_same. refute_same a, b ^^^^^^^^^^^ 2760 files inspected, 5 offenses detected, 5 offenses corrected ```
* | Add additional test for sharing templatesJohn Hawthorn2019-04-121-1/+18
| |
* | Support disabling cache for DigestorJohn Hawthorn2019-04-121-0/+14
| | | | | | | | | | | | This adds a bit of complexity, but is necessary for now to avoid holding extra copies of templates which are resolved from ActionView::Digestor after disabling cache on the lookup context.
* | De-dup Templates, introduce UnboundTemplateJohn Hawthorn2019-04-121-0/+30
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Previously it's possible to have multiple copies of the "same" Template. For example, if index.html.erb is found both the :en and :fr locale, it will return a different Template object for each. The same can happen with formats, variants, and handlers. This commit de-duplicates templates, there will now only be one template per file/virtual_path/locals tuple. We need to consider virtual_path because both `render "index"`, and `render "index.html"` can both find the same file but will have different virtual_paths. IMO this is rare and should be deprecated/removed, but it exists now so we need to consider it in order to cache correctly. This commit introduces a new UnboundTemplate class, which represents a template with unknown locals. Template objects can be built from it by using `#with_locals`. Currently, this is just a convenience around caching templates, but I hope it's a helpful concept that could have more utility in the future.
* | Add tests against resolverJohn Hawthorn2019-04-113-0/+109
| | | | | | | | | | | | | | | | | | | | | | We didn't previously have many tests directly against the OptimizedFileSystemResolver or FileSystemResolver, though usually failures would be exposed through other tests. It's easier to test some specifics of the behaviour with unit tests. This also lets us test FileSystemResolver (non-optimized) which I don't think previously had much testing (other than from classses inheriting it).
* | Deprecate Template#refreshJohn Hawthorn2019-04-041-17/+3
| |
* | Don't discard source after renderingJohn Hawthorn2019-04-041-2/+2
| | | | | | | | | | | | | | | | | | | | Previously, we would discard the template source after rendering, if we had a virtual path, in hopes that the virtual path would let us find our same template again going through the Resolver. Previously we discarded the source as an optimization, to avoid keeping it around in memory. By instead just reading the file every time source is called, as FileTemplate does, this is unnecessary.
* | Fix deprecation warning about variants and formatsPrathamesh Sonpatki2019-04-041-2/+2
| | | | | | | | | | | | - After https://github.com/rails/rails/pull/35408 and https://github.com/rails/rails/pull/35406, the `formats` and `variants` methods are deprecated in favor of `format` and `variant`.
* | Output junit format test reportFumiaki MATSUSHIMA2019-04-041-0/+2
| |
* | Merge pull request #35145 from st0012/fix-35114Rafael França2019-04-032-0/+23
|\ \ | | | | | | Fix partial caching ignore repeated items issue
| * | Fix partial caching ignore repeated items issuest00122019-04-042-0/+23
| | | | | | | | | | | | | | | | | | This is because we only use hash to maintain the result. So when the key are the same, the result would be skipped. The solution is to maintain an array for tracking every item's position to restructure the result.
* | | Fix checking for template variants when using the ActionView::FixtureResolverEdward Rudd2019-04-031-0/+10
| | |
* | | Always reject files external to appJohn Hawthorn2019-04-032-5/+5
|/ / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Previously, when using `render file:`, it was possible to render files not only at an absolute path or relative to the current directory, but relative to ANY view paths. This was probably done for absolutely maximum compatibility when addressing CVE-2016-0752, but I think is unlikely to be used in practice. Tihs commit removes the ability to `render file:` with a path relative to a non-fallback view path. Make FallbackResolver.new private To ensure nobody is making FallbackResolvers other than "/" and "". Make reject_files_external_... no-op for fallbacks Because there are only two values used for path: "" and "/", and File.join("", "") == File.join("/", "") == "/", this method was only testing that the absolute paths started at "/" (which of course all do). This commit doesn't change any behaviour, but it makes it explicit that the FallbackFileSystemResolver works this way. Remove outside_app_allowed argument Deprecate find_all_anywhere This is now equivalent to find_all Remove outside_app argument Deprecate find_file for find Both LookupContext#find_file and PathSet#find_file are now equivalent to their respective #find methods.
* | url -> URL where apt except inside actionpack/Sharang Dashputre2019-04-014-7/+7
| |
* | Merge pull request #35793 from jhawthorn/deprecate_layout_absolute_pathKasper Timm Hansen2019-03-311-1/+3
|\ \ | |/ |/| Deprecate render layout with an absolute path
| * Deprecate render layout with an absolute pathJohn Hawthorn2019-03-291-1/+3
| | | | | | | | | | | | | | This has similar problems to render file:. I've never seen this used, and believe it's a relic from when all templates could be rendered from an absolute path.
* | Merge pull request #35688 from jhawthorn/render_file_rfcAaron Patterson2019-03-305-27/+72
|\ \ | |/ |/| RFC: Introduce Template::File
| * Introduce Template::File as new render file:John Hawthorn2019-03-275-27/+72
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The previous behaviour of render file: was essentially the same as render template:, except that templates can be specified as an absolute path on the filesystem. This makes sense for historic reasons, but now render file: is almost exclusively used to render raw files (not .erb) like public/404.html. In addition to complicating the code in template/resolver.rb, I think the current behaviour is surprising to developers. This commit deprecates the existing "lookup a template from anywhere" behaviour and replaces it with "render this file exactly as it is on disk". Handlers will no longer be used (it will render the same as if the :raw handler was used), but formats (.html, .xml, etc) will still be detected (and will default to :plain). The existing render file: behaviour was the path through which Rails apps were vulnerable in the recent CVE-2019-5418. Although the vulnerability has been patched in a fully backwards-compatible way, I think it's a strong hint that we should drop the existing previously-vulnerable behaviour if it isn't a benefit to developers.
* | Fix annotated typoPrathamesh Sonpatki2019-03-291-4/+4
| |
* | Merge pull request #35308 from ↵Rafael França2019-03-282-0/+10
|\ \ | |/ |/| | | | | erose/better-error-reporting-for-syntax-errors-in-templates Display a more helpful error message when an ERB template has a Ruby syntax error.
| * Add handling and tests.Eli Rose2019-02-172-0/+10
| |
* | Merge pull request #35761 from koic/bump_rubocop_to_0_66_0Ryuta Kamizono2019-03-271-5/+5
|\ \ | | | | | | Bump RuboCop to 0.66.0
| * | Bump RuboCop to 0.66.0Koichi ITO2019-03-271-5/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | ### Summary RuboCop 0.66.0 has been released. https://github.com/rubocop-hq/rubocop/releases/tag/v0.66.0 And rubocop-0-66 channel is available in Code Climate. https://github.com/codeclimate/codeclimate/releases/tag/v0.84.0 RuboCop 0.66.0 fixed the false negative to indentation for modifier. And this PR applied the auto-correction fixed by it. https://github.com/rubocop-hq/rubocop/pull/6792 In addtion, this PR is also updating the following 4 gems that RuboCop depends on. - Update Psych gem ... https://github.com/rubocop-hq/rubocop/pull/6766 - Update Parser gem to 2.6.2.0 that supports Ruby 2.5.5 and 2.6.2 ... https://github.com/whitequark/parser/blob/v2.6.2.0/CHANGELOG.md#changelog - Remove powerpack gem ... https://github.com/rubocop-hq/rubocop/pull/6806 - Update unicode-display_width gem ... https://github.com/rubocop-hq/rubocop/pull/6813
* | | Deprecate custom patterns for PathResolverJohn Hawthorn2019-03-261-1/+4
|/ / | | | | | | | | | | | | | | | | | | | | | | | | Custom glob patterns tie the implementation (Using Dir.glob) to the API we provide. It also doesn't really work. extract_handler_and_format_and_variant expects the handler, format, and variant to be at the end of the template path, and in the same order as they are in the default pattern. This deprecates specifying a custom path for FileSystemResolver and removes the pattern argument of OptimizedFileSystemResolver#initialize, which does not work with a custom pattern.
* | Prefer render template: in testsJohn Hawthorn2019-03-217-42/+43
| | | | | | | | | | | | | | | | | | | | | | | | Many tests were using `render file:`, but were only testing the behaviour of `render template:` (file: just allows more paths/ is less secure then template:). The reason for so many `render file:` is probably that they were the old default. This commit replaces `render file:` with `render template:` anywhere the test wasn't specifically interested in using `render file:`.
* | Merge pull request #35661 from jhawthorn/lookup_context_validationEileen M. Uchitelle2019-03-201-1/+9
|\ \ | | | | | | Validate types assigned to LookupContext#formats=
| * | Don't compact formatsJohn Hawthorn2019-03-191-5/+0
| | |
| * | Improve "raises on invalid format assignment" testJohn Hawthorn2019-03-181-2/+2
| | |
| * | Raise in LookupContext#formats= on invalid formatJohn Hawthorn2019-03-181-0/+8
| | | | | | | | | | | | | | | | | | This is a developer quality of life improvement, to ensure that unknown formats aren't assigned (which it would previously accept, but wouldn't work 100% correctly due to caching).
| * | Make uniq in LookupContext#formats=John Hawthorn2019-03-181-1/+1
| | | | | | | | | | | | | | | Having a format listed twice had no effect. This is mostly helpful to avoid an extra format when assigning [:html, "*/*"]
| * | Ignore nil in LookupContext#formats=John Hawthorn2019-03-181-0/+5
| | | | | | | | | | | | | | | This also removes the mutation we were performing on the values being passed in.