newtests/resource_files/test.js (117 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(({addFile, addFiles, addCode}) => [ test('Requiring a .css file', [ addFile('foo.css') .addCode("import './foo.css'") .noNewErrors(), ]), test('.css extension cannot be omitted', [ addFile('foo.css') .addCode("import './foo'") .newErrors( ` test.js:3 3: import './foo' ^^^^^^^ Cannot resolve module \`./foo\`. [cannot-resolve-module] `, ), ]), test('By default, .css files export the Object type', [ addFile('foo.css') .addCode("const css = require('./foo.css');") .addCode("(css: string)") .noNewErrors(), ]), test('Typical use of a .css file', [ addFile('foo.css') .addCode("import { active, hovered } from './foo.css';") .addCode("(active: string);") .addCode("(hovered: number);") .noNewErrors() .because("active and hovered have the type any"), ]), test('Requiring a .png file', [ addFile('bar.png') .addCode("import './bar.png'") .noNewErrors(), ]), test('.png extension cannot be omitted', [ addFile('bar.png') .addCode("import './bar'") .newErrors( ` test.js:3 3: import './bar' ^^^^^^^ Cannot resolve module \`./bar\`. [cannot-resolve-module] `, ), ]), test('By default, .png files export the string type', [ addFile('bar.png') .addCode("const png = require('./bar.png');") .addCode("(png: number)") .newErrors( ` test.js:5 5: (png: number) ^^^ Cannot cast \`png\` to number because string [1] is incompatible with number [2]. [incompatible-cast] References: 3: const png = require('./bar.png'); ^^^^^^^^^^^ [1] 5: (png: number) ^^^^^^ [2] `, ), ]), test('Requiring a .webp file', [ addFile('qux.webp') .addCode("import './qux.webp'") .noNewErrors(), ]), test('.webp extension cannot be omitted', [ addFile('qux.webp') .addCode("import './qux'") .newErrors( ` test.js:3 3: import './qux' ^^^^^^^ Cannot resolve module \`./qux\`. [cannot-resolve-module] `, ), ]), test('By default, .webp files export the string type', [ addFile('qux.webp') .addCode("const qux = require('./qux.webp');") .addCode("(qux: number)") .newErrors( ` test.js:5 5: (qux: number) ^^^ Cannot cast \`qux\` to number because string [1] is incompatible with number [2]. [incompatible-cast] References: 3: const qux = require('./qux.webp'); ^^^^^^^^^^^^ [1] 5: (qux: number) ^^^^^^ [2] `, ), ]), test('module.name_mapper should still work', [ addFiles('foo.css', 'cssMock.js') .addCode('const css = require("./foo.css");') .addCode('(css: string)') .newErrors( ` test.js:5 5: (css: string) ^^^ Cannot cast \`css\` to string because boolean [1] is incompatible with string [2]. [incompatible-cast] References: 2: declare module.exports: boolean; ^^^^^^^ [1]. See: cssMock.js:2 5: (css: string) ^^^^^^ [2] `, ), ]).flowConfig('_flowconfig_with_module_name_mapper'), ]): Suite);