GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — assert: add snapshot assertion by MoLow · Pull Request #44095 · nodejs/node

Conversation

@MoLow

@MoLow MoLow commented Aug 2, 2022 •
edited
Loading

Uh oh!

There was an error while loading. Please reload this page.

Copy link
Copy Markdown
Member

this is a proposal to add to node:assert a new class
assisting with snapshot assertion (e.g compare a values with a snapshot saved to a file (/any other WritableStream))
as a demonstration how it can be used, I migrated some of the test/message files to use this, see this diff to compare how the current python implementation with this new class

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

benjamingr and intrnl reacted with thumbs up emoji aduh95 reacted with confused emoji
All reactions
  • 👍 2 reactions
  • 😕 1 reaction
@nodejs-github-bot nodejs-github-bot added assert Issues and PRs related to the assert subsystem. needs-ci PRs that need a full CI run. labels Aug 2, 2022
@MoLow

MoLow commented Aug 2, 2022 •
edited
Loading

Uh oh!

There was an error while loading. Please reload this page.

Copy link
Copy Markdown
Member Author

CC @nodejs/assert @nodejs/test_runner
I believe that there adding some minimalistic pieces into core can make testing with zero dependencies a common practice,
this was also raised in the original issue proposing a built in test runner

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@MoLow

MoLow commented Aug 2, 2022

Copy link
Copy Markdown
Member Author

another example of an (internal) implentation for this: https://github.com/nodejs/node-core-test/blob/main/test/message.js, besides tests/message

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

mscdex
mscdex reviewed Aug 2, 2022
View reviewed changes
Comment thread lib/assert.js Resolved

Uh oh!

There was an error while loading. Please reload this page.

@BridgeAR

BridgeAR commented Aug 2, 2022

Copy link
Copy Markdown
Member

I think it's useful to add snapshot tests but I would expect a simpler API.

As such, I would expect no transforms. This should be done by the users before passing any value to be compared. That way we are also aligned with our other assertions that are kept super simple.

Adding a functionality to let the user decide where to put the snapshot is also nice but I would again suggest to go for the simpler implementation: by default, save the snapshot in a file and let the user define the snapshot optionally. That way it's possible for them to receive the snapshot from where ever they want to save it.

The overall API would look like:

assert.snapshot(input[, snapshot])

Running it once is going to serialize the input with util.inspect(), if no snapshot argument is provided (the input is compared with the snapshot by serializing the snapshot).

If the user would want to transform something or use a different spot to save the snapshot they can:

const transformedInput = input.toLowerCase()

const snapshot = await createReadStream(path)

assert.snapshot(transformedInput, snapshot)

The added benefit is not only the simpler API but also that there's a clear error to the user in case it's not possible to read the read stream (or what ever they use to receive the snapshot).

benjamingr reacted with thumbs up emoji MoLow reacted with eyes emoji
All reactions
  • 👍 1 reaction
  • 👀 1 reaction

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

benjamingr
benjamingr reviewed Aug 2, 2022
View reviewed changes

@benjamingr benjamingr left a comment

Copy link
Copy Markdown
Member

There was a problem hiding this comment.

Choose a reason for hiding this comment

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

I like this and the idea.

I like Ruben's suggested API (no classes, single function, less options) better.

(Docs and other stuff is obviously still missing)

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

juliangruber and MoLow reacted with thumbs up emoji MoLow reacted with eyes emoji
All reactions
  • 👍 2 reactions
  • 👀 1 reaction
@cjihrig

cjihrig commented Aug 2, 2022

Copy link
Copy Markdown
Contributor

+1 to supporting this with a simpler API. Could you please add tests to verify:

  1. Snapshotting with file paths to make sure Windows and non-Windows work.
  2. Snapshotting with values that change with every run - for example a Date or timestamp.
MoLow, benjamingr, and juliangruber reacted with thumbs up emoji
All reactions
  • 👍 3 reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@MoLow

MoLow commented Aug 2, 2022 •
edited
Loading

Uh oh!

There was an error while loading. Please reload this page.

Copy link
Copy Markdown
Member Author

As such, I would expect no transforms. This should be done by the users before passing any value to be compared. That way we are also aligned with our other assertions that are kept super simple.

yeah, that sounds right - probably most of the transforms I wrote should go somewhere along test/common as they were written to prove this is useful for test/message

Adding a functionality to let the user decide where to put the snapshot is also nice but I would again suggest to go for the simpler implementation: by default, save the snapshot in a file and let the user define the snapshot optionally. That way it's possible for them to receive the snapshot from where ever they want to save it.

in the API I have implemented - all options are optional, including source and target - the default in my implementation is to read and write to a file.
so the main change is not to use a class (which makes sense to me), did I understand correctly?

The overall API would look like:

assert.snapshot(input[, snapshot])

this accepts an option specifying where to read the snapshot from, what about an option specifying where to write to?

Running it once is going to serialize the input with util.inspect()

if transforms are done in userland why shouldn't serialization be performed there as well?

The added benefit is not only the simpler API but also that there's a clear error to the user in case it's not possible to read the read stream (or what ever they use to receive the snapshot).

yes, that is the case in my implementation as well. probably because ALL of my tests passe a source and a target it seemed like it is not optional (and due to lack of documentation).
as @cjihrig suggested - tests that use the default will be added as well

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@BridgeAR

BridgeAR commented Aug 2, 2022

Copy link
Copy Markdown
Member

so the main change is not to use a class (which makes sense to me), did I understand correctly?

Yes, and no options.

this accepts an option specifying where to read the snapshot from, what about an option specifying where to write to?

It has no option where to read from the snapshot, only the actual snapshot content (e.g., an object or a string). That way reading and writing is up to the user. Inline snapshots become easy that way.

if transforms are done in userland why shouldn't serialization be performed there as well?

The first argument is the actual input (e.g., a complex object). This has to be serialized on our side or we would only be able to accept strings as input. That does not seem ideal from the usability side. If we serialize the input, it is consistent to also serialize the snapshot, if provided.

MoLow reacted with thumbs up emoji
All reactions
  • 👍 1 reaction

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@MoLow

MoLow commented Aug 2, 2022

Copy link
Copy Markdown
Member Author

It has no option where to read from the snapshot, only the actual snapshot content (e.g., an object or a string). That way reading and writing are up to the user. Inline snapshots become easy that way.

in case the snapshot is known in advance (a.k.a inline snapshot) - running assert.snapshot(input, snapshot) will be exactly the same as running assert.strictEqual(input, snapshot) meaning the snapshot parameter is redundant.
taking that a step forward - you are basically suggesting that assert.snapshot will only have one default behavior of reading and writing to the file system.

on the other hand, I can see use cases for extending the API and providing source and target.
for example, reading from a remote file system or from an HTTP server (e.g minio/s3) etc.

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@BridgeAR

BridgeAR commented Aug 2, 2022

Copy link
Copy Markdown
Member

We can start with assert.snapshot(input) and decide upon further details later.

juliangruber reacted with thumbs up emoji
All reactions
  • 👍 1 reaction

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@MoLow

MoLow commented Aug 3, 2022

Copy link
Copy Markdown
Member Author

We can start with assert.snapshot(input) and decide upon further details later.

That will prevent even basic usecases such as specifying a location for the snapshot file.
If options are optional - and we agree on the defaults, I am not sure there is a downside

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@BridgeAR

BridgeAR commented Aug 3, 2022

Copy link
Copy Markdown
Member

That will prevent [...] specifying a location for the snapshot file.

That is correct. The main functionality should however already be implemented. Let's iterate upon the implemention in smaller steps.

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@juliangruber

juliangruber commented Aug 3, 2022

Copy link
Copy Markdown
Member

+1 to not having any options in the initial implementation, with good defaults we have a useful platform for iteration

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@MoLow

MoLow commented Aug 3, 2022

Copy link
Copy Markdown
Member Author

@BridgeAR @benjamingr @cjihrig @mscdex @juliangruber
I implemented the minimal implemetation discussed above - can you please take a look?

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@MoLow
MoLow marked this pull request as ready for review August 3, 2022 12:21
@benjamingr

benjamingr commented Aug 3, 2022

Copy link
Copy Markdown
Member

Looks mostly good, why the experimental warning though? I think making this experimental (in the docs) should be enough.

MoLow reacted with thumbs up emoji
All reactions
  • 👍 1 reaction

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

benjamingr
benjamingr reviewed Aug 3, 2022
View reviewed changes
Comment thread doc/api/errors.md Resolved

Uh oh!

There was an error while loading. Please reload this page.

benjamingr
benjamingr reviewed Aug 3, 2022
View reviewed changes
Comment thread doc/api/errors.md Outdated
### `ERR_ASSERT_SNAPSHOT_NOT_SUPPORTED`

An attempt was maid to use `assert.snapshot()` in an environment that
does not support snapshots, such as REPL, or when using `node --eval`

@benjamingr benjamingr Aug 3, 2022

Copy link
Copy Markdown
Member

There was a problem hiding this comment.

Choose a reason for hiding this comment

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

Missing "." and "the"?

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions
ljharb
ljharb reviewed Aug 3, 2022
View reviewed changes

@ljharb ljharb left a comment

Copy link
Copy Markdown
Member

There was a problem hiding this comment.

Choose a reason for hiding this comment

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

I think this is a VERY tricky feature to add. There are many snapshot heuristics and no one cohesive userland solution, and node shouldn't be opinionated here.

What happens with recursion? What happens with custom values, like jsx elements? It's very unclear to me from this PR how this feature works right not.

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

aduh95 and tniessen reacted with thumbs up emoji
All reactions
  • 👍 2 reactions
Comment thread lib/internal/assert/snapshot.js Resolved

Uh oh!

There was an error while loading. Please reload this page.

Comment thread doc/api/assert.md Outdated

* `value` {string} the value to snapshot
* `name` {string} the name of snapshot.
in case order of snapshots is non-deterministic,

@ljharb ljharb Aug 3, 2022

Copy link
Copy Markdown
Member

There was a problem hiding this comment.

Choose a reason for hiding this comment

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

why would ordering be non-determinstic??

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions

@MoLow MoLow Aug 3, 2022

Copy link
Copy Markdown
Member Author

There was a problem hiding this comment.

Choose a reason for hiding this comment

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

If you run concurrent tests for example?

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions

@ljharb ljharb Aug 3, 2022

Copy link
Copy Markdown
Member

There was a problem hiding this comment.

Choose a reason for hiding this comment

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

oof, that's a great reason to never do that :-/

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

MoLow reacted with thumbs down emoji
All reactions
  • 👎 1 reaction

@ljharb ljharb Aug 3, 2022

Copy link
Copy Markdown
Member

There was a problem hiding this comment.

Choose a reason for hiding this comment

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

maybe we should just require the name then, rather than opening the footgun?

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

MoLow reacted with eyes emoji
All reactions
  • 👀 1 reaction

@MoLow MoLow Aug 4, 2022

Copy link
Copy Markdown
Member Author

There was a problem hiding this comment.

Choose a reason for hiding this comment

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

maybe in a further iteration we can use asyncLocalStorage to automatically use the test name when running inside node test runner, but that should not happen in this iteration anyway

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions

@MoLow MoLow Aug 4, 2022

Copy link
Copy Markdown
Member Author

There was a problem hiding this comment.

Choose a reason for hiding this comment

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

@benjamingr concurrency can optionally also be per test - and assert.snapshot should work independently of how node:test test works

just as an example, this will break with any other test runner or program that runs things in parallel:

describre({ concurrency: true }, () => {
	it('1', async () => {
		await setTimeout(random());
		assert.snapshot(thing);
	});

	it('2', async () => {
		await setTimeout(random());
		assert.snapshot(otherThing);
	});
});

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions

@benjamingr benjamingr Aug 4, 2022

Copy link
Copy Markdown
Member

There was a problem hiding this comment.

Choose a reason for hiding this comment

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

Ok, I'm not sure I agree how common/feasible of a footgun it is and it feels to me people would have to work pretty hard to run into it.

That said if the smallest unit of concurrency is the test (and not the file) I think appending the test name to the snapshot could be an easy fix then?

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions

@ljharb ljharb Aug 4, 2022

Copy link
Copy Markdown
Member

There was a problem hiding this comment.

Choose a reason for hiding this comment

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

sure - or, requiring users of this API to provide a name, and then we could make it be "the test name" in a followon.

The simplest API - which is appropriate for a new feature - is when everything is explicit and required, and nothing is implicit or optional.

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions

@benjamingr benjamingr Aug 4, 2022

Copy link
Copy Markdown
Member

There was a problem hiding this comment.

Choose a reason for hiding this comment

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

There were objections raised to that above I think? I think using the test name is a good workaround to keep everyone content with the API.

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions

@ljharb ljharb Aug 4, 2022

Copy link
Copy Markdown
Member

There was a problem hiding this comment.

Choose a reason for hiding this comment

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

There's a lot of comments; can you link to it? I'd love to have those who objected explain why an implicit optional name is simpler than an explicit required one.

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions
benjamingr
benjamingr reviewed Aug 3, 2022
View reviewed changes
Comment thread lib/internal/assert/snapshot.js
const { dir, name } = path.parse(process.mainModule.filename);
return path.join(dir, `${name}.snapshot`);
}
if (!process.argv[1]) {

@benjamingr benjamingr Aug 3, 2022

Copy link
Copy Markdown
Member

There was a problem hiding this comment.

Choose a reason for hiding this comment

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

Is this to check if we're in the REPL? wouldn't it be better to just check if there is no process.mainModule?.filename?

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions

@MoLow MoLow Aug 3, 2022

Copy link
Copy Markdown
Member Author

There was a problem hiding this comment.

Choose a reason for hiding this comment

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

esm does not have process.mainModule either, so argv[1] is used instead

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions

@aduh95 aduh95 Aug 3, 2022

Copy link
Copy Markdown
Contributor

There was a problem hiding this comment.

Choose a reason for hiding this comment

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

I haven't read the code, but reminder that process.argv[1] == false when doing stdin eval and --eval, not just in REPL.

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions

@MoLow MoLow Aug 3, 2022

Copy link
Copy Markdown
Member Author

There was a problem hiding this comment.

Choose a reason for hiding this comment

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

Yes, it is documented to not be supported at this stage.
In a further stage we can support the source and target options that were in the original commit

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

benjamingr reacted with thumbs up emoji
All reactions
  • 👍 1 reaction
benjamingr
benjamingr reviewed Aug 3, 2022
View reviewed changes
Comment thread lib/internal/assert/snapshot.js Resolved

Uh oh!

There was an error while loading. Please reload this page.

benjamingr
benjamingr reviewed Aug 3, 2022
View reviewed changes
Comment thread lib/internal/assert/snapshot.js Resolved

Uh oh!

There was an error while loading. Please reload this page.

benjamingr
benjamingr reviewed Aug 3, 2022
View reviewed changes
Comment thread lib/internal/assert/snapshot.js Resolved

Uh oh!

There was an error while loading. Please reload this page.

benjamingr
benjamingr reviewed Aug 3, 2022
View reviewed changes
Comment thread lib/internal/assert/snapshot.js Resolved

Uh oh!

There was an error while loading. Please reload this page.

benjamingr
benjamingr reviewed Aug 3, 2022
View reviewed changes
Comment thread lib/internal/assert/snapshot.js Resolved

Uh oh!

There was an error while loading. Please reload this page.

benjamingr
benjamingr reviewed Aug 3, 2022
View reviewed changes
Comment thread lib/internal/assert/snapshot.js
} else if (snapshot.has(name)) {
const expected = snapshot.get(name);
// eslint-disable-next-line no-restricted-syntax
assert.strictEqual(value, expected);

@benjamingr benjamingr Aug 3, 2022

Copy link
Copy Markdown
Member

There was a problem hiding this comment.

Choose a reason for hiding this comment

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

It's kind of a bummer that this does string comparison and not deepStrictEqual or something similar with better dx here but I guess since it's util.inspect it's customizable. I think this can be revisited later/in a future PR.

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

MoLow reacted with thumbs up emoji
All reactions
  • 👍 1 reaction
benjamingr
benjamingr reviewed Aug 3, 2022
View reviewed changes

@benjamingr benjamingr left a comment

Copy link
Copy Markdown
Member

There was a problem hiding this comment.

Choose a reason for hiding this comment

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

Left some comments mostly lgtm

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

MoLow reacted with heart emoji
All reactions
  • ❤️ 1 reaction
@MoLow
MoLow force-pushed the assert-snapshot branch from 2feb452 to 9279520 Compare August 4, 2022 06:23
@github-actions github-actions Bot removed the request-ci Add this label to start a Jenkins CI on a PR. Only starts once the PR has an approving review. label Aug 11, 2022
@nodejs-github-bot

nodejs-github-bot commented Aug 11, 2022

Copy link
Copy Markdown
Collaborator

CI: https://ci.nodejs.org/job/node-test-pull-request/45997/

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@MoLow MoLow added the author ready PRs with CI started, the required approvals, and no outstanding review comments. label Aug 11, 2022
@MoLow

MoLow commented Aug 11, 2022

Copy link
Copy Markdown
Member Author

ping @benjamingr this needs a fresh approval

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

benjamingr
benjamingr approved these changes Aug 11, 2022
View reviewed changes
@MoLow MoLow added the commit-queue PRs queued for automated landing through the Commit Queue. label Aug 11, 2022
@nodejs-github-bot nodejs-github-bot removed the commit-queue PRs queued for automated landing through the Commit Queue. label Aug 11, 2022
@nodejs-github-bot
nodejs-github-bot merged commit 8f9d1ab into nodejs:main Aug 11, 2022
@nodejs-github-bot

nodejs-github-bot commented Aug 11, 2022

Copy link
Copy Markdown
Collaborator

Landed in 8f9d1ab

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@MoLow
MoLow deleted the assert-snapshot branch August 11, 2022 13:08
This was referenced Aug 12, 2022
CI Reliability 2022-08-12 nodejs/reliability#344
Open
CI Reliability 2022-08-13 nodejs/reliability#345
Open
CI Reliability 2022-08-14 nodejs/reliability#346
Open
@MoLow MoLow mentioned this pull request Aug 14, 2022
test: remove CommonJS loader from stack traces #44197
Merged
This was referenced Aug 15, 2022
CI Reliability 2022-08-15 nodejs/reliability#347
Open
CI Reliability 2022-08-16 nodejs/reliability#348
Open
danielleadams pushed a commit that referenced this pull request Aug 16, 2022
@MoLow @danielleadams
assert: add assert.Snapshot
fb5884a
PR-URL: #44095
Reviewed-By: Benjamin Gruenbaum <[email protected]>
@danielleadams danielleadams mentioned this pull request Aug 16, 2022
v18.8.0 release proposal #44246
Closed
This was referenced Aug 17, 2022
CI Reliability 2022-08-17 nodejs/reliability#349
Open
CI Reliability 2022-08-18 nodejs/reliability#350
Open
CI Reliability 2022-08-19 nodejs/reliability#351
Open
CI Reliability 2022-08-20 nodejs/reliability#352
Open
ruyadorno pushed a commit that referenced this pull request Aug 23, 2022
@MoLow @ruyadorno
assert: add assert.Snapshot
126fbba
PR-URL: #44095
Reviewed-By: Benjamin Gruenbaum <[email protected]>
@ruyadorno ruyadorno mentioned this pull request Aug 23, 2022
v18.8.0 release proposal #44353
Merged
@tniessen tniessen mentioned this pull request Aug 29, 2022
doc,test: improvements and cleanup for assert.snapshot() #44429
Merged
@targos targos added semver-minor PRs that contain new features and should be released in the next minor version. dont-land-on-v16.x labels Sep 5, 2022
@targos

targos commented Sep 5, 2022

Copy link
Copy Markdown
Member

@MoLow Please add the semver-minor label to PRs that add new features.

MoLow and ruyadorno reacted with thumbs up emoji
All reactions
  • 👍 2 reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@jtoar jtoar mentioned this pull request Apr 28, 2023
chore(CRWA): convert to ESM redwoodjs/graphql#8159
Closed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Reviewers

@ljharb ljharb ljharb left review comments
@cjihrig cjihrig cjihrig left review comments
@aduh95 aduh95 aduh95 left review comments
@benjamingr benjamingr benjamingr approved these changes
@BridgeAR BridgeAR Awaiting requested review from BridgeAR
+2 more reviewers
@mscdex mscdex mscdex left review comments
@targos targos targos left review comments
Reviewers whose approvals may not affect merge requirements

Uh oh!

There was an error while loading. Please reload this page.

Assignees

No one assigned

Labels

assert Issues and PRs related to the assert subsystem. author ready PRs with CI started, the required approvals, and no outstanding review comments. commit-queue-squash PRs the Commit Queue should land as one squashed commit. needs-ci PRs that need a full CI run. semver-minor PRs that contain new features and should be released in the next minor version.

Projects

None yet

Milestone

No milestone

Development

Successfully merging this pull request may close these issues.

Uh oh!

There was an error while loading. Please reload this page.

10 participants

@MoLow @BridgeAR @cjihrig @juliangruber @benjamingr @nodejs-github-bot @ljharb @targos @mscdex @aduh95
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.