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

Feb 2019 Definitely Typed failures on typescript@next #29898

Closed
sandersn opened this issue Feb 13, 2019 · 18 comments
Closed

Feb 2019 Definitely Typed failures on typescript@next #29898

sandersn opened this issue Feb 13, 2019 · 18 comments
Assignees
Labels
Needs Investigation This issue needs a team member to investigate its status.

Comments

@sandersn
Copy link
Member

Found by trying to change a whole bunch of package's project URLs in DefinitelyTyped/DefinitelyTyped#32977

d3-array

Error: C:/Users/nathansa/DefinitelyTyped/types/d3-array/d3-array-tests.ts:611:7
ERROR: 611:7  expect  TypeScript@next compile error:
Type '(string | number | number[] | Date)[]' is not assignable to type '(number[] | Date)[]'.
  Type 'string | number | number[] | Date' is not assignable to type 'number[] | Date'.
    Type 'string' is not assignable to type 'number[] | Date'.

Looks like a possible change in index access types

ember

Error: C:/Users/nathansa/DefinitelyTyped/types/ember/test/observable.ts:106:32
ERROR: 106:32  expect  TypeScript@next compile error:
Argument of type 'Pick<UnwrapComputedPropertyGetters<any>, string>' is not assignable to parameter of type '{ dummy: any; }'.
  Property 'dummy' is missing in type 'Pick<UnwrapComputedPropertyGetters<any>, string>' but required in type '{ dummy: any; }'.

Same.

petit-dom

Error: C:/Users/nathansa/DefinitelyTyped/types/petit-dom/petit-dom-tests.tsx:190:10
ERROR: 190:10  expect  TypeScript@next compile error:
Type '{ content: (string | Element)[]; name: string; count: number; onSomeEvent: (event: Event) => void; }' is not assignable to type 'IntrinsicAttributes & CustomProps'.
  Property 'content' does not exist on type 'IntrinsicAttributes & CustomProps'.
ERROR: 354:10  expect  TypeScript@next compile error:
Type '{ content: (string | Element)[]; name: string; count: number; onSomeEvent: (event: Event) => void; }' is not assignable to type 'IntrinsicAttributes & IntrinsicClassAttributes<ComponentClassWithChildren> & CustomProps'.
  Property 'content' does not exist on type 'IntrinsicAttributes & IntrinsicClassAttributes<ComponentClassWithChildren> & CustomProps'.

Something to do with JSX? Not sure.

@sandersn
Copy link
Member Author

@weswigham Mind taking a look? These all seem related to changes you have made or were discussing with Anders.

@weswigham
Copy link
Member

Do we know what day these started failing in DT, so I can narrow down the cause?

@sandersn
Copy link
Member Author

sandersn commented Feb 13, 2019

No, we don't have a regular DT run right now: https://typescript.visualstudio.com/TypeScript/_build?definitionId=15 is paused because it always times out. :(

@sandersn
Copy link
Member Author

More failures from DefinitelyTyped/DefinitelyTyped#33038:

react-instantsearch-core

Error in react-instantsearch-core
Error: /home/nathansa/DefinitelyTyped/types/react-instantsearch-core/react-instantsearch-core-tests.tsx:111:49
ERROR: 111:49  expect  TypeScript@next compile error: 
Argument of type '({ additionalProp, searchResults }: StateResultsProps) => Element' is not assignable to parameter of type 'ComponentType<Partial<StateResultsProvided<{}>>>'.
  Type '({ additionalProp, searchResults }: StateResultsProps) => Element' is not assignable to type 'FunctionComponent<Partial<StateResultsProvided<{}>>>'.
    Types of parameters '__0' and 'props' are incompatible.
      Property 'additionalProp' is missing in type 'Partial<StateResultsProvided<{}>> & { children?: ReactNode; }' but required in type 'StateResultsProps'.
ERROR: 113:1   expect  TypeScript@next: Expected an error on this line, but found none.
ERROR: 130:51  expect  TypeScript@next compile error: 
Argument of type 'typeof MyComponent' is not assignable to parameter of type 'ComponentType<Partial<StateResultsProvided<{}>>>'.
  Type 'typeof MyComponent' is not assignable to type 'ComponentClass<Partial<StateResultsProvided<{}>>, any>'.
    Types of parameters 'props' and 'props' are incompatible.
      Property 'additionalProp' is missing in type 'Partial<StateResultsProvided<{}>>' but required in type 'Readonly<StateResultsProps>'.
ERROR: 132:1   expect  TypeScript@next: Expected an error on this line, but found none.

Not sure what is going on here.

ember, et al

There are about 9 ember packages that fail, all with the same set of 10 errors, all of which are similar. Here's an example:

../ember__array/proxy.d.ts(11,15): error TS2417: Class static side 'typeof ArrayProxy' incorrectly extends base class static side 'Readonly<typeof EmberObject>'.
  Types of property 'prototype' are incompatible.
    Type 'ArrayProxy<any>' is not assignable to type 'EmberObject'.
      Types of property 'getProperties' are incompatible.
        Type '{ <K extends "toString" | "indexOf" | "lastIndexOf" | "replace" | "slice" | "length" | "includes" | "map" | "filter" | "any" | "get" | "set" | "getProperties" | "setProperties" | "notifyPropertyChange" | ... 62 more ... | "removeObjects">(list: K[]): Pick<...>; <K extends "toString" | ... 76 more ... | "removeObject...' is not assignable to type '{ <K extends "toString" | "get" | "set" | "getProperties" | "setProperties" | "notifyPropertyChange" | "addObserver" | "removeObserver" | "getWithDefault" | "incrementProperty" | "decrementProperty" | ... 8 more ... | "willDestroy">(list: K[]): Pick<...>; <K extends "toString" | ... 18 more ... | "willDestroy">(...l...'.
          Type 'Pick<UnwrapComputedPropertyGetters<ArrayProxy<any>>, any>' is not assignable to type 'Pick<UnwrapComputedPropertyGetters<EmberObject>, any>'.
            Type 'UnwrapComputedPropertyGetters<ArrayProxy<any>>' is not assignable to type 'UnwrapComputedPropertyGetters<EmberObject>'.
              Types of property 'setProperties' are incompatible.
                Type '{ <K extends "toString" | "indexOf" | "lastIndexOf" | "replace" | "slice" | "length" | "includes" | "map" | "filter" | "any" | "get" | "set" | "getProperties" | "setProperties" | "notifyPropertyChange" | ... 62 more ... | "removeObjects">(hash: Pick<...>): Pick<...>; <K extends "toString" | ... 76 more ... | "remove...' is not assignable to type '{ <K extends "toString" | "get" | "set" | "getProperties" | "setProperties" | "notifyPropertyChange" | "addObserver" | "removeObserver" | "getWithDefault" | "incrementProperty" | "decrementProperty" | ... 8 more ... | "willDestroy">(hash: Pick<...>): Pick<...>; <K extends "toString" | ... 18 more ... | "willDestroy"...'.
                  Type 'Pick<UnwrapComputedPropertySetters<ArrayProxy<any>>, any>' is not assignable to type 'Pick<UnwrapComputedPropertySetters<EmberObject>, any>'.
                    Type 'UnwrapComputedPropertySetters<ArrayProxy<any>>' is not assignable to type 'UnwrapComputedPropertySetters<EmberObject>'.
                      Type 'EmberObject' is not assignable to type 'ArrayProxy<any>'.

Seems like it's related to the other ember error.

@Flarna
Copy link

Flarna commented Feb 13, 2019

it was green yesterday (see DefinitelyTyped/DefinitelyTyped#33011)

@mike-north
Copy link

FWIW the ember stuff wasn't showing these specific errors until the dev-20190213 3.4 build, although we were running into another issue that #29787 was intended to resolve.

@sandersn
Copy link
Member Author

sandersn commented Feb 14, 2019

Found a few more in DefinitelyTyped/DefinitelyTyped#33051

baidu-app

Error in baidu-app
Error: /home/travis/build/DefinitelyTyped/DefinitelyTyped/types/baidu-app/index.d.ts:4290:20
ERROR: 4290:20  expect  TypeScript@next compile error: 
Type 'V' does not satisfy the constraint 'Component<Data | ((this: V) => Data), Props>'.
  Type 'Component<Data, Props>' is not assignable to type 'Component<Data | ((this: V) => Data), Props>'.
    Types of property 'data' are incompatible.
      Type '{ [key in keyof (Data & Props)]: DataValueType<(Data & Props)[key]>; }' is not assignable to type '{ [key in keyof ((Data & Props) | (((this: V) => Data) & Props))]: DataValueType<((Data & Props) | (((this: V) => Data) & Props))[key]>; }'.
        Type 'DataValueType<(Data & Props)[key]>' is not assignable to type 'DataValueType<((Data & Props) | (((this: V) => Data) & Props))[key]>'.

yargs

Error in yargs
Error: /home/travis/build/DefinitelyTyped/DefinitelyTyped/types/yargs/yargs-tests.ts:318:9
ERROR: 318:9   expect  TypeScript@next compile error: 
Type '(yargs: Argv<{ a: string; }>) => Argv<Omit<{ a: string; } & { b: number | undefined; }, "b"> & { b: number; }>' is not assignable to type '{ [key: string]: Options; } | ((args: Argv<{ a: string; }>) => Argv<{ b: number; }>) | undefined'.
  Type '(yargs: Argv<{ a: string; }>) => Argv<Omit<{ a: string; } & { b: number | undefined; }, "b"> & { b: number; }>' is not assignable to type '(args: Argv<{ a: string; }>) => Argv<{ b: number; }>'.
    Type 'Argv<Omit<{ a: string; } & { b: number | undefined; }, "b"> & { b: number; }>' is not assignable to type 'Argv<{ b: number; }>'.
      Types of property 'alias' are incompatible.
        Type '{ <K1 extends "b" | "a", K2 extends string>(shortName: K1, longName: K2 | readonly K2[]): Argv<Omit<{ a: string; } & { b: number | undefined; }, "b"> & { b: number; } & { [key in K2]: (Omit<{ a: string; } & { b: number | undefined; }, "b"> & { ...; })[K1]; }>; <K1 extends "b" | "a", K2 extends string>(shortName: K2,...' is not assignable to type '{ <K1 extends "b", K2 extends string>(shortName: K1, longName: K2 | readonly K2[]): Argv<{ b: number; } & { [key in K2]: { b: number; }[K1]; }>; <K1 extends "b", K2 extends string>(shortName: K2, longName: K1 | readonly K1[]): Argv<{ b: number; } & { [key in K2]: { ...; }[K1]; }>; (shortName: string | readonly strin...'.
          Type 'Argv<Omit<{ a: string; } & { b: number | undefined; }, "b"> & { b: number; } & { [x: string]: any; }>' is not assignable to type 'Argv<{ b: number; } & { [x: string]: any; }>'.
            Types of property 'alias' are incompatible.
              Type '{ <K1 extends any, K2 extends string>(shortName: K1, longName: K2 | readonly K2[]): Argv<Omit<{ a: string; } & { b: number | undefined; }, "b"> & { b: number; } & { [x: string]: any; } & { [key in K2]: (Omit<{ a: string; } & { b: number | undefined; }, "b"> & { ...; } & { ...; })[K1]; }>; <K1 extends any, K2 extends...' is not assignable to type '{ <K1 extends any, K2 extends string>(shortName: K1, longName: K2 | readonly K2[]): Argv<{ b: number; } & { [x: string]: any; } & { [key in K2]: ({ b: number; } & { [x: string]: any; })[K1]; }>; <K1 extends any, K2 extends string>(shortName: K2, longName: K1 | readonly K1[]): Argv<...>; (shortName: string | readonly...'.
                Type 'Argv<Omit<{ a: string; } & { b: number | undefined; }, "b"> & { b: number; } & { [x: string]: any; } & { [x: string]: any; }>' is not assignable to type 'Argv<{ b: number; } & { [x: string]: any; } & { [x: string]: any; }>'.
                  Types of property 'alias' are incompatible.
                    Type '{ <K1 extends any, K2 extends string>(shortName: K1, longName: K2 | readonly K2[]): Argv<Omit<{ a: string; } & { b: number | undefined; }, "b"> & { b: number; } & { [x: string]: any; } & { [x: string]: any; } & { [key in K2]: (Omit<{ a: string; } & { b: number | undefined; }, "b"> & { ...; } & { ...; } & { ...; })[K...' is not assignable to type '{ <K1 extends any, K2 extends string>(shortName: K1, longName: K2 | readonly K2[]): Argv<{ b: number; } & { [x: string]: any; } & { [x: string]: any; } & { [key in K2]: ({ b: number; } & { [x: string]: any; } & { [x: string]: any; })[K1]; }>; <K1 extends any, K2 extends string>(shortName: K2, longName: K1 | readonly...'.
                      Type 'Argv<Omit<{ a: string; } & { b: number | undefined; }, "b"> & { b: number; } & { [x: string]: any; } & { [x: string]: any; } & { [x: string]: any; }>' is not assignable to type 'Argv<{ b: number; } & { [x: string]: any; } & { [x: string]: any; } & { [x: string]: any; }>'.
                        Types of property 'command' are incompatible.
                          Type '{ <U>(command: string | readonly string[], description: string, builder?: ((args: Argv<Omit<{ a: string; } & { b: number | undefined; }, "b"> & { b: number; } & { [x: string]: any; } & { [x: string]: any; } & { [x: string]: any; }>) => Argv<...>) | undefined, handler?: ((args: Arguments<...>) => void) | undefined): ...' is not assignable to type '{ <U>(command: string | readonly string[], description: string, builder?: ((args: Argv<{ b: number; } & { [x: string]: any; } & { [x: string]: any; } & { [x: string]: any; }>) => Argv<U>) | undefined, handler?: ((args: Arguments<U>) => void) | undefined): Argv<...>; <O extends { ...; }>(command: string | readonly st...'.
                            Types of parameters 'module' and 'module' are incompatible.
                              Type 'CommandModule<{ b: number; } & { [x: string]: any; } & { [x: string]: any; } & { [x: string]: any; }, any>' is not assignable to type 'CommandModule<Omit<{ a: string; } & { b: number | undefined; }, "b"> & { b: number; } & { [x: string]: any; } & { [x: string]: any; } & { [x: string]: any; }, any>'.
                                Type '{ b: number; } & { [x: string]: any; } & { [x: string]: any; } & { [x: string]: any; }' is not assignable to type 'Omit<{ a: string; } & { b: number | undefined; }, "b"> & { b: number; } & { [x: string]: any; } & { [x: string]: any; } & { [x: string]: any; }'.
                                  Type '{ b: number; } & { [x: string]: any; } & { [x: string]: any; } & { [x: string]: any; }' is not assignable to type 'Omit<{ a: string; } & { b: number | undefined; }, "b">'.
ERROR: 383:11  expect  TypeScript@next compile error: 
Type '(yargs: Argv<{}>) => Argv<Omit<{ file: unknown; }, "cleanDestination"> & InferredOptionTypes<{ cleanDestination: { boolean: true; describe: string; }; }>>' is not assignable to type 'CommandBuilder<{}, {}>'.
  Type '(yargs: Argv<{}>) => Argv<Omit<{ file: unknown; }, "cleanDestination"> & InferredOptionTypes<{ cleanDestination: { boolean: true; describe: string; }; }>>' is not assignable to type '(args: Argv<{}>) => Argv<{}>'.
    Type 'Argv<Omit<{ file: unknown; }, "cleanDestination"> & InferredOptionTypes<{ cleanDestination: { boolean: true; describe: string; }; }>>' is not assignable to type 'Argv<{}>'.
      Types of property 'alias' are incompatible.
        Type '{ <K1 extends "file" | "cleanDestination", K2 extends string>(shortName: K1, longName: K2 | readonly K2[]): Argv<Omit<{ file: unknown; }, "cleanDestination"> & InferredOptionTypes<{ cleanDestination: { boolean: true; describe: string; }; }> & { [key in K2]: (Omit<...> & InferredOptionTypes<...>)[K1]; }>; <K1 extends...' is not assignable to type '{ <K1 extends never, K2 extends string>(shortName: K1, longName: K2 | readonly K2[]): Argv<{ [key in K2]: {}[K1]; }>; <K1 extends never, K2 extends string>(shortName: K2, longName: K1 | readonly K1[]): Argv<{ [key in K2]: {}[K1]; }>; (shortName: string | readonly string[], longName: string | readonly string[]): Argv...'.
          Type 'Argv<Omit<{ file: unknown; }, "cleanDestination"> & InferredOptionTypes<{ cleanDestination: { boolean: true; describe: string; }; }> & { [x: string]: any; }>' is not assignable to type 'Argv<{ [x: string]: any; }>'.
            Types of property 'alias' are incompatible.
              Type '{ <K1 extends any, K2 extends string>(shortName: K1, longName: K2 | readonly K2[]): Argv<Omit<{ file: unknown; }, "cleanDestination"> & InferredOptionTypes<{ cleanDestination: { boolean: true; describe: string; }; }> & { [x: string]: any; } & { [key in K2]: (Omit<...> & ... 1 more ... & { ...; })[K1]; }>; <K1 extend...' is not assignable to type '{ <K1 extends any, K2 extends string>(shortName: K1, longName: K2 | readonly K2[]): Argv<{ [x: string]: any; } & { [key in K2]: { [x: string]: any; }[K1]; }>; <K1 extends any, K2 extends string>(shortName: K2, longName: K1 | readonly K1[]): Argv<{ [x: string]: any; } & { [key in K2]: { ...; }[K1]; }>; (shortName: st...'.
                Type 'Argv<Omit<{ file: unknown; }, "cleanDestination"> & InferredOptionTypes<{ cleanDestination: { boolean: true; describe: string; }; }> & { [x: string]: any; } & { [x: string]: any; }>' is not assignable to type 'Argv<{ [x: string]: any; } & { [x: string]: any; }>'.
                  Types of property 'alias' are incompatible.
                    Type '{ <K1 extends any, K2 extends string>(shortName: K1, longName: K2 | readonly K2[]): Argv<Omit<{ file: unknown; }, "cleanDestination"> & InferredOptionTypes<{ cleanDestination: { boolean: true; describe: string; }; }> & { [x: string]: any; } & { ...; } & { [key in K2]: (Omit<...> & ... 2 more ... & { ...; })[K1]; }>;...' is not assignable to type '{ <K1 extends any, K2 extends string>(shortName: K1, longName: K2 | readonly K2[]): Argv<{ [x: string]: any; } & { [x: string]: any; } & { [key in K2]: ({ [x: string]: any; } & { [x: string]: any; })[K1]; }>; <K1 extends any, K2 extends string>(shortName: K2, longName: K1 | readonly K1[]): Argv<...>; (shortName: str...'.
                      Type 'Argv<Omit<{ file: unknown; }, "cleanDestination"> & InferredOptionTypes<{ cleanDestination: { boolean: true; describe: string; }; }> & { [x: string]: any; } & { [x: string]: any; } & { [x: string]: any; }>' is not assignable to type 'Argv<{ [x: string]: any; } & { [x: string]: any; } & { [x: string]: any; }>'.
                        Types of property 'command' are incompatible.
                          Type '{ <U>(command: string | readonly string[], description: string, builder?: ((args: Argv<Omit<{ file: unknown; }, "cleanDestination"> & InferredOptionTypes<{ cleanDestination: { boolean: true; describe: string; }; }> & { [x: string]: any; } & { ...; } & { ...; }>) => Argv<...>) | undefined, handler?: ((args: Arguments...' is not assignable to type '{ <U>(command: string | readonly string[], description: string, builder?: ((args: Argv<{ [x: string]: any; } & { [x: string]: any; } & { [x: string]: any; }>) => Argv<U>) | undefined, handler?: ((args: Arguments<U>) => void) | undefined): Argv<...>; <O extends { ...; }>(command: string | readonly string[], descripti...'.
                            Types of parameters 'module' and 'module' are incompatible.
                              Type 'CommandModule<{ [x: string]: any; } & { [x: string]: any; } & { [x: string]: any; }, any>' is not assignable to type 'CommandModule<Omit<{ file: unknown; }, "cleanDestination"> & InferredOptionTypes<{ cleanDestination: { boolean: true; describe: string; }; }> & { [x: string]: any; } & { [x: string]: any; } & { [x: string]: any; }, any>'.
                                Type '{ [x: string]: any; } & { [x: string]: any; } & { [x: string]: any; }' is not assignable to type 'Omit<{ file: unknown; }, "cleanDestination"> & InferredOptionTypes<{ cleanDestination: { boolean: true; describe: string; }; }> & { [x: string]: any; } & { [x: string]: any; } & { [x: string]: any; }'.
                                  Type '{ [x: string]: any; } & { [x: string]: any; } & { [x: string]: any; }' is not assignable to type 'Omit<{ file: unknown; }, "cleanDestination">'.
ERROR: 385:43  expect  TypeScript@next compile error: 
Cannot invoke an expression whose type lacks a call signature. Type 'CommandBuilder<{}, {}>' has no compatible call signatures.

stellar-base

Error in stellar-base
Error: /home/travis/build/DefinitelyTyped/DefinitelyTyped/types/stellar-base/index.d.ts:389:114
ERROR: 389:114  expect  TypeScript@next compile error: 
Type 'SetOptions<T>' does not satisfy the constraint 'Operation'.
  Type 'SetOptions<T>' is not assignable to type 'SetOptions<SignerOptions>'.
    Type 'SignerOptions' is not assignable to type 'T'.
      Type 'Ed25519PublicKey' is not assignable to type 'T'.
/home/travis/build/DefinitelyTyped/DefinitelyTyped/types/stellar-base/stellar-base-tests.ts:32:1
ERROR: 32:1     expect  Expected type to be:
  never
got:
  any
ERROR: 32:49    expect  TypeScript@next compile error: 
Property 'signer' does not exist on type 'Operation'.
  Property 'signer' does not exist on type 'AccountMerge'.
ERROR: 35:1     expect  Expected type to be:
  Ed25519PublicKey
got:
  any
ERROR: 35:51    expect  TypeScript@next compile error: 
Property 'signer' does not exist on type 'Operation'.
  Property 'signer' does not exist on type 'AccountMerge'.
ERROR: 38:1     expect  Expected type to be:
  Sha256Hash
got:
  any
ERROR: 38:51    expect  TypeScript@next compile error: 
Property 'signer' does not exist on type 'Operation'.
  Property 'signer' does not exist on type 'AccountMerge'.
ERROR: 41:1     expect  Expected type to be:
  PreAuthTx
got:
  any
ERROR: 41:51    expect  TypeScript@next compile error: 
Property 'signer' does not exist on type 'Operation'.
  Property 'signer' does not exist on type 'AccountMerge'.
    at /home/travis/build/DefinitelyTyped/DefinitelyTyped/node_modules/dtslint/bin/index.js:161:19
    at Generator.next (<anonymous>)
    at fulfilled (/home/travis/build/DefinitelyTyped/DefinitelyTyped/node_modules/dtslint/bin/index.js:5:58)
    at <anonymous>

@Flarna
Copy link

Flarna commented Feb 21, 2019

Any hint when this could be fixed? More and more PRs at DefinitelyTyped get closed because CI is red and as a result they are ignored by the integration team. There is no process defined at DefinitelyTyped to deal with such breakage from outside.

Would it be possible to pin the DefinitelyTyped CI to use an older/working version of typescript@next?

@sandersn
Copy link
Member Author

Some updates:

  1. https://typescript.visualstudio.com/TypeScript/_build?definitionId=15 is now running and should produce results every day. The results are NOT clean right now, though.
  2. @Flarna Not running typescript@next on Definitely Typed PRs is a good idea, although I don't believe it's caused that much trouble before. The big rash of failures this week is from Remove diagnostic dependent output in structuredTypeRelatedTo #29817. We definitely need a process, though. Keep reading for that.
  3. @weswigham bluebird, like ember, now fails because bluebird.Promise became invariant -- but here, I don't understand why bluebird.Promise was ever bivariant. Can you take a look?
  4. I'm going to clean up (or file bugs for) the other failures.
  5. Then I'll make the above build file a bug whenever it sees a failure.
  6. At that point, I'll re-evaluate whether the severity of blockage caused by breaks from typescript@next is bad enough to pull it from DT's CI build.

@Jessidhia
Copy link

Jessidhia commented Feb 22, 2019

If dtslint gets the ability to only run tests for a specific typescript version, it should be possible to split the test suite into a travis test matrix. This lets tests for each typescript version run in parallel instead of serially, and the @next test can be just marked as allow_failures.

We are running against a time bomb because as more typescript releases are made, the closer @types/react tests are to being completely impossible to run in travis due to the sheer amount of other @types/ that depend on it. It is already a gamble on whether they can finish before the forced 50min timeout for an individual job.

@Flarna
Copy link

Flarna commented Feb 22, 2019

@sandersn I agree that typescript@next is not the main pain point, it's just one out of several. Removing tests because they fail is usually not what I propose.

The main issue with issues introduced by typescript@next is that the time till a fix is longer as the time granted by @typescript-bot for a PR. In the past mentioning andy-ms often helped but I don't think it's a good idea to put all these issues onto one person.

Most people don't resubmit a PR which has been closed by bot; and the few people which do this often faced the issue that bot closed the next PR also.

Other reasons for CI failures:

I mostly talk about node typings here which have >1600 other definitions depending on it. if one of them as an issue node fails also in CI.

@sandersn
Copy link
Member Author

@Jessidhia @weswigham dtslint now has a flag --localTs that lets you point to, eg, ~/ts/built/local. For now we just plan to give typescript-bot the ability to test Typescript PRs so that we can test suspicious changes before they break Definitely Typed.

My tentative plan is to file a bug whenever Definitely Typed is not clean on typescript@next, much like we do with the user test baselines or the RWC tests. One person on the TS team triages that bug. That should reduce the turnaround time to 24-48 hours. If there is still a problem, then typescript@next can be marked as allow_failures, but this increases the load on the TS team as DT will be clean on typescript@next less often, therefore filing a bug more often.

  • changes from non-DT types on npm: we face this problem in the user tests as well and it hasn't been insurmountable. But DT is 100 times larger than the user tests, so that might not apply.
  • removed type definitions: this is tracked by Improve notNeededPackages.json testing types-publisher#515.
  • better checking of dtslint: whenever I make an improvement to dtslint, I do a cleanup run beforehand.

Maybe we should think about special-casing node, but I'm not convinced that's a good idea either.

@Flarna
Copy link

Flarna commented Feb 22, 2019

@sandersn sounds good.

Maybe we should think about special-casing node, but I'm not convinced that's a good idea either.

I agree that this is most likely not a good idea. What about following approach:

  • if submitter things that CI fails unrelated a comment indicating this is added
  • if one ore more reviewers agree they indicate the same via some comment
  • bot checks for these comments and labels such PRs to allow integration team to decide on a merge even CI is red.

As I never created a bot I have no idea if this is possible to implement..

@sandersn
Copy link
Member Author

Reading comments should be reasonably simple -- the natural language part is a giant pitfull but I think it would be a rare usage so probably wouldn't need to be robust. @RyanCavanaugh handles that part of typescript-bot, so I'll discuss it with him next week (he is home sick today).

@dcecile
Copy link

dcecile commented Feb 23, 2019

Together with processes for getting upstream fixes, is it also under consideration to introduce a process for getting the @typescript-bot to pause auto-closing for individual PRs while fixes elsewhere are in progress?

@j-oliveras
Copy link
Contributor

More issues into DefinitelyTyped/DefinitelyTyped#33325 on multiple @ember packages, stellar-base and yargs (that PR only add a new function to node types).

@sandersn
Copy link
Member Author

This issue is almost completely fixed by

  1. Revert "Merge pull request #27697 from mattmccutchen/issue-27118" #30133, which reverts the change that made conditional types invariant instead of bivariant. We will think more about the correct variance.
  2. Release-1.5: Add a common, dense, format for classification operations to lower cost of processing on the host side. #2981 fixes the remainder of the errors, except for two in ember.
  3. Which are fixed by https://github.com/DefinitelyTyped/DefinitelyTyped/pull/33420/files. This can't be merged until typescript@next has the previous two PRs, however.

Unfortunately, I also merged #29332 today, adds a lot of new, simple errors in tests, which are not at all careful about their usage of global this. I'll send a PR later today that fixes the tests.

@weswigham
Copy link
Member

I believe we've cleaned up all these now (and then proceeded to introduce new ones with globalThis, but we'll be fixing those on the DT side).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Needs Investigation This issue needs a team member to investigate its status.
Projects
None yet
Development

No branches or pull requests

8 participants