node icon indicating copy to clipboard operation
node copied to clipboard

watch with test not picking up new test files

Open brettearle opened this issue 1 year ago • 4 comments
trafficstars

Version

22.2.0

Platform

Linux Nitro 6.5.0-35-generic #35~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Tue May 7 09:00:52 UTC 2 x86_64 x86_64 x86_64 GNU/Linux

Subsystem

No response

What steps will reproduce the bug?

in directory create testOne.test.mjs

import {test} from "node:test"
import assert from "node:assert"

test("testOne", () => {
   assert.equal(1, 1) 
})

cd to directory with testOne, run in terminal

node --watch --test

create a new file name testTwo.test.mjs and add same code

import {test} from "node:test"
import assert from "node:assert"

test("testTwo", () => {
   assert.equal(1, 1) 
})

save the file and watcher doesn't rerun

How often does it reproduce? Is there a required condition?

Can reproduce consistently locally

What is the expected behavior? Why is that the expected behavior?

expected to pick up new files during watch

What do you see instead?

watch doesn't rerun or pick up new file

Additional information

Not sure if this comes under bug or feature request. Assumption I'm making here is intended behaviour is to watch directory for changes. Happy to give this some effort myself if it is a bug, not a c++ dev though.

brettearle avatar May 20 '24 22:05 brettearle

This is caused by FileWatcher being in the filter mode when you run node --watch --test, which means it finds all the test files at the start and store it in a SafeMap and then it only listens to the changes to the stored files.

Maybe when a new file (with the glob match pattern) add or rename, delete event occur, the runner should re-create the list of files. @MoLow maybe can shine some lights here.

jakecastelli avatar May 21 '24 15:05 jakecastelli

Thanks for clarifying Jake, this sounds good. Will wait for MoLow to clarify before digging into it.

brettearle avatar May 21 '24 20:05 brettearle

Cheers mate, I've also found that rename, delete a watched test file would cause to throw an error #53113.

jakecastelli avatar May 23 '24 07:05 jakecastelli

Maybe when a new file (with the glob match pattern) add or rename, delete event occur, the runner should re-create the list of files. @MoLow maybe can shine some lights here.

that sounds like a good approach

MoLow avatar May 24 '24 05:05 MoLow

Awesome, will dig in. @jakecastelli would you like me to jump on that one at the same time? Assuming they will both be based on that safe map. Thanks for helping me out

brettearle avatar May 24 '24 08:05 brettearle

Sure! Let me know if you need a hand or something

jakecastelli avatar May 28 '24 07:05 jakecastelli

hey @jakecastelli are you in one of the communities so I can ask some basic questions and not bloat this thread?

brettearle avatar Jun 04 '24 00:06 brettearle

@brettearle sure, I have reached you out.

jakecastelli avatar Jun 04 '24 05:06 jakecastelli

Hey Guys, I've noticed the issue has been inactive for a while, so I attempted to resolve it by following the provided suggestions.

pmarchini avatar Aug 06 '24 14:08 pmarchini

Glad you got to this mate, I've been trying to find time and just haven't been able to.

brettearle avatar Aug 07 '24 03:08 brettearle

Hey @brettearle, I tried, but I'm not totally satisfied with the result. It would be great if you could review the PR 😁

Also @jakecastelli, any feedback would be greatly appreciated 🚀

pmarchini avatar Aug 08 '24 04:08 pmarchini

I will take a look at your PR asap

jakecastelli avatar Aug 08 '24 07:08 jakecastelli

Fixed by https://github.com/nodejs/node/pull/54225, thanks for the hard work @pmarchini 🚀

jakecastelli avatar Aug 29 '24 12:08 jakecastelli