jruby-gradle-test-plugin/jruby-gradle-rspec-plugin/src/main/groovy/com/github/jrubygradle/rspec/RSpec.groovy

71 lines
1.7 KiB
Groovy

package com.github.jrubygradle.rspec
import com.github.jrubygradle.GemUtils
import com.github.jrubygradle.internal.JRubyExecUtils
import groovy.transform.PackageScope
import org.gradle.api.Incubating
import org.gradle.api.InvalidUserDataException
import org.gradle.api.DefaultTask
import org.gradle.api.Project
import org.gradle.api.artifacts.Configuration
import org.gradle.api.tasks.Input
import org.gradle.api.tasks.OutputDirectory
import org.gradle.api.tasks.TaskAction
/**
* @author Christian Meier
*/
class RSpec extends DefaultTask {
static final String DEFAULT_VERSION = '3.3.0'
@Input
String version = DEFAULT_VERSION
@Input
String pattern
@Input
String jrubyVersion = project.jruby.defaultVersion
void version(String version) {
this.version = version
}
void pattern(String files) {
this.pattern = files
}
void jrubyVersion(String version) {
this.jrubyVersion = version
}
@Input
Configuration configuration = project.configurations.maybeCreate(name)
void configuration(Object config) {
if (config instanceof String ) {
this.configuration = project.configurations.getByName(config)
}
else {
this.configuration = config
}
}
@TaskAction
void run() {
JRubyUtils jruby = new JRubyUtils(project, configuration, name)
jruby.setupGemsAndJars()
List<String> args = ['-S', 'rspec']
if (pattern != null) {
args += ['--pattern', pattern]
}
String file = System.getProperty("${name}.file")
if (file != null) {
args += [file]
}
jruby.exec(args)
}
}