Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat(limitTo): ignore limit when undefined #10510

Closed
wants to merge 1 commit into from

Conversation

@marcin-wosinek
Copy link
Contributor

@marcin-wosinek marcin-wosinek commented Dec 17, 2014

BREAKING CHANGE: limitTo changed behavoir when limit value is undefined.
Instead of returning empty object/array it returns non-changed input.

Closes #10484

@googlebot
Copy link

@googlebot googlebot commented Dec 17, 2014

We found a Contributor License Agreement for you (the sender of this pull request), but were unable to find agreements for the commit author(s). If you authored these, maybe you used a different email address in the git commits than was used to sign the CLA (login here to double check)? If these were authored by someone else, then they will need to sign a CLA as well, and confirm that they're okay with these being contributed to Google.

@marcin-wosinek marcin-wosinek force-pushed the marcin-wosinek:master branch from cc70067 to c09dea9 Dec 17, 2014
@googlebot
Copy link

@googlebot googlebot commented Dec 17, 2014

CLAs look good, thanks!

@@ -15,7 +15,8 @@
* @param {string|number} limit The length of the returned array or string. If the `limit` number
* is positive, `limit` number of items from the beginning of the source array/string are copied.
* If the number is negative, `limit` number of items from the end of the source array/string
* are copied. The `limit` will be trimmed if it exceeds `array.length`
* are copied. The `limit` will be trimmed if it exceeds `array.length`. If `limit` is undefined,
* the input will be left unchanged.

This comment has been minimized.

@gkalpak

gkalpak Dec 18, 2014
Member

IMO, "returned" is more appropriate than "left" (since the input is left unchanged in any case).

} else {
// zero and NaN check on limit - return empty array
if (!limit) return [];
if (!limit) return input.slice();

This comment has been minimized.

@gkalpak

gkalpak Dec 18, 2014
Member

This will never evaluate to true with the current implementation.

expect(limitTo(items, 'null')).toEqual(items);
expect(limitTo(items, 'undefined')).toEqual(items);
expect(limitTo(items, null)).toEqual(items);
expect(limitTo(items, undefined)).toEqual(items);

This comment has been minimized.

@gkalpak

gkalpak Dec 18, 2014
Member

There should also be a test with 0 (to ensure it works as expected).

UPDATE: Has been added.

expect(limitTo(str, 'null')).toEqual(str);
expect(limitTo(str, 'undefined')).toEqual(str);
expect(limitTo(str, null)).toEqual(str);
expect(limitTo(str, undefined)).toEqual(str);

This comment has been minimized.

@gkalpak

gkalpak Dec 18, 2014
Member

There should also be a test with 0 (to ensure it works as expected).

UPDATE: Has been added.

@gkalpak
Copy link
Member

@gkalpak gkalpak commented Dec 18, 2014

I have left a couple of minor comments inline.

Additionally, I believe a little refactoring is in place: it would be better (i.e. more maintainable/performant) to do the NaN check sooner in the code (and return the input itself), so we can (1) "fail fast" and (2) avoid some of the else blocks further down.

But "functionality-wise" it should be OK.

BTW, the commit message and breaking change notice are slightly inaccurate: It is not only undefined but any invalid value, right ?

@marcin-wosinek marcin-wosinek force-pushed the marcin-wosinek:master branch from c09dea9 to 3c0d8e4 Dec 18, 2014
@marcin-wosinek
Copy link
Contributor Author

@marcin-wosinek marcin-wosinek commented Dec 18, 2014

@gkalpak thanks for the review

@marcin-wosinek marcin-wosinek force-pushed the marcin-wosinek:master branch 2 times, most recently from 7d48430 to f1a6390 Dec 18, 2014
@marcin-wosinek
Copy link
Contributor Author

@marcin-wosinek marcin-wosinek commented Dec 18, 2014

I'm lost with the build result. I get:

No output has been received in the last 10 minutes, this potentially indicates 
a stalled build or something wrong with the build itself.

The build has been terminated

from job 1.

expect(limitTo(items, null)).toEqual([]);
expect(limitTo(items, undefined)).toEqual([]);
it('should return an empty array when X = 0', function() {
expect(limitTo(items, 0)).toEqual([]);

This comment has been minimized.

@gkalpak

gkalpak Dec 18, 2014
Member

Nit picking: Could add a test for '0' (string) as well.

});

it('should return an empty string when X = 0', function() {
expect(limitTo(str, 0)).toEqual("");

This comment has been minimized.

@gkalpak

gkalpak Dec 18, 2014
Member

Nit picking: Could add a test for '0' (string) as well.
(I know it was like this before, but single-quotes would also be preferable to double-quotes for consistency.)

This comment has been minimized.

@marcin-wosinek

marcin-wosinek Dec 18, 2014
Author Contributor

Added

@gkalpak
Copy link
Member

@gkalpak gkalpak commented Dec 18, 2014

@marcin-wosinek: It is a flake (not related to the build) on SauseLabs only. I restarted the job, but since the tests passed on BrowserStack, it should be OK.

I left two "nit-picky" comments on the tests, but other than that it looks good to me.

(There's a typo in the BREAKING CHANGE notice btw: behavoir --> behavio[u]r)

@marcin-wosinek marcin-wosinek force-pushed the marcin-wosinek:master branch 2 times, most recently from d2e50bd to b66a1fe Dec 18, 2014
@gkalpak
Copy link
Member

@gkalpak gkalpak commented Dec 18, 2014

LGTM

@marcin-wosinek marcin-wosinek force-pushed the marcin-wosinek:master branch from b66a1fe to a9ba807 Dec 18, 2014
BREAKING CHANGE: limitTo changed behavior when limit value is invalid.
Instead of returning empty object/array it returns unchanged input.

Closes #10484
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Linked issues

Successfully merging this pull request may close these issues.

3 participants