Commit 31243283 authored by Joe Haddad's avatar Joe Haddad Committed by GitHub
Browse files

Add linked modules test (#1913)

parent f61cba10
3 merge requests!12191Lim.Pisey.168:/Identified - We are currently investigating reports of missing build logs. The issue has been identified and a resolution is in progress. We will provide a further update when available.Mar 21, 09:02 UTC,!12853brikk,!5717Automatically extract project file structure from build bundle file
Showing with 73 additions and 4 deletions
+73 -4
...@@ -5,6 +5,7 @@ ...@@ -5,6 +5,7 @@
"babel-polyfill": "6.20.0", "babel-polyfill": "6.20.0",
"chai": "3.5.0", "chai": "3.5.0",
"jsdom": "9.8.3", "jsdom": "9.8.3",
"mocha": "3.2.0" "mocha": "3.2.0",
"test-integrity": "1.0.0"
} }
} }
...@@ -44,6 +44,14 @@ describe('Integration', () => { ...@@ -44,6 +44,14 @@ describe('Integration', () => {
); );
}); });
it('linked modules', async () => {
const doc = await initDOM('linked-modules');
expect(doc.getElementById('feature-linked-modules').textContent).to.equal(
'2.0.0'
);
});
it('svg inclusion', async () => { it('svg inclusion', async () => {
const doc = await initDOM('svg-inclusion'); const doc = await initDOM('svg-inclusion');
......
...@@ -111,6 +111,10 @@ class App extends Component { ...@@ -111,6 +111,10 @@ class App extends Component {
import('./features/webpack/JsonInclusion').then(f => import('./features/webpack/JsonInclusion').then(f =>
this.setFeature(f.default)); this.setFeature(f.default));
break; break;
case 'linked-modules':
import('./features/webpack/LinkedModules').then(f =>
this.setFeature(f.default));
break;
case 'node-path': case 'node-path':
import('./features/env/NodePath').then(f => this.setFeature(f.default)); import('./features/env/NodePath').then(f => this.setFeature(f.default));
break; break;
......
/**
* Copyright (c) 2015-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.
*/
import React from 'react';
import './assets/style.css';
import { test, version } from 'test-integrity';
export default () => {
const v = version();
if (!test() || v !== '2.0.0') {
throw new Error('Functionality test did not pass.');
}
return <p id="feature-linked-modules">{v}</p>;
};
/**
* Copyright (c) 2015-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.
*/
import React from 'react';
import ReactDOM from 'react-dom';
import { test, version } from 'test-integrity';
import LinkedModules from './LinkedModules';
describe('linked modules', () => {
it('has integrity', () => {
expect(test());
expect(version() === '2.0.0');
});
it('renders without crashing', () => {
const div = document.createElement('div');
ReactDOM.render(<LinkedModules />, div);
});
});
...@@ -14,17 +14,18 @@ ...@@ -14,17 +14,18 @@
# Start in tasks/ even if run from root directory # Start in tasks/ even if run from root directory
cd "$(dirname "$0")" cd "$(dirname "$0")"
# CLI and app temporary locations # CLI, app, and test module temporary locations
# http://unix.stackexchange.com/a/84980 # http://unix.stackexchange.com/a/84980
temp_cli_path=`mktemp -d 2>/dev/null || mktemp -d -t 'temp_cli_path'` temp_cli_path=`mktemp -d 2>/dev/null || mktemp -d -t 'temp_cli_path'`
temp_app_path=`mktemp -d 2>/dev/null || mktemp -d -t 'temp_app_path'` temp_app_path=`mktemp -d 2>/dev/null || mktemp -d -t 'temp_app_path'`
temp_module_path=`mktemp -d 2>/dev/null || mktemp -d -t 'temp_module_path'`
function cleanup { function cleanup {
echo 'Cleaning up.' echo 'Cleaning up.'
ps -ef | grep 'react-scripts' | grep -v grep | awk '{print $2}' | xargs kill -s 9 ps -ef | grep 'react-scripts' | grep -v grep | awk '{print $2}' | xargs kill -s 9
cd "$root_path" cd "$root_path"
# TODO: fix "Device or resource busy" and remove ``|| $CI` # TODO: fix "Device or resource busy" and remove ``|| $CI`
rm -rf "$temp_cli_path" $temp_app_path || $CI rm -rf "$temp_cli_path" "$temp_app_path" "$temp_module_path" || $CI
} }
# Error messages are redirected to stderr # Error messages are redirected to stderr
...@@ -111,17 +112,24 @@ npm install "$cli_path" ...@@ -111,17 +112,24 @@ npm install "$cli_path"
cd $temp_app_path cd $temp_app_path
create_react_app --scripts-version="$scripts_path" --internal-testing-template="$root_path"/packages/react-scripts/fixtures/kitchensink test-kitchensink create_react_app --scripts-version="$scripts_path" --internal-testing-template="$root_path"/packages/react-scripts/fixtures/kitchensink test-kitchensink
# Install the test module
cd "$temp_module_path"
npm install test-integrity@^2.0.1
# ****************************************************************************** # ******************************************************************************
# Now that we used create-react-app to create an app depending on react-scripts, # Now that we used create-react-app to create an app depending on react-scripts,
# let's make sure all npm scripts are in the working state. # let's make sure all npm scripts are in the working state.
# ****************************************************************************** # ******************************************************************************
# Enter the app directory # Enter the app directory
cd test-kitchensink cd "$temp_app_path/test-kitchensink"
# Link to our preset # Link to our preset
npm link "$root_path"/packages/babel-preset-react-app npm link "$root_path"/packages/babel-preset-react-app
# Link to test module
npm link "$temp_module_path/node_modules/test-integrity"
# Test the build # Test the build
REACT_APP_SHELL_ENV_MESSAGE=fromtheshell \ REACT_APP_SHELL_ENV_MESSAGE=fromtheshell \
NODE_PATH=src \ NODE_PATH=src \
...@@ -183,6 +191,9 @@ npm link "$root_path"/packages/eslint-config-react-app ...@@ -183,6 +191,9 @@ npm link "$root_path"/packages/eslint-config-react-app
npm link "$root_path"/packages/react-dev-utils npm link "$root_path"/packages/react-dev-utils
npm link "$root_path"/packages/react-scripts npm link "$root_path"/packages/react-scripts
# Link to test module
npm link "$temp_module_path/node_modules/test-integrity"
# Test the build # Test the build
REACT_APP_SHELL_ENV_MESSAGE=fromtheshell \ REACT_APP_SHELL_ENV_MESSAGE=fromtheshell \
NODE_PATH=src \ NODE_PATH=src \
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment