æ©èœããªã¯ãšã¹ãããã°ãå ±åããŸããïŒ
ãã°
çŸåšã®åäœã¯äœã§ããïŒ
æ°ããã¢ãããã¯ãã£ãã·ã¥ã®æžã蟌ã¿ãšäžŠè¡ããŠãã¹ããå®è¡ãããšãè€æ°ã®ããã»ã¹ãåããã¡ã€ã«ã«æžã蟌ãããšãããããååå€æŽãšã©ãŒãçºçããŸãã --no-cache
ãªãã·ã§ã³ãèšå®ãããŠããŠãããã¡ã€ã«ã«æžã蟌ãããšããŠãããããååå€æŽãšã©ãŒãçºçããŸãã
æåŸ ãããåäœã¯äœã§ããïŒ
--no-cache
ã¯ãã£ãã·ã¥ãã¡ã€ã«ãæžãã¹ãã§ã¯ãªããšæããŸãæ£ç¢ºãªJestæ§æãæäŸããJestãããŒããyarn / npmããŒãžã§ã³ãããã³ãªãã¬ãŒãã£ã³ã°ã·ã¹ãã ã«ã€ããŠèª¬æããŠãã ããã
{
"clearMocks": true,
"collectCoverageFrom": [
"packages/**/src/**/*.{ts,tsx}",
"!packages/sf-lint/**",
"!**/*.d.ts"
],
"coverageReporters": [
"text-summary"
],
"moduleFileExtensions": [
"ts",
"tsx",
"js",
"json"
],
"setupTestFrameworkScriptFile": "<rootDir>/jestEnvironment.js",
"transform": {
"\\.(ts|tsx)$": "<rootDir>/scripts/preprocessTypescript.js",
"\\.(less|css|svg|gif|png|jpg|jpeg)$": "<rootDir>/scripts/preprocessText.js"
},
"testRegex": "(Spec|.spec).tsx?$"
}
åè«21.0.1
ããŒã6.9.2
糞0.27.x / 1.0.0
OSãŠã£ã³ããŠ
ããã¯é¢ä¿ãããŸãããïŒ https://github.com/facebook/jest/pull/4432
ç§ã¯ããã¯æããªãã ç§ãã¡ã®ãªããžããªã«èŠãããã±ãŒã¹ã¯ããŸã£ããåããã¡ã€ã«ã2ã€ã®ç°ãªãããã»ã¹ïŒäžŠåå®è¡äžïŒã§ã¢ãã¯ããã1ã€ã®ããã»ã¹ã§ãã¡ã€ã«ãããã¯ãããŠããããã«ãã£ãã·ã¥æžã蟌ã¿æäœã倱æããããšã ãšæããŸãã ãã®ãã±ããã¯ãåãå 容ã®ç°ãªããã¡ã€ã«ã«é¢ãããã®ã®ããã«èŠããŸãã ç§ãã¡ããã¹ãããŠãããªããžããªã«ã¯ããã®åé¡ã«ééããã±ãŒã¹ã¯ãããŸããã
åºæ¬çã«ããã¹ãã§åãåé¡ãçºçããŸãã åçŸããç°¡åãªæ¹æ³ã®1ã€ã¯ãjest cacheDirectory
ãåé€ããŠã次ã®å®è¡æã«ãã£ãã·ã¥ã匷å¶çã«çæããããšã§ããã
`` `ãã¹ãã¹ã€ãŒãã®å®è¡ã«å€±æããŸãã
jest: failed to cache transform results in:
CïŒ/ myniceproject / src / jest-cache / jest-transform-cache-b2e8f1f700b9bd266a0d27bb01b47a2b-34a7e3d71d38ff01f65fdb5abdf5126b / 3f / settingsProvider_3f1439e55275a95ecfdb7dcb432f7958
倱æã¡ãã»ãŒãžïŒEPERMïŒæäœã¯èš±å¯ãããŠããŸãããååãå€æŽããŠãã ãã
'CïŒ\ myniceproject \ srcjest-cachejest-transform-cache-b2e8f1f700b9bd266a0d27bb01b47a2b-34a7e3d71d38ff01f65fdb5abdf5126b \ 3f \ settingsProvider_3f1439e55275a95ecfdb7dcb432f7958.1630729137
->
'CïŒ\ myniceproject \ srcjest-cachejest-transform-cache-b2e8f1f700b9bd266a0d27bb01b47a2b-34a7e3d71d38ff01f65fdb5abdf5126b \ 3f \ settingsProvider_3f1439e55275a95ecfdb7dcb432f7958' `
åãåé¡ãããããããåé¿ããæ¹æ³ãèŠã€ããããšãã§ããŸããã ãžã§ã¹ãã¯åºæ¬çã«ãã®ããã«äœ¿çšã§ããŸããã
20.0.4ãã21.2.0ã«æŽæ°ããããšããŠããŸããããã«ããµãŒããŒã§æ¬¡ã®ãšã©ãŒãçºçããŸãã
Test suite failed to run
[13:46:50]
[13:46:50] jest: failed to cache transform results in: C:/TeamCity/buildAgent/temp/buildTmp/jest/jest-transform-cache-c60bb8ad55f1dbc29115038800657f2f-4895fc34da3cd9ad1e120af622bca745/3b/fe-selectors_3b56db772e798e2e4d0c9fc7c9e4a770
[13:46:50] Failure message: EPERM: operation not permitted, rename '...\jest\jest-transform-cache-c60bb8ad55f1dbc29115038800657f2f-4895fc34da3cd9ad1e120af622bca745\3b\fe-selectors_3b56db772e798e2e4d0c9fc7c9e4a770.1701848979' -> '...\jest\jest-transform-cache-c60bb8ad55f1dbc29115038800657f2f-4895fc34da3cd9ad1e120af622bca745\3b\fe-selectors_3b56db772e798e2e4d0c9fc7c9e4a770'
[13:46:50]
[13:46:50] at Object.fs.renameSync (fs.js:772:18)
[13:46:50] at Function.writeFileSync [as sync] (node_modules/write-file-atomic/index.js:192:8)
ç§ã¯ä»ãåãåé¡ã®ãã¹ããã©ã³ãã ã«å£ããŠããŸãã
--runInBandãã©ã°ã䜿çšããŠãã¹ããå®è¡ãããšãäºæ³ã©ãããã¹ãŠãOKã«ãªããŸãã
ç§ã¯åãåé¡ãããªãäžè²«ããŠèŠãããšãã§ããŸãïŒ
â Test suite failed to run
jest: failed to cache transform results in: .../jest-transform-cache-...
Failure message: EPERM: operation not permitted, rename '...' -> '...'
at Error (native)
at Object.fs.renameSync (fs.js:810:18)
at Function.writeFileSync [as sync] (node_modules/write-file-atomic/index.js:192:8)
åè«21.2.1
ããŒã6.11.1
OSãŠã£ã³ããŠ
--no-cache
ã¯åœ¹ã«ç«ã¡jest-transform-cache
ã¯ãŸã æžã蟌ãŸããŠããŸãã 圹ç«ã€ã®ã¯--runInBand
ã ãã§ããããã¯ã倧èŠæš¡ãªãããžã§ã¯ãã«ã¯ã»ãšãã©åãå
¥ããããŸããã
åé¡ã®èšºæã«åœ¹ç«ã€ããšã¯ãããŸããïŒ åçŸã±ãŒã¹ãäœæããå¿ èŠããããŸããïŒ
ãã®ãšã©ãŒã¯é倧ã§ããïŒ ãã¹ãã¹ã€ãŒãå šäœãåé€ããã®ã§ã¯ãªããèŠåãšããŠæ±ãããšã¯ã§ããŸããïŒ ããã¯ãªãããŠåè©Šè¡ããæ¹æ³ã¯ãããŸããïŒ
å°ããªåçŸããããšããã§ããã
ãããåçŸã§ãïŒ https ïŒ
babel-jest
ãä»ããŠlodash-esãå¹æçã«å®è¡ããå€æãã£ãã·ã¥ã«ããŒã¿ãå
¥åããŸãã
ããã¯ã2ã€ã®ç°ãªããã·ã³ïŒWin8.1ãšWin10ïŒã§80ïŒ
ã®ç¢ºçã§å€±æããŸãã
--no-cache
ãåé€ãããšã100ïŒ
倱æããŸãã --runInBand
ãè¿œå ãããšã0ïŒ
ã«ãªããŸãã
ïŒå¥œå¥å¿ããWin10ã®WSLã§å®è¡ããããšããŸããããPosix APIã䜿çšããŠåé¡ãåçŸããããšã¯ã§ããŸããïŒ
ããã¯Windowsã§èµ·ãã£ãŠããã ãã§ããïŒ ä»®æ³ãã·ã³ä»¥å€ã®Windowsãã·ã³ã«ã¢ã¯ã»ã¹ã§ããªãããããããã°ãæãç°¡åã§ã¯ãããŸãã...
@ jeanlauliac write-file-atomic
4088ã«write-file-atomic
ãè¿œå ããŸããããæäŒã£ãŠããã ããŸãããïŒ
ãã®åé¡ã¯ã httpsïŒ//github.com/npm/write-file-atomic/issues/10ããã³https://github.com/npm/write-file-atomic/pull/22ãšéåžžã«ãã䌌ãŠã
procmonãã¬ãŒã¹ãå®è¡ããã ãã§ããåé¡ã®äŸã次ã«ç€ºããŸãã
æå»| ããã»ã¹å| PID | æäœ| ãã¹| çµæ| 詳现
-| -| -| -| -| -| -
16ïŒ54ïŒ43.2304011 | node.exe | 7624 | SetRenameInformationFile | ... \ constant_ee286bbcf367680ce61a90e506522f92.82986661 | æå| ReplaceIfExistsïŒTrueããã¡ã€ã«åïŒ... \ constant_ee286bbcf367680ce61a90e506522f92
16ïŒ54ïŒ43.2305499 | node.exe | 8208 | SetRenameInformationFile | ... \ constant_ee286bbcf367680ce61a90e506522f92.103872574 | ã¢ã¯ã»ã¹ãæåŠãããŸãã| ReplaceIfExistsïŒTrueããã¡ã€ã«åïŒ... \ constant_ee286bbcf367680ce61a90e506522f92
ã芧ã®ãšããã2ã€ã®ããã»ã¹ãäºãã«1ããªç§ä»¥å ã«åããã¡ã€ã«ã®ååãå€æŽããããšããŠããã2çªç®ã®ããã»ã¹ã¯å€±æããŸãã
npm / write-file-atomicïŒ22ã¯writeFile()
ã®éåæããŒãžã§ã³ã«å¯Ÿå¿ããŠãããšæããŸããã writeFileSync()
ã¯åŒãç¶ã圱é¿ãåããŸãã
åããã¡ã€ã«ã«å¯ŸããŠworker-farm
ã§write-file-atomic
ã䜿çšããã ãã§ãã©ãããããã倱æããããšã瀺ãåçŸãäœæããããšã¯å¯èœã§ããããïŒ ãã®ãããžã§ã¯ãã«å¯ŸããŠåé¡ãéãã®ã¯çŽ æŽãããããšã§ããä¿®æ£ãå¿
èŠãªã®ã¯ããã ãšæããŸãã
ãŸãã¯ãjestå ã§ãåããšã©ãŒïŒappveyor CIããããŸãïŒã瀺ããã¹ããäœæã§ããã°ããããéå§ã«ãªãå¯èœæ§ããããŸããïŒ
ãã®ãšã©ãŒãçºçããå Žåã«ã©ã®ãããªåäœãå¿ èŠãããããããŸããã æžã蟌ã¿ãåè©Šè¡ããŸããïŒ ãã¹ããåå®è¡ããŸããïŒ ãã¹ããã¡ã€ã«å šäœïŒ
OKãå¥ã®åçŸãäœæããŠã¿ãŸãã è€æ°ã®ããã»ã¹ãçæãããã£ãã·ã¥ãç¡å¹å/ã¯ãªãŒã³ã¢ãããã倱æãããŸã§å®è¡ãç¶ããå¿ èŠããããããjestãã¹ããäœæã§ãããã©ããã¯ããããŸããã
ãã®ãšã©ãŒãçºçããå Žåã«ã©ã®ãããªåäœãå¿ èŠãããããããŸããã
ãŸãã --no-cache
ããªã³ã®å Žåã§ãããã£ãã·ã¥ã«ããŒã¿ãå
¥åãããã¹ãã§ã¯ãªãããããã®åé¡ã¯çºçããªãã¯ãã§ãã
次ã«ãåææäœãæ£ããåè©Šè¡ã§ãããã©ããããããŸãã- writeFileSync()
代ããã«writeFile()
ã䜿çšããããšã¯å¯èœã§ããïŒ ããããã°ã write-file-atomic
ã¯èªåçã«åè©Šè¡ããå¿
èŠããããŸãïŒç¢ºèªã®ããã®ãã¹ããäœæããŸãïŒã
ãŸãã
--no-cache
ããªã³ã®å Žåã§ãããã£ãã·ã¥ã«ããŒã¿ãå ¥åãããã¹ãã§ã¯ãªãããããã®åé¡ã¯çºçããªãã¯ãã§ãã
ããã¯è¯ãç¹ã§ãããåå¥ã«ä¿®æ£ããå¿
èŠããããŸãã ããããã°ã --no-cache
ã¯å°ãªããšãåé¿çã«ãªããŸãã
次ã«ãåææäœãæ£ããåè©Šè¡ã§ãããã©ããããããŸãã-
writeFile()
代ããã«writeFileSync()
writeFile()
ã䜿çšããããšã¯å¯èœã§ããïŒ
@cpojerã¯ãåæããªãããã«ããããšã«ã€ããŠèããŠããŸããïŒ ãããã©ã®ããã«ã¹ã±ãŒãªã³ã°ãããããããªãã ãŸãã¯ããããä¿®æ£ããæ¹æ³ã«ã€ããŠå¥ã®ã¢ã€ãã¢ãããå Žå
--no-cache
ã¯ãå®éã«ã¯--reset-cache
ã«äŒŒãŠããŸãã ããã¯ãæ¢åã®ãã£ãã·ã¥ã䜿çšããªãããšãæå³ããŸãããããã§ããã£ãã·ã¥ãæžã蟌ã¿ãŸãã ãããä¿æããããšæããŸããrequire
åŒã³åºãäžã«çºçãããããåæããå¿
èŠããããŸãããã®ããããããå€æŽããããšã¯ã§ããŸããããããworker-farm
ãšwrite-file-atomic
ã®ããwrite-file-atomic
ã€ã®åçŸã§ãïŒ https ïŒ
ãããŸã§ã®èª¿æ»çµæïŒåæããŒãžã§ã³ã¯æåŸ ã©ããã«å€±æããŸãããé©ãã¹ãããšã«éåæããŒãžã§ã³ã倱æããŸãã ããã¯ãããããåãããã»ã¹ã§å®è¡ãããå Žåã«ã®ã¿åè©Šè¡ãã¥ãŒãå®è£ ããããšãæå³ããŸããããã®å Žåã¯åœ¹ã«ç«ã¡ãŸããã
ãããä¿æããããšæããŸãã
æ°ããæïŒ éåžžã«èª€è§£ãæãååã§ãã ãŸããããšãã°CIã§ã¯ããã£ãã·ã¥ãå¿
èŠã«ãªãããšã¯ãã£ãã«ãªãããããªãœãŒã¹ãç¡é§ã«ãªããŸãã ãŸãã¯ã1åã®ãã¹ãå®è¡ã§çæããããã£ãã·ã¥ã--no-cache
éã«äœ¿çšãããæ¢åã®ãã£ãã·ã¥ã®ã¿ãç¡èŠãããŸããïŒ
ããã
worker-farm
ãšwrite-file-atomic
ã®ããworker-farm
ã€ã®åçŸã§ã
é©ãã°ããïŒ write-file-atomicã«å¯Ÿããåé¡ãéãããšãã§ããŸããïŒ ä¿®æ£ãå¿ èŠãªããã«æããŸããããã§ãªãå ŽåïŒäžåºŠã«è€æ°ã®ããã»ã¹ãäœæããããšããµããŒãããããªãå ŽåïŒãç§ãã¡ã®åŽã§åæ€èšã§ããŸãã WDYTïŒ
ç§ãããŒã«ã«ã§è©Šãããæ©èœããŠããããã«èŠãããããã¯ãåãå 容ã®ãã¡ã€ã«ã«ååãå€æŽããããšããå Žåã®ãšã©ãŒãç¡èŠããŠããŸãã å¥ã®ããã»ã¹ãã¬ãŒã¹ã«ãåã£ããããšãæå³ããã ããªã®ã§ããããç¡èŠããŠå ã«é²ãããšãã§ããŸãã
const cacheWriteErrorSafeToIgnore = (
e: Error,
cachePath: Path,
fileData: string,
) => {
if (
e.message &&
e.message.indexOf('EPERM: operation not permitted, rename') > -1
) {
try {
const currentContent = fs.readFileSync(cachePath, 'utf8');
return fileData === currentContent;
} catch (e) {
}
}
return false;
};
@SimenB ã確ãã«ãç§ã¯åé¡ãæåºããŸãã
@cpojer ããã®ãšã©ãŒã飲ã¿èŸŒãã ãç¡èŠãããããŠãèŠåãšããŠæ±ãããšã¯ã§ããŸããïŒ ããã¯ããã¡ã€ã«ããã§ã«æžã蟌ãŸããŠãããããŒã¿ã倱ãããŠã¯ãªããªãããšãæå³ããŸãã
ã¢ããã¹ããªãŒã ã®åé¡ïŒnpm / write-file-atomicïŒ28
ããã¯ããååã®å€æŽããWindowsã§ã®ã¢ãããã¯æäœã§ã¯ãªãããšãæå³ãããšæããŸãããããã£ãŠã write-file-atomic
ã«ããä»®å®ãç ŽããŸãã Windows APIã¬ãã«ã§æå¹ã«ã§ãããã©ã°ããªãéããããã¯ãWindowsã§ã¢ãããã¯ãªæžã蟌ã¿/ååã®å€æŽãå®å
šã«è¡ãããšãäžå¯èœã§ããããšãæå³ããå¯èœæ§ããããŸãã
@jwbayããªãã®è§£æ±ºçã¯ç§ã«ã¯åççã«èŠããŸãïŒ ðãã ãã indexOf
ã䜿çšãã代ããã«ã e.code === 'EPERM'
䜿çšããŸãïŒããå
ç¢ã§ãç¹å®ã®ã¡ãã»ãŒãžã«äŸåããŸããïŒã å€ã確èªããããã«ãã¡ã€ã«ãå床èªã¿åãå¿
èŠã¯ãªããšæããŸããããã«ãããè¿œå ã®åæå®è¡ã®åé¡ãçºçããå¯èœæ§ããããŸãïŒããšãã°ããã¡ã€ã«ãããã«å¥ã®ããã»ã¹ã«ãã£ãŠåæã«æžã蟌ãŸããŠããå ŽåïŒã PRãéã£ãŠããã ããŸãããã
ããã¡ã€ã«åæãæžã蟌ãããã«æ±ããããããéåæã§æžã蟌ãããã«ãã§ã«ãã¥ãŒã«ããå Žåã¯ããã€ã«ã¢ãŠããããïŒãããããªãã·ã§ã³ã䜿çšããŠïŒã®è¡ã«æ²¿ã£ãŠwrite-file-atomic
PRã®äœæ¥ãéå§ããããšããŠããŸãããåäœããªã³ã«åãæ¿ããŸãïŒã ãããããããJestã¬ãã«ã§åŠçã§ããã°ãæ¥ãããšã¯ãããŸããã cc @jeanlauliac
ããã¡ã€ã«åæãæžã蟌ãããã«æ±ããããããéåæã§æžã蟌ãŸãããã¥ãŒã«ãã§ã«ããå Žåã¯ããã€ã«ã¢ãŠãããããšããè¡ã«æ²¿ã£ãŠãwrite-file-atomicã®PRã®äœæ¥ãéå§ããããšããŠããŸããïŒãããããåäœããªã³ã«ããŸãïŒã
ãã®ããžãã¯ïŒããŒã«ã«ãã¥ãŒïŒãè¿œå ããŠãåé¡ã¯è§£æ±ºããªããšæããŸããããã¯ãã»ãšãã©ã®å Žåãç°ãªãããã»ã¹ãåããã¡ã€ã«ã«æžã蟌ãããšããïŒååãå€æŽããïŒãšãã«çºçããããã§ãã
䞊è¡æ§ã®åé¡ãå®å
šã«ä¿®æ£ããã«ã¯ããã£ãã·ã¥ã®å®è¡æ¹æ³ãåæ€èšããå¿
èŠãããå ŽåããããŸããããšãã°ããã£ãã·ã¥ã«ã¢ã¯ã»ã¹ããåäžã®ããã»ã¹ããããããçš®ã®IPCãä»ããŠéä¿¡ããŸãã memcached
ãªã©ã®æ¢åã®ããŒ/å€ã¹ãã¢ã·ã¹ãã ã䟿å©ãªå ŽåããããŸãã
ãã®ããžãã¯ïŒããŒã«ã«ãã¥ãŒïŒãè¿œå ããŠãåé¡ã¯è§£æ±ºããªããšæããŸããããã¯ãã»ãšãã©ã®å Žåãç°ãªãããã»ã¹ãåããã¡ã€ã«ã«æžã蟌ãããšããïŒååãå€æŽããïŒãšãã«çºçããããã§ãã
ãããç§ã¯ãããããã®æåé¡ã誀解ããŸããã ç§ã®èªã¿æ¹ã§ã¯ãã©ã€ãã©ãªã«ã¯ãã§ã«éåæãªã¯ãšã¹ãã«å¯ŸããŠé©åã«æ©èœãããã¥ãŒã€ã³ã°ã¡ã«ããºã ããããŸãããåæãªã¯ãšã¹ããæ··åšããããšãè¡çªãçºçããå¯èœæ§ããããŸãã
äžèšã®ãã«ãªã¯ãšã¹ãã§ãã®åé¡ã解決ã§ããã¯ãã§ãã å°ãªããšãããã¯ç§ã®ããã«ãããããŸããïŒ
@mekwallãç§ã¯åœŒãã䜿çšããŠãããšæãrename()
ã§ã®éåæããŒãžã§ã³writeFile()
ããããŠããã¯ãŸã ç§ã®ãã¹ãã§å€±æããŸãhttps://github.com/asapach/write-atomic-issueã ç§ã®ãªãããå®è¡ããŠã¿ãŠãã ããã ããªãã®å€æŽã¯ãã®åé¡ãèµ·ããå¯èœæ§ãæå°éã«æãããããããªããšæããŸããããããå®å
šã«æé€ããããã§ã¯ãããŸããã
@asapachç§ã®å€æŽãè©ŠããŠã¿ãŸãããïŒ äœåºŠãè©ŠããŸããããå€æŽãå ããŠãEPERM: operation not permitted, rename
ãååŸã§ããŸããã§ããããå€æŽãå ããªããŠãæ¯åååŸã§ããŸããã
@mekwall ã
ãŸãã¯ãæè¡çã«ã¯å€±æããŸãããïŒåæãããŒãäžæãããªãããïŒãã³ã³ãœãŒã«ã«ã¯EPERMãšã©ãŒãæ£ãã°ã£ãŠããŸãã
@asapachããªããæ±ããŠããåé¡ãèŠã€ããŸããã graceful-fs
ããªãã£ã«ã«ãããŸãã ãã®PRã«ä¿®æ£ãæçš¿ããŸããïŒ https ïŒ
@mekwall ãã¯ããããã¯åé¡ã«å¯ŸåŠããŠããããã§ã-åæããŒãžã§ã³ãšéåæããŒãžã§ã³ã®äž¡æ¹ã§ãšã©ãŒã¯ãããããŸããã
åé¡ã¯ã fs.unlinkSync(tmpfile)
ãåŒã³åºãããªããããäžæãã¡ã€ã«ãåé€ãããªãããšã§ãïŒ https ïŒ
@asapach graceful-fs
ååå€æŽã«ãªã³ã¯è§£é€ãè¿œå ããŸãããããããæ£ããæ¹æ³ãã©ããã¯ããããŸããã Afaik fs.rename
ã¯MoveFileé¢æ°ã䜿çšããŠããããããœãŒã¹ãå®å
ã«ã³ããŒããããšã¯ã§ããŸããã ãœãŒã¹ã¯ååãå€æŽããã ãã§ããœãŒã¹ãšå®å
ãåæã«ååšããããšã¯ãããŸããã
@mekwall ãããã¯å°ã圹ã«ç«ã¡ãŸãããå Žåã«ãã£ãŠã¯ãã¯ãŒã«ãŒãæ©æã«çµäºããå ŽåïŒãã¹ãŠã®äœæ¥ãå®äºããããïŒãã¯ãªãŒã³ã¢ãããåŸ æ©ããªããããäžéšã®ãã¡ã€ã«ã¯ã¯ãªãŒã³ã¢ãããããŸããã éåæããŒãžã§ã³ã¯æ£åžžã«æ©èœããŠããããã§ãã
@asapachæåŸ ã©ããã«æ©èœããŠããŸããã ããŒãã®å éšã«é£ã³èŸŒãã§ãããŒããå®éã«ã©ã®ããã«æ©èœããŠããããããã³æå³ãããåäœãã©ãããã¹ãããç解ããå¿ èŠããããŸãã graceful-fsã®èŠç¹ã¯ããã¹ãŠã®ãã©ãããã©ãŒã ã§åãããã«æ©èœããããšã ãšæããŸãããã®ãããããã«æ·±ãæãäžããŠãããŸãã å°ãªããšãç§ãã¡ã¯ç¯äººãèŠã€ããŸãã:)
@asapachç§ã¯æ°ã¥ããç§ã®PRã®ããã«write-file-atomic
ã§ãããã§ã¯ãªãä»äºãç§ã¯è¿œå ããããšã«ãã£ãŠãå¥ã®ã¢ãããŒããåã£ãã®ã§ã fs.renameSync
ã§graceful-fs
ãšåãåé¿çãšfs.rename
ããããããããã³ã°ã ããã«ããããã¹ãã¯æåŸ
ã©ããã«æ©èœããŸãã
@mekwall ãããããšããç§ã¯ç§ã®äž¡æ¹ã®åçŸã±ãŒã¹ã§ããªãã®å€æŽã確èªããŸããããããŠãããã®ã©ãã倱æããŸããã
ãã€ãã¹é¢ãšããŠã¯ãåæã®ããã®CPUãšãã£ã¹ã¯ã®äœ¿çšéãå¢ãããšæããŸãããããããäºæ³ãããŸãã
ãããæã«åã£ãŠä¿®æ£ããã®ãæäŒã£ãŠãããå€ãã®äººã ã«æè¬ããŸãã 倧å€æè¬ããããŸãïŒ â€ïžããŸãããã°ãgraceful-fsã®ä¿®æ£ãæ£ãããã®ã§ããããªãªãŒã¹ãããŸãã
@SimenBã©ãããããŸããŠïŒ ç§ãã¡ã¯ä»äºã§ããã«èŠããã§ããã®ã§ãç§ã¯ç§ã®ããŒã ã«ãã£ãŠããã調æ»ããæéããããŸããã å€æŽã¯å€ãã®ããã±ãŒãžã«åœ±é¿ãããããåãå ¥ãããããŸã§ã«æéããããå¯èœæ§ããããŸãïŒ/
ãã®åé¿çããã€ãªãªãŒã¹ããããã«ã€ããŠäœãèãã¯ãããŸããïŒ
@cpojerééãããçç±ã«ã€ããŠãããå°ãæ å ±ã
ç³ãèš³ãããŸããããä¿®æ£ã¯ãŸã graceful-fsã«å°éããŠããªãããã§ã:(
è€æ°ã®äººãhttps://github.com/isaacs/node-graceful-fs/pull/119ã䜿çšãããšåé¡ã解決ããããšã確èªã§ããŸããïŒ
糞ã®è§£å床ã䜿çšããŠãã©ãŒã¯ã䜿çšã§ããŸããhttpsïŒ//yarnpkg.com/en/docs/selective-version-resolutionsãåç §ããŠ
äŸãã°
{
"resolutions": {
"graceful-fs": "mekwall/node-graceful-fs#a10aa576f771d7cf3dfaee523f2e02d6eb11a89f"
}
}
@SimenBå°ãªããšããç§ã«ãšã£ãŠã¯åé¡ã¯è§£æ±ºããŸãð
+1ç§ã«ãšã£ãŠãã
@SimenBãŸããç§ã®åé¡ãä¿®æ£ãã
ç·šéïŒå®éã«ã¯ãããã¯ç§ã®éçºã©ãããããã§ã¯æ©èœããŸãããããã«ããµãŒããŒã§ã¯æ©èœããŸããã§ããã ããã¯ç³ž1.2.1ãå®è¡ããŠããŸãããå€åãããçç±ã§ããïŒ
[16:47:55][Step 5/8] jest: failed to read cache file: D:/TeamCity/buildAgent2/temp/buildTmp/jest/jest-transform-cache-c39254d365b4bcb2c90f133d4b359d91-56a1804d8d831b3401a35a7e81857f3b/7e/rafPolyfill_7e7a83ed3f2680ba9aec0e45f59ade5d
[16:47:55][Step 5/8] Failure message: EPERM: operation not permitted, open 'D:\TeamCity\buildAgent2\temp\buildTmp\jest\jest-transform-cache-c39254d365b4bcb2c90f133d4b359d91-56a1804d8d831b3401a35a7e81857f3b\7e\rafPolyfill_7e7a83ed3f2680ba9aec0e45f59ade5d'
[16:47:55][Step 5/8]
[16:47:55][Step 5/8] at readCacheFile (node_modules/jest-runtime/build/script_transformer.js:465:60)
ã€ãŒã³1.0.0ã§ååã§ãããã¢ããã°ã¬ãŒãããŠã¿ã䟡å€ã¯ãããŸãã
解決çãå ¥ããããšããŸããããããã§ã倱æããŸãã ãã ããENOENTéåãšEPERMéåã®äž¡æ¹ããããŸãã
jest: failed to read cache file: C:/Users/dev/AppData/Local/Temp/jest/jest-transform-cache-857f905b2da01d52a9d1d17b6772ea4a-3a91587e29d4fef23c6e0cf16b2f5679/7d/index_7d0afc82f0b29ec31c4b5f296cbdee74
Failure message: ENOENT: no such file or directory, open 'C:\Users\dev\AppData\Local\Temp\jest\jest-transform-cache-857f905b2da01d52a9d1d17b6772ea4a-3a91587e29d4fef23c6e0cf16b2f5679\7d\index_7d0afc82f0b29ec31c4b5f296cbdee74'
at Object.fs.openSync (../fs.js:653:18)
at Object.fs.readFileSync (../fs.js:554:33)
ãããŠ
jest: failed to read cache file: C:/Users/dev/AppData/Local/Temp/jest/jest-transform-cache-857f905b2da01d52a9d1d17b6772ea4a-3a91587e29d4fef23c6e0cf16b2f5679/c4/std_pb_c403e6e7645c904896b66f44a3e43606
Failure message: EPERM: operation not permitted, open 'C:\Users\dev\AppData\Local\Temp\jest\jest-transform-cache-857f905b2da01d52a9d1d17b6772ea4a-3a91587e29d4fef23c6e0cf16b2f5679\c4\std_pb_c403e6e7645c904896b66f44a3e43606'
at Object.fs.openSync (../fs.js:653:18)
at Object.fs.readFileSync (../fs.js:554:33)
@mreishusãã«ããµãŒããŒã¯Windowsãå®è¡ããŠããŸããïŒ graceful-fs
ã®ä¿®æ£ã¯Windowsã®ã¿ã察象ãšããŠãããããLinuxããŒã¹ã®OSã§ã¯çºçããªãã¯ãã§ãã
@mekwallã¯ãã 2012R2ã§ã
ããã¯ç§ã«ãšã£ãŠå€§ããªåé¡ã§ããã2016幎11æ以éã graceful-fs
äœãèµ·ãã£ãŠããŸããã ã§ãããã @ mekwallãæäŸããä¿®æ£ã-i
ãã©ã°ãšè§£æ±ºç以å€ã«äœ¿çšã§ããäžæçãªè§£æ±ºçã¯ãããŸããïŒ
--runInBandã¯@frenicã§ã¯æ©èœããŸãããïŒ
ããã¯-i
ãšåãã§ãã¯ããæ©èœããŸãã ãããæ®å¿µãªããã倧èŠæš¡ãªãããžã§ã¯ãã§ã¯é·æçã«ã¯æç¶å¯èœã§ã¯ãããŸããã
èªåã§ãã©ãŒã¯ããŠå ¬éã§ãããšæããŸãããä¿®æ£ããã¹ãŠã®äººã«åœ¹ç«ã€ãšã¯æããŸãã
ç§ã¯åãç¶æ³ã«ãããŸãããç§ã®å Žåã-runInBandã¯æ©èœããŸããã
graceful-fs
ãªãŒããŒã©ã€ããææ°ããŒãžã§ã³ã®Jestã§ç¢ºèªããŸããããæ®å¿µãªãããæåŸã«ãã¹ãããŠãããä¿¡é Œæ§ãé«ããªãããã§ãã 倧èŠæš¡ãªãã¹ãã¹ã€ãŒãã§ç«¶åç¶æ
ã«é¥ãå¯èœæ§ã¯ãŸã ãŒãã§ã¯ãããŸããã
ãã®ã¹ã¬ãããã¹ã¯ããŒã«ããåŸã yarn
ã䜿çšããŠè§£æ±ºçãèŠã€ããŸããã 代ããã«npm
ã䜿çšãã解決çã¯ãããŸããïŒ
ãããŸã§ã®ãšãããããããé©çšããããŒãžã§ã³ã®graceful-fs
ãpackage.jsonã«è¿œå ããã ãã§ãããªã幞éã«æµãŸããŸããã npmãšyarnã§åäœããŸãã
"graceful-fs": "https://github.com/mekwall/node-graceful-fs.git#patch-1",
ããã«ã¡ã¯ã
äœããã®çç±ã§ããã®ãšã©ãŒã¯Jenkinsããå®è¡ããå Žåã«ã®ã¿çºçããããŒã«ã«ã§å®è¡ããå Žåã«ã¯çºçããŸããïŒåããã·ã³/ãã©ã«ããŒãªã©ã§ãïŒ
@jsheetzatiã®ãœãªã¥ãŒã·ã§ã³ã¯ïŒnpmã䜿çšããŠïŒç§ãã¡ã«ãæ©èœããŠããŸãããçµå±ã®ãšãããããã§ãã ãããæ°žç¶çã«è§£æ±ºããããã®ETAã¯ãããŸããïŒ
ããããšãã
Mor
Jenkinsããjestãå®è¡ããŠãããšãã«ãããã®åé¡ãçºçããŸãã --runInBand
ãªãã·ã§ã³ã¯ãåäžã®ãžã§ãã®å®è¡äžã®å€±æãåé¿ããã®ã«åœ¹ç«ã¡ãŸãããè€æ°ã®ãã«ãã䞊è¡ããŠå®è¡ãããšãjestã¯å€±æããŸãã
åé¿çãšããŠãããã¯å¯èœãªãªãœãŒã¹ãã©ã°ã€ã³ã䜿çšããŠã --runInBand
ãªãã·ã§ã³ãç¶æããªããã jest
ã€ã®
ãã®ã³ã¡ã³ãã誰ãã«åœ¹ç«ã€ããšãé¡ã£ãŠããŸãã
@nyrkovalex説æããŠããåé¡ãåé¿ããããã«è¡ãããšã¯ã Jestã®ãã£ãã·ã¥ãã£ã¬ã¯ããªãªãã·ã§ã³ã䜿çšããŠããã£ãã·ã¥ãã¯ãŒã¯ã¹ããŒã¹éã§å ±æãããªãããã«ããããšã§ãã
ãããè¡ãã«ã¯ã cacheDirectory: '<rootDir>/.jest-cache'
ãèšå®ããJestããªã»ãããå
¬éãããã¹ãŠã®ããã±ãŒãžã§ããã䜿çšãããããã«ããŸãã ãã®å Žåã¯ãå¿
ã.jest-cache
ã.gitignore
ã«è¿œå ããŠãã ããã
ãã®ãªãã·ã§ã³ãè¿œå ããåã«ãJenkinsãšãŒãžã§ã³ãããšã«16ã®ãšã°ãŒãã¥ãŒã¿éã§ã°ããŒãã«Jestãã£ãã·ã¥ãå ±æããçµæãããã€ãã®åé¡ãçºçããŸããã ããã¯å¯èœãªãªãœãŒã¹ã䜿çšãããšãåè¿°ã®åé¡ãé²ãããšãã§ããŸãããJenkinsãšãŒãžã§ã³ããæœåšçã«äœ¿çšããŠããªãããïŒJestãã¹ããããã«ããã¯ã«ãªãããïŒç¡é§ã«ãªããŸãã
@ anescobar1991ãã®ãªãã·ã§ã³ã¯ééããªãããè¯ã解決çã§ããç§ãã¡ã¯ããã䜿çšããããšãæ€èšããŸãã
ãã³ããããããšãïŒ
ããã«ã¡ã¯ã
ç§ãã¡ã¯gradleã䜿çšããŠnpmãå®è¡ãïŒçç±ã¯èããªãã§ãã ãã:)ïŒããããšJenkinsã®çµã¿åããã¯ãã©ãŒã§ãã
ç§ãã¡ã¯è©ŠããŸããïŒ
ãã¹ãŠåããšã©ãŒã§å€±æããŸãã
ç§ãã¡ã®ããã«åãå¯äžã®è§£æ±ºçã¯@jsheetzatiã«ãããã®
ç§ãã¡ã¯ãããããã®ä¿®æ£ã§ãã©ãŒã¯ããŠå ¬éããããšãã§ããŸã
ããã¯çŽ æŽãããã§ããã...
ç§ã¯ãã®åé¡ãããããæ±ããŠãããåªé ãªfsã®ãããã¯ç§ã®ããã«åããã ã ããç§ã¯ãã®ä¿®æ£ãããã ããã°å¹žãã§ãã
graceful-fsããããåé¿çãšããŠã競åç¶æ ãåé¿ããããã«ãåã¯ãŒã«ãŒããã»ã¹/ã¹ã¬ããã«ç¬èªã®ãã£ãã·ã¥ãã£ã¬ã¯ããªãäžããããšã¯ã§ããŸãããïŒ
ããããé ãã§ãããCIãµãŒããŒã§--runInBandã䜿çšããå¿ èŠããããããã¯ã¯ããã«æªãããšã§ãã
誰ããç§ã«é©åãªãã¡ã€ã«ãæããŠããããªããç§ã¯ããããæžãããšãããããããŸããã ç§ã¯åè«ã®æºãããã²ãŒãããã®ã«æ¬åœã«èŠåŽããŠããŸãã
ãããäœã§ãããã¯ããããŸããããããã¯æ°é±éãããããæ°ã¶æã§ãããç§ã¯ãã倱æã芳å¯ããŠããŸããã ãã°ããã®éjest22.4.2ã䜿çšããŠããŠãæè¿22.4.4ã«ã¢ããã°ã¬ãŒãããŸããã ä»ã®ããŸããŸãªããã±ãŒãžãæŽæ°ããŸããã
ãããã€ã³ããã ãã§ã-ããã¯ãWindows JenkinsCIãµãŒããŒäžã®jest23.6ã§èŠãããŸãã
--runInBand
ã¯æ©èœããŸããããã¹ãæéã2åã«ãªãã®ã§ãããŸãè¯ããããŸãããããã·ã¥ããåã«ãã¹ããå®è¡ããŠããã®ã§ãããŒã ã¡ã³ããŒãéåžžã«æ²ããããã«ãããæå¹ã«ããããšã¯ã§ããŸãããpackage.json
graceful -fsãªãŒããŒã©ã€ãã¯æ©èœããŸãããå°ãããã¯ã§ããgraceful-fs
ã¯ããã«ã€ããŠããŸãè¡ã£ãŠããªãã®ã§ïŒhttps://github.com/isaacs/node-graceful-fs/pull/131ã¯æšå¹Ž7æ以æ¥ã¢ã¯ã·ã§ã³ãèŠãŠããŸããïŒããããããã©ãŒã¯ããæãæ¥ãŸããïŒ ç§ã¯ããã«ãã°ã³ã¡ã³ããè¿œå ããŸãããã誰ããçªç¶ãããæŽçããããšã«ãžã£ã³ãããããšãæåŸ
ããŠããŸããïŒ 'ïŒ
åãåé¡ãçºçããŠããŸããããšã©ãŒã¡ãã»ãŒãžãç°ãªããŸãFailure message: EBADF: bad file descriptor, close
jest: failed to cache transform results in: C:/agent/_work/_temp/jest/jest-transform-cache-2a12bf9796741cb06fb97a276aa09712-7d718cda2d798ae78eb741b3feff799e/7b/test-setup_7bdb1937d8dbbf5088142bc21e74a530
2019-01-24T13:44:55.5496091Z Failure message: EBADF: bad file descriptor, close
--runInBandãæå®ããŠjestãå®è¡ããŠããæåã¯åé¡ã解決ããªãããã§ããã次ã®å®è¡åŸã«ã®ã¿ãšã©ãŒãªãã§å®è¡ãããŸãã
TFSãã«ãã®äžéšãšããŠWindows10 EnterpriseVMã§å®è¡ãããŸãã
@EthanSankinã¯ããªã³ã¯ããã
ç§ã¯ãããã®åé¡ã解決ããã¯ãã®graceful-fs
亀æã«åãçµãã§ããŸãã çŸåšã¢ã«ãã¡çã§ãããã¢ãŒãªãŒã¢ããã¿ãŒãç²åŸããã®ã¯çŽ æŽãããããšã§ãïŒ https ïŒ
å€ãããŒãžã§ã³ã®write-file-atomicã«æ»ããšãåé¡ã解決ããŸããã
@moizghã©ã®ããŒãžã§ã³ããã©ã®ããŒãžã§ã³ãžïŒ
@moizghã©ã®ããŒãžã§ã³ããã©ã®ããŒãžã§ã³ãžïŒ
2.4.2ãã2.3.0
@iarnaã¯ãsomååž°ãå°å ¥ãããããã§ãã
ãŸãããã®åé¡ã«ééããŸããããããè¯ã/æ°žç¶çãªä¿®æ£ãžã®æŽå¯ã¯ãããŸããïŒ
ããã¯ãããæ°ãæã§åã³å§ãŸããŸãã-ãŠã£ã³ããŠ-éåžžã«æç¶çã§ãã
write-file-atomicã¯ãã¯ãgraceful-fsã䜿çšããŸãã-å€åããã¯ãããšé¢ä¿ããããŸããïŒ
æãåèã«ãªãã³ã¡ã³ã
ãããã€ã³ããã ãã§ã-ããã¯ãWindows JenkinsCIãµãŒããŒäžã®jest23.6ã§èŠãããŸãã
--runInBand
ã¯æ©èœããŸããããã¹ãæéã2åã«ãªãã®ã§ãããŸãè¯ããããŸãããããã·ã¥ããåã«ãã¹ããå®è¡ããŠããã®ã§ãããŒã ã¡ã³ããŒãéåžžã«æ²ããããã«ãããæå¹ã«ããããšã¯ã§ããŸãããpackage.json
graceful -fsãªãŒããŒã©ã€ãã¯æ©èœããŸãããå°ãããã¯ã§ããgraceful-fs
ã¯ããã«ã€ããŠããŸãè¡ã£ãŠããªãã®ã§ïŒhttps://github.com/isaacs/node-graceful-fs/pull/131ã¯æšå¹Ž7æ以æ¥ã¢ã¯ã·ã§ã³ãèŠãŠããŸããïŒããããããã©ãŒã¯ããæãæ¥ãŸããïŒ ç§ã¯ããã«ãã°ã³ã¡ã³ããè¿œå ããŸãããã誰ããçªç¶ãããæŽçããããšã«ãžã£ã³ãããããšãæåŸ ããŠããŸããïŒ 'ïŒ