Files
react-native/private/eslint-plugin-monorepo/rules/__tests__/react-native-manifest-test.js
Tim Yung d17f7d0a29 RN: Private Package for Monorepo ESLint Rules (#51858)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/51858

Creates a new private package for the ESLint rules that are defined in the `facebook/react-native` repository for linting the monorepo itself: `react-native/eslint-plugin-monorepo`

It resides in a new `private/` directory that will be used for all private packages. I plan to move private packages over from `packages/` and `tools/`.

This also eliminates the need for the `eslint-plugin-lint` dependency in open source.

Changelog:
[Internal]

Reviewed By: cortinico

Differential Revision: D76088698

fbshipit-source-id: 697d5d91421cda4ef3f96d0497a96954cd047296
2025-06-09 20:30:32 -07:00

93 lines
1.9 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.
*
* @format
* @noflow
*/
'use strict';
const rule = require('../react-native-manifest.js');
const {RuleTester} = require('eslint');
const ruleTester = new RuleTester({
parser: require.resolve('jsonc-eslint-parser'),
});
ruleTester.run('react-native-manifest', rule, {
valid: [
{
code: JSON.stringify({
name: '@react-native/package-name',
}),
},
{
code: JSON.stringify({
name: '@react-native/package-name',
dependencies: {
dependencyA: '1.0.0',
},
devDependencies: {
dependencyB: '1.0.0',
},
}),
},
{
code: JSON.stringify({
name: '@react-native/monorepo',
devDependencies: {
dependencyB: '1.0.0',
},
}),
},
{
code: JSON.stringify({
name: 'react-native',
dependencies: {
dependencyA: '1.0.0',
},
}),
},
],
invalid: [
{
code: JSON.stringify({
name: '@react-native/monorepo',
dependencies: {
dependencyA: '1.0.0',
},
}),
errors: [
{
messageId: 'propertyDisallowed',
data: {
property: 'dependencies',
describe:
"Declare 'dependencies' in `packages/react-native/package.json`.",
},
},
],
},
{
code: JSON.stringify({
name: 'react-native',
devDependencies: {
dependencyA: '1.0.0',
},
}),
errors: [
{
messageId: 'propertyDisallowed',
data: {
property: 'devDependencies',
describe: "Declare 'devDependencies' in `<root>/package.json`.",
},
},
],
},
],
});