newtests/sketchy_null/test.js (47 lines of code) (raw):

/* @flow */ import type {Suite} from "flow-dev-tools/src/test/Suite"; const {suite, test} = require('flow-dev-tools/src/test/Tester'); module.exports = (suite(({addFiles, addCode, flowCmd}) => [ test('should trigger sketchy null output on sketchy string', [ addFiles('flowTypeFile.js', 'flowStrictSketchyStringFile.js') .newErrors( ` flowStrictSketchyStringFile.js:6 6: if (sketch.nullableStr) { ^^^^^^^^^^^^^^^^^^ Sketchy null check on string [1] which is potentially an empty string. Perhaps you meant to check for null or undefined [1]? [sketchy-null-string] References: 4: nullableStr?: string, ^^^^^^ [1]. See: flowTypeFile.js:4 `, ).exitCodes([]), ]), test('should trigger sketchy null output on sketchy number', [ addFiles('flowTypeFile.js', 'flowStrictSketchyNumberFile.js') .newErrors( ` flowStrictSketchyNumberFile.js:6 6: if (sketch.nullableNum) { ^^^^^^^^^^^^^^^^^^ Sketchy null check on number [1] which is potentially 0. Perhaps you meant to check for null or undefined [1]? [sketchy-null-number] References: 8: nullableNum?: number, ^^^^^^ [1]. See: flowTypeFile.js:8 `, ).exitCodes([]), ]), test('should trigger sketchy null output on sketchy bool', [ addFiles('flowTypeFile.js', 'flowStrictSketchyBooleanFile.js') .newErrors( ` flowStrictSketchyBooleanFile.js:6 6: if (sketch.nullableBool) { ^^^^^^^^^^^^^^^^^^^ Sketchy null check on boolean [1] which is potentially false. Perhaps you meant to check for null or undefined [1]? [sketchy-null-bool] References: 12: nullableBool?: boolean, ^^^^^^^ [1]. See: flowTypeFile.js:12 `, ).exitCodes([]), ]), test('should not trigger sketchy null output on non-strict file', [ addFiles('flowStrictTypeFile.js', 'flowSketchyFile.js') .noNewErrors(), ]), ]): Suite);