Skip to content
This repository was archived by the owner on Apr 11, 2019. It is now read-only.

Commit 2695903

Browse files
committed
Issue #135 - Handle better the diff viewer not having coverage data
Sometimes, we would need to visit the diff viewer for old changesets. Unfortunately, the backend would not have data available and the viewer would fail ungracefully. Before this, the console would be full of errors even if the UI would not fail dramatically.
1 parent 12311fd commit 2695903

File tree

2 files changed

+21
-11
lines changed

2 files changed

+21
-11
lines changed

src/components/diffViewer.jsx

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ import { Link } from 'react-router-dom';
22
import DiffFile from './diffFile';
33
import CoverageMeta from './coverageMeta';
44
import CoverageFooter from './coverageFooter';
5-
import settings from '../settings';
65

76
const DiffViewer = ({
87
appError, changeset, coverage, parsedDiff,
@@ -12,7 +11,7 @@ const DiffViewer = ({
1211
<Link to="/" href="/">Return to main page</Link>
1312
</div>
1413
<span className="error_message">{appError}</span>
15-
{(coverage && coverage.summary !== settings.STRINGS.PENDING) && (
14+
{(coverage && coverage.show) && (
1615
<div>
1716
<CoverageMeta
1817
changeset={changeset}

src/containers/diffViewer.jsx

Lines changed: 20 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -29,9 +29,11 @@ export default class DiffViewerContainer extends Component {
2929
constructor(props) {
3030
super(props);
3131
this.state = {
32-
appError: undefined,
33-
coverage: undefined,
32+
appError: '',
33+
changeset: {},
34+
coverage: {},
3435
parsedDiff: [],
36+
supportedExtensions: [],
3537
};
3638
}
3739

@@ -53,12 +55,14 @@ export default class DiffViewerContainer extends Component {
5355
async fetchSetCoverageData(node) {
5456
try {
5557
const coverage = await getChangesetCoverage(node);
58+
let appError = '';
5659
if (coverage.summary === settings.STRINGS.PENDING) {
57-
this.setState({
58-
appError: 'The coverage data is still pending. Try again later.',
59-
});
60+
appError = 'The coverage data is still pending. Please try again later.';
6061
}
61-
this.setState({ coverage });
62+
if (!coverage.show) {
63+
appError = 'The coverage backend has had an internal error.';
64+
}
65+
this.setState({ appError, coverage });
6266
} catch (error) {
6367
console.error(error);
6468
this.setState({
@@ -94,10 +98,17 @@ export default class DiffViewerContainer extends Component {
9498

9599
render() {
96100
const {
97-
appError, changeset, coverage, parsedDiff, supportedExtensions,
101+
appError,
102+
changeset,
103+
coverage,
104+
parsedDiff,
105+
supportedExtensions,
98106
} = this.state;
99-
const onlySupportedExtensions = filterUnsupportedExtensions(parsedDiff, supportedExtensions);
100-
const sortedDiff = sortByPercent(onlySupportedExtensions, coverage);
107+
let sortedDiff = [];
108+
if (coverage && coverage.show) {
109+
const onlySupportedExtensions = filterUnsupportedExtensions(parsedDiff, supportedExtensions);
110+
sortedDiff = sortByPercent(onlySupportedExtensions, coverage);
111+
}
101112

102113
return (
103114
<DiffViewer

0 commit comments

Comments
 (0)