From 99a6852a07021c7218dc7b0005b07ef17e52199a Mon Sep 17 00:00:00 2001 From: Christian Meier Date: Mon, 20 Jul 2015 17:46:26 +0200 Subject: [PATCH] added configuration property 'pattern' which corresponds to the rspec options --pattern --- .../jrubygradle/rspec/JRubyUtils.groovy | 2 +- .../com/github/jrubygradle/rspec/RSpec.groovy | 13 ++++++++++- .../rspec/JRubyRSpecPluginSpec.groovy | 23 ++++++++++++++++++- 3 files changed, 35 insertions(+), 3 deletions(-) diff --git a/jruby-gradle-rspec-plugin/src/main/groovy/com/github/jrubygradle/rspec/JRubyUtils.groovy b/jruby-gradle-rspec-plugin/src/main/groovy/com/github/jrubygradle/rspec/JRubyUtils.groovy index cc49e0b..a87eba0 100644 --- a/jruby-gradle-rspec-plugin/src/main/groovy/com/github/jrubygradle/rspec/JRubyUtils.groovy +++ b/jruby-gradle-rspec-plugin/src/main/groovy/com/github/jrubygradle/rspec/JRubyUtils.groovy @@ -39,7 +39,7 @@ public class JRubyUtils { GemUtils.setupJars(config, gemDir, GemUtils.OverwriteAction.OVERWRITE) } - public void exec(String... arguments) { + public void exec(List arguments) { project.javaexec { classpath jrubyCompleteJar.absolutePath // JRuby looks on the classpath inside the 'bin' directory diff --git a/jruby-gradle-rspec-plugin/src/main/groovy/com/github/jrubygradle/rspec/RSpec.groovy b/jruby-gradle-rspec-plugin/src/main/groovy/com/github/jrubygradle/rspec/RSpec.groovy index 3516380..f815bd4 100644 --- a/jruby-gradle-rspec-plugin/src/main/groovy/com/github/jrubygradle/rspec/RSpec.groovy +++ b/jruby-gradle-rspec-plugin/src/main/groovy/com/github/jrubygradle/rspec/RSpec.groovy @@ -22,6 +22,9 @@ class RSpec extends DefaultTask { @Input String version = DEFAULT_VERSION + @Input + String pattern + @Input String jrubyVersion = project.jruby.defaultVersion @@ -29,6 +32,10 @@ class RSpec extends DefaultTask { this.version = version } + void pattern(String files) { + this.pattern = files + } + void jrubyVersion(String version) { this.jrubyVersion = version } @@ -50,6 +57,10 @@ class RSpec extends DefaultTask { jruby.setupGemsAndJars() - jruby.exec('-S', 'rspec') + List args = ['-S', 'rspec'] + if (pattern != null) { + args += ['--pattern', pattern] + } + jruby.exec(args) } } diff --git a/jruby-gradle-rspec-plugin/src/test/groovy/com/github/jrubygradle/rspec/JRubyRSpecPluginSpec.groovy b/jruby-gradle-rspec-plugin/src/test/groovy/com/github/jrubygradle/rspec/JRubyRSpecPluginSpec.groovy index 224ebf8..00788be 100644 --- a/jruby-gradle-rspec-plugin/src/test/groovy/com/github/jrubygradle/rspec/JRubyRSpecPluginSpec.groovy +++ b/jruby-gradle-rspec-plugin/src/test/groovy/com/github/jrubygradle/rspec/JRubyRSpecPluginSpec.groovy @@ -198,7 +198,7 @@ class JRubyRSpecPluginSpec extends Specification { task.run() } expect: - output.contains( '2 examples, 0 failures' ) + output.contains( '1 example, 0 failures' ) } def "Run custom rspec version separate from other tasks"() { @@ -221,4 +221,25 @@ class JRubyRSpecPluginSpec extends Specification { outputOther.contains( '1 example, 0 failures' ) output.contains( '4 examples, 0 failures' ) } + + def "Run rspec with custom pattern"() { + given: + File specsDir = new File(project.projectDir, 'myspec').getAbsoluteFile() + Files.createSymbolicLink(specsDir.toPath(), new File('src/test/resources/simple/spec').getAbsoluteFile().toPath()) + Task task = project.tasks.create('other', RSpec) + task.configure { + pattern 'myspec/*_spec.rb' + } + project.evaluate() + String outputOther = captureStdout { + task.run() + } + specsDir.delete() + String output = captureStdout { + project.tasks.getByName('rspec').run() + } + expect: + output.contains( '0 examples, 0 failures' ) + outputOther.contains( '4 examples, 0 failures' ) + } }