summaryrefslogtreecommitdiff
path: root/web
diff options
context:
space:
mode:
authorZuul <zuul@review.opendev.org>2019-08-28 06:14:54 +0000
committerGerrit Code Review <review@openstack.org>2019-08-28 06:14:54 +0000
commit5e44640d20f0592aba8ac1b30905b88f37114d31 (patch)
treeb165dccdac2ec484ae36c6d65d819a8b0fb038f0 /web
parentd3920235e1fd734e250c4eb834f121d9bd8faed9 (diff)
parentf9fe0adfdb9a751cf0748475930802e7f4d9d5b9 (diff)
downloadzuul-5e44640d20f0592aba8ac1b30905b88f37114d31.tar.gz
Merge "web: test trailing slash are removed from renderTree"
Diffstat (limited to 'web')
-rw-r--r--web/src/actions/build.js27
-rw-r--r--web/src/actions/build.test.js9
-rw-r--r--web/src/containers/build/Manifest.jsx54
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>
- &nbsp;&nbsp;
- (<a href={log_url + path + name}>raw</a>
- &nbsp;<span className="fa fa-external-link"/>)
- </span>)
- } else {
- node.text = (
- <span>
- <a href={log_url + path + name}>{obj.name}</a>
- &nbsp;<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>
+ &nbsp;&nbsp;(<a href={log_url + path + name}>raw</a>
+ &nbsp;<span className="fa fa-external-link"/>)
+ </span>),
+ (log_url, path, name, obj) => (
+ <span>
+ <a href={log_url + path + name}>{obj.name}</a>
+ &nbsp;<span className="fa fa-external-link"/>
+ </span>
+ )))
return (
<React.Fragment>