diff --git a/build.gradle b/build.gradle new file mode 100644 index 0000000000..62d59ce6a8 --- /dev/null +++ b/build.gradle @@ -0,0 +1,42 @@ +subprojects { + apply plugin: 'groovy' + apply plugin: 'maven-publish' + + group = 'io.codearte.accurest' + version = '1.0.0-SNAPSHOT' + + sourceCompatibility = 1.7 + targetCompatibility = 1.7 + + repositories { + mavenLocal() + mavenCentral() + } + + dependencies { + compile 'org.codehaus.groovy:groovy-all:2.3.6' + testCompile 'org.spockframework:spock-core:0.7-groovy-2.0' + } + + publishing { + publications { + maven(MavenPublication) { + groupId 'io.codearte.accurest' + version '1.0.0-SNAPSHOT' + + from components.java + } + } + } +} + +project(':gradle-plugin') { + dependencies { + compile project(':core') + compile gradleApi() + } +} + +task wrapper(type: Wrapper) { + gradleVersion = '2.2.1' +} \ No newline at end of file diff --git a/core/src/main/groovy/io/coderate/accurest/TestGenerator.groovy b/core/src/main/groovy/io/coderate/accurest/TestGenerator.groovy new file mode 100644 index 0000000000..ae7cad56bd --- /dev/null +++ b/core/src/main/groovy/io/coderate/accurest/TestGenerator.groovy @@ -0,0 +1,93 @@ +package io.coderate.accurest + +import io.coderate.accurest.builder.ClassBuilder +import io.coderate.accurest.builder.TestFramework +import io.coderate.accurest.util.NamesUtil + +import java.nio.file.Files +import java.nio.file.Paths + +import static ClassBuilder.createClass +import static io.coderate.accurest.builder.MethodBuilder.createTestMethod + +/** + * @author Jakub Kubrynski + */ +class TestGenerator { + + private final String stubsBaseDirectory + private final String basePackageForTests + private final String baseClassForTests + private final String ruleClassForTests + private final TestFramework lang + private final String targetDirectory + + TestGenerator(String stubsBaseDirectory, String basePackageForTests, String baseClassForTests, + String ruleClassForTests, String testFramework, String targetDirectory) { +// URL stubsResource = getClass().getClassLoader().getResource(stubsBaseDirectory) + this.targetDirectory = targetDirectory + File stubsResource = new File(stubsBaseDirectory) + if (stubsResource == null) { + throw new IllegalStateException("Stubs directory not found under " + stubsBaseDirectory) + } + this.stubsBaseDirectory = stubsResource.path + this.basePackageForTests = basePackageForTests + if (testFramework == 'Spock' && !baseClassForTests) { + this.baseClassForTests = 'spock.lang.Specification' + } else { + this.baseClassForTests = baseClassForTests + } + this.ruleClassForTests = ruleClassForTests + this.lang = testFramework == 'Spock' ? TestFramework.SPOCK : TestFramework.JUNIT + } + + public String generate() { + StringBuilder builder = new StringBuilder() + List files = new File(stubsBaseDirectory).listFiles() + files.grep({ File file -> file.isDirectory() && containsStubs(file) }).each { + builder << addClass(it) + def testBaseDir = Paths.get(targetDirectory, NamesUtil.packageToDirectory(basePackageForTests)) + Files.createDirectories(testBaseDir) + Files.write(Paths.get(testBaseDir.toString(), NamesUtil.capitalize(it.name) + getTestClassExtension()), addClass(it).bytes) + println testBaseDir + } + return builder + } + + private String getTestClassExtension() { + return lang == TestFramework.SPOCK ? '.groovy' : '.java' + } + + boolean containsStubs(File file) { + return file.list(new FilenameFilter() { + @Override + boolean accept(File dir, String name) { + return "json".equalsIgnoreCase(NamesUtil.afterLastDot(name)) + } + }).size() > 0 + } + + private String addClass(File directory) { + ClassBuilder clazz = createClass(NamesUtil.capitalize(NamesUtil.afterLast(directory.path, '/')), basePackageForTests, baseClassForTests, lang) + .addStaticImport('com.jayway.restassured.RestAssured.*') + .addImport('java.util.regex.Pattern') + + if (lang == TestFramework.JUNIT) { + clazz.addImport('org.junit.Test') + } + + if (ruleClassForTests) { + clazz.addImport('org.junit.Rule') + .addRule(ruleClassForTests) + } + + directory.listFiles().each { + clazz.addMethod(createTestMethod(it, lang)) + } + return clazz.build() + } + + public static void main(String[] args) { + print new TestGenerator('stubs', 'io.test', '', '', 'Spock').generate() + } +} \ No newline at end of file diff --git a/src/main/groovy/eu/coderate/accurest/builder/BlockBuilder.groovy b/core/src/main/groovy/io/coderate/accurest/builder/BlockBuilder.groovy similarity index 95% rename from src/main/groovy/eu/coderate/accurest/builder/BlockBuilder.groovy rename to core/src/main/groovy/io/coderate/accurest/builder/BlockBuilder.groovy index 3d159f139c..22f5247a5d 100644 --- a/src/main/groovy/eu/coderate/accurest/builder/BlockBuilder.groovy +++ b/core/src/main/groovy/io/coderate/accurest/builder/BlockBuilder.groovy @@ -1,4 +1,4 @@ -package eu.coderate.accurest.builder +package io.coderate.accurest.builder import groovy.transform.PackageScope diff --git a/src/main/groovy/eu/coderate/accurest/builder/ClassBuilder.groovy b/core/src/main/groovy/io/coderate/accurest/builder/ClassBuilder.groovy similarity index 90% rename from src/main/groovy/eu/coderate/accurest/builder/ClassBuilder.groovy rename to core/src/main/groovy/io/coderate/accurest/builder/ClassBuilder.groovy index b893cbb5a6..690ae0c735 100644 --- a/src/main/groovy/eu/coderate/accurest/builder/ClassBuilder.groovy +++ b/core/src/main/groovy/io/coderate/accurest/builder/ClassBuilder.groovy @@ -1,6 +1,6 @@ -package eu.coderate.accurest.builder +package io.coderate.accurest.builder -import eu.coderate.accurest.util.NamesUtil +import io.coderate.accurest.util.NamesUtil /** * @author Jakub Kubrynski @@ -17,7 +17,7 @@ class ClassBuilder { private final String modifier private final String suffix - private ClassBuilder(String className, String packageName, String baseClass, Lang lang) { + private ClassBuilder(String className, String packageName, String baseClass, TestFramework lang) { if (baseClass) { imports << baseClass } @@ -25,21 +25,21 @@ class ClassBuilder { this.packageName = packageName this.className = className switch (lang) { - case Lang.JAVA: + case TestFramework.JUNIT: modifier = "public " suffix = ";" break - case Lang.GROOVY: + case TestFramework.SPOCK: modifier = "" suffix = "" } } - static ClassBuilder createClass(String className, String packageName, Lang lang) { + static ClassBuilder createClass(String className, String packageName, TestFramework lang) { return createClass(className, packageName, null, lang) } - static ClassBuilder createClass(String className, String packageName, String baseClass, Lang lang) { + static ClassBuilder createClass(String className, String packageName, String baseClass, TestFramework lang) { return new ClassBuilder(className, packageName, baseClass, lang) } diff --git a/src/main/groovy/eu/coderate/accurest/builder/JavaMethodBodyBuilder.groovy b/core/src/main/groovy/io/coderate/accurest/builder/JavaMethodBodyBuilder.groovy similarity index 90% rename from src/main/groovy/eu/coderate/accurest/builder/JavaMethodBodyBuilder.groovy rename to core/src/main/groovy/io/coderate/accurest/builder/JavaMethodBodyBuilder.groovy index c8a54548ce..ec459370e8 100644 --- a/src/main/groovy/eu/coderate/accurest/builder/JavaMethodBodyBuilder.groovy +++ b/core/src/main/groovy/io/coderate/accurest/builder/JavaMethodBodyBuilder.groovy @@ -1,4 +1,4 @@ -package eu.coderate.accurest.builder +package io.coderate.accurest.builder /** * @author Jakub Kubrynski diff --git a/src/main/groovy/eu/coderate/accurest/builder/MethodBuilder.groovy b/core/src/main/groovy/io/coderate/accurest/builder/MethodBuilder.groovy similarity index 71% rename from src/main/groovy/eu/coderate/accurest/builder/MethodBuilder.groovy rename to core/src/main/groovy/io/coderate/accurest/builder/MethodBuilder.groovy index 07f11e3987..3df9cf8146 100644 --- a/src/main/groovy/eu/coderate/accurest/builder/MethodBuilder.groovy +++ b/core/src/main/groovy/io/coderate/accurest/builder/MethodBuilder.groovy @@ -1,6 +1,6 @@ -package eu.coderate.accurest.builder +package io.coderate.accurest.builder -import eu.coderate.accurest.util.NamesUtil +import io.coderate.accurest.util.NamesUtil import groovy.json.JsonSlurper /** @@ -10,15 +10,15 @@ class MethodBuilder { private final String methodName private final Map stubContent - private final Lang lang + private final TestFramework lang - private MethodBuilder(String methodName, Map stubContent, Lang lang) { + private MethodBuilder(String methodName, Map stubContent, TestFramework lang) { this.stubContent = stubContent this.methodName = methodName this.lang = lang } - static MethodBuilder createTestMethod(File stubsFile, Lang lang) { + static MethodBuilder createTestMethod(File stubsFile, TestFramework lang) { Map stubContent = new JsonSlurper().parse(stubsFile) String methodName = NamesUtil.uncapitalize(NamesUtil.toLastDot(NamesUtil.afterLast(stubsFile.path, File.separator))) return new MethodBuilder(methodName, stubContent, lang) @@ -26,7 +26,7 @@ class MethodBuilder { void appendTo(BlockBuilder blockBuilder) { String modifier - if (lang == Lang.JAVA) { + if (lang == TestFramework.JUNIT) { blockBuilder.addLine('@Test') modifier = "public void " } else { diff --git a/src/main/groovy/eu/coderate/accurest/builder/SpockMethodBodyBuilder.groovy b/core/src/main/groovy/io/coderate/accurest/builder/SpockMethodBodyBuilder.groovy similarity index 97% rename from src/main/groovy/eu/coderate/accurest/builder/SpockMethodBodyBuilder.groovy rename to core/src/main/groovy/io/coderate/accurest/builder/SpockMethodBodyBuilder.groovy index 1c6fc1924e..9b1a1d868d 100644 --- a/src/main/groovy/eu/coderate/accurest/builder/SpockMethodBodyBuilder.groovy +++ b/core/src/main/groovy/io/coderate/accurest/builder/SpockMethodBodyBuilder.groovy @@ -1,4 +1,4 @@ -package eu.coderate.accurest.builder +package io.coderate.accurest.builder import groovy.transform.PackageScope diff --git a/core/src/main/groovy/io/coderate/accurest/builder/TestFramework.groovy b/core/src/main/groovy/io/coderate/accurest/builder/TestFramework.groovy new file mode 100644 index 0000000000..9c7e5e5b78 --- /dev/null +++ b/core/src/main/groovy/io/coderate/accurest/builder/TestFramework.groovy @@ -0,0 +1,10 @@ +package io.coderate.accurest.builder + +/** + * @author Jakub Kubrynski + */ +enum TestFramework { + + JUNIT, SPOCK + +} \ No newline at end of file diff --git a/src/main/groovy/eu/coderate/accurest/util/NamesUtil.groovy b/core/src/main/groovy/io/coderate/accurest/util/NamesUtil.groovy similarity index 85% rename from src/main/groovy/eu/coderate/accurest/util/NamesUtil.groovy rename to core/src/main/groovy/io/coderate/accurest/util/NamesUtil.groovy index d330ce6e51..c15f143d14 100644 --- a/src/main/groovy/eu/coderate/accurest/util/NamesUtil.groovy +++ b/core/src/main/groovy/io/coderate/accurest/util/NamesUtil.groovy @@ -1,4 +1,4 @@ -package eu.coderate.accurest.util +package io.coderate.accurest.util /** * @author Jakub Kubrynski @@ -38,4 +38,8 @@ class NamesUtil { } return string } + + static String packageToDirectory(String packageName) { + return packageName.replaceAll('\\.', File.separator) + } } diff --git a/src/main/resources/stubs/wiremocks/sample.json b/core/src/main/resources/stubs/wiremocks/sample.json similarity index 100% rename from src/main/resources/stubs/wiremocks/sample.json rename to core/src/main/resources/stubs/wiremocks/sample.json diff --git a/src/main/resources/stubs/wiremocks/shouldFail.json b/core/src/main/resources/stubs/wiremocks/shouldFail.json similarity index 100% rename from src/main/resources/stubs/wiremocks/shouldFail.json rename to core/src/main/resources/stubs/wiremocks/shouldFail.json diff --git a/gradle-plugin/src/main/groovy/io/codearte/accurest/plugin/AccurestGradlePlugin.groovy b/gradle-plugin/src/main/groovy/io/codearte/accurest/plugin/AccurestGradlePlugin.groovy new file mode 100644 index 0000000000..c2cd342d4f --- /dev/null +++ b/gradle-plugin/src/main/groovy/io/codearte/accurest/plugin/AccurestGradlePlugin.groovy @@ -0,0 +1,32 @@ +package io.codearte.accurest.plugin + +import io.coderate.accurest.TestGenerator +import org.gradle.api.Plugin +import org.gradle.api.Project + +/** + * @author Jakub Kubrynski + */ +class AccurestGradlePlugin implements Plugin { + + @Override + void apply(Project project) { + project.extensions.create('accurest', AccurestPluginExtension) + project.task('generateAccurest') << { + AccurestPluginExtension accurest = project.accurest + project.logger.info("Accurest Plugin: Invoking test sources generation") + +// project.sourceSets.test.allSource.class.getDeclaredMethods().each {println it.name} + + try { + TestGenerator generator = new TestGenerator(project.projectDir.path + '/src/test/resources/' + accurest.stubsBaseDirectory, accurest.basePackageForTests, + accurest.baseClassForTests, accurest.ruleClassForTests, + accurest.targetFramework, project.buildDir.path + '/' + accurest.generatedTestSourcesDir) + generator.generate() + } catch (IllegalStateException e) { + project.logger.error("Accurest Plugin: {}", e.getMessage()) + } + } + } + +} diff --git a/gradle-plugin/src/main/groovy/io/codearte/accurest/plugin/AccurestPluginExtension.groovy b/gradle-plugin/src/main/groovy/io/codearte/accurest/plugin/AccurestPluginExtension.groovy new file mode 100644 index 0000000000..d873cf71c1 --- /dev/null +++ b/gradle-plugin/src/main/groovy/io/codearte/accurest/plugin/AccurestPluginExtension.groovy @@ -0,0 +1,13 @@ +package io.codearte.accurest.plugin + +/** + * @author Jakub Kubrynski + */ +class AccurestPluginExtension { + String targetFramework = 'Spock' + String stubsBaseDirectory = 'mappings' + String basePackageForTests = 'io.codearte.accurest.tests' + String baseClassForTests + String ruleClassForTests + String generatedTestSourcesDir = "generated-test-sources" +} diff --git a/gradle-plugin/src/main/resources/META-INF/gradle-plugins/accurest.properties b/gradle-plugin/src/main/resources/META-INF/gradle-plugins/accurest.properties new file mode 100644 index 0000000000..edfd566c2c --- /dev/null +++ b/gradle-plugin/src/main/resources/META-INF/gradle-plugins/accurest.properties @@ -0,0 +1 @@ +implementation-class=io.codearte.accurest.plugin.AccurestGradlePlugin \ No newline at end of file diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar new file mode 100644 index 0000000000..c97a8bdb90 Binary files /dev/null and b/gradle/wrapper/gradle-wrapper.jar differ diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 0000000000..a0889f9ef7 --- /dev/null +++ b/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,6 @@ +#Sun Jan 25 20:45:35 CET 2015 +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-2.2.1-bin.zip diff --git a/gradlew b/gradlew new file mode 100755 index 0000000000..91a7e269e1 --- /dev/null +++ b/gradlew @@ -0,0 +1,164 @@ +#!/usr/bin/env bash + +############################################################################## +## +## Gradle start up script for UN*X +## +############################################################################## + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS="" + +APP_NAME="Gradle" +APP_BASE_NAME=`basename "$0"` + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD="maximum" + +warn ( ) { + echo "$*" +} + +die ( ) { + echo + echo "$*" + echo + exit 1 +} + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +case "`uname`" in + CYGWIN* ) + cygwin=true + ;; + Darwin* ) + darwin=true + ;; + MINGW* ) + msys=true + ;; +esac + +# For Cygwin, ensure paths are in UNIX format before anything is touched. +if $cygwin ; then + [ -n "$JAVA_HOME" ] && JAVA_HOME=`cygpath --unix "$JAVA_HOME"` +fi + +# Attempt to set APP_HOME +# Resolve links: $0 may be a link +PRG="$0" +# Need this for relative symlinks. +while [ -h "$PRG" ] ; do + ls=`ls -ld "$PRG"` + link=`expr "$ls" : '.*-> \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + PRG="$link" + else + PRG=`dirname "$PRG"`"/$link" + fi +done +SAVED="`pwd`" +cd "`dirname \"$PRG\"`/" >&- +APP_HOME="`pwd -P`" +cd "$SAVED" >&- + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + +# Determine the Java command to use to start the JVM. +if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD="$JAVA_HOME/jre/sh/java" + else + JAVACMD="$JAVA_HOME/bin/java" + fi + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD="java" + which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." +fi + +# Increase the maximum file descriptors if we can. +if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then + MAX_FD_LIMIT=`ulimit -H -n` + if [ $? -eq 0 ] ; then + if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then + MAX_FD="$MAX_FD_LIMIT" + fi + ulimit -n $MAX_FD + if [ $? -ne 0 ] ; then + warn "Could not set maximum file descriptor limit: $MAX_FD" + fi + else + warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" + fi +fi + +# For Darwin, add options to specify how the application appears in the dock +if $darwin; then + GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" +fi + +# For Cygwin, switch paths to Windows format before running java +if $cygwin ; then + APP_HOME=`cygpath --path --mixed "$APP_HOME"` + CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` + + # We build the pattern for arguments to be converted via cygpath + ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` + SEP="" + for dir in $ROOTDIRSRAW ; do + ROOTDIRS="$ROOTDIRS$SEP$dir" + SEP="|" + done + OURCYGPATTERN="(^($ROOTDIRS))" + # Add a user-defined pattern to the cygpath arguments + if [ "$GRADLE_CYGPATTERN" != "" ] ; then + OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" + fi + # Now convert the arguments - kludge to limit ourselves to /bin/sh + i=0 + for arg in "$@" ; do + CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` + CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option + + if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition + eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` + else + eval `echo args$i`="\"$arg\"" + fi + i=$((i+1)) + done + case $i in + (0) set -- ;; + (1) set -- "$args0" ;; + (2) set -- "$args0" "$args1" ;; + (3) set -- "$args0" "$args1" "$args2" ;; + (4) set -- "$args0" "$args1" "$args2" "$args3" ;; + (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; + (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; + (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; + (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; + (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; + esac +fi + +# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules +function splitJvmOpts() { + JVM_OPTS=("$@") +} +eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS +JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME" + +exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@" diff --git a/gradlew.bat b/gradlew.bat new file mode 100644 index 0000000000..8a0b282aa6 --- /dev/null +++ b/gradlew.bat @@ -0,0 +1,90 @@ +@if "%DEBUG%" == "" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS= + +set DIRNAME=%~dp0 +if "%DIRNAME%" == "" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if "%ERRORLEVEL%" == "0" goto init + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto init + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:init +@rem Get command-line arguments, handling Windowz variants + +if not "%OS%" == "Windows_NT" goto win9xME_args +if "%@eval[2+2]" == "4" goto 4NT_args + +:win9xME_args +@rem Slurp the command line arguments. +set CMD_LINE_ARGS= +set _SKIP=2 + +:win9xME_args_slurp +if "x%~1" == "x" goto execute + +set CMD_LINE_ARGS=%* +goto execute + +:4NT_args +@rem Get arguments from the 4NT Shell from JP Software +set CMD_LINE_ARGS=%$ + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% + +:end +@rem End local scope for the variables with windows NT shell +if "%ERRORLEVEL%"=="0" goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 +exit /b 1 + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/pom.xml b/pom.xml deleted file mode 100644 index 18562cbc40..0000000000 --- a/pom.xml +++ /dev/null @@ -1,66 +0,0 @@ - - - 4.0.0 - - eu.codearte.accurest - accurest - 1.0.0-SNAPSHOT - - - 2.3.7 - - - - - org.codehaus.groovy - groovy-all - ${groovy.version} - - - - junit - junit - 4.11 - test - - - com.jayway.restassured - rest-assured - 2.4.0 - test - - - org.spockframework - spock-core - 0.7-groovy-2.0 - test - - - - com.github.tomakehurst - wiremock - 1.53 - - - - - - - - org.codehaus.gmavenplus - gmavenplus-plugin - 1.2 - - - - compile - testCompile - - - - - - - \ No newline at end of file diff --git a/settings.gradle b/settings.gradle new file mode 100644 index 0000000000..f27693d39b --- /dev/null +++ b/settings.gradle @@ -0,0 +1,2 @@ +include "core", "gradle-plugin" +rootProject.name = "accurest" \ No newline at end of file diff --git a/src/main/groovy/eu/coderate/accurest/TestGenerator.groovy b/src/main/groovy/eu/coderate/accurest/TestGenerator.groovy deleted file mode 100644 index d7427db151..0000000000 --- a/src/main/groovy/eu/coderate/accurest/TestGenerator.groovy +++ /dev/null @@ -1,74 +0,0 @@ -package eu.coderate.accurest - -import eu.coderate.accurest.builder.ClassBuilder -import eu.coderate.accurest.builder.Lang -import eu.coderate.accurest.util.NamesUtil - -import static eu.coderate.accurest.builder.ClassBuilder.createClass -import static eu.coderate.accurest.builder.MethodBuilder.createTestMethod - -/** - * @author Jakub Kubrynski - */ -class TestGenerator { - - private final String mocksBaseDirectory - private final String basePackageForTests - private final String baseClassForTests - private final String ruleClassForTests - private final Lang lang - - TestGenerator(String mocksBaseDirectory, String basePackageForTests, String baseClassForTests, String ruleClassForTests, Lang lang) { - this.mocksBaseDirectory = getClass().getClassLoader().getResource(mocksBaseDirectory).path - this.basePackageForTests = basePackageForTests - if (lang == Lang.GROOVY && !baseClassForTests) { - this.baseClassForTests = 'spock.lang.Specification' - } else { - this.baseClassForTests = baseClassForTests - } - this.ruleClassForTests = ruleClassForTests - this.lang = lang - } - - public String generate() { - StringBuilder builder = new StringBuilder() - List files = new File(mocksBaseDirectory).listFiles() - files.grep({ File file -> file.isDirectory() && containsStubs(file) }).each { - builder << addClass(it) - } - return builder - } - - boolean containsStubs(File file) { - return file.list(new FilenameFilter() { - @Override - boolean accept(File dir, String name) { - return "json".equalsIgnoreCase(NamesUtil.afterLastDot(name)) - } - }).size() > 0 - } - - private String addClass(File directory) { - ClassBuilder clazz = createClass(NamesUtil.capitalize(NamesUtil.afterLast(directory.path, '/')), basePackageForTests, baseClassForTests, lang) - .addStaticImport('com.jayway.restassured.RestAssured.*') - .addImport('java.util.regex.Pattern') - - if (lang == Lang.JAVA) { - clazz.addImport('org.junit.Test') - } - - if (ruleClassForTests) { - clazz.addImport('org.junit.Rule') - .addRule(ruleClassForTests) - } - - directory.listFiles().each { - clazz.addMethod(createTestMethod(it, lang)) - } - return clazz.build() - } - - public static void main(String[] args) { - print new TestGenerator('stubs', 'io.test', '', '', Lang.GROOVY).generate() - } -} \ No newline at end of file diff --git a/src/main/groovy/eu/coderate/accurest/builder/Lang.groovy b/src/main/groovy/eu/coderate/accurest/builder/Lang.groovy deleted file mode 100644 index dd7f7b07ee..0000000000 --- a/src/main/groovy/eu/coderate/accurest/builder/Lang.groovy +++ /dev/null @@ -1,10 +0,0 @@ -package eu.coderate.accurest.builder - -/** - * @author Jakub Kubrynski - */ -enum Lang { - - JAVA, GROOVY - -} \ No newline at end of file