nodejs / nodejs/citgm

npm failing in CITGM across all platforms/versions

Open
#897 10 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
JavaScript
Stars
606
Forks
157
Avg merge
3d 23h
Merged PRs (30d)
3

Description

npm is/has been a regular failure in CITGM across all platforms/versions for a while. It's probably an important one to try to fix so we can properly track regressions.

Recent reruns on npm-v8.6.0 fail on all platforms:

There are a few different failures, with some obscured by other problems.

  1. On the majority of platforms the output is not easily readable in the Jenkins jobs as it contains the colour codes:
 added 517 packages, and changed 14 packages in 60s
 > npm@8.6.0 test
 > tap
 [0m[0m[1m[38;2;0;0;0m[42m PASS [0m[0m[0m test/bin/npm-cli.js[0m[37m[1m 1[22m[32m OK [0m[1m[38;2;170;170;170m683.401ms[39m[22m[0m[0m[42m[0m[0m[0m[0m[1m[32m[37m[0m[0m[1m[38;2;0;0;0m[42m[0m[0m[0m[0m[0m[1m[38;2;0;0;0m[42m[0m[0m[0m[0m[0m[0m[0m
 [0m[0m[1m[38;2;0;0;0m[42m PASS [0m[0m[0m test/bin/npx-cli.js[0m[37m[1m 7[22m[32m OK [0m[1m[38;2;170;170;170m1s[39m[22m[0m[0m[42m[0m[0m[0m[0m[1m[32m[37m[0m[0m[1m[38;2;0;0;0m[42m[0m[0m[0m[0m[0m[1m[38;2;0;0;0m[42m[0m[0m[0m[0m[0m[0m[0m
 [0m[0m[1m[38;2;255;255;255m[44m SKIP [0m[0m[0m test/bin/windows-shims.js > [36mtest only relevant on windows[0m[37m [0m[1m[38;2;170;170;170m3.385ms[39m[22m[0m[0m[1m[44m[0m[0m[0m[36m[0m[37m[0m[0m[1m[44m[0m[0m[0m[36m[0m[0m[1m[38;2;255;255;255m[44m[0m[0m[0m[0m[0m[0m[0m
 [0m[0m[1m[38;2;255;255;255m[44m SKIP [0m[0m[0m TAP[0m[0m[1m[38;2;255;255;255m[44m[0m[0m[0m[0m[0m[0m[0m
  1. Multiple test failures can be found within the output, such as below:
01:17:59 error:                     | test: test/lib/utils/exit-handler.js handles unknown error with logs and debug  
01:17:59 error:                     | file                                                                            
01:17:59 error:                     | at:                                                                             
01:17:59 error:                     | line: 132                                                                       
01:17:59 error:                     | column: 9                                                                       
01:17:59 error:                     | file: test/lib/utils/exit-handler.js                                            
01:17:59 error:                     | stack: |                                                                        
01:17:59 error:                     | test/lib/utils/exit-handler.js:132:9                                            
01:17:59 error:                     | Array.forEach (<anonymous>)                                                     
01:17:59 error:                     | test/lib/utils/exit-handler.js:131:14                                           
01:17:59 error:                     | Array.forEach (<anonymous>)                                                     
01:17:59 error:                     | Test.<anonymous> (test/lib/utils/exit-handler.js:129:8)                         
01:17:59 error:                     |                                                                                 
01:17:59 error:                     | ​ FAIL ​ test/lib/utils/exit-handler.js                                           
01:17:59 error:                     |  ✖ should be equal                                                              
01:17:59 error:                     |                                                                                 
01:17:59 error:                     | .reduce((__, l) => parseInt(l.match(/^(\d+)\s/)[1]))                            
01:17:59 error:                     | t.equal(logs.length, lastLog + 1)                                               
01:17:59 error:                     | ----^                                                                           
01:17:59 error:                     | t.match(logs.error, [                                                           
01:17:59 error:                     | ['code', 'ECODE'],                                            
  1. aix72-ppc64, rhel8-s390x, rhel7-s390x hit a different error early on:
 > tap
 ----------|---------|----------|---------|---------|-------------------
 File      | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s 
 ----------|---------|----------|---------|---------|-------------------
 All files |       0 |        0 |       0 |       0 |                   
 ----------|---------|----------|---------|---------|-------------------
 /home/iojs/tmp/citgm_tmp/13a08f5e-0713-4513-983d-261f65768bac/npm/node_modules/tap/node_modules/yoga-layout-prebuilt/yoga-layout/build/Release/nbind.js:53
         throw ex;
         ^
 TypeError: Cannot read properties of undefined (reading 'match')
     at onError (/home/iojs/tmp/citgm_tmp/13a08f5e-0713-4513-983d-261f65768bac/npm/node_modules/tap/bin/run.js:864:15)
     at /home/iojs/tmp/citgm_tmp/13a08f5e-0713-4513-983d-261f65768bac/npm/node_modules/tap/bin/run.js:141:34

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by reproducing the npm@8.6.0 CITGM smoker runs across the linked platforms, then inspect test/lib/utils/exit-handler.js and tap/bin/run.js for the reported failures and output handling. Done means the relevant npm tests pass on the affected platforms and the Jenkins output is readable without terminal color codes.

Written by the indexing model from the issue text.

Assessment

Tech stack
javascript, node.js
Domain
ci-cd, testing-qa
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.