-
Notifications
You must be signed in to change notification settings - Fork 59
Initial code #1
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
Initial code #1
Changes from all commits
Commits
Show all changes
15 commits
Select commit
Hold shift + click to select a range
6434ba9
base sbt project
ultrasecreth 800bfa4
Code migrated from demo PR in the main mockito project
ultrasecreth 5841a3a
Add spyLambda[T]
ultrasecreth 4441b39
Add LICENCE and improve README
ultrasecreth 8722cce
Updates spyLambda javadoc
ultrasecreth 52c3543
Fix typo in README
ultrasecreth 24810c5
MockitoSugarTest uses WordSpec
ultrasecreth 53e08b0
Add support for inline mixins when creating the mock
ultrasecreth 2521e13
Update README
ultrasecreth 91faf88
Remove compiler warning
ultrasecreth 887b8b6
version set to 0.0.1
ultrasecreth 79f196e
Add Gradle and Shipkit
ultrasecreth 4db07c4
Fix version on README
ultrasecreth 7477d41
Bumped Gradle to lastest
mockitoguy c4bee85
Bumped Shipkit to latest
mockitoguy File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,4 @@ | ||
.idea/ | ||
target/ | ||
dist/ | ||
.gradle/ |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,21 @@ | ||
# More details on how to configure the Travis build | ||
# https://docs.travis-ci.com/user/customizing-the-build/ | ||
|
||
language: java | ||
|
||
jdk: | ||
- oraclejdk8 | ||
|
||
#Skipping install step to avoid having Travis run arbitrary './gradlew assemble' task | ||
# https://docs.travis-ci.com/user/customizing-the-build/#Skipping-the-Installation-Step | ||
install: | ||
- true | ||
|
||
#Don't build tags | ||
branches: | ||
except: | ||
- /^v\d/ | ||
|
||
#Build and perform release (if needed) | ||
script: | ||
- ./gradlew build -s && ./gradlew ciPerformRelease |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,21 @@ | ||
The MIT License | ||
|
||
Copyright (c) 2007 Mockito contributors | ||
|
||
Permission is hereby granted, free of charge, to any person obtaining a copy | ||
of this software and associated documentation files (the "Software"), to deal | ||
in the Software without restriction, including without limitation the rights | ||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | ||
copies of the Software, and to permit persons to whom the Software is | ||
furnished to do so, subject to the following conditions: | ||
|
||
The above copyright notice and this permission notice shall be included in | ||
all copies or substantial portions of the Software. | ||
|
||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | ||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | ||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | ||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN | ||
THE SOFTWARE. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,7 +1,51 @@ | ||
# Mockito Scala library | ||
# Mockito Scala | ||
|
||
The library is a one-stop shop for using Mockito in Scala language. | ||
<a href="http://site.mockito.org"> | ||
<img src="https://raw.githubusercontent.com/mockito/mockito/master/src/javadoc/org/mockito/logo.png" | ||
srcset="https://raw.githubusercontent.com/mockito/mockito/master/src/javadoc/org/mockito/[email protected] 2x" | ||
alt="Mockito" /> | ||
</a> | ||
|
||
The most popular mocking framework for Java, now in Scala!!!. | ||
|
||
## Why separate project? | ||
|
||
The library has independent developers, release cycle and versioning from core mockito library (https://github.com/mockito/mockito). This is intentional because core Mockito developers don't use Scala and cannot confidently review PRs, and set the vision for the Scala library. | ||
The library has independent developers, release cycle and versioning from core mockito library (https://github.com/mockito/mockito). This is intentional because core Mockito developers don't use Scala and cannot confidently review PRs, and set the vision for the Scala library. | ||
|
||
## Getting started | ||
|
||
Add the latest version to your dependencies | ||
|
||
### SBT | ||
```libraryDependencies += "org.mockito" %% "mockito-scala" % "0.0.1" % Test``` | ||
|
||
Then mixin one (or both) of the following traits as required | ||
|
||
## ```org.mockito.MockitoSugar``` | ||
|
||
This trait wraps the API available on ```org.mockito.Mockito``` from the Java version, but it provides a more Scala-like syntax, mainly | ||
* Fixes the compiler errors that sometimes occurred when using overloaded methods that use varargs like doReturn | ||
* Eliminates the need to use ```classOf[T]``` | ||
* Eliminates parenthesis when possible to make the test code more readable | ||
* Adds ```spyLambda[T]``` to allow spying lambdas (they don't work with the standard spy as they are created as final classes by the compiler) | ||
* Supports mocking inline mixins like ```mock[MyClass with MyTrait]``` | ||
|
||
The companion object also extends the trait to allow the usage of the API without mixing-in the trait in case that's desired | ||
|
||
## ```org.mockito.ArgumentMatchersSugar``` | ||
|
||
This trait exposes all the existent ```org.mockito.ArgumentMatchers``` but again it gives them a more Scala-like syntax, mainly | ||
* ```eq``` was renamed to ```eqTo``` to avoid clashing with the Scala ```eq``` operator for identity equality | ||
* ```any``` resolves to the correct type most of the times, removing the need of using the likes of ```anyString```, ```anyInt```, etc | ||
* ```isNull``` and ```isNotNull``` are deprecated as using nulls in Scala is clear code smell | ||
|
||
Again, the companion object also extends the trait to allow the usage of the API without mixing-in the trait in case that's desired | ||
|
||
## Authors | ||
|
||
* **Bruno Bonanno** - *Initial work* - [bbonanno](https://github.com/bbonanno) | ||
|
||
|
||
## License | ||
|
||
This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,23 @@ | ||
buildscript { | ||
repositories { | ||
mavenLocal() | ||
maven { url "https://plugins.gradle.org/m2/" } | ||
} | ||
|
||
dependencies { | ||
classpath "org.shipkit:shipkit:2.0.26" | ||
} | ||
} | ||
|
||
apply plugin: "org.shipkit.single-project" | ||
|
||
task build(type: Exec) { | ||
commandLine "./build.sh" | ||
} | ||
|
||
//Performing hard to reverse release operation (git push) as late as possible | ||
gitPush.mustRunAfter build | ||
|
||
task clean(type: Exec) { | ||
commandLine "./clean.sh" | ||
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,24 @@ | ||
import scala.io.Source | ||
import scala.language.postfixOps | ||
import scala.util.Try | ||
|
||
name := "mockito-scala" | ||
organization := "org.mockito" | ||
|
||
//Load version from the file so that Gradle/Shipkit and SBT use the same version | ||
version := { | ||
val pattern = """^version=(.+)$""".r | ||
val source = Source.fromFile("version.properties") | ||
val version = Try(source.getLines.collectFirst { | ||
case pattern(v) => v | ||
}.get) | ||
source.close | ||
version.get | ||
} | ||
|
||
scalaVersion := "2.12.6" | ||
|
||
libraryDependencies += "org.mockito" % "mockito-core" % "2.19.0" | ||
libraryDependencies += "org.scala-lang" % "scala-reflect" % "2.12.6" | ||
|
||
libraryDependencies += "org.scalatest" %% "scalatest" % "3.0.5" % Test |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,3 @@ | ||
#!/usr/bin/env bash | ||
rm -rf dist | ||
java -Xms512M -Xmx2G -Xss2M -XX:ReservedCodeCacheSize=192m -XX:+CMSClassUnloadingEnabled -Dfile.encoding=UTF-8 -jar sbt/sbt-launch.jar -Dsbt.parser.simple=true clean test 'set every publishTo := Some(Resolver.file("local-repo", file("dist")))' '+ publish' |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,3 @@ | ||
#!/usr/bin/env bash | ||
rm -rf dist | ||
java -Xms512M -Xmx2G -Xss2M -XX:ReservedCodeCacheSize=192m -XX:+CMSClassUnloadingEnabled -Dfile.encoding=UTF-8 -jar sbt/sbt-launch.jar -Dsbt.parser.simple=true clean |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,37 @@ | ||
shipkit { | ||
gitHub.repository = "mockito/mockito-scala" | ||
|
||
gitHub.readOnlyAuthToken = "a0a4c0f41c200f7c653323014d6a72a127764e17" | ||
|
||
gitHub.writeAuthToken = System.getenv("GH_WRITE_TOKEN") | ||
} | ||
|
||
allprojects { | ||
plugins.withId("org.shipkit.bintray") { | ||
|
||
//Bintray configuration is handled by JFrog Bintray Gradle Plugin | ||
//For reference see the official documentation: https://github.com/bintray/gradle-bintray-plugin | ||
bintray { | ||
|
||
key = System.getenv("BINTRAY_API_KEY") | ||
|
||
pkg { | ||
repo = 'maven' | ||
user = 'szczepiq' | ||
name = 'mockito-scala' | ||
userOrg = 'mockito' | ||
licenses = ['MIT'] | ||
labels = ['mocks', 'tdd', 'unit tests'] | ||
publish = false //can be changed to 'false' for testing | ||
|
||
version { | ||
mavenCentralSync { | ||
sync = true | ||
user = System.env.NEXUS_TOKEN_USER | ||
password = System.env.NEXUS_TOKEN_PWD | ||
} | ||
} | ||
} | ||
} | ||
} | ||
} |
Binary file not shown.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,6 @@ | ||
#Mon Jul 02 18:46:24 CEST 2018 | ||
distributionBase=GRADLE_USER_HOME | ||
distributionPath=wrapper/dists | ||
zipStoreBase=GRADLE_USER_HOME | ||
zipStorePath=wrapper/dists | ||
distributionUrl=https\://services.gradle.org/distributions/gradle-4.8.1-bin.zip |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,172 @@ | ||
#!/usr/bin/env sh | ||
|
||
############################################################################## | ||
## | ||
## Gradle start up script for UN*X | ||
## | ||
############################################################################## | ||
|
||
# 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\"`/" >/dev/null | ||
APP_HOME="`pwd -P`" | ||
cd "$SAVED" >/dev/null | ||
|
||
APP_NAME="Gradle" | ||
APP_BASE_NAME=`basename "$0"` | ||
|
||
# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. | ||
DEFAULT_JVM_OPTS="" | ||
|
||
# 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 | ||
nonstop=false | ||
case "`uname`" in | ||
CYGWIN* ) | ||
cygwin=true | ||
;; | ||
Darwin* ) | ||
darwin=true | ||
;; | ||
MINGW* ) | ||
msys=true | ||
;; | ||
NONSTOP* ) | ||
nonstop=true | ||
;; | ||
esac | ||
|
||
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" -a "$nonstop" = "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"` | ||
JAVACMD=`cygpath --unix "$JAVACMD"` | ||
|
||
# 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 | ||
|
||
# Escape application args | ||
save ( ) { | ||
for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done | ||
echo " " | ||
} | ||
APP_ARGS=$(save "$@") | ||
|
||
# Collect all arguments for the java command, following the shell quoting and substitution rules | ||
eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" | ||
|
||
# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong | ||
if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then | ||
cd "$(dirname "$0")" | ||
fi | ||
|
||
exec "$JAVACMD" "$@" |
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Can you configure publications so that we can upload to Bintray?
See how it was done in the linkedin/play-parseq project: https://github.com/linkedin/play-parseq/blob/master/gradle/shipkit.gradle#L7
We need the SBT build to produce the folder/file structure exactly how it should look like in the maven repository.