diff options
author | Zuul <zuul@review.opendev.org> | 2019-08-28 06:14:54 +0000 |
---|---|---|
committer | Gerrit Code Review <review@openstack.org> | 2019-08-28 06:14:54 +0000 |
commit | 5e44640d20f0592aba8ac1b30905b88f37114d31 (patch) | |
tree | b165dccdac2ec484ae36c6d65d819a8b0fb038f0 | |
parent | d3920235e1fd734e250c4eb834f121d9bd8faed9 (diff) | |
parent | f9fe0adfdb9a751cf0748475930802e7f4d9d5b9 (diff) | |
download | zuul-5e44640d20f0592aba8ac1b30905b88f37114d31.tar.gz |
Merge "web: test trailing slash are removed from renderTree"
-rw-r--r-- | web/src/actions/build.js | 27 | ||||
-rw-r--r-- | web/src/actions/build.test.js | 9 | ||||
-rw-r--r-- | web/src/containers/build/Manifest.jsx | 54 |
3 files changed, 55 insertions, 35 deletions
diff --git a/web/src/actions/build.js b/web/src/actions/build.js index 69a8e3a23..c61aa8189 100644 --- a/web/src/actions/build.js +++ b/web/src/actions/build.js @@ -56,6 +56,33 @@ export const requestBuildOutput = () => ({ }) // job-output processing functions +export function renderTree(tenant, build, path, obj, textRenderer, defaultRenderer) { + const node = {} + let name = obj.name + + if ('children' in obj && obj.children) { + node.nodes = obj.children.map( + n => renderTree(tenant, build, path+obj.name+'/', n, + textRenderer, defaultRenderer)) + } + if (obj.mimetype === 'application/directory') { + name = obj.name + '/' + } else { + node.icon = 'fa fa-file-o' + } + + let log_url = build.log_url + if (log_url.endsWith('/')) { + log_url = log_url.slice(0, -1) + } + if (obj.mimetype === 'text/plain') { + node.text = textRenderer(tenant, build, path, name, log_url, obj) + } else { + node.text = defaultRenderer(log_url, path, name, obj) + } + return node +} + export function didTaskFail(task) { if (task.failed) { return true diff --git a/web/src/actions/build.test.js b/web/src/actions/build.test.js index 64ee81d98..a80aa5d0b 100644 --- a/web/src/actions/build.test.js +++ b/web/src/actions/build.test.js @@ -24,4 +24,13 @@ it('processes job-output properly', () => { expect(buildAction.hasInterestingKeys({rc: 42}, ['rc'])).toEqual(true) expect(buildAction.hasInterestingKeys({noop: 42}, ['rc'])).toEqual(false) + + // Check trailing / are removed + let obj = {children: [], mimetype: 'test', name: 'test'} + let tree = buildAction.renderTree( + {linkPrefix: 'test/'}, + {log_url: 'http://test/', uuid: 'test'}, + '/', obj, (a) => (a), (a) => (a)) + expect(tree).toEqual( + {'icon': 'fa fa-file-o', 'nodes': [], 'text': 'http://test'}) }) diff --git a/web/src/containers/build/Manifest.jsx b/web/src/containers/build/Manifest.jsx index 93b5d3d9e..d535e74ba 100644 --- a/web/src/containers/build/Manifest.jsx +++ b/web/src/containers/build/Manifest.jsx @@ -19,41 +19,8 @@ import { } from 'patternfly-react' import { Link } from 'react-router-dom' -const renderTree = (tenant, build, path, obj) => { - const node = {} - let name = obj.name +import { renderTree } from '../../actions/build' - if ('children' in obj && obj.children) { - node.nodes = obj.children.map(n => renderTree(tenant, build, path+obj.name+'/', n)) - } - if (obj.mimetype === 'application/directory') { - name = obj.name + '/' - } else { - node.icon = 'fa fa-file-o' - } - - let log_url = build.log_url - if (log_url.endsWith('/')) { - log_url = log_url.slice(0, -1) - } - if (obj.mimetype === 'text/plain') { - node.text = ( - <span> - <Link to={tenant.linkPrefix + '/build/' + build.uuid + '/log' + path + name}>{obj.name}</Link> - - (<a href={log_url + path + name}>raw</a> - <span className="fa fa-external-link"/>) - </span>) - } else { - node.text = ( - <span> - <a href={log_url + path + name}>{obj.name}</a> - <span className="fa fa-external-link"/> - </span> - ) - } - return node -} class Manifest extends React.Component { static propTypes = { @@ -64,7 +31,24 @@ class Manifest extends React.Component { render() { const { tenant, build } = this.props - const nodes = build.manifest.tree.map(n => renderTree(tenant, build, '/', n)) + const nodes = build.manifest.tree.map( + n => renderTree( + tenant, build, '/', n, + (tenant, build, path, name, log_url, obj) => ( + <span> + <Link + to={tenant.linkPrefix + '/build/' + build.uuid + '/log' + path + name}> + {obj.name} + </Link> + (<a href={log_url + path + name}>raw</a> + <span className="fa fa-external-link"/>) + </span>), + (log_url, path, name, obj) => ( + <span> + <a href={log_url + path + name}>{obj.name}</a> + <span className="fa fa-external-link"/> + </span> + ))) return ( <React.Fragment> |