Skip to content

test: add tests for REPL custom evals (second attempt) #57850

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

Open
wants to merge 1 commit into
base: main
Choose a base branch
from

Conversation

dario-piotrowicz
Copy link
Member

this PR reintroduces the REPL custom eval tests that have been introduced in #57691 but reverted in #57793

the tests were working fine locally but caused failures in CI (like this one) the problem, I believe, being that the getReplOutput would return the output value right away even though the repl processing is asynchronous. Some small delay there is, I imagine, present in the CI runs and that's what I think was causing the issue.

I addressed this problem by returning a promise that resolves to the repl's output when the repl output stream is idle, instead of returning the output right away.

For convenience here's the diff between what I am introducing in this PR vs my previous version: github diff

@nodejs-github-bot nodejs-github-bot added needs-ci PRs that need a full CI run. repl Issues and PRs related to the REPL subsystem. labels Apr 12, 2025
@dario-piotrowicz
Copy link
Member Author

cc. @tniessen, @lpinca 🙂 (sorry again for my earlier mistake on this change 🙇)

@dario-piotrowicz dario-piotrowicz force-pushed the dario/test/repl-custom-eval-2 branch from 8c394e5 to 9413135 Compare April 12, 2025 17:12
@dario-piotrowicz dario-piotrowicz changed the title test: add tests for REPL custom evals test: add tests for REPL custom evals (second attempt) Apr 12, 2025
@dario-piotrowicz dario-piotrowicz force-pushed the dario/test/repl-custom-eval-2 branch from 9413135 to 1e33c67 Compare April 12, 2025 17:14
Copy link

codecov bot commented Apr 12, 2025

Codecov Report

All modified and coverable lines are covered by tests ✅

Project coverage is 90.24%. Comparing base (73e7bd1) to head (a98d47f).
Report is 1 commits behind head on main.

Additional details and impacted files
@@            Coverage Diff             @@
##             main   #57850      +/-   ##
==========================================
+ Coverage   90.22%   90.24%   +0.01%     
==========================================
  Files         633      633              
  Lines      186871   186880       +9     
  Branches    36685    36687       +2     
==========================================
+ Hits       168612   168649      +37     
+ Misses      11042    11033       -9     
+ Partials     7217     7198      -19     
Files with missing lines Coverage Δ
lib/repl.js 94.98% <ø> (-0.01%) ⬇️

... and 33 files with indirect coverage changes

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

Copy link
Member

@BridgeAR BridgeAR left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@BridgeAR BridgeAR added the request-ci Add this label to start a Jenkins CI on a PR. label Apr 15, 2025
@github-actions github-actions bot removed the request-ci Add this label to start a Jenkins CI on a PR. label Apr 15, 2025
@nodejs-github-bot
Copy link
Collaborator

@nodejs-github-bot
Copy link
Collaborator

@lpinca
Copy link
Member

lpinca commented Apr 16, 2025

There are still failures. Here is one in the latest CI run: https://ci.nodejs.org/job/node-test-commit-linux-containered/50117/nodes=ubuntu2204_sharedlibs_withoutssl_x64/testReport/(root)/parallel/test_repl_custom_eval/

---
duration_ms: 826.053
exitcode: 1
severity: fail
stack: |-
  > > > > Test failure: 'does show previews if `preview` is set to `true`'
  Location: test/parallel/test-repl-custom-eval.js:146:3
  AssertionError [ERR_ASSERTION]: The input did not match the regular expression /'Hello custom' \+ ' eval World!'\n\/\/ 'Hello custom eval World!'/. Input:

  "'Hello custom' + ' eval World!'"

      at TestContext.<anonymous> (/home/iojs/build/workspace/node-test-commit-linux-containered/test/parallel/test-repl-custom-eval.js:159:12)
      at process.processTicksAndRejections (node:internal/process/task_queues:105:5)
      at async Test.run (node:internal/test_runner/test:1069:7)
      at async Promise.all (index 7)
      at async Suite.run (node:internal/test_runner/test:1461:7)
      at async startSubtestAfterBootstrap (node:internal/test_runner/harness:308:3) {
    generatedMessage: true,
    code: 'ERR_ASSERTION',
    actual: "'Hello custom' + ' eval World!'",
    expected: /'Hello custom' \+ ' eval World!'\n\/\/ 'Hello custom eval World!'/,
    operator: 'match'
  }
...

@dario-piotrowicz
Copy link
Member Author

oof... 😓

sorry about that, thanks @lpinca, I'll have a look 🙏

@dario-piotrowicz dario-piotrowicz force-pushed the dario/test/repl-custom-eval-2 branch from 1e33c67 to 584b6d9 Compare April 18, 2025 08:44
@dario-piotrowicz
Copy link
Member Author

@lpinca I couldn't really reproduce the issue locally but I refactored the code to make it more robust regarding timing, I hope that this will fix the CI check, could you re-run the tests? 🙏

@lpinca lpinca added the request-ci Add this label to start a Jenkins CI on a PR. label Apr 18, 2025
@github-actions github-actions bot added request-ci-failed An error occurred while starting CI via request-ci label, and manual interventon is needed. and removed request-ci Add this label to start a Jenkins CI on a PR. labels Apr 18, 2025
Copy link
Contributor

Failed to start CI
   ⚠  Commits were pushed since the last approving review:
   ⚠  - test: add tests for REPL custom evals
   ✘  Refusing to run CI on potentially unsafe PR
https://github.com/nodejs/node/actions/runs/14532544242

@nodejs-github-bot
Copy link
Collaborator

@lpinca lpinca removed the request-ci-failed An error occurred while starting CI via request-ci label, and manual interventon is needed. label Apr 18, 2025
@dario-piotrowicz dario-piotrowicz added the request-ci Add this label to start a Jenkins CI on a PR. label May 5, 2025
@github-actions github-actions bot added request-ci-failed An error occurred while starting CI via request-ci label, and manual interventon is needed. and removed request-ci Add this label to start a Jenkins CI on a PR. labels May 5, 2025
Copy link
Contributor

github-actions bot commented May 5, 2025

Failed to start CI
   ⚠  Commits were pushed since the last approving review:
   ⚠  - test: add tests for REPL custom evals
   ✘  Refusing to run CI on potentially unsafe PR
https://github.com/nodejs/node/actions/runs/14833744376

@nodejs-github-bot
Copy link
Collaborator

@dario-piotrowicz dario-piotrowicz force-pushed the dario/test/repl-custom-eval-2 branch from 584b6d9 to 8196294 Compare May 11, 2025 20:19
@dario-piotrowicz dario-piotrowicz force-pushed the dario/test/repl-custom-eval-2 branch from 8196294 to c93bded Compare May 11, 2025 20:22
@dario-piotrowicz dario-piotrowicz added request-ci Add this label to start a Jenkins CI on a PR. and removed request-ci-failed An error occurred while starting CI via request-ci label, and manual interventon is needed. labels May 11, 2025
@github-actions github-actions bot removed the request-ci Add this label to start a Jenkins CI on a PR. label May 11, 2025
@nodejs-github-bot
Copy link
Collaborator

this commit reintroduces the REPL custom eval tests that have
been introduced in nodejs#57691
but reverted in nodejs#57793

the tests turned out problematic before because `getReplOutput`,
the function used to return the repl output wasn't taking into
account that input processing and output emitting are asynchronous
operation can can resolve with a small delay
@dario-piotrowicz dario-piotrowicz force-pushed the dario/test/repl-custom-eval-2 branch from c93bded to a98d47f Compare May 18, 2025 20:59
@dario-piotrowicz dario-piotrowicz added the request-ci Add this label to start a Jenkins CI on a PR. label May 18, 2025
@github-actions github-actions bot added request-ci-failed An error occurred while starting CI via request-ci label, and manual interventon is needed. and removed request-ci Add this label to start a Jenkins CI on a PR. labels May 18, 2025
Copy link
Contributor

Failed to start CI
   ⚠  Commits were pushed since the last approving review:
   ⚠  - test: add tests for REPL custom evals
   ✘  Refusing to run CI on potentially unsafe PR
https://github.com/nodejs/node/actions/runs/15100627673

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
needs-ci PRs that need a full CI run. repl Issues and PRs related to the REPL subsystem. request-ci-failed An error occurred while starting CI via request-ci label, and manual interventon is needed.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

6 participants