aboutsummaryrefslogtreecommitdiffstats
path: root/activesupport/test/core_ext
Commit message (Collapse)AuthorAgeFilesLines
* blank? and present? commit to return singletons [Xavier Noria & Pavel Pravosud]Xavier Noria2013-12-281-7/+11
| | | | | | | | | | | | | | | | | | The contract of blank? and present? was in principle to return Object, as we generally do, the test suite and description was consistent with that, but some examples had comments like "# => true". This cannot be unclear, we either fix the examples, or update the contract. Since users may be already assuming singletons due to the examples and the fact that they were returned before 30ba7ee, the safest option seems to be to revise the contract and the implementation of String#blank? The motivation for 30ba7ee was to improve the performance of the predicate, the refactor based on === is on par regarding speed. With this commit we start documenting return types using YARD conventions. We plan to document return types gradually.
* Merge pull request #13401 from akshay-vishnoi/refactorRafael Mendonça França2013-12-191-1/+4
|\ | | | | Prevent creation of instance methods when `instance_reader = false`, Grammar checks, Conditional statements combined
| * Prevent creation of instance methods when `instance_reader = false`, Grammar ↵Akshay Vishnoi2013-12-191-1/+4
| | | | | | | | checks, Conditional statements combined
* | Prefer assert_raise instead of flunk + rescue to test for exceptionsCarlos Antonio da Silva2013-12-192-11/+9
|/ | | | | | Change most tests to make use of assert_raise returning the raised exception rather than relying on a combination of flunk + rescue to check for exception types/messages.
* Unused classes in AS testsAkira Matsuda2013-12-191-6/+0
|
* Unused classes in test caseAkira Matsuda2013-12-191-25/+0
|
* Introduce Module#concerningJeremy Kemper2013-12-171-0/+35
| | | | | | A natural, low-ceremony way to separate responsibilities within a class. Imported from https://github.com/37signals/concerning#readme
* Remove not necessary file, move constants to the file they are usedCarlos Antonio da Silva2013-12-111-0/+8
| | | | | | | | File 'empty_bool.rb' was introduced around 4 years ago in c10958fbddb22052e7cbe5fe6b825cda3cb26e48 to remove method redefined warning in AS test suite, however we do not have such need for reuse anymore, so we can safely move the constants back to the file where they are currently used and get rid of the extra file/require.
* Fix issue with Kernel#silence_stream leaking file descriptorsMario Visic2013-12-061-0/+16
| | | | | | | Calling Kernel#silence_stream creates a new file descriptor which isn't closed after it is used. As a result calling silence_stream multiple times leads to a build up of loose file descriptors and can cause issues in environments where garbage collection isn't run often.
* Added Date#all_week/month/quarter/year for generating date rangesDimko2013-12-031-0/+17
|
* Tidy up previous commit, fix message assertion and improve testsCarlos Antonio da Silva2013-12-031-1/+6
|
* Modify the Hash#assert_valid_keys error message so that it shows the valid ↵Nerian2013-12-031-1/+1
| | | | | | | | | | | | | | | | | | | | keys. Also, show the wrong value as it was entered. { :failore => "stuff", :funny => "business" }.assert_valid_keys([ :failure, :funny ]) => ArgumentError: Unknown key: failore { 'failore' => "stuff", :funny => "business" }.assert_valid_keys([ :failure, :funny ]) => ArgumentError: Unknown key: failore { 'failore' => "stuff", :funny => "business" }.assert_valid_keys([ :failure, :funny ]) => ArgumentError: Unknown key: "failore". Valid keys are: :failure, :funny { :failore => "stuff", :funny => "business" }.assert_valid_keys([ :failure, :funny ]) => ArgumentError: Unknown key: :failore. Valid keys are: :failure, :funny Conflicts: activerecord/CHANGELOG.md Closes #11624.
* Unify cattr and mattr accessors declarationsGenadi Samokovarov2013-12-022-74/+22
|
* Fix segmentation fault in Ruby 2.0.0-p353.Dmitriy Kiriyenko2013-11-301-0/+5
| | | | | | | | | | | | In Ruby 2.0.0-p353 there was a [commit](https://github.com/ruby/ruby/commit/66915c507777c5e3a978fa73de25db763efd9206) that switched case matching from actual sending `===` method to magic lookup, that does not see it in `method_missing`. It's hard to predict how exactly and when exactly this bug will be solved so here I suggest a solution of defining it in Duration directly. In Ruby 2.0.0-p353 without the added fix added test crashes to segmentation fault.
* Typo fixAkshay Vishnoi2013-11-291-1/+1
|
* Deprecated Numeric#{ago,until,since,from_now}Godfrey Chan2013-11-262-31/+39
| | | | | | | | | | | | | | | | | | | | | | The user is expected to explicitly convert the value into an AS::Duration, i.e. `5.ago` => `5.seconds.ago` This will help to catch subtle bugs like: def recent?(days = 3) self.created_at >= days.ago end The above code would check if the model is created within the last 3 **seconds**. In the future, `Numeric#{ago,until,since,from_now}` should be removed completely, or throw some sort of errors to indicate there are no implicit conversion from `Numeric` to `AS::Duration`. Also fixed & refactor the test cases for Numeric#{ago,since} and AS::Duration#{ago,since}. The original test case had the assertion flipped and the purpose of the test wasn't very clear.
* Unify `cattr_*` interface: allow to pass a block to `cattr_reader`.Alexey Chernenkov2013-11-151-0/+9
| | | | | | | | | Example: class A cattr_reader(:defr) { 'default_reader_value' } end A.defr # => 'default_reader_value'
* Array#split preserving the calling arrayKD2013-11-111-6/+12
|
* Add +capitalize+ option to Inflector.humanizeclaudiob2013-11-061-1/+7
| | | | | | | So strings can be humanized without being capitalized: 'employee_salary'.humanize # => "Employee salary" 'employee_salary'.humanize(capitalize: false) # => "employee salary"
* Added Numeric#in_milliseconds, like 1.hour.in_milliseconds, so we can feed ↵David Heinemeier Hansson2013-11-021-0/+4
| | | | them to JavaScript functions like getTime().
* Merge pull request #12203 from chancancode/eager_load_jsonJeremy Kemper2013-10-301-0/+9
|\ | | | | Eagerload active_support/json/encoding in active_support/core_ext/object/to_json
| * Moved all JSON core extensions into core_ext/object/jsonGodfrey Chan2013-09-131-0/+9
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | TL;DR The primary driver is to remove autoload surprise. This is related to #12106. (The root cause for that ticket is that json/add defines Regexp#to_json among others, but here I'll reproduce the problem without json/add.) Before: >> require 'active_support/core_ext/to_json' => true >> //.as_json NoMethodError: undefined method `as_json' for //:Regexp from (irb):3 from /Users/godfrey/.rvm/rubies/ruby-2.0.0-p195/bin/irb:16:in `<main>' >> //.to_json => "\"(?-mix:)\"" >> //.as_json => "(?-mix:)" After: >> require 'active_support/core_ext/to_json' => true >> //.as_json => "(?-mix:)" This is because ActiveSupport::JSON is autoloaded the first time Object#to_json is called, which causes additional core extentions (previously defined in active_support/json/encoding.rb) to be loaded. When someone require 'active_support/core_ext', the expectation is that it would add certain methods to the core classes NOW. The previous behaviour causes additional methods to be loaded the first time you call `to_json`, which could cause nasty surprises and other unplesant side-effects. This change moves all core extensions in to core_ext/json. AS::JSON is still autoloaded on first #to_json call, but since it nolonger include the core extensions, it should address the aforementioned bug. *Requiring core_ext/object/to_json now causes a deprecation warnning*
* | slice! should not remove default hash value/procAntonio Santos2013-10-241-0/+18
| |
* | `$SAFE = 4;` has been removed with Ruby 2.1Vipul A M2013-10-141-13/+0
| | | | | | | | | | | | For background - https://bugs.ruby-lang.org/issues/8468 Changset - https://bugs.ruby-lang.org/projects/ruby-trunk/repository/revisions/41259/diff/test/ruby/test_thread.rb
* | Revert "Merge pull request #12480 from iwiznia/master"Jeremy Kemper2013-10-111-15/+0
| | | | | | | | | | This reverts commit e5f5a838b96a362534d9bb60d02334439ed9784c, reversing changes made to d7567f3290a50952494e9213556a1f283a6cf3a0.
* | flatten and flatten! methods for ActiveSupport::DurationIonatan Wiznia2013-10-111-0/+15
| |
* | Merge pull request #11474 from bogdan/time-with-zone-succAndrew White2013-09-221-0/+22
|\ \ | |/ |/| Prevent server blow up when iterating over TimeWithZone Range
| * Disable ability to iterate over a Range of TimeWithZoneBogdan Gusiev2013-07-191-0/+22
| |
* | Merge pull request #12200 from dchelimsky/simplify-duration-inspect-even-moreRafael Mendonça França2013-09-111-0/+3
|\ \ | | | | | | Reduce Duration#inspect to a single series of transformations
| * | Reduce Duration#inspect to a single series of transformationsDavid Chelimsky2013-09-111-0/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * eliminates need for temp Hash Also added a couple of examples to DurationTest to specify: * duration can be defined with units out of order e.g. 1.month + 1.year + 1.second + 1.day * equality with a Fixnum works regardless of which operand is on which side of the operator
* | | Removed unused modules and classesAnupam Choudhury2013-09-101-7/+0
| | |
* | | Removed unnecessary requireAnupam Choudhury2013-09-101-1/+0
|/ /
* | Skip tests involving $SAFE, it's not supported on Rubinius.Federico Ravasio2013-08-211-0/+2
| |
* | ensure freeze on Thread freezes localsNick Howard2013-08-191-0/+9
| |
* | Add String#remove(pattern) as a short-hand for the common pattern of ↵David Heinemeier Hansson2013-08-131-0/+5
| | | | | | | | String#gsub(pattern, '')
* | Fix unused variable warningAndrew White2013-08-041-0/+1
| | | | | | | | | | | | We need to call `in_time_zone` to test that it isn't modifying the receiver but since the variable isn't used it raises a warning so add an assertion to make Ruby think it's being used.
* | Refactor Date, Time, DateTime timezone methodsGilad Zohari2013-08-011-0/+8
| | | | | | | | | | | | Similar implementations of #in_time_zone exists for Date, Time and DateTime so method is extracted into its own module. Also some logic is extracted into private method.
* | Merge pull request #10879 from makaroni4/masterAndrew White2013-07-293-0/+20
|\ \ | | | | | | Added Time#middle_of_day method
| * | Added Time#middle_of_dayAnatoli Makarevich2013-07-283-0/+20
| | | | | | | | | | | | Added middle_of_day method to Date and DateTime
* | | Fix handling of offsets with Time#to_s(:iso8601)Andrew White2013-07-293-1/+10
| | | | | | | | | | | | | | | | | | Use a lambda to ensure that the generated string respects the offset of the time value. Also add DateTime#to_s(:iso8601) and Date#to_s(:iso8601) for completeness.
* | | Add Time#to_s(:iso8601) for easy conversion of times to the iso8601 format ↵David Heinemeier Hansson2013-07-281-0/+1
| |/ |/| | | | | for easy Javascript date parsing
* | Only raise DelegationError if it's is the source of the exceptionAndrew White2013-07-111-0/+27
| | | | | | | | | | | | | | | | | | This fixes situations where nested NoMethodError exceptions are masked by delegations. This would cause confusion especially where there was a problem in the Rails booting process because of a delegation in the routes reloading code. Fixes #10559
* | Add failing test for #9562Andrew White2013-07-101-0/+5
| | | | | | | | | | | | | | | | Rails 4.0.0 fails when trying to encode an ActiveSupport::TimeWithZone that wraps a DateTime instance. This is fixed on master so add a test to prevent regression. (cherry picked from commit ad01b8da354268cebfae1519c28d19d75576ccb1)
* | Return local time for backwards compatibilityAndrew White2013-07-091-8/+25
| |
* | Retain UTC offset when using Time.at_with_coercionAndrew White2013-07-091-0/+33
| | | | | | | | | | | | | | | | | | | | The standard Ruby behavior for Time.at is to return the same type of time when passing an instance of Time as a single argument. Since the an ActiveSupport::TimeWithZone instance may be a different timezone than the system timezone and DateTime just understands offsets the best we can do is to return an instance of Time with the correct offset. Fixes #11350.
* | Fix microsecond precision of Time#at_with_coercionNeer Friedman2013-07-091-0/+4
| | | | | | | | | | | | | | | | When Time.at_with_coercion (wraps Time.at) is called with a single argument that "acts_like?(:time)" it is coerced to integer thus losing it's microsecond percision. This commits changes this to use `#to_f` to prevent the problem
* | Make HashWithIndifferentAccess#select always return the hash.Marc Schütz2013-07-061-0/+6
| | | | | | | | | | Hash#select! returns nil if the hash didn't change and thus behaves differently from select, so it's return value can't be used as result for the latter.
* | Fixed test broken by local_constant_names Arun Agrawal2013-07-031-6/+0
| | | | | | depreciation removed
* | Remove deprecated `String#encoding_aware?` Arun Agrawal2013-07-031-6/+0
| | | | | | core extensions (`core_ext/string/encoding`).
* | Remove deprecated `Time#time_with_datetime_fallback`, `Time#utc_time`Vipul A M2013-07-031-55/+0
| | | | | | | | and `Time#local_time` in favour of `Time#utc` and `Time#local`