Skip to content
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

fs: fsPromises.lchmod throws AssertionError on Ubuntu #21421

Closed
shisama opened this issue Jun 20, 2018 · 2 comments · Fixed by #21435
Closed

fs: fsPromises.lchmod throws AssertionError on Ubuntu #21421

shisama opened this issue Jun 20, 2018 · 2 comments · Fixed by #21435
Labels
errors Issues and PRs related to JavaScript errors originated in Node.js core. experimental Issues and PRs related to experimental features. fs Issues and PRs related to the fs subsystem / file system. promises Issues and PRs related to ECMAScript promises.

Comments

@shisama
Copy link
Contributor

shisama commented Jun 20, 2018

  • Version: v11.0.0-pre
  • Platform: Linux bf7762b084bb 4.9.87-linuxkit-aufs deps: update openssl to 1.0.1j #1 SMP Wed Mar 14 15:12:16 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
  • Subsystem: fs

When I run the below code on Ubuntu 18.04 on Docker, I got the error.
Expected behavior was Error [ERR_METHOD_NOT_IMPLEMENTED] but I got AssertionError [ERR_ASSERTION].

const fs = require('fs');
const { lchmod } = fs.promises;

(async () => {
  try {
    await lchmod('./test.txt', 0o777);
  } catch (err) {
    console.log(err);
  }
})();
 { AssertionError [ERR_ASSERTION]: Code: ERR_METHOD_NOT_IMPLEMENTED; The provided arguments length (0) does not match the required ones (1).
    at getMessage (internal/errors.js:223:3)
    at new NodeError (internal/errors.js:156:13)
    at lchmod (internal/fs/promises.js:373:11)
    at repl:3:10
    at repl:7:3
    at Script.runInThisContext (vm.js:89:20)
    at REPLServer.defaultEval (repl.js:317:29)
    at bound (domain.js:396:14)
    at REPLServer.runBound [as eval] (domain.js:409:12)
    at REPLServer.onLine (repl.js:615:10)
  generatedMessage: false,
  name: 'AssertionError [ERR_ASSERTION]',
  code: 'ERR_ASSERTION',
  actual: false,
  expected: true,
  operator: '==' }

Does ERR_METHOD_NOT_IMPLEMENTED() require arguments like ERR_METHOD_NOT_IMPLEMENTED('lchmod()')?

https://github.com/nodejs/node/blob/master/lib/internal/fs/promises.js#L373
https://github.com/nodejs/node/blob/master/lib/internal/fs/promises.js#L381

@ChALkeR ChALkeR added fs Issues and PRs related to the fs subsystem / file system. promises Issues and PRs related to ECMAScript promises. experimental Issues and PRs related to experimental features. labels Jun 20, 2018
@cjihrig
Copy link
Contributor

cjihrig commented Jun 20, 2018

Care to send a PR for both lchmod and lchown?

@shisama
Copy link
Contributor Author

shisama commented Jun 20, 2018

@cjihrig
Thank you for your reply. I'll send it.

@ChALkeR ChALkeR added the errors Issues and PRs related to JavaScript errors originated in Node.js core. label Jun 24, 2018
ChALkeR added a commit to ChALkeR/io.js that referenced this issue Sep 8, 2018
This adds several sanity checks for error codes.

It scans:
 * all natives (js sources),
 * doc/api/*.md documentation
 * src/node_errors.h (errors definition from the C++ side).

There is also a whitelist of manually created errors from JS side,
currently consisting of ERR_HTTP2_ERROR and ERR_UNKNOWN_BUILTIN_MODULE.

Alsom all ERR_NAPI_ codes are whitelisted, as those are created directly
on the cpp side, without declaring them first.

The performed checks:

  1. All errors used from JS should be defined in `internal/errors` and
     present in its .codes object. Whitelist (mentioned above) applies.

  2. All errors instantiated from JS without arguments should support
     0-arguments version.

  3. All errors mentioned in doc should defined either in JS, C++, or
     in the whitelist.

  4. All errors mentioned anywhere should be documented.

  5. Documentation of error codes should be sorted, have no repeats,
     and include exactly one entry for every error code mentioned in
     the documentation, formatted as `/\n### (ERR_[A-Z0-9_]+)\n`.

  6. All doc entries for error codes should have appropriate anchors.

There is also a --report flag, which prints all the current issues and
exits without asserting, for manual inspection.

Individual fixes for those issues are landed in separate commits.

Refs: nodejs#21421
Refs: nodejs#21440
Refs: nodejs#21483
Refs: nodejs#21484
Refs: nodejs#21485
Refs: nodejs#21487
PR-URL: nodejs#21470
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
errors Issues and PRs related to JavaScript errors originated in Node.js core. experimental Issues and PRs related to experimental features. fs Issues and PRs related to the fs subsystem / file system. promises Issues and PRs related to ECMAScript promises.
Projects
None yet
Development

Successfully merging a pull request may close this issue.

3 participants