haskell-fswatch / hfsnotify

Unified Haskell interface for basic file system notifications
BSD 3-Clause "New" or "Revised" License
136 stars 40 forks source link

Fails to report events on Windows without polling #65

Closed darkf closed 6 years ago

darkf commented 8 years ago

On Windows 8, I've used the minimal test example which prints events. Without using confUsePolling=True, it never reports any events, though it does with polling.

Any tips on debugging this would be appreciated.

gregwebs commented 8 years ago

This could definitely use some Windows love since there have not been any Windows contributors in the last few years. I don't know of any debugging tips other than don't forget that there are test cases.

darkf commented 8 years ago

Thanks for the tip. The tests definitely fail without polling:

Tests
  Native
    Non-recursive
      Right here
        new file:                FAIL (0.51s)
          Unexpected number of events.
            Expected: [Added "C:\\Users\\BAK\\Desktop\\fsnotify-0.2.1\\testdir\\test.67904\\testfile",Modified "C:\\Users\\BAK\\Desktop\\fsnotify-0.2.1\\testdir\\test.67904\\testfile"]
            Actual: [Added "C:\\Users\\BAK\\Desktop\\fsnotify-0.2.1\\testdir\\test.67904\\testfile" 2016-04-04 22:59:31.5232347 UTC,Modified "C:\\Users\\BAK\\Desktop\\fsnotify-0.2.1\\testdir\\test.67904\\testfile" 2016-04-04 22:59:31.5232347 UTC,Modified "C:\\Users\\BAK\\Desktop\\fsnotify-0.2.1\\testdir\\test.67904\\testfile" 2016-04-04 22:59:31.5232347 UTC,Modified "C:\\Users\\BAK\\Desktop\\fsnotify-0.2.1\\testdir\\test.67904\\testfile" 2016-04-04 22:59:31.5232347 UTC]
        modify file:             FAIL (0.51s)
          Unexpected number of events.
            Expected: [Modified "C:\\Users\\BAK\\Desktop\\fsnotify-0.2.1\\testdir\\test.67904\\testfile"]
            Actual: [Modified "C:\\Users\\BAK\\Desktop\\fsnotify-0.2.1\\testdir\\test.67904\\testfile" 2016-04-04 22:59:32.0232623 UTC,Modified "C:\\Users\\BAK\\Desktop\\fsnotify-0.2.1\\testdir\\test.67904\\testfile" 2016-04-04 22:59:32.0232623 UTC,Modified "C:\\Users\\BAK\\Desktop\\fsnotify-0.2.1\\testdir\\test.67904\\testfile" 2016-04-04 22:59:32.0232623 UTC]
        delete file:             FAIL (0.51s)
          Unexpected number of events.
            Expected: [Removed "C:\\Users\\BAK\\Desktop\\fsnotify-0.2.1\\testdir\\test.67904\\testfile"]
            Actual: []
        directories are ignored: FAIL (0.51s)
          Unexpected number of events.
            Expected: []
            Actual: [Added "C:\\Users\\BAK\\Desktop\\fsnotify-0.2.1\\testdir\\test.67904\\testfile" 2016-04-04 22:59:33.0545669 UTC,Removed "C:\\Users\\BAK\\Desktop\\fsnotify-0.2.1\\testdir\\test.67904\\testfile" 2016-04-04 22:59:33.0545669 UTC]
      In a subdirectory
        new file:                OK (0.52s)
        modify file:             OK (0.52s)
        delete file:             OK (0.51s)
        directories are ignored: OK (0.52s)
    Recursive
      Right here
        new file:                FAIL (0.52s)
          Unexpected number of events.
            Expected: [Added "C:\\Users\\BAK\\Desktop\\fsnotify-0.2.1\\testdir\\test.67904\\testfile",Modified "C:\\Users\\BAK\\Desktop\\fsnotify-0.2.1\\testdir\\test.67904\\testfile"]
            Actual: [Added "C:\\Users\\BAK\\Desktop\\fsnotify-0.2.1\\testdir\\test.67904\\testfile" 2016-04-04 22:59:35.6254234 UTC,Modified "C:\\Users\\BAK\\Desktop\\fsnotify-0.2.1\\testdir\\test.67904\\testfile" 2016-04-04 22:59:35.6254234 UTC,Modified "C:\\Users\\BAK\\Desktop\\fsnotify-0.2.1\\testdir\\test.67904\\testfile" 2016-04-04 22:59:35.6254234 UTC,Modified "C:\\Users\\BAK\\Desktop\\fsnotify-0.2.1\\testdir\\test.67904\\testfile" 2016-04-04 22:59:35.6254234 UTC]
        modify file:             FAIL (0.51s)
          Unexpected number of events.
            Expected: [Modified "C:\\Users\\BAK\\Desktop\\fsnotify-0.2.1\\testdir\\test.67904\\testfile"]
            Actual: [Modified "C:\\Users\\BAK\\Desktop\\fsnotify-0.2.1\\testdir\\test.67904\\testfile" 2016-04-04 22:59:36.1410738 UTC,Modified "C:\\Users\\BAK\\Desktop\\fsnotify-0.2.1\\testdir\\test.67904\\testfile" 2016-04-04 22:59:36.1410738 UTC,Modified "C:\\Users\\BAK\\Desktop\\fsnotify-0.2.1\\testdir\\test.67904\\testfile" 2016-04-04 22:59:36.1410738 UTC]
        delete file:             OK (0.51s)
        directories are ignored: FAIL (0.52s)
          Unexpected number of events.
            Expected: []
            Actual: [Added "C:\\Users\\BAK\\Desktop\\fsnotify-0.2.1\\testdir\\test.67904\\testfile" 2016-04-04 22:59:37.1723788 UTC,Removed "C:\\Users\\BAK\\Desktop\\fsnotify-0.2.1\\testdir\\test.67904\\testfile" 2016-04-04 22:59:37.1723788 UTC]
      In a subdirectory
        new file:                FAIL (0.51s)
          Unexpected number of events.
            Expected: [Added "C:\\Users\\BAK\\Desktop\\fsnotify-0.2.1\\testdir\\test.67904\\subdir\\testfile",Modified "C:\\Users\\BAK\\Desktop\\fsnotify-0.2.1\\testdir\\test.67904\\subdir\\testfile"]
            Actual: [Added "C:\\Users\\BAK\\Desktop\\fsnotify-0.2.1\\testdir\\test.67904\\subdir\\testfile" 2016-04-04 22:59:37.688028 UTC,Modified "C:\\Users\\BAK\\Desktop\\fsnotify-0.2.1\\testdir\\test.67904\\subdir\\testfile" 2016-04-04 22:59:37.688028 UTC,Modified "C:\\Users\\BAK\\Desktop\\fsnotify-0.2.1\\testdir\\test.67904\\subdir\\testfile" 2016-04-04 22:59:37.688028 UTC,Modified "C:\\Users\\BAK\\Desktop\\fsnotify-0.2.1\\testdir\\test.67904\\subdir\\testfile" 2016-04-04 22:59:37.688028 UTC]
        modify file:             FAIL (0.52s)
          Unexpected number of events.
            Expected: [Modified "C:\\Users\\BAK\\Desktop\\fsnotify-0.2.1\\testdir\\test.67904\\subdir\\testfile"]
            Actual: [Modified "C:\\Users\\BAK\\Desktop\\fsnotify-0.2.1\\testdir\\test.67904\\subdir\\testfile" 2016-04-04 22:59:38.2034526 UTC,Modified "C:\\Users\\BAK\\Desktop\\fsnotify-0.2.1\\testdir\\test.67904\\subdir\\testfile" 2016-04-04 22:59:38.2034526 UTC,Modified "C:\\Users\\BAK\\Desktop\\fsnotify-0.2.1\\testdir\\test.67904\\subdir\\testfile" 2016-04-04 22:59:38.2034526 UTC]
        delete file:             FAIL (0.52s)
          Unexpected number of events.
            Expected: [Removed "C:\\Users\\BAK\\Desktop\\fsnotify-0.2.1\\testdir\\test.67904\\subdir\\testfile"]
            Actual: []
        directories are ignored: FAIL (0.51s)
          Unexpected number of events.
            Expected: []
            Actual: [Added "C:\\Users\\BAK\\Desktop\\fsnotify-0.2.1\\testdir\\test.67904\\subdir\\testfile" 2016-04-04 22:59:39.2347559 UTC,Removed "C:\\Users\\BAK\\Desktop\\fsnotify-0.2.1\\testdir\\test.67904\\subdir\\testfile" 2016-04-04 22:59:39.2347559 UTC]
  Polling
    Non-recursive
      Right here
        new file:                OK (2.02s)
        modify file:             OK (2.01s)
        delete file:             OK (2.01s)
        directories are ignored: OK (2.02s)
      In a subdirectory
        new file:                OK (2.02s)
        modify file:             OK (2.02s)
        delete file:             OK (2.02s)
        directories are ignored: OK (2.01s)
    Recursive
      Right here
        new file:                OK (2.01s)
        modify file:             OK (2.01s)
        delete file:             OK (2.01s)
        directories are ignored: OK (2.02s)
      In a subdirectory
        new file:                OK (2.01s)
        modify file:             OK (2.02s)
        delete file:             OK (2.01s)
        directories are ignored: OK (2.02s)

11 out of 32 tests failed (40.47s)

Completed 8 action(s).
Test suite failure for package fsnotify-0.2.1
    test:  exited with: ExitFailure 1
Logs printed to console

It's something to look into; I don't know how it works or why it would be failing, so if someone has an idea there I could take a peek.

gregwebs commented 8 years ago

The tests may have been last run on Windows 7. They don't show your report that no events show up. Or they do on 1 test but on another too many show up. The things that stick out to me as more obvious to solve are to check why too many events are showing up, the opposite of the original report. We have the concept of "de-bouncing" events to try to avoid getting multiple notifications from a single change. Possibly can change some of the code or settings around this.

Maybe you can match what you see to a particular test case? Writing a new test case if needed?

thomasjm commented 6 years ago

Windows tests are passing on AppVeyor now; this is believed fixed.