//NOTE: modified from phpunitPlugin var paratestPlugin = ActiveBuild.UiPlugin.extend({ id: 'build-paratest-errors', css: 'col-lg-6 col-md-12 col-sm-12 col-xs-12', title: 'Paratest', lastData: null, displayOnUpdate: false, box: true, rendered: false, statusMap: { success : 'ok', fail: 'remove', error: 'warning-sign', todo: 'info-sign', skipped: 'exclamation-sign' }, register: function() { var self = this; var query = ActiveBuild.registerQuery('paratest-data', -1, {key: 'paratest-data'}) $(window).on('paratest-data', function(data) { self.onUpdate(data); }); $(window).on('build-updated', function() { if (!self.rendered) { self.displayOnUpdate = true; query(); } }); $(document).on('click', '#paratest-data .test-toggle', function(ev) { var input = $(ev.target); $('#paratest-data tbody ' + input.data('target')).toggle(input.prop('checked')); }); }, render: function() { return $('
' + '' + '' + ' ' + '' + '
'+Lang.get('test_message')+'
'); }, onUpdate: function(e) { if (!e.queryData) { $('#build-paratest-errors').hide(); return; } this.rendered = true; this.lastData = e.queryData; var tests = this.lastData[0].meta_value; var thead = $('#paratest-data thead tr'); var tbody = $('#paratest-data tbody'); thead.empty().append(''+Lang.get('test_message')+''); tbody.empty(); if (tests.length == 0) { $('#build-paratest-errors').hide(); return; } var counts = { success: 0, fail: 0, error: 0, skipped: 0, todo: 0 }, total = 0; for (var i in tests) { var content = $(''), message = $('
').appendTo(content), severity = tests[i].severity || (tests[i].pass ? 'success' : 'failed'); if (tests[i].message) { message.text(tests[i].message); } else if (tests[i].test && tests[i].suite) { message.text(tests[i].suite + '::' + tests[i].test); } else { message.html('' + Lang.get('test_no_message') + ''); } if (tests[i].data) { content.append('
' + this.repr(tests[i].data) + '
'); } $('').append(content).appendTo(tbody); counts[severity]++; total++; } var checkboxes = $(''); thead.append(checkboxes).append('' + Lang.get('test_total', total) + ''); for (var key in counts) { var count = counts[key]; if(count > 0) { checkboxes.append( '
 ' + Lang.get('test_'+key, count)+ '
' ); } } tbody.find('.success').hide(); $('#build-paratest-errors').show(); }, repr: function(data) { switch(typeof(data)) { case 'boolean': return '' + (data ? 'true' : 'false') + ''; case 'string': return '"' + data + '"'; case 'undefined': case null: return 'null'; case 'object': var rows = []; if(data instanceof Array) { for(var i in data) { rows.push('' + this.repr(data[i]) + ','); } } else { for(var key in data) { rows.push( '' + '' + this.repr(key) + '' + '=>' + '' + this.repr(data[key]) + ',' + ''); } } return '' + '' + rows.join('') + '' + '
array(
)
'; } return '???'; } }); ActiveBuild.registerPlugin(new paratestPlugin());