Skip to content

Commit

Permalink
[JENKINS-31830] Added support for flog publisher as part of the RubyM…
Browse files Browse the repository at this point in the history
…etrics Reports Plugin
  • Loading branch information
v1v committed Dec 1, 2015
1 parent 0abcdd9 commit 922a7e4
Show file tree
Hide file tree
Showing 4 changed files with 86 additions and 0 deletions.
@@ -0,0 +1,7 @@
job('example') {
publishers {
flog {
rubyDirectories('folder')
}
}
}
@@ -0,0 +1,14 @@
package javaposse.jobdsl.dsl.helpers.publisher

import javaposse.jobdsl.dsl.Context

class FlogContext implements Context {
String rubyDirectories

/**
* Specifies the ruby directories to monitorize with Flog, relative to the workspace.
*/
void rubyDirectories(String rubyDirectories) {
this.rubyDirectories = rubyDirectories
}
}
Expand Up @@ -1738,6 +1738,30 @@ class PublisherContext extends AbstractExtensibleContext {
}
}

/*
* Measures code complexity.
*
* @since 1.41
*/
@RequiresPlugin(id = 'rubyMetrics', minimumVersion = '1.6.3')
void flog(@DslContext(FlogContext) Closure closure) {
FlogContext context = new FlogContext()
ContextHelper.executeInContext(closure, context)

publisherNodes << new NodeBuilder().'hudson.plugins.rubyMetrics.flog.FlogPublisher' {
rbDirectories(context.rubyDirectories ?: '')
splittedDirectories {
if (context.rubyDirectories != null) {
context.rubyDirectories.split().each {
delegate.string(it)
}
} else {
delegate.string(context.rubyDirectories ?: '.')
}
}
}
}

@SuppressWarnings('NoDef')
private static addStaticAnalysisContext(def nodeBuilder, StaticAnalysisContext context) {
nodeBuilder.with {
Expand Down
Expand Up @@ -5175,4 +5175,45 @@ class PublisherContextSpec extends Specification {
where:
value << [true, false]
}

def 'call flog with no options'() {
when:
context.flog {
}

then:
context.publisherNodes.size() == 1
with(context.publisherNodes[0]) {
name() == 'hudson.plugins.rubyMetrics.flog.FlogPublisher'
children().size() == 2
rbDirectories[0].value().empty
with(splittedDirectories[0]) {
children().size() == 1
string[0].value() == '.'
}
}
1 * jobManagement.requireMinimumPluginVersion('rubyMetrics', '1.6.3')
}

def 'call flog with all options'() {
when:
context.flog {
rubyDirectories('a b c')
}

then:
context.publisherNodes.size() == 1
with(context.publisherNodes[0]) {
name() == 'hudson.plugins.rubyMetrics.flog.FlogPublisher'
children().size() == 2
rbDirectories[0].value() == 'a b c'
with(splittedDirectories[0]) {
children().size() == 3
string[0].value() == 'a'
string[1].value() == 'b'
string[2].value() == 'c'
}
}
1 * jobManagement.requireMinimumPluginVersion('rubyMetrics', '1.6.3')
}
}

0 comments on commit 922a7e4

Please sign in to comment.