Skip to content

Commit 8431fb9

Browse files
benjamingrsxa
authored andcommitted
stream: port more test262 tests
Add some test262 tests for `every`, add some `length` checks. Turns out properties need to be writable after all according to the test262 tests. PR-URL: #41974 Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Robert Nagy <ronagy@icloud.com> Reviewed-By: Matteo Collina <matteo.collina@gmail.com> Reviewed-By: Antoine du Hamel <duhamelantoine1995@gmail.com>
1 parent 26fe61b commit 8431fb9

3 files changed

Lines changed: 62 additions & 6 deletions

File tree

‎lib/internal/streams/operators.js‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -186,15 +186,15 @@ function asIndexedPairs(options = undefined) {
186186
}.call(this);
187187
}
188188

189-
asyncfunctionsome(fn,options){
189+
asyncfunctionsome(fn,options=undefined){
190190
// eslint-disable-next-line no-unused-vars
191191
forawait(constunusedoffilter.call(this,fn,options)){
192192
returntrue;
193193
}
194194
returnfalse;
195195
}
196196

197-
asyncfunctionevery(fn,options){
197+
asyncfunctionevery(fn,options=undefined){
198198
if(typeoffn!=='function'){
199199
thrownewERR_INVALID_ARG_TYPE(
200200
'fn',['Function','AsyncFunction'],fn);

‎lib/stream.js‎

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,9 @@ for (const key of ObjectKeys(streamReturningOperators)) {
7575
for(constkeyofObjectKeys(promiseReturningOperators)){
7676
constop=promiseReturningOperators[key];
7777
functionfn(...args){
78+
if(new.target){
79+
throwERR_ILLEGAL_CONSTRUCTOR();
80+
}
7881
returnReflectApply(op,this,args);
7982
}
8083
ObjectDefineProperty(fn,'name',{value: op.name});
@@ -83,7 +86,7 @@ for (const key of ObjectKeys(promiseReturningOperators)) {
8386
value: fn,
8487
enumerable: false,
8588
configurable: true,
86-
writable: false,
89+
writable: true,
8790
});
8891
}
8992
Stream.Writable=require('internal/streams/writable');

‎test/parallel/test-stream-iterator-helpers-test262-tests.mjs‎

Lines changed: 56 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import'../common/index.mjs';
1+
import{mustCall}from'../common/index.mjs';
22
import{Readable}from'stream';
33
importassertfrom'assert';
44

@@ -68,7 +68,7 @@ import assert from 'assert';
6868
);
6969
assert.strictEqual(descriptor.enumerable,false);
7070
assert.strictEqual(descriptor.configurable,true);
71-
// assert.strictEqual(descriptor.writable, false);
71+
// assert.strictEqual(descriptor.writable, true);
7272
}
7373
{
7474
// drop/length
@@ -79,7 +79,7 @@ import assert from 'assert';
7979
);
8080
assert.strictEqual(descriptor.enumerable,false);
8181
assert.strictEqual(descriptor.configurable,true);
82-
// assert.strictEqual(descriptor.writable, false);
82+
// assert.strictEqual(descriptor.writable, true);
8383
// drop/limit-equals-total
8484
constiterator=Readable.from([1,2]).drop(2);
8585
constresult=awaititerator[Symbol.asyncIterator]().next();
@@ -111,5 +111,58 @@ import assert from 'assert';
111111
// drop/proto
112112
constproto=Object.getPrototypeOf(Readable.prototype.drop);
113113
assert.strictEqual(proto,Function.prototype);
114+
}
115+
{
116+
// every/abrupt-iterator-close
117+
conststream=Readable.from([1,2,3]);
118+
conste=newError();
119+
awaitassert.rejects(stream.every(mustCall(()=>{
120+
throwe;
121+
},1)),e);
122+
}
123+
{
124+
// every/callable-fn
125+
awaitassert.rejects(Readable.from([1,2]).every({}),TypeError);
126+
}
127+
{
128+
// every/callable
129+
Readable.prototype.every.call(Readable.from([]),()=>{});
130+
// eslint-disable-next-line array-callback-return
131+
Readable.from([]).every(()=>{});
132+
assert.throws(()=>{
133+
constr=Readable.from([]);
134+
newr.every(()=>{});
135+
},TypeError);
136+
}
114137

138+
{
139+
// every/false
140+
constiterator=Readable.from([1,2,3]);
141+
constresult=awaititerator.every((v)=>v===1);
142+
assert.strictEqual(result,false);
143+
}
144+
{
145+
// every/every
146+
constiterator=Readable.from([1,2,3]);
147+
constresult=awaititerator.every((v)=>true);
148+
assert.strictEqual(result,true);
149+
}
150+
151+
{
152+
// every/is-function
153+
assert.strictEqual(typeofReadable.prototype.every,'function');
154+
}
155+
{
156+
// every/length
157+
assert.strictEqual(Readable.prototype.every.length,1);
158+
// every/name
159+
assert.strictEqual(Readable.prototype.every.name,'every');
160+
// every/propdesc
161+
constdescriptor=Object.getOwnPropertyDescriptor(
162+
Readable.prototype,
163+
'every'
164+
);
165+
assert.strictEqual(descriptor.enumerable,false);
166+
assert.strictEqual(descriptor.configurable,true);
167+
assert.strictEqual(descriptor.writable,true);
115168
}

0 commit comments

Comments
 (0)