]> git.ipfire.org Git - thirdparty/moment.git/commitdiff
[bugfix] Fix bug where .format() modifies original moment instance (#5580)
authorcamgraff <46980357+camgraff@users.noreply.github.com>
Sun, 13 Sep 2020 10:56:40 +0000 (05:56 -0500)
committerGitHub <noreply@github.com>
Sun, 13 Sep 2020 10:56:40 +0000 (03:56 -0700)
* Made era functions clone moment instance before calling startOf()

* Add regression tests

* Run prettier-fmt

src/lib/units/era.js
src/test/moment/format.js

index 28c71495d0100f933f8b63c754eb3f9777a5484e..805814619d9271a9574f1a79c33f6b162cb60555 100644 (file)
@@ -144,7 +144,7 @@ export function getEraName() {
         eras = this.localeData().eras();
     for (i = 0, l = eras.length; i < l; ++i) {
         // truncate time
-        val = this.startOf('day').valueOf();
+        val = this.clone().startOf('day').valueOf();
 
         if (eras[i].since <= val && val <= eras[i].until) {
             return eras[i].name;
@@ -164,7 +164,7 @@ export function getEraNarrow() {
         eras = this.localeData().eras();
     for (i = 0, l = eras.length; i < l; ++i) {
         // truncate time
-        val = this.startOf('day').valueOf();
+        val = this.clone().startOf('day').valueOf();
 
         if (eras[i].since <= val && val <= eras[i].until) {
             return eras[i].narrow;
@@ -184,7 +184,7 @@ export function getEraAbbr() {
         eras = this.localeData().eras();
     for (i = 0, l = eras.length; i < l; ++i) {
         // truncate time
-        val = this.startOf('day').valueOf();
+        val = this.clone().startOf('day').valueOf();
 
         if (eras[i].since <= val && val <= eras[i].until) {
             return eras[i].abbr;
@@ -207,7 +207,7 @@ export function getEraYear() {
         dir = eras[i].since <= eras[i].until ? +1 : -1;
 
         // truncate time
-        val = this.startOf('day').valueOf();
+        val = this.clone().startOf('day').valueOf();
 
         if (
             (eras[i].since <= val && val <= eras[i].until) ||
index 1ea1e9f0e9fde712e22dd6ed02d1237fb38ebf15..7fbcafc01a25e8ab3c378404ce91f27f794022f0 100644 (file)
@@ -927,3 +927,25 @@ test('HTML5_FMT.WEEK', function (assert) {
         'issue #4833 regression'
     );
 });
+
+test('does not modify original moment instance', function (assert) {
+    let m = moment(0),
+        original = moment(0);
+    m.format('yyyy-MM-DD');
+    assert.equal(
+        m.toISOString(),
+        original.toISOString(),
+        'issue #5571 regression'
+    );
+
+    assert.deepEqual(
+        moment(new Date('2020-08-11 23:59:59'))
+            .format('yyyy-MM-DD HH:mm:ss')
+            .split(' '),
+        moment(new Date('2020-08-11 23:59:59'))
+            .format('HH:mm:ss yyyy-MM-DD')
+            .split(' ')
+            .reverse(),
+        'issue #5681 regression'
+    );
+});