Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
[JENKINS-31830] Added support for railsNotes which it's part of the R…
…ubyMetrics Reports Plugin

Added no options test case for railsNotes

Fixed empty attribute since it might be empty in some cases

Fixed empty attribute since it might be empty in some cases
  • Loading branch information
v1v committed Dec 1, 2015
1 parent 0abcdd9 commit f9dff4b
Show file tree
Hide file tree
Showing 4 changed files with 108 additions and 0 deletions.
@@ -0,0 +1,8 @@
job('example') {
publishers {
railsNotes {
rakeVersion('(Default)')
rakeWorkingDir('src')
}
}
}
Expand Up @@ -1738,6 +1738,30 @@ class PublisherContext extends AbstractExtensibleContext {
}
}

/*
* Publishes Rails notes.
*
* @since 1.41
*/
@RequiresPlugin(id = 'rubyMetrics', minimumVersion = '1.6.3')
void railsNotes(@DslContext(RailsNotesContext) Closure closure) {
RailsNotesContext context = new RailsNotesContext()
ContextHelper.executeInContext(closure, context)

publisherNodes << new NodeBuilder().'hudson.plugins.rubyMetrics.railsNotes.RailsNotesPublisher' {
rakeInstallation(context.rakeVersion)
rakeWorkingDir(context.rakeWorkingDir ?: '')
task('notes')
rake {
rakeInstallation(context.rakeVersion)
rakeWorkingDir(context.rakeWorkingDir ?: '')
delegate.tasks('notes')
silent(true)
bundleExec(true)
}
}
}

@SuppressWarnings('NoDef')
private static addStaticAnalysisContext(def nodeBuilder, StaticAnalysisContext context) {
nodeBuilder.with {
Expand Down
@@ -0,0 +1,22 @@
package javaposse.jobdsl.dsl.helpers.publisher

import javaposse.jobdsl.dsl.Context

class RailsNotesContext implements Context {
String rakeVersion = '(Default)'
String rakeWorkingDir

/**
* Sets the Rake Version.
*/
void rakeVersion(String rakeVersion) {
this.rakeVersion = rakeVersion
}

/**
* Sets the rake working directory.
*/
void rakeWorkingDir(String rakeWorkingDir) {
this.rakeWorkingDir = rakeWorkingDir
}
}
Expand Up @@ -5175,4 +5175,58 @@ class PublisherContextSpec extends Specification {
where:
value << [true, false]
}

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

then:
context.publisherNodes.size() == 1
with(context.publisherNodes[0]) {
name() == 'hudson.plugins.rubyMetrics.railsNotes.RailsNotesPublisher'
children().size() == 4
with(rake[0]) {
name() == 'rake'
children().size() == 5
rakeInstallation[0].value() == '(Default)'
rakeWorkingDir[0].value().empty
tasks[0].value() == 'notes'
silent[0].value() == true
bundleExec[0].value() == true
}
rakeInstallation[0].value() == '(Default)'
rakeWorkingDir[0].value().empty
task[0].value() == 'notes'
}
1 * jobManagement.requireMinimumPluginVersion('rubyMetrics', '1.6.3')
}

def 'call railsNotes with all options'() {
when:
context.railsNotes {
rakeVersion('rake_2')
rakeWorkingDir('src')
}

then:
context.publisherNodes.size() == 1
with(context.publisherNodes[0]) {
name() == 'hudson.plugins.rubyMetrics.railsNotes.RailsNotesPublisher'
children().size() == 4
with(rake[0]) {
name() == 'rake'
children().size() == 5
rakeInstallation[0].value() == 'rake_2'
rakeWorkingDir[0].value() == 'src'
tasks[0].value() == 'notes'
silent[0].value() == true
bundleExec[0].value() == true
}
rakeInstallation[0].value() == 'rake_2'
rakeWorkingDir[0].value() == 'src'
task[0].value() == 'notes'
}
1 * jobManagement.requireMinimumPluginVersion('rubyMetrics', '1.6.3')
}
}

0 comments on commit f9dff4b

Please sign in to comment.