mirror of
https://github.com/status-im/react-native.git
synced 2025-02-12 01:16:46 +00:00
Summary: (I changed a ton from when I previously submitted this PR so please take another look if you already did.) PROBLEM: the no-longer-maintained `esprima-fb` parser does not support class properties, leading our website docgen to die if we use class properties, which we're gonna do real soon now SOLUTION: use `flow-parser` instead, which the flow team is maintaining including all the fancy-pants ES? stuff that FB uses internally. This removes the `esprima-fb` parser from jsdocs and replaces it with `flow-parser`. It's almost the same, I checked by diffing all the parser json output and it only had a few irrelevant differences. I had to add a file of constants so that we could remove esprima-fb altogether, too. This also adds a couple unit tests, so that we can test that jsDocs works programmatically. They don't run if you run the regular RN tests, you have to run `npm test` from the `/website/` subdirectory. Closes https://github.com/facebook/react-native/pull/9890 Differential Revision: D3865629 Pulled By: bestander fbshipit-source-id: 8f561b78ca4a02f3f7b45e55904ec2fa911e3bb6
40 lines
1.0 KiB
JavaScript
40 lines
1.0 KiB
JavaScript
/**
|
|
* Copyright (c) 2016-present, Facebook, Inc.
|
|
* All rights reserved.
|
|
*
|
|
* This source code is licensed under the BSD-style license found in the
|
|
* LICENSE file in the root directory of this source tree. An additional grant
|
|
* of patent rights can be found in the PATENTS file in the same directory.
|
|
*
|
|
*/
|
|
'use strict';
|
|
|
|
const fs = require('fs');
|
|
const jsDocs = require('../jsdocs');
|
|
const libs = __dirname + '/../../../Libraries/';
|
|
|
|
function checkWeCanParse(library) {
|
|
let path = libs + library;
|
|
let code = fs.readFileSync(path).toString();
|
|
let json = jsDocs(code);
|
|
expect(json).toBeTruthy();
|
|
}
|
|
|
|
describe('parseSource', () => {
|
|
it('should parse Vibration.js', () => {
|
|
checkWeCanParse('Vibration/Vibration.js');
|
|
});
|
|
|
|
it('should parse AsyncStorage.js', () => {
|
|
checkWeCanParse('Storage/AsyncStorage.js');
|
|
});
|
|
|
|
it('should not parse invalid code', () => {
|
|
let code = `
|
|
for x in range(10):
|
|
print 'oops this isnt python'
|
|
`;
|
|
expect(jsDocs('fakepath', code)).toBeFalsy();
|
|
});
|
|
});
|