aboutsummaryrefslogtreecommitdiffstats
path: root/activesupport/test
Commit message (Collapse)AuthorAgeFilesLines
* Fix test warningsAndrew White2017-03-161-5/+5
|
* Merge pull request #28147 from kmcphillips/master-time-freezeAndrew White2017-03-162-15/+180
|\ | | | | Allow Time#to_time on frozen objects. Return frozen time rather than "RuntimeError: can't modify frozen Time"
| * Handle #to_time and memoization taking into account memoization, frozen ↵Kevin McPhillips2017-03-062-15/+180
| | | | | | | | state, and preserve_timezone flag.
* | Remove implicit coercion deprecation of durationsAndrew White2017-03-151-25/+117
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | In #28204 we deprecated implicit conversion of durations to a numeric which represented the number of seconds in the duration because of unwanted side effects with calculations on durations and dates. This unfortunately had the side effect of forcing a explicit cast when configuring third-party libraries like expiration in Redis, e.g: redis.expire("foo", 5.minutes) To work around this we've removed the deprecation and added a private class that wraps the numeric and can perform calculation involving durations and ensure that they remain a duration irrespective of the order of operations.
* | Make sure local cache cleared even it's throwing:Lin Jen-Shin2017-03-101-0/+11
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We (GitLab) hit into an issue that somewhere in the middleware chain was throwing `:warden`, which was caught in the wrapping middleware, but `LocalCache::Middleware` was not aware of it. It should look like: ``` ruby result = catch(:warden) do @app.call(env) end ``` Source: https://github.com/hassox/warden/blob/090ed153dbd2f5bf4a1ca672b3018877e21223a4/lib/warden/manager.rb#L35-L37 Using `ensure` could make sure that we would always do the cleanup, and better yet, avoid `rescue Exception` which we all should know that could cause some issues which could be very hard to debug. Please check the discussion thread for more context: https://gitlab.com/gitlab-org/gitlab-ee/merge_requests/1402#note_25128108
* | Update `titlelize` regex to allow apostrophesAndrew White2017-03-061-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | In 4b685aa the regex in `titlelize` was updated to not match apostrophes to better reflect the nature of the transformation. Unfortunately this had the side effect of breaking capitalization on the first word of a sub-string, e.g: >> "This was 'fake news'".titleize => "This Was 'fake News'" This is fixed by extending the look-behind to also check for a word character on the other side of the apostrophe. Fixes #28312.
* | Add `rfc3339` aliases to `xmlschema`Andrew White2017-03-032-0/+15
| | | | | | | | | | For naming consistency when using the RFC 3339 profile of ISO 8601 in applications.
* | Add `Time.rfc3339` parsing methodAndrew White2017-03-031-0/+31
| | | | | | | | | | | | | | The `Time.xmlschema` and consequently its alias `iso8601` accepts timestamps without a offset in contravention of the RFC 3339 standard. This method enforces that constraint and raises an `ArgumentError` if it doesn't.
* | Add `ActiveSupport::TimeZone.rfc3339` parsing methodAndrew White2017-03-031-0/+110
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Previously there was no way to get a RFC 3339 timestamp into a specific timezone without either using `parse` or chaining methods. The new method allows parsing directly into the timezone, e.g: >> Time.zone = "Hawaii" => "Hawaii" >> Time.zone.rfc3339("1999-12-31T14:00:00Z") => Fri, 31 Dec 1999 14:00:00 HST -10:00 This new method has stricter semantics than the current `parse` method and will raise an `ArgumentError` instead of returning nil, e.g: >> Time.zone = "Hawaii" => "Hawaii" >> Time.zone.rfc3339("foobar") ArgumentError: invalid date >> Time.zone.parse("foobar") => nil It will also raise an `ArgumentError` when either the time or offset components are missing, e.g: >> Time.zone = "Hawaii" => "Hawaii" >> Time.zone.rfc3339("1999-12-31") ArgumentError: invalid date >> Time.zone.rfc3339("1999-12-31T14:00:00") ArgumentError: invalid date
* | Add `ActiveSupport::TimeZone.iso8601` parsing methodAndrew White2017-03-031-0/+72
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Previously there was no way to get a ISO 8601 timestamp into a specific timezone without either using `parse` or chaining methods. The new method allows parsing directly into the timezone, e.g: >> Time.zone = "Hawaii" => "Hawaii" >> Time.zone.iso8601("1999-12-31T14:00:00Z") => Fri, 31 Dec 1999 14:00:00 HST -10:00 If the timestamp is a ISO 8601 date (YYYY-MM-DD) then the time is set to midnight, e.g: >> Time.zone = "Hawaii" => "Hawaii" >> Time.zone.iso8601("1999-12-31") => Fri, 31 Dec 1999 00:00:00 HST -10:00 This new method has stricter semantics than the current `parse` method and will raise an `ArgumentError` instead of returning nil, e.g: >> Time.zone = "Hawaii" => "Hawaii" >> Time.zone.iso8601("foobar") ArgumentError: invalid date >> Time.zone.parse("foobar") => nil
* | Deprecate implicit coercion of `ActiveSupport::Duration`Andrew White2017-03-021-3/+55
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Currently `ActiveSupport::Duration` implicitly converts to a seconds value when used in a calculation except for the explicit examples of addition and subtraction where the duration is the receiver, e.g: >> 2 * 1.day => 172800 This results in lots of confusion especially when using durations with dates because adding/subtracting a value from a date treats integers as a day and not a second, e.g: >> Date.today => Wed, 01 Mar 2017 >> Date.today + 2 * 1.day => Mon, 10 Apr 2490 To fix this we're implementing `coerce` so that we can provide a deprecation warning with the intent of removing the implicit coercion in Rails 5.2, e.g: >> 2 * 1.day DEPRECATION WARNING: Implicit coercion of ActiveSupport::Duration to a Numeric is deprecated and will raise a TypeError in Rails 5.2. => 172800 In Rails 5.2 it will raise `TypeError`, e.g: >> 2 * 1.day TypeError: ActiveSupport::Duration can't be coerced into Integer This is the same behavior as with other types in Ruby, e.g: >> 2 * "foo" TypeError: String can't be coerced into Integer >> "foo" * 2 => "foofoo" As part of this deprecation add `*` and `/` methods to `AS::Duration` so that calculations that keep the duration as the receiver work correctly whether the final receiver is a `Date` or `Time`, e.g: >> Date.today => Wed, 01 Mar 2017 >> Date.today + 1.day * 2 => Fri, 03 Mar 2017 Fixes #27457.
* | Update `DateTime#change` to support usec and nsecAndrew White2017-03-021-11/+18
| | | | | | | | | | | | | | | | | | | | | | Adding support for these options now allows us to update the `DateTime#end_of` methods to match the equivalent `Time#end_of` methods, e.g: datetime = DateTime.now.end_of_day datetime.nsec == 999999999 # => true Fixes #21424.
* | Add Duration#before and #after as aliases for #ago and #sinceNick Johnstone2017-02-261-0/+13
| | | | | | | | | | | | | | | | | | | | | | | | | | | | It's common in test cases at my job to have code like this: let(:today) { customer_start_date + 2.weeks } let(:earlier_date) { today - 5.days } With this change, we can instead write let(:today) { 2.weeks.after(customer_start_date) } let(:earlier_date) { 5.days.before(today) } Closes #27721
* | Merge pull request #28157 from robin850/hwia-soft-deprecationMatthew Draper2017-02-251-0/+28
|\ \ | | | | | | | | | Soft-deprecate the `HashWithIndifferentAccess` constant
| * | Add few tests for the top level `HashWithIndifferentAccess`Robin Dupret2017-02-251-0/+24
| | | | | | | | | | | | | | | This ensures that if we try to hard-deprecate it again in the future, we won't break these behaviors.
| * | Soft-deprecate the top-level HashWithIndifferentAccess classRobin Dupret2017-02-251-0/+4
| |/ | | | | | | | | | | | | Since using a `ActiveSupport::Deprecation::DeprecatedConstantProxy` would prevent people from inheriting this class and extending it from the `ActiveSupport::HashWithIndifferentAccess` one would break the ancestors chain, that's the best option we have here.
* | Merge pull request #28006 from fareastside/masterRafael Mendonça França2017-02-241-0/+13
|\ \ | | | | | | | | | Allow ActiveSupport::MarshalWithAutoloading#load to take a Proc
| * | add optional second argument to ActiveSupport core extension for ↵Jeff Latz2017-02-241-0/+13
| |/ | | | | | | Marshal#load so it can take a proc
* / Add missing gzip footer check in ActiveSupport::Gzip.decompressDylan Thacker-Smith2017-02-241-0/+10
|/ | | | | | | | A gzip file has a checksum and length for the decompressed data in its footer which isn't checked by just calling Zlib::GzipReader#read. Calling Zlib::GzipReader#close must be called after reading to the end of the file causes this check to be done, which is done by Zlib::GzipReader.wrap after its block is called.
* Make HWIA#compact not return nil when no nilsPavel Pravosud2017-02-231-0/+10
|
* Add more missing requiresAndrew White2017-02-221-0/+1
| | | | Further missing requires for Timeout exposed due to Bundler 1.14.5
* Add missing requiresAndrew White2017-02-221-0/+4
| | | | | Bundler 1.14.5 moved to lazily loading 'rubygems/spec_fetcher' which revealed some missing requires from the JSON encoding test file.
* Preload to_datetime before freezing a TimeWithZone instanceAdam Rice2017-02-221-0/+1
|
* Revert "Merge pull request #27925 from robin850/hwia-removal"Kasper Timm Hansen2017-02-201-23/+0
| | | | | | | | | Pointed out by @matthewd that the HWIA subclass changes the AS scoped class and top-level HWIA hierarchies out from under existing classes. This reverts commit 71da39097b67114329be6d8db7fe6911124531af, reversing changes made to 41c33bd4b2ec3f4a482e6030b6fda15091d81e4a.
* Deprecate the top-level `HashWithIndifferentAccess` contantRobin Dupret2017-02-191-0/+23
| | | | | | | | | This constant was kept for the sake of backward compatibility; it is still available under `ActiveSupport::HashWithIndifferentAccess`. Furthermore, since Ruby 2.5 (https://bugs.ruby-lang.org/issues/11547) won't support top level constant lookup, people would have to update their code anyway.
* Merge pull request #27973 from kenta-s/add-missing-test-for-time-blankAndrew White2017-02-121-1/+1
|\ | | | | Add Time#blank? to blank_test
| * Add Time#blank? to blank_testkenta-s2017-02-121-1/+1
| |
* | Add `Style/EmptyLinesAroundMethodBody` in `.rubocop.yml` and remove extra ↵Ryuta Kamizono2017-02-122-2/+0
|/ | | | empty lines
* Remove deprecated behavior that halts callbacks when the return is falseRafael Mendonça França2017-02-071-28/+2
|
* Merge pull request #27608 from ↵Rafael França2017-02-071-34/+21
|\ | | | | | | | | kamipo/remove_deprecated_passing_string_to_define_callback Remove deprecated passing string to define callback
| * Deprecate passing string to `:if` and `:unless` conditional options on ↵Ryuta Kamizono2017-02-041-4/+17
| | | | | | | | `set_callback` and `skip_callback`
| * Remove deprecated passing string to define callbackRyuta Kamizono2017-02-041-31/+5
| | | | | | | | And raise `ArgumentError` when passing string to define callback.
* | Merge pull request #27919 from bf4/correct_spellingArthur Nogueira Neves2017-02-065-6/+6
|\ \ | | | | | | Correct spelling
| * | Correct spellingBenjamin Fleischer2017-02-055-6/+6
| |/ | | | | | | | | | | | | ``` go get -u github.com/client9/misspell/cmd/misspell misspell -w -error -source=text . ```
* / Add tests for `blank?`kenta-s2017-02-063-0/+12
|/
* explicitly require `listen` in `EventedFileUpdateCheckerTest` (#27867)Arthur Nogueira Neves2017-02-011-0/+1
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Currently, executing the `test_initialize_raises_an_ArgumentError_if_no_block_given` test alone will result in an error. ``` $ ./bin/test test/evented_file_update_checker_test.rb -n test_initialize_raises_an_ArgumentError_if_no_block_given Run options: -n test_initialize_raises_an_ArgumentError_if_no_block_given --seed 6692 # Running: E Error: EventedFileUpdateCheckerTest#test_initialize_raises_an_ArgumentError_if_no_block_given: NameError: uninitialized constant EventedFileUpdateCheckerTest::Listen rails/activesupport/test/evented_file_update_checker_test.rb:21:in `teardown' ``` This is because if do not specify a file or directory for `EventedFileUpdateChecker`, do not require `listen`, and using listen method in teardown. https://github.com/rails/rails/blob/master/activesupport/lib/active_support/evented_file_update_checker.rb#L53..L65 Therefore, added listen's require to avoid errors.
| * explicitly require `listen` in `EventedFileUpdateCheckerTest`yuuji.yaginuma2017-02-011-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Currently, executing the `test_initialize_raises_an_ArgumentError_if_no_block_given` test alone will result in an error. ``` $ ./bin/test test/evented_file_update_checker_test.rb -n test_initialize_raises_an_ArgumentError_if_no_block_given Run options: -n test_initialize_raises_an_ArgumentError_if_no_block_given --seed 6692 # Running: E Error: EventedFileUpdateCheckerTest#test_initialize_raises_an_ArgumentError_if_no_block_given: NameError: uninitialized constant EventedFileUpdateCheckerTest::Listen rails/activesupport/test/evented_file_update_checker_test.rb:21:in `teardown' ``` This is because if do not specify a file or directory for `EventedFileUpdateChecker`, do not require `listen`, and using listen method in teardown. https://github.com/rails/rails/blob/master/activesupport/lib/active_support/evented_file_update_checker.rb#L53..L65 Therefore, added listen's require to avoid errors.
* | remove unused variableyuuji.yaginuma2017-02-011-1/+1
|/ | | | | | | | This removes the following warnings. ``` activesupport/test/file_update_checker_shared_tests.rb:279: warning: assigned but unused variable - checker ```
* Remove deprecated callbacks from ActionDispatch middlewaresRafael Mendonça França2017-01-311-1/+13
|
* Add test for `variable_size_secure_compare`kenta-s2017-01-311-1/+6
|
* Raise in the initialize not in the executeRafael Mendonça França2017-01-311-3/+2
|
* Merge pull request #27824 from kenta-s/raise-an-error-if-no-block-givenRafael França2017-01-311-0/+7
|\ | | | | Raise an error if FileUpdateChecker#execute is called with no block
| * Raise an error if FileUpdateChecker#execute is called with no blockkenta-s2017-01-281-0/+7
| |
* | Merge pull request #27797 from y-yagi/correctly_check_error_messageArthur Nogueira Neves2017-01-302-2/+4
|\ \ | | | | | | correctly check error message
| * | correctly check error messageyuuji.yaginuma2017-01-252-2/+4
| | | | | | | | | | | | | | | | | | | | | `assert_raise` does not check error message. However, in some tests, it seems like expecting error message checking with `assert_raise`. Instead of specifying an error message in `assert_raise`, modify to use another assert to check the error message.
* | | Merge pull request #27822 from mtsmfm/bump-unicode-versionJeremy Daer2017-01-301-1/+1
|\ \ \ | | | | | | | | Update Unicode Version to 9.0.0
| * | | Update Unicode Version to 9.0.0Fumiaki MATSUSHIMA2017-01-281-1/+1
| | |/ | |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 9.0.0 was released on June 21, 2016 http://blog.unicode.org/2016/06/announcing-unicode-standard-version-90.html http://www.unicode.org/versions/Unicode9.0.0/ There are some changes about grapheme cluster in Unicode 9.0.0: http://unicode.org/reports/tr29/#Grapheme_Cluster_Boundary_Rules ------------ I noticed that `unpack_graphemes` returns [Other] when the argument is Other ÷ Prepend (it must be [Other, Prepend]). But in [Unicode 8.0.0's Prepend has no characters](http://www.unicode.org/reports/tr29/tr29-27.html#Prepend) so we don't have to backport following patch: ```diff should_break = + if pos == eoc + true ```
* | | Ruby constant look-up no longer falls back to top-level since 2.5Akira Matsuda2017-01-301-7/+10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This behavior used to warn until 2.4, and raises since 2.5. The test here was intentinally named not to start with "test_" and so it used not to be executed because this never passes, but now is should pass in trunk. https://bugs.ruby-lang.org/issues/11547 https://github.com/ruby/ruby/commit/44a2576f798b07139adde2d279e48fdbe71a0148 closes #19897
* | | Missing require 'active_support/core_ext/hash/keys'Akira Matsuda2017-01-291-0/+1
|/ / | | | | | | | | | | Without this, the test causes a "method redefined" warning because * first it loads I18n and defines Hash#deep_symbolize_keys inside I18n's lib/i18n/core_ext/hash.rb * then it loads AS/core_ext/hash/keys.rb afterwards
* | Uninterned Symbol can be duped since ruby 2.4.1Akira Matsuda2017-01-261-1/+4
| | | | | | | | | | | | https://github.com/ruby/ruby/commit/11e6bd5ac2a2eebfa589bd6db8c9c4daa337733e Leaving the 2.4.0 conditional for now, in order never to forget backporting r57407 to 2.4.1