[From nobody Sat May  2 07:23:07 2026
Received: (at submit) by bugs.debian.org; 1 May 2026 23:13:30 +0000
X-Spam-Checker-Version: SpamAssassin 4.0.1-bugs.debian.org_2005_01_02
 (2024-03-25) on buxtehude.debian.org
X-Spam-Level: 
X-Spam-Status: No, score=-121.2 required=4.0 tests=ALL_TRUSTED,BAYES_00,
 BODY_INCLUDES_PACKAGE,DKIMWL_WL_HIGH,DKIM_SIGNED,DKIM_VALID,
 DKIM_VALID_AU,DKIM_VALID_EF,FROMDEVELOPER,HAS_PACKAGE,
 PP_MIME_FAKE_ASCII_TEXT,USER_IN_DKIM_WELCOMELIST,X_DEBBUGS_CC
 autolearn=ham autolearn_force=no
 version=4.0.1-bugs.debian.org_2005_01_02
X-Spam-Bayes: score:0.0000 Tokens: new, 141; hammy, 150; neutral, 299; spammy,
 0. spammytokens: hammytokens:0.000-+--pkgbuilddir,
 0.000-+--PKGBUILDDIR, 0.000-+--forky, 0.000-+--H*F:U*sanvila,
 0.000-+--HTo:N*Debian
Return-path: &lt;sanvila@debian.org&gt;
Received: from muffat.debian.org ([2607:f8f0:614:1::1274:33]:44308)
 by buxtehude.debian.org with esmtps
 (TLS1.3:ECDHE_SECP256R1__RSA_PSS_RSAE_SHA256__AES_256_GCM:256)
 (Exim 4.96) (envelope-from &lt;sanvila@debian.org&gt;) id 1wIx34-000EIY-2y
 for submit@bugs.debian.org; Fri, 01 May 2026 23:13:30 +0000
Received: via submission
 from C=NA, ST=NA, L=Ankh Morpork, O=Debian SMTP, OU=Debian SMTP CA,
 CN=paradis.debian.org, EMAIL=hostmaster@paradis.debian.org (verified)
 by muffat.debian.org with esmtps
 (TLS1.3:ECDHE_SECP256R1__RSA_PSS_RSAE_SHA256__AES_256_GCM:256)
 (Exim 4.96) (envelope-from &lt;sanvila@debian.org&gt;) id 1wIx35-00042R-2i
 for submit@bugs.debian.org; Fri, 01 May 2026 23:13:30 +0000
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=debian.org; 
 s=smtpauto.paradis;
 h=Date:Message-Id:Subject:To:From:Reply-To:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:In-Reply-To:References;
 bh=oPXdiMJlqLcE3QuTj7ibS68Hf4eGMqGBr9Td6hb8DXc=; b=j+UnMRUzuc7UetxUx3EgIwejSR
 vTbrKr5smQ1eraj0simxgwupQ2R2H45cqyNA9Q2hba/Mtp6BIJ/lIVx8B3PQWmkyp3nuadCeVqqg9
 Mdi1VP658iBgmQAx1O3dB/YlzDkBP+EV/1REKuIb/rdhhrixS0YaULykg86t0MbpFXnpQlgGuNrgh
 +8J4LZqAxwWckQsPZo1ytZ1IxM/P2GBCVjRlo4QSV1+9VHhBvONJoNCEFm16uzhLFA7Brt04gyK3V
 lJSIp8Qa6IcvS7Dn8G0VYAuadUcAQQxlA5GFM9beXpYVqWxyb6Ybg+JlvoKesrbcMXnLUT5401W7F
 hXLxorCQ==;
Received: from sanvila by paradis.debian.org with local (Exim 4.96)
 (envelope-from &lt;sanvila@debian.org&gt;) id 1wIx34-0005Ku-2M
 for submit@bugs.debian.org; Fri, 01 May 2026 23:13:30 +0000
From: Santiago Vila &lt;sanvila@debian.org&gt;
To: Debian BTS &lt;submit@bugs.debian.org&gt;
Subject: node-mock-fs: FTBFS: AssertionError: expected true to be false
X-Debbugs-Cc: sanvila@debian.org
Message-Id: &lt;E1wIx34-0005Ku-2M@paradis.debian.org&gt;
Date: Fri, 01 May 2026 23:13:30 +0000
Delivered-To: submit@bugs.debian.org

Package: src:node-mock-fs
Version: 5.5.0-1
Severity: serious
Tags: ftbfs forky sid

Dear maintainer:

During a rebuild of all packages in unstable, this package failed to build.

Below you will find the last part of the build log (probably the most
relevant part, but not necessarily). If required, the full build log
is available here:

https://people.debian.org/~sanvila/build-logs/202605/

About the archive rebuild: The build was made on virtual machines from AWS,
using sbuild and a reduced chroot with only build-essential packages.

If you cannot reproduce the bug please contact me privately, as I
am willing to provide ssh access to a virtual machine where the bug is
fully reproducible.

If this is really a bug in one of the build-depends, please use
reassign and add an affects on src:node-mock-fs, so that this is still
visible in the BTS web page for this package.

Thanks.

--------------------------------------------------------------------------------
[...]
 debian/rules clean
dh clean
   dh_auto_clean --buildsystem=nodejs
	rm -rf ./node_modules/.cache ./.nyc_output
rm ./node_modules/.cache
rm ./node_modules/.cache
   debian/rules override_dh_clean
make[1]: Entering directory '/&lt;&lt;PKGBUILDDIR&gt;&gt;'
dh_clean -- readme.html readme.txt changelog.html changelog.txt
make[1]: Leaving directory '/&lt;&lt;PKGBUILDDIR&gt;&gt;'
 debian/rules binary
dh binary
   dh_update_autotools_config
   dh_autoreconf
   dh_auto_configure --buildsystem=nodejs

[... snipped ...]

    ✔ updates timestamps for a file
    ✔ updates timestamps for a file following symlink

  fs.lutimesSync(path, atime, mtime)
    ✔ updates timestamps for a file
    ✔ updates timestamps for a file but not following symlink

  fs.futimes(fd, atime, mtime, callback)
    ✔ updates timestamps for a file
    ✔ updates timestamps for a file following symlink
    ✔ promise updates timestamps for a file
    ✔ updates timestamps for a directory
    ✔ promise updates timestamps for a directory

  fs.futimesSync(path, atime, mtime)
    ✔ updates timestamps for a file
    ✔ updates timestamps for a file following symlink

  fs.write(fd, buffer, offset, length, position, callback)
    ✔ writes a buffer to a file
    ✔ promise writes a buffer to a file
    ✔ writes a buffer to a file with implicit offset, length, position
    ✔ promise writes a buffer to a file with implicit offset, length, position
    ✔ can write a portion of a buffer to a file
    ✔ promise can write a portion of a buffer to a file
    ✔ can write a portion of a buffer to a file position
    ✔ promise can write a portion of a buffer to a file position
    ✔ can write a portion of a buffer to a file position and enlarge the file
    ✔ promise can write a portion of a buffer to a file position and enlarge the file
    ✔ can append to a file
    ✔ promise can append to a file
    ✔ fails if file not open for writing
    ✔ fails if file not open for writing

  fs.writeSync(fd, buffer, offset, length, position)
    ✔ writes a buffer to a file
    ✔ can write a portion of a buffer to a file
    ✔ can append to a file
    ✔ fails if file not open for writing

  fs.write(fd, data[, position[, encoding]], callback)
    ✔ writes a string to a file
    ✔ promise writes a string to a file
    ✔ writes a string to a file with implicit position and encoding
    ✔ promise writes a string to a file with implicit position and encoding
    ✔ can append to a file
    ✔ promise can append to a file
    ✔ can write to a position of a file
    ✔ promise can write to a position of a file
    ✔ can write to a position of a file and enlarge it
    ✔ promise can write to a position of a file and enlarge it
    ✔ fails if file not open for writing
    ✔ promise fails if file not open for writing

  fs.writeSync(fd, data[, position[, encoding]])
    ✔ writes a string to a file
    ✔ can append to a file
    ✔ fails if file not open for writing

  fs.writeFile(filename, data, [options], callback)
    ✔ writes a string to a file
    ✔ promise writes a string to a file
    ✔ updates mtime of parent directory
    ✔ promise updates mtime of parent directory
    ✔ writes a buffer to a file
    ✔ promise writes a buffer to a file
    ✔ fails if directory does not exist
    ✔ promise fails if directory does not exist

  fs.writeFileSync(filename, data, [options]
    ✔ writes a string to a file
    ✔ writes a buffer to a file
    ✔ fails if directory does not exist

  The API
    mock()
      ✔ configures the real fs module with a mock file system
      ✔ provides direct access to the internal filesystem object
      ✔ creates process.cwd() and os.tmpdir() by default
      ✔ passes the createCwd option to the FileSystem constructor
      ✔ passes the createTmp option to the FileSystem constructor
      - uses the real fs module in require() calls
    mock.restore()
      ✔ restores bindings for the real file system
    mock.file()
      ✔ lets you create files with additional properties
    mock.directory()
      ✔ lets you create directories with more properties
      ✔ works with a trailing slash
      ✔ works without a trailing slash
    mock.symlink()
      ✔ lets you create symbolic links
    mock.load()
      File
        ✔ creates a File factory with correct attributes
        ✔ lazy=false loads file content
        ✔ can read file from mocked FS
        lazy=true
          ✔ creates accessors
          ✔ read file loads data and replaces accessors
          ✔ write file updates content and replaces accessors
      Dir
        ✔ creates a Directory factory with correct attributes
        ✔ recursive=false creates files &amp; does not recurse
        ✔ can read file from mocked FS
        recursive=true
          ✔ creates all files &amp; dirs
          ✔ respects lazy setting

  process.cwd()
    ✔ maintains current working directory
    ✔ allows changing directory
    ✔ prevents changing directory to non-existent path
    ✔ prevents changing directory to non-directory path
    ✔ restores original methods on restore
    ✔ restores original working directory on restore

  security
    ✔ denies dir listing without execute on parent
    ✔ denies file read without execute on parent
    ✔ denies file read without read on file
    ✔ denies file write without write on file

  Item
    constructor
      ✔ creates a new instance
    #getATime()
      ✔ returns a date
    #setATime()
      ✔ sets the atime
    #getCTime()
      ✔ returns a date
    #setCTime()
      ✔ sets the ctime
    #getBirthtime()
      ✔ returns a date
    #setBirthtime()
      ✔ sets the birthtime
    #getMTime()
      ✔ returns a date
    #setMTime()
      ✔ sets the mtime
    #getMode()
      ✔ returns a number
    #setMode()
      ✔ sets the mode
      ✔ updates the ctime
    #setUid()
      ✔ sets the uid
      ✔ updates the ctime
    #setGid()
      ✔ sets the gid
      ✔ updates the ctime
    #canRead()
      ✔ returns true if owner and 0700
      ✔ returns true if owner and 0600
      ✔ returns true if owner and 0500
      ✔ returns true if owner and 0400
      ✔ returns false if owner and 0300
      ✔ returns false if owner and 0200
      ✔ returns false if owner and 0100
      ✔ returns false if not owner and 0700 (different user)
      ✔ returns false if not owner and 0700 (different group)
      ✔ returns false if owner and 0170
      ✔ returns true if in group and 0170
      ✔ returns false if not in group and 0770
      ✔ returns true if not in group and 0777
      ✔ always returns true if process runs as root
    #canWrite()
      ✔ returns true if owner and 0700
      ✔ returns true if owner and 0600
      ✔ returns false if owner and 0500
      ✔ returns false if owner and 0400
      ✔ returns true if owner and 0300
      ✔ returns true if owner and 0200
      ✔ returns false if owner and 0100
      ✔ returns false if not owner and 0700 (different user)
      ✔ returns false if not owner and 0700 (different group)
      ✔ returns false if owner and 0170
      ✔ returns true if in group and 0170
      ✔ returns false if not in group and 0770
      ✔ returns true if not in group and 0777
      ✔ always returns true if process runs as root
    #canExecute()
      ✔ returns true if owner and 0700
      ✔ returns false if owner and 0600
      ✔ returns true if owner and 0500
      ✔ returns false if owner and 0400
      ✔ returns true if owner and 0300
      ✔ returns false if owner and 0200
      ✔ returns true if owner and 0100
      ✔ returns false if not owner and 0700 (different user)
      ✔ returns false if not owner and 0700 (different group)
      ✔ returns false if owner and 0270
      ✔ returns true if in group and 0270
      ✔ returns false if not in group and 0770
      ✔ returns true if not in group and 0777
      ✔ always returns true if process runs as root

  getReadFileContextPrototype
    ✔ provides access to the internal ReadFileContext

  patchReadFileContext
    ✔ patch forwards calls to mocked binding when available

  fs.readFile() with ReadFileContext
    ✔ allows file reads to be aborted
    ✔ allows file reads with a numeric descriptor
    ✔ allows file reads with unknown size


  920 passing (431ms)
  3 pending
  2 failing

  1) fs.rmdirSync(path)
       recursively remove empty directory:

      AssertionError: expected true to be false
      + expected - actual

      -true
      +false
      
      at Assertion.&lt;anonymous&gt; (/usr/share/nodejs/chai/lib/chai/core/assertions.js:701:10)
      at Assertion.propertyGetter (/usr/share/nodejs/chai/lib/chai/utils/addProperty.js:62:29)
      at Object.proxyGetter [as get] (/usr/share/nodejs/chai/lib/chai/utils/proxify.js:98:22)
      at assert.isFalse (/usr/share/nodejs/chai/lib/chai/interface/assert.js:386:53)
      at Context.&lt;anonymous&gt; (test/lib/fs.rmdir.spec.js:223:12)
      at callFn (/usr/share/nodejs/mocha/lib/runnable.js:366:21)
      at Runnable.run (/usr/share/nodejs/mocha/lib/runnable.js:354:5)
      at Runner.runTest (/usr/share/nodejs/mocha/lib/runner.js:719:10)
      at /usr/share/nodejs/mocha/lib/runner.js:842:12
      at next (/usr/share/nodejs/mocha/lib/runner.js:634:14)
      at /usr/share/nodejs/mocha/lib/runner.js:644:7
      at next (/usr/share/nodejs/mocha/lib/runner.js:527:14)
      at cbHookRun (/usr/share/nodejs/mocha/lib/runner.js:592:7)
      at done (/usr/share/nodejs/mocha/lib/runnable.js:310:5)
      at callFn (/usr/share/nodejs/mocha/lib/runnable.js:389:7)
      at Runnable.run (/usr/share/nodejs/mocha/lib/runnable.js:354:5)
      at next (/usr/share/nodejs/mocha/lib/runner.js:551:10)
      at Immediate._onImmediate (/usr/share/nodejs/mocha/lib/runner.js:612:5)
      at process.processImmediate (node:internal/timers:504:21)

  2) fs.rmdirSync(path)
       recursively remove non-empty directory:

      AssertionError: expected true to be false
      + expected - actual

      -true
      +false
      
      at Assertion.&lt;anonymous&gt; (/usr/share/nodejs/chai/lib/chai/core/assertions.js:701:10)
      at Assertion.propertyGetter (/usr/share/nodejs/chai/lib/chai/utils/addProperty.js:62:29)
      at Object.proxyGetter [as get] (/usr/share/nodejs/chai/lib/chai/utils/proxify.js:98:22)
      at assert.isFalse (/usr/share/nodejs/chai/lib/chai/interface/assert.js:386:53)
      at Context.&lt;anonymous&gt; (test/lib/fs.rmdir.spec.js:230:12)
      at callFn (/usr/share/nodejs/mocha/lib/runnable.js:366:21)
      at Runnable.run (/usr/share/nodejs/mocha/lib/runnable.js:354:5)
      at Runner.runTest (/usr/share/nodejs/mocha/lib/runner.js:719:10)
      at /usr/share/nodejs/mocha/lib/runner.js:842:12
      at next (/usr/share/nodejs/mocha/lib/runner.js:634:14)
      at /usr/share/nodejs/mocha/lib/runner.js:644:7
      at next (/usr/share/nodejs/mocha/lib/runner.js:527:14)
      at cbHookRun (/usr/share/nodejs/mocha/lib/runner.js:592:7)
      at done (/usr/share/nodejs/mocha/lib/runnable.js:310:5)
      at callFn (/usr/share/nodejs/mocha/lib/runnable.js:389:7)
      at Runnable.run (/usr/share/nodejs/mocha/lib/runnable.js:354:5)
      at next (/usr/share/nodejs/mocha/lib/runner.js:551:10)
      at Immediate._onImmediate (/usr/share/nodejs/mocha/lib/runner.js:612:5)
      at process.processImmediate (node:internal/timers:504:21)



dh_auto_test: error: /bin/sh -ex debian/nodejs/test returned exit code 2
make: *** [debian/rules:10: binary] Error 25
dpkg-buildpackage: error: debian/rules binary subprocess failed with exit status 2
--------------------------------------------------------------------------------
]