Skip to content

Commit

Permalink
fix: make codegen test run work
Browse files Browse the repository at this point in the history
  • Loading branch information
Riccardo Cipolleschi committed Sep 5, 2022
1 parent 5c109b3 commit 5e12496
Show file tree
Hide file tree
Showing 6 changed files with 58 additions and 23 deletions.
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -111,9 +111,11 @@ package-lock.json
# react-native-codegen
/React/FBReactNativeSpec/FBReactNativeSpec
/packages/react-native-codegen/lib
/packages/react-native-codegen/tmp/
/ReactCommon/react/renderer/components/rncore/
/packages/rn-tester/NativeModuleExample/ScreenshotManagerSpec*


# Additional SDKs
/sdks/download
/sdks/hermes
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,37 +13,38 @@

const rnCodegen = require('../RNCodegen.js');
const fixture = require('../__test_fixtures__/fixtures.js');
const path = require('path');

const outputDirectory = 'tmp/out/';
const packageName = 'na';

describe('RNCodegen.generate', () => {
beforeEach(() => {
jest.resetModules();
});
it('when type `all`, with default paths', () => {
const componentsOutputDir = 'react/renderer/components/library';
const modulesOutputDir = 'library';

const expectedPaths = {
'library.h': modulesOutputDir,
'library-generated.mm': modulesOutputDir,
'ShadowNodes.h': componentsOutputDir,
'ShadowNodes.cpp': componentsOutputDir,
'Props.h': componentsOutputDir,
'Props.cpp': componentsOutputDir,
'RCTComponentViewHelpers.h': componentsOutputDir,
'EventEmitters.h': componentsOutputDir,
'EventEmitters.cpp': componentsOutputDir,
'ComponentDescriptors.h': componentsOutputDir,
};

jest.mock('fs', () => ({
existsSync: location => {
return true;
},
writeFileSync: (location, content) => {
// Jest in the OSS does not allow to capture variables in closures.
// Therefore, we have to bring the variables inside the closure.
// see: https://github.com/facebook/jest/issues/2567
const path = require('path');
const outputDirectory = 'tmp/out/';
const componentsOutputDir = 'react/renderer/components/library';
const modulesOutputDir = 'library';
const expectedPaths = {
'library.h': modulesOutputDir,
'library-generated.mm': modulesOutputDir,
'ShadowNodes.h': componentsOutputDir,
'ShadowNodes.cpp': componentsOutputDir,
'Props.h': componentsOutputDir,
'Props.cpp': componentsOutputDir,
'RCTComponentViewHelpers.h': componentsOutputDir,
'EventEmitters.h': componentsOutputDir,
'EventEmitters.cpp': componentsOutputDir,
'ComponentDescriptors.h': componentsOutputDir,
};

let receivedDir = path.dirname(location);
let receivedBasename = path.basename(location);

Expand All @@ -55,6 +56,7 @@ describe('RNCodegen.generate', () => {
},
}));

const outputDirectory = 'tmp/out/';
const res = rnCodegen.generate(
{
libraryName: 'library',
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,14 @@ const FlowParser = require('../../index.js');
const fixtures = require('../__test_fixtures__/fixtures.js');
const failureFixtures = require('../__test_fixtures__/failures.js');
jest.mock('fs', () => ({
readFileSync: filename => fixtures[filename] || failureFixtures[filename],
readFileSync: filename => {
// Jest in the OSS does not allow to capture variables in closures.
// Therefore, we have to bring the variables inside the closure.
// see: https://github.com/facebook/jest/issues/2567
const readFileFixtures = require('../__test_fixtures__/fixtures.js');
const readFileFailureFixtures = require('../__test_fixtures__/failures.js');
return readFileFixtures[filename] || readFileFailureFixtures[filename];
},
}));

describe('RN Codegen Flow Parser', () => {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,10 +12,19 @@
'use strict';

const FlowParser = require('../../index.js');

const fixtures = require('../__test_fixtures__/fixtures.js');
const failureFixtures = require('../__test_fixtures__/failures.js');

jest.mock('fs', () => ({
readFileSync: filename => fixtures[filename] || failureFixtures[filename],
readFileSync: filename => {
// Jest in the OSS does not allow to capture variables in closures.
// Therefore, we have to bring the variables inside the closure.
// see: https://github.com/facebook/jest/issues/2567
const readFileFixtures = require('../__test_fixtures__/fixtures.js');
const readFileFailureFixtures = require('../__test_fixtures__/failures.js');
return readFileFixtures[filename] || readFileFailureFixtures[filename];
},
}));

describe('RN Codegen Flow Parser', () => {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,14 @@ const TypeScriptParser = require('../../index.js');
const fixtures = require('../__test_fixtures__/fixtures.js');
const failureFixtures = require('../__test_fixtures__/failures.js');
jest.mock('fs', () => ({
readFileSync: filename => fixtures[filename] || failureFixtures[filename],
readFileSync: filename => {
// Jest in the OSS does not allow to capture variables in closures.
// Therefore, we have to bring the variables inside the closure.
// see: https://github.com/facebook/jest/issues/2567
const readFileFixtures = require('../__test_fixtures__/fixtures.js');
const readFileFailureFixtures = require('../__test_fixtures__/failures.js');
return readFileFixtures[filename] || readFileFailureFixtures[filename];
},
}));

describe('RN Codegen TypeScript Parser', () => {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,16 @@
const TypeScriptParser = require('../../index.js');
const fixtures = require('../__test_fixtures__/fixtures.js');
const failureFixtures = require('../__test_fixtures__/failures.js');

jest.mock('fs', () => ({
readFileSync: filename => fixtures[filename] || failureFixtures[filename],
readFileSync: filename => {
// Jest in the OSS does not allow to capture variables in closures.
// Therefore, we have to bring the variables inside the closure.
// see: https://github.com/facebook/jest/issues/2567
const readFileFixtures = require('../__test_fixtures__/fixtures.js');
const readFileFailureFixtures = require('../__test_fixtures__/failures.js');
return readFileFixtures[filename] || readFileFailureFixtures[filename];
},
}));

describe('RN Codegen TypeScript Parser', () => {
Expand Down

0 comments on commit 5e12496

Please sign in to comment.