Skip to content

Commit

Permalink
Merge pull request #18 from pkuczynski/JENKINS-22293
Browse files Browse the repository at this point in the history
Fix for JENKINS-22293
  • Loading branch information
pkuczynski committed Aug 28, 2014
2 parents ae41983 + 6d09e7f commit 703b751
Show file tree
Hide file tree
Showing 12 changed files with 92 additions and 122 deletions.
4 changes: 3 additions & 1 deletion .gitignore
Expand Up @@ -2,4 +2,6 @@ target
work
.settings
.classpath
.project
.project
.idea
*.iml
148 changes: 58 additions & 90 deletions pom.xml
@@ -1,104 +1,72 @@
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>

<parent>
<groupId>org.jenkins-ci.plugins</groupId>
<artifactId>plugin</artifactId>
<version>1.397</version>
</parent>
<parent>
<groupId>org.jenkins-ci.plugins</groupId>
<artifactId>plugin</artifactId>
<version>1.532.3</version>
</parent>

<artifactId>rubyMetrics</artifactId>
<packaging>hpi</packaging>
<version>1.5.1-SNAPSHOT</version>
<name>Jenkins ruby metrics plugin</name>
<url>http://wiki.jenkins-ci.org/display/JENKINS/Ruby+Metrics+Plugin</url>
<artifactId>rubyMetrics</artifactId>
<packaging>hpi</packaging>
<version>1.5.1-SNAPSHOT</version>
<name>Jenkins Ruby metrics plugin</name>
<url>http://wiki.jenkins-ci.org/display/JENKINS/Ruby+Metrics+Plugin</url>

<scm>
<connection>scm:git:git://github.com/jenkinsci/rubymetrics-plugin.git</connection>
<developerConnection>scm:git:git@github.com:jenkinsci/rubymetrics-plugin.git</developerConnection>
<url>http://github.com/jenkins/rubymetrics-plugin</url>
</scm>
<scm>
<connection>scm:git:git://github.com/jenkinsci/rubymetrics-plugin.git</connection>
<developerConnection>scm:git:git@github.com:jenkinsci/rubymetrics-plugin.git</developerConnection>
<url>http://github.com/jenkins/rubymetrics-plugin</url>
</scm>

<developers>
<developer>
<id>david_calavera</id>
<name>David Calavera</name>
<email>calavera@apache.org</email>
</developer>
</developers>
<developers>
<developer>
<id>david_calavera</id>
<name>David Calavera</name>
<email>calavera@apache.org</email>
</developer>
</developers>

<distributionManagement>
<repository>
<id>maven.jenkins-ci.org</id>
<url>http://maven.jenkins-ci.org:8081/content/repositories/releases/</url>
</repository>
</distributionManagement>
<distributionManagement>
<repository>
<id>maven.jenkins-ci.org</id>
<url>http://maven.jenkins-ci.org:8081/content/repositories/releases/</url>
</repository>
</distributionManagement>

<repositories>
<repository>
<id>repo.jenkins-ci.org</id>
<url>http://repo.jenkins-ci.org/public/</url>
</repository>
</repositories>


<dependencies>
<dependency>
<groupId>org.jenkins-ci.main</groupId>
<artifactId>maven-plugin</artifactId>
</dependency>

<dependency>
<groupId>org.jvnet.hudson.plugins</groupId>
<artifactId>rake</artifactId>
<version>[1.7.1,)</version>
</dependency>

<dependency>
<groupId>org.htmlparser</groupId>
<artifactId>htmlparser</artifactId>
<version>1.6</version>
</dependency>

<dependency>
<groupId>net.sourceforge.jregex</groupId>
<artifactId>jregex</artifactId>
<version>1.2_01</version>
</dependency>
</dependencies>

<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<forkMode>never</forkMode>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-release-plugin</artifactId>
<configuration>
<goals>deploy</goals>
</configuration>
</plugin>
</plugins>

<extensions>
<extension>
<groupId>org.jvnet.wagon-svn</groupId>
<artifactId>wagon-svn</artifactId>
<version>1.9</version>
</extension>
</extensions>
</build>
<repositories>
<repository>
<id>repo.jenkins-ci.org</id>
<url>http://repo.jenkins-ci.org/public/</url>
</repository>
</repositories>

<pluginRepositories>
<pluginRepository>
<id>repo.jenkins-ci.org</id>
<url>http://repo.jenkins-ci.org/public/</url>
</pluginRepository>
</pluginRepositories>
</project>

<dependencies>
<dependency>
<groupId>org.jenkins-ci.plugins</groupId>
<artifactId>rake</artifactId>
<version>[1.8.0,)</version>
</dependency>

<dependency>
<groupId>org.htmlparser</groupId>
<artifactId>htmlparser</artifactId>
<version>1.6</version>
</dependency>

<dependency>
<groupId>net.sourceforge.jregex</groupId>
<artifactId>jregex</artifactId>
<version>1.2_01</version>
</dependency>
</dependencies>
</project>

Expand Up @@ -8,8 +8,7 @@
import hudson.plugins.rake.Rake;

import java.io.IOException;

import org.codehaus.plexus.util.StringOutputStream;
import java.io.ByteArrayOutputStream;

public abstract class AbstractRailsTaskPublisher extends AbstractRubyMetricsPublisher {

Expand All @@ -22,7 +21,7 @@ protected AbstractRailsTaskPublisher(String rakeInstallation, String rakeWorking
this.rakeInstallation = rakeInstallation;
this.rakeWorkingDir = rakeWorkingDir;
this.task = task;
this.rake = new Rake(this.rakeInstallation, null, task, null, this.rakeWorkingDir, true);
this.rake = new Rake(this.rakeInstallation, null, task, null, this.rakeWorkingDir, true, true);
}

public String getRakeInstallation() {
Expand Down Expand Up @@ -57,7 +56,7 @@ public boolean perform(AbstractBuild<?, ?> build, Launcher launcher, BuildListen

listener.getLogger().println("Publishing rails " + task + " report...");

StringOutputStream out = new StringOutputStream();
ByteArrayOutputStream out = new ByteArrayOutputStream();
BuildListener stringListener = new StreamBuildListener(out);

if (rake.perform(build, launcher, stringListener)) {
Expand All @@ -67,5 +66,5 @@ public boolean perform(AbstractBuild<?, ?> build, Launcher launcher, BuildListen
return true;
}

protected abstract void buildAction(StringOutputStream out, AbstractBuild<?, ?> build);
protected abstract void buildAction(ByteArrayOutputStream out, AbstractBuild<?, ?> build);
}
14 changes: 7 additions & 7 deletions src/main/java/hudson/plugins/rubyMetrics/flog/FlogExecutor.java
Expand Up @@ -9,11 +9,11 @@
import java.io.File;
import java.io.IOException;
import java.io.OutputStream;
import java.io.ByteArrayOutputStream;

import java.util.HashMap;
import java.util.Map;

import org.codehaus.plexus.util.StringOutputStream;

public class FlogExecutor {

public boolean isFlogInstalled(Launcher launcher, EnvVars environment, FilePath workspace) {
Expand All @@ -26,8 +26,8 @@ public boolean isFlogInstalled(Launcher launcher, EnvVars environment, FilePath
}
}

public Map<String, StringOutputStream> execute(String[] rbDirectories, Launcher launcher, EnvVars environment, FilePath workspace, File buildRootDir) throws InterruptedException, IOException {
Map<String, StringOutputStream> results = new HashMap<String, StringOutputStream>();
public Map<String, ByteArrayOutputStream> execute(String[] rbDirectories, Launcher launcher, EnvVars environment, FilePath workspace, File buildRootDir) throws InterruptedException, IOException {
Map<String, ByteArrayOutputStream> results = new HashMap<String, ByteArrayOutputStream>();

for (String relativePath : rbDirectories) {
if (workspace.child(relativePath) == null) {
Expand All @@ -40,7 +40,7 @@ public Map<String, StringOutputStream> execute(String[] rbDirectories, Launcher
String rubyFilePath = rubyFile.toURI().getPath();
ArgumentListBuilder arguments = arguments("-ad", rubyFilePath);

StringOutputStream out = launch(arguments, launcher, environment, workspace);
ByteArrayOutputStream out = launch(arguments, launcher, environment, workspace);
if (out == null) {
results.clear();
return results;
Expand All @@ -52,8 +52,8 @@ public Map<String, StringOutputStream> execute(String[] rbDirectories, Launcher
return results;
}

public StringOutputStream launch(ArgumentListBuilder arguments, Launcher launcher, EnvVars environment, FilePath workspace) throws InterruptedException, IOException {
StringOutputStream out = new StringOutputStream();
public ByteArrayOutputStream launch(ArgumentListBuilder arguments, Launcher launcher, EnvVars environment, FilePath workspace) throws InterruptedException, IOException {
ByteArrayOutputStream out = new ByteArrayOutputStream();

int result = launcher.launch()
.cmds(arguments)
Expand Down
4 changes: 2 additions & 2 deletions src/main/java/hudson/plugins/rubyMetrics/flog/FlogParser.java
Expand Up @@ -5,19 +5,19 @@

import java.util.ArrayList;
import java.util.Collection;
import java.io.ByteArrayOutputStream;

import jregex.Matcher;
import jregex.Pattern;

import org.apache.commons.lang.StringUtils;
import org.codehaus.plexus.util.StringOutputStream;

public class FlogParser {

private final static Pattern operatorRegex = new Pattern("\\s*({score}\\d+\\.\\d+):\\s({operator}.*)$");
private final static Pattern methodRegex = new Pattern("\\s*({score}\\d+\\.\\d+):\\s+({method}[A-Za-z:]+(?:#|::).*)");

public FlogFileResults parse(String filePath, StringOutputStream results) {
public FlogFileResults parse(String filePath, ByteArrayOutputStream results) {
return parse(filePath, results.toString());
}

Expand Down
Expand Up @@ -16,8 +16,8 @@

import java.io.IOException;
import java.util.Map;
import java.io.ByteArrayOutputStream;

import org.codehaus.plexus.util.StringOutputStream;
import org.kohsuke.stapler.DataBoundConstructor;

public class FlogPublisher extends AbstractRubyMetricsPublisher {
Expand Down Expand Up @@ -47,7 +47,7 @@ public boolean perform(AbstractBuild<?, ?> build, Launcher launcher, BuildListen
}
listener.getLogger().println("Publishing flog report...");

Map<String, StringOutputStream> execResults = flog.execute(splittedDirectories, launcher, environment, workspace, build.getRootDir());
Map<String, ByteArrayOutputStream> execResults = flog.execute(splittedDirectories, launcher, environment, workspace, build.getRootDir());

FlogBuildResults buildResults = buildResults(build, execResults);

Expand All @@ -57,11 +57,11 @@ public boolean perform(AbstractBuild<?, ?> build, Launcher launcher, BuildListen
return true;
}

private FlogBuildResults buildResults(AbstractBuild<?, ?> build, Map<String, StringOutputStream> execResults) {
private FlogBuildResults buildResults(AbstractBuild<?, ?> build, Map<String, ByteArrayOutputStream> execResults) {
final FlogParser parser = new FlogParser();
FlogBuildResults buildResults = new FlogBuildResults();

for (Map.Entry<String, StringOutputStream> entry : execResults.entrySet()) {
for (Map.Entry<String, ByteArrayOutputStream> entry : execResults.entrySet()) {
FlogFileResults resultsForFile = parser.parse(entry.getKey(), entry.getValue());
if (resultsForFile != null) {
buildResults.addFileResults(entry.getKey(), resultsForFile);
Expand Down
Expand Up @@ -8,12 +8,12 @@
import java.util.Iterator;
import java.util.LinkedHashSet;
import java.util.regex.Pattern;
import java.io.ByteArrayOutputStream;

import org.apache.commons.lang.StringUtils;
import org.codehaus.plexus.util.StringOutputStream;

public class RailsNotesParser {
public RailsNotesResults parse(StringOutputStream output) {
public RailsNotesResults parse(ByteArrayOutputStream output) {
return parse(output.toString());
}

Expand Down
Expand Up @@ -16,8 +16,8 @@
import hudson.tasks.Publisher;

import java.io.IOException;
import java.io.ByteArrayOutputStream;

import org.codehaus.plexus.util.StringOutputStream;
import org.kohsuke.stapler.DataBoundConstructor;

/**
Expand All @@ -32,7 +32,7 @@ public RailsNotesPublisher(String rakeInstallation, String rakeWorkingDir) {
super(rakeInstallation, rakeWorkingDir, "notes");
}

protected void buildAction(StringOutputStream out, AbstractBuild<?, ?> build) {
protected void buildAction(ByteArrayOutputStream out, AbstractBuild<?, ?> build) {
final RailsNotesParser parser = new RailsNotesParser();
RailsNotesResults results = parser.parse(out);

Expand Down
Expand Up @@ -12,12 +12,11 @@
import java.util.TreeMap;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

import org.codehaus.plexus.util.StringOutputStream;
import java.io.ByteArrayOutputStream;

public class RailsStatsParser {

public RailsStatsResults parse(StringOutputStream output) {
public RailsStatsResults parse(ByteArrayOutputStream output) {
return parse(output.toString());
}

Expand Down
Expand Up @@ -11,7 +11,8 @@
import hudson.tasks.BuildStepDescriptor;
import hudson.tasks.Publisher;

import org.codehaus.plexus.util.StringOutputStream;
import java.io.ByteArrayOutputStream;

import org.kohsuke.stapler.DataBoundConstructor;

/**
Expand All @@ -28,7 +29,7 @@ public RailsStatsPublisher(String rakeInstallation, String rakeWorkingDir) {
super(rakeInstallation, rakeWorkingDir, "stats");
}

protected void buildAction(StringOutputStream out, AbstractBuild<?, ?> build) {
protected void buildAction(ByteArrayOutputStream out, AbstractBuild<?, ?> build) {
final RailsStatsParser parser = new RailsStatsParser();
RailsStatsResults results = parser.parse(out);

Expand Down
5 changes: 3 additions & 2 deletions src/main/ruby/templates/rails_task_publisher.eruby
Expand Up @@ -11,7 +11,8 @@ import hudson.plugins.rubyMetrics.<%= @package_name %>.model.<%= @camelized_name
import hudson.tasks.BuildStepDescriptor;
import hudson.tasks.Publisher;

import org.codehaus.plexus.util.StringOutputStream;
import java.io.ByteArrayOutputStream;

import org.kohsuke.stapler.DataBoundConstructor;

@SuppressWarnings("unchecked")
Expand All @@ -22,7 +23,7 @@ public class <%= @camelized_name %>Publisher extends AbstractRailsTaskPublisher
super(rakeInstallation, rakeWorkingDir, <%= @rake_task %>);
}

protected void buildAction(StringOutputStream out, AbstractBuild<?, ?> build) {
protected void buildAction(ByteArrayOutputStream out, AbstractBuild<?, ?> build) {
final <%= @camelized_name %>Parser parser = new <%= @camelized_name %>Parser();
<%= @camelized_name %>BuildResults results = parser.parse(out);

Expand Down

0 comments on commit 703b751

Please sign in to comment.