mirror of
https://github.com/facebook/react-native.git
synced 2025-11-01 09:14:26 +00:00
Summary: Pull Request resolved: https://github.com/facebook/react-native/pull/48092 Changelog: [internal] This is just in preparation to expand the scope of that function to include configuration for feature flags. Reviewed By: javache Differential Revision: D66760119 fbshipit-source-id: e955e8f596697ac6a0a87013bec3fc3e09caf19d
65 lines
1.4 KiB
JavaScript
65 lines
1.4 KiB
JavaScript
/**
|
|
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
*
|
|
* This source code is licensed under the MIT license found in the
|
|
* LICENSE file in the root directory of this source tree.
|
|
*
|
|
* @flow strict-local
|
|
* @format
|
|
* @oncall react_native
|
|
*/
|
|
|
|
import fs from 'fs';
|
|
// $FlowExpectedError[untyped-import]
|
|
import {extract, parse} from 'jest-docblock';
|
|
|
|
type DocblockPragmas = {[key: string]: string | string[]};
|
|
type FantomTestMode = 'dev' | 'opt';
|
|
type FantomTestConfig = {
|
|
mode: FantomTestMode,
|
|
};
|
|
|
|
const DEFAULT_MODE: FantomTestMode = 'dev';
|
|
|
|
/**
|
|
* Extracts the Fantom configuration from the test file, specified as part of
|
|
* the docblock comment. E.g.:
|
|
*
|
|
* ```
|
|
* /**
|
|
* * @flow strict-local
|
|
* * @fantom mode:opt
|
|
* *
|
|
* ```
|
|
*
|
|
* So far the only supported option is `mode`, which can be 'dev' or 'opt'.
|
|
*/
|
|
export default function getFantomTestConfig(
|
|
testPath: string,
|
|
): FantomTestConfig {
|
|
const docblock = extract(fs.readFileSync(testPath, 'utf8'));
|
|
const pragmas = parse(docblock) as DocblockPragmas;
|
|
|
|
const config = {
|
|
mode: DEFAULT_MODE,
|
|
};
|
|
|
|
const maybeMode = pragmas.fantom_mode;
|
|
|
|
if (maybeMode != null) {
|
|
if (Array.isArray(maybeMode)) {
|
|
throw new Error('Expected a single value for @fantom_mode');
|
|
}
|
|
|
|
const mode = maybeMode;
|
|
|
|
if (mode === 'dev' || mode === 'opt') {
|
|
config.mode = mode;
|
|
} else {
|
|
throw new Error(`Invalid Fantom mode: ${mode}`);
|
|
}
|
|
}
|
|
|
|
return config;
|
|
}
|