UNPKG

14.5 kBSource Map (JSON)View Raw
1{"version":3,"file":"jasmine_util.js","sourceRoot":"","sources":["../src/jasmine_util.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * @license\n * Copyright 2017 Google LLC. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * =============================================================================\n */\n\n// We use the pattern below (as opposed to require('jasmine') to create the\n// jasmine module in order to avoid loading node specific modules which may\n// be ignored in browser environments but cannot be ignored in react-native\n// due to the pre-bundling of dependencies that it must do.\n// tslint:disable-next-line:no-require-imports\nconst jasmineRequire = require('jasmine-core/lib/jasmine-core/jasmine.js');\nconst jasmineCore = jasmineRequire.core(jasmineRequire);\nimport {KernelBackend} from './backends/backend';\nimport {ENGINE} from './engine';\nimport {env, Environment, Flags} from './environment';\n\nError.stackTraceLimit = Infinity;\njasmineCore.DEFAULT_TIMEOUT_INTERVAL = 20000;\n\nexport type Constraints = {\n flags?: Flags,\n predicate?: (testEnv: TestEnv) => boolean,\n};\n\nexport const NODE_ENVS: Constraints = {\n predicate: () => env().platformName === 'node'\n};\nexport const CHROME_ENVS: Constraints = {\n flags: {'IS_CHROME': true}\n};\nexport const BROWSER_ENVS: Constraints = {\n predicate: () => env().platformName === 'browser'\n};\n\nexport const SYNC_BACKEND_ENVS: Constraints = {\n predicate: (testEnv: TestEnv) => testEnv.isDataSync === true\n};\n\nexport const HAS_WORKER = {\n predicate: () => typeof (Worker) !== 'undefined' &&\n typeof (Blob) !== 'undefined' && typeof (URL) !== 'undefined'\n};\n\nexport const HAS_NODE_WORKER = {\n predicate: () => {\n let hasWorker = true;\n try {\n require.resolve('worker_threads');\n } catch {\n hasWorker = false;\n }\n return typeof (process) !== 'undefined' && hasWorker;\n }\n};\n\nexport const ALL_ENVS: Constraints = {};\n\n// Tests whether the current environment satisfies the set of constraints.\nexport function envSatisfiesConstraints(\n env: Environment, testEnv: TestEnv, constraints: Constraints): boolean {\n if (constraints == null) {\n return true;\n }\n\n if (constraints.flags != null) {\n for (const flagName in constraints.flags) {\n const flagValue = constraints.flags[flagName];\n if (env.get(flagName) !== flagValue) {\n return false;\n }\n }\n }\n if (constraints.predicate != null && !constraints.predicate(testEnv)) {\n return false;\n }\n return true;\n}\n\nexport interface TestFilter {\n include?: string;\n startsWith?: string;\n excludes?: string[];\n}\n\n/**\n * Add test filtering logic to Jasmine's specFilter hook.\n *\n * @param testFilters Used for include a test suite, with the ability\n * to selectively exclude some of the tests.\n * Either `include` or `startsWith` must exist for a `TestFilter`.\n * Tests that have the substrings specified by the include or startsWith\n * will be included in the test run, unless one of the substrings specified\n * by `excludes` appears in the name.\n * @param customInclude Function to programatically include a test.\n * If this function returns true, a test will immediately run. Otherwise,\n * `testFilters` is used for fine-grained filtering.\n *\n * If a test is not handled by `testFilters` or `customInclude`, the test will\n * be excluded in the test run.\n */\nexport function setupTestFilters(\n testFilters: TestFilter[], customInclude: (name: string) => boolean) {\n const env = jasmine.getEnv();\n\n // Account for --grep flag passed to karma by saving the existing specFilter.\n const grepFilter = env.specFilter;\n\n /**\n * Filter method that returns boolean, if a given test should run or be\n * ignored based on its name. The exclude list has priority over the\n * include list. Thus, if a test matches both the exclude and the include\n * list, it will be exluded.\n */\n // tslint:disable-next-line: no-any\n env.specFilter = (spec: any) => {\n // Filter out tests if the --grep flag is passed.\n if (!grepFilter(spec)) {\n return false;\n }\n\n const name = spec.getFullName();\n\n if (customInclude(name)) {\n return true;\n }\n\n // Include tests of a test suite unless tests are in excludes list.\n for (let i = 0; i < testFilters.length; ++i) {\n const testFilter = testFilters[i];\n if ((testFilter.include != null &&\n name.indexOf(testFilter.include) > -1) ||\n (testFilter.startsWith != null &&\n name.startsWith(testFilter.startsWith))) {\n if (testFilter.excludes != null) {\n for (let j = 0; j < testFilter.excludes.length; j++) {\n if (name.indexOf(testFilter.excludes[j]) > -1) {\n return false;\n }\n }\n }\n return true;\n }\n }\n\n // Otherwise ignore the test.\n return false;\n };\n}\n\nexport function parseTestEnvFromKarmaFlags(\n args: string[], registeredTestEnvs: TestEnv[]): TestEnv {\n let flags: Flags;\n let testEnvName: string;\n\n args.forEach((arg, i) => {\n if (arg === '--flags') {\n flags = JSON.parse(args[i + 1]);\n } else if (arg === '--testEnv') {\n testEnvName = args[i + 1];\n }\n });\n\n const testEnvNames = registeredTestEnvs.map(env => env.name).join(', ');\n if (flags != null && testEnvName == null) {\n throw new Error(\n '--testEnv flag is required when --flags is present. ' +\n `Available values are [${testEnvNames}].`);\n }\n if (testEnvName == null) {\n return null;\n }\n\n let testEnv: TestEnv;\n registeredTestEnvs.forEach(env => {\n if (env.name === testEnvName) {\n testEnv = env;\n }\n });\n if (testEnv == null) {\n throw new Error(\n `Test environment with name ${testEnvName} not ` +\n `found. Available test environment names are ` +\n `${testEnvNames}`);\n }\n if (flags != null) {\n testEnv.flags = flags;\n }\n\n return testEnv;\n}\n\nexport function describeWithFlags(\n name: string, constraints: Constraints, tests: (env: TestEnv) => void) {\n if (TEST_ENVS.length === 0) {\n throw new Error(\n `Found no test environments. This is likely due to test environment ` +\n `registries never being imported or test environment registries ` +\n `being registered too late.`);\n }\n\n TEST_ENVS.forEach(testEnv => {\n env().setFlags(testEnv.flags);\n if (envSatisfiesConstraints(env(), testEnv, constraints)) {\n const testName =\n name + ' ' + testEnv.name + ' ' + JSON.stringify(testEnv.flags || {});\n executeTests(testName, tests, testEnv);\n }\n });\n}\n\nexport interface TestEnv {\n name: string;\n backendName: string;\n flags?: Flags;\n isDataSync?: boolean;\n}\n\nexport const TEST_ENVS: TestEnv[] = [];\n\n// Whether a call to setTestEnvs has been called so we turn off\n// registration. This allows command line overriding or programmatic\n// overriding of the default registrations.\nlet testEnvSet = false;\nexport function setTestEnvs(testEnvs: TestEnv[]) {\n testEnvSet = true;\n TEST_ENVS.length = 0;\n TEST_ENVS.push(...testEnvs);\n}\n\nexport function registerTestEnv(testEnv: TestEnv) {\n // When using an explicit call to setTestEnvs, turn off registration of\n // test environments because the explicit call will set the test\n // environments.\n if (testEnvSet) {\n return;\n }\n TEST_ENVS.push(testEnv);\n}\n\nfunction executeTests(\n testName: string, tests: (env: TestEnv) => void, testEnv: TestEnv) {\n describe(testName, () => {\n beforeAll(async () => {\n ENGINE.reset();\n if (testEnv.flags != null) {\n env().setFlags(testEnv.flags);\n }\n env().set('IS_TEST', true);\n // Await setting the new backend since it can have async init.\n await ENGINE.setBackend(testEnv.backendName);\n });\n\n beforeEach(() => {\n ENGINE.startScope();\n });\n\n afterEach(() => {\n ENGINE.endScope();\n ENGINE.disposeVariables();\n });\n\n afterAll(() => {\n ENGINE.reset();\n });\n\n tests(testEnv);\n });\n}\n\nexport class TestKernelBackend extends KernelBackend {\n dispose(): void {}\n}\n"]}
\No newline at end of file