Angular.js: Tes unit gagal saat dijalankan di Australia

Dibuat pada 19 Nov 2013  ·  14Komentar  ·  Sumber: angular/angular.js

Saya menerima kesalahan yang sama yang dilaporkan dalam komentar ini: https://github.com/angular/angular.js/pull/3474#issuecomment -23241136

Saya juga di Australia / Sydney.

Saya bisa melewatkan dengan --force , tetapi alangkah baiknya mendapatkan tagihan kesehatan yang bersih karena berkontribusi!

Chrome 31.0.1650 (Mac OS X 10.9.0) ngMock TzDate should fake getHours method FAILED
    Expected 4 to be 3.
    Error: Expected 4 to be 3.
        at null.<anonymous> (/Users/brett/scm/github/angular.js/test/ngMock/angular-mocksSpec.js:60:29)
    Expected 1 to be 0.
    Error: Expected 1 to be 0.
        at null.<anonymous> (/Users/brett/scm/github/angular.js/test/ngMock/angular-mocksSpec.js:64:29)
    Expected 22 to match 21.
    Error: Expected 22 to match 21.
        at null.<anonymous> (/Users/brett/scm/github/angular.js/test/ngMock/angular-mocksSpec.js:68:29)
ngMock moderate investigation broken expected use bug

Komentar yang paling membantu

Saya mendapatkan stacktrace serupa saat menjalankan tes di Australia:

(92:86:sɾ˙ɔǝdssʞɔoɯ-ɹɐlnƃuɐ/ʞɔoɯƃu/ʇsǝʇ/sɾ˙ɹɐlnƃuɐ/qnɥʇıƃ/ɯɔs/ʇʇǝɹq/sɹǝsn/) <snoɯʎuouɐ>˙llnu ʇɐ        
˙12 ɥɔʇɐɯ oʇ 22 pǝʇɔǝdxǝ :ɹoɹɹǝ    
˙12 ɥɔʇɐɯ oʇ 22 pǝʇɔǝdxǝ    
(92:46:sɾ˙ɔǝdssʞɔoɯ-ɹɐlnƃuɐ/ʞɔoɯƃu/ʇsǝʇ/sɾ˙ɹɐlnƃuɐ/qnɥʇıƃ/ɯɔs/ʇʇǝɹq/sɹǝsn/) <snoɯʎuouɐ>˙llnu ʇɐ        
˙0 ǝq oʇ 1 pǝʇɔǝdxǝ :ɹoɹɹǝ    
˙0 ǝq oʇ 1 pǝʇɔǝdxǝ    
(92:06:sɾ˙ɔǝdssʞɔoɯ-ɹɐlnƃuɐ/ʞɔoɯƃu/ʇsǝʇ/sɾ˙ɹɐlnƃuɐ/qnɥʇıƃ/ɯɔs/ʇʇǝɹq/sɹǝsn/) <snoɯʎuouɐ>˙llnu ʇɐ        
˙3 ǝq oʇ 4 pǝʇɔǝdxǝ :ɹoɹɹǝ    
˙3 ǝq oʇ 4 pǝʇɔǝdxǝ    
pǝlıɐɟ poɥʇǝɯ sɹnoɥʇǝƃ ǝʞɐɟ plnoɥs ǝʇɐpzʇ ʞɔoɯƃu (0˙9˙01 x so ɔɐɯ) 0561˙0˙13 ǝɯoɹɥɔ

(dengan sangat serius, saya menugaskan masalah itu kepada diri saya sendiri dan akan memeriksanya)

Semua 14 komentar

Mungkin kita harus menambahkan informasi geolokasi untuk menarik permintaan?

Saya mendapatkan stacktrace serupa saat menjalankan tes di Australia:

(92:86:sɾ˙ɔǝdssʞɔoɯ-ɹɐlnƃuɐ/ʞɔoɯƃu/ʇsǝʇ/sɾ˙ɹɐlnƃuɐ/qnɥʇıƃ/ɯɔs/ʇʇǝɹq/sɹǝsn/) <snoɯʎuouɐ>˙llnu ʇɐ        
˙12 ɥɔʇɐɯ oʇ 22 pǝʇɔǝdxǝ :ɹoɹɹǝ    
˙12 ɥɔʇɐɯ oʇ 22 pǝʇɔǝdxǝ    
(92:46:sɾ˙ɔǝdssʞɔoɯ-ɹɐlnƃuɐ/ʞɔoɯƃu/ʇsǝʇ/sɾ˙ɹɐlnƃuɐ/qnɥʇıƃ/ɯɔs/ʇʇǝɹq/sɹǝsn/) <snoɯʎuouɐ>˙llnu ʇɐ        
˙0 ǝq oʇ 1 pǝʇɔǝdxǝ :ɹoɹɹǝ    
˙0 ǝq oʇ 1 pǝʇɔǝdxǝ    
(92:06:sɾ˙ɔǝdssʞɔoɯ-ɹɐlnƃuɐ/ʞɔoɯƃu/ʇsǝʇ/sɾ˙ɹɐlnƃuɐ/qnɥʇıƃ/ɯɔs/ʇʇǝɹq/sɹǝsn/) <snoɯʎuouɐ>˙llnu ʇɐ        
˙3 ǝq oʇ 4 pǝʇɔǝdxǝ :ɹoɹɹǝ    
˙3 ǝq oʇ 4 pǝʇɔǝdxǝ    
pǝlıɐɟ poɥʇǝɯ sɹnoɥʇǝƃ ǝʞɐɟ plnoɥs ǝʇɐpzʇ ʞɔoɯƃu (0˙9˙01 x so ɔɐɯ) 0561˙0˙13 ǝɯoɹɥɔ

(dengan sangat serius, saya menugaskan masalah itu kepada diri saya sendiri dan akan memeriksanya)

Saya bersedia menangani ini secara langsung jika perjalanan ke Australia dapat dikenakan biaya untuk saya :)

Masalah yang sama di NZ.

Saya tidak begitu mengerti mengapa ini terjadi. Tiruan TzDate secara khusus dibuat untuk menjadi agnostik zona waktu.

Kami menghitung offset berdasarkan pengaturan lokal Anda dan kemudian menyesuaikan tanggal agar sama di semua zona waktu. Lihat: https://github.com/angular/angular.js/blob/547871e779f7a1e340c03296405735415764a0e8/src/ngMock/angular-mocks.js#L647 -L649

Saya tidak mengerti mengapa ini berfungsi dengan baik di semua zona waktu kecuali Australia dan Selandia Baru. Ada ide?

@IgorMinar halo dari masa depan! Diberikan satu per satu, ini hanya tampaknya menjadi masalah DST (tes lulus jika saya pindah ke Brisbane di mana mereka tidak berlatih DST). Terima kasih atas penunjuknya, itu adalah petunjuk yang berguna. Saya akan mengumpulkan permintaan tarik.

Sebenarnya, pada penyelidikan lebih lanjut, ini tidak terlihat seperti bug dalam tes sudut - mungkin masalah asli. DST dimulai di Australia pada tahun 1971, jadi periode UNIX adalah pada 10:00 UTC + 10, 1/1/70.

Namun, dalam pengujian yang menggunakan ofset negatif seperti ini memberikan zona waktu sebagai +11, bukan +10. Ini juga bisa dilihat di node:

$ node
> new Date(0)
Thu Jan 01 1970 10:00:00 GMT+1000 (EST)
> new Date(-36000000)
Thu Jan 01 1970 01:00:00 GMT+1100 (EST)
> new Date(1970, 0, 1)
Thu Jan 01 1970 00:00:00 GMT+1100 (EST)
> new Date(1970, 0, 1, 1, 0, 0)
Thu Jan 01 1970 01:00:00 GMT+1100 (EST)

Hasilnya tampaknya sangat bervariasi dalam kondisi yang tidak dapat saya kendalikan - Safari salah bahkan untuk Tanggal baru (0), dan beberapa kondisi yang tidak dapat saya tiru memiliki beberapa tab Chrome (tetapi bukan yang baru seperti dalam karma) melakukannya dengan benar .

Ada solusinya: untuk mengubah tes untuk mengubah tanggal yang tidak akan menjadi negatif. Ini sedikit konyol, tetapi tampaknya tidak membatalkan pengujian - semoga itu dapat diterima?

Saya yakin ini karena ES5 15.9.1.8 (https://es5.github.io/#x15.9.1.8).

"Implementasi ECMAScript tidak boleh mencoba untuk menentukan apakah waktu yang tepat tunduk pada waktu musim panas, tetapi hanya apakah waktu musim panas akan berlaku jika algoritma waktu musim panas saat ini digunakan pada saat itu. Ini menghindari komplikasi seperti itu. karena memperhitungkan tahun-tahun di mana lokal mengamati waktu musim panas sepanjang tahun.

Jika lingkungan tuan rumah menyediakan fungsionalitas untuk menentukan waktu musim panas, implementasi ECMAScript bebas untuk memetakan tahun yang bersangkutan ke tahun yang setara (tahun kabisat yang sama dan hari kerja awal yang sama untuk tahun itu) yang disediakan lingkungan tuan rumah. informasi waktu musim panas. Satu-satunya batasan adalah bahwa semua tahun yang setara harus menghasilkan hasil yang sama. "

Mesin JS yang berbeda menangani tanggal <1970 secara berbeda dalam hal penyesuaian zona waktu lokal. Beberapa mesin memetakan <1970 ke tahun-tahun yang lebih modern, yang akan menjelaskan mengapa Anda melihat tanggal penerapan DST meskipun saat itu Australia tidak menerapkan DST.

Lihat: https://bugzilla.mozilla.org/show_bug.cgi?id=351066#c20 dan https://bugzilla.mozilla.org/show_bug.cgi?id=1029923

+1

Lol (maaf)

Datang ke sini dari HN.YC. Ini lucu! : D lol

+1 - Laporan bug terbaik yang pernah ada!

+1 Australia memiliki intisari yang berulang.

Tampaknya ada masalah dengan spesifikasi, jelas, pertanyaannya adalah, bagaimana itu harus diperbaiki - karena spesifikasi ECMAscript menyatakan DST saat ini harus diterapkan ke tahun-tahun sebelumnya, sementara bahasa pemrograman lain, dan terutama pengguna, mengharapkan perilaku yang berbeda.

Entah seseorang harus menulis pembungkus di sekitar Tanggal yang dengan benar mengimplementasikan data DST sebelumnya dan memperbaiki masalah tersebut, atau solusi yang berbeda perlu ditemukan. Saya tidak tahu mana yang lebih disukai, tetapi bagi pengguna, solusi saat ini jelas membingungkan.

Apakah halaman ini membantu?
0 / 5 - 0 peringkat

Masalah terkait

WesleyKapow picture WesleyKapow  ·  3Komentar

th0r picture th0r  ·  3Komentar

jetta20162 picture jetta20162  ·  3Komentar

ceymard picture ceymard  ·  3Komentar

kishanmundha picture kishanmundha  ·  3Komentar