2
0

Gradle update.

This commit is contained in:
Maarten Billemont 2019-09-23 14:13:03 -04:00
parent d0cf57105a
commit d0dc393d70
26 changed files with 111 additions and 156 deletions

View File

@ -21,7 +21,7 @@ DerivedData/
build build
.gradle .gradle
local.properties local.properties
/gradle/builds /builds
/platform-android/.externalNativeBuild /platform-android/.externalNativeBuild
# Git # Git

4
.gitignore vendored
View File

@ -22,5 +22,7 @@ DerivedData/
build build
.gradle .gradle
local.properties local.properties
/gradle/builds /builds
/platform-android/.externalNativeBuild /platform-android/.externalNativeBuild
.cxx

View File

@ -9,7 +9,7 @@ build_project:
- "( ./lib/bin/build_libsodium-macos clean && ./lib/bin/build_libsodium-macos )" - "( ./lib/bin/build_libsodium-macos clean && ./lib/bin/build_libsodium-macos )"
- "( ./lib/bin/build_libjson-c-macos clean && ./lib/bin/build_libjson-c-macos )" - "( ./lib/bin/build_libjson-c-macos clean && ./lib/bin/build_libjson-c-macos )"
- "( cd ./platform-independent/c/cli && ./clean && targets=all ./build && ./mpw-tests && ./mpw-cli-tests )" - "( cd ./platform-independent/c/cli && ./clean && targets=all ./build && ./mpw-tests && ./mpw-cli-tests )"
- "( export JAVA_HOME=$(java_home -Fv 10 || java_home -Fv 9* ) && cd ./gradle && ./gradlew --stacktrace clean test )" - "( export JAVA_HOME=$(java_home -Fv 10 || java_home -Fv 9* ) && ./gradlew --stacktrace clean test )"
- "( xcodebuild -workspace platform-darwin/MasterPassword.xcworkspace -configuration 'Test' -scheme 'MasterPassword iOS' -sdk iphonesimulator clean build )" - "( xcodebuild -workspace platform-darwin/MasterPassword.xcworkspace -configuration 'Test' -scheme 'MasterPassword iOS' -sdk iphonesimulator clean build )"
- "( xcodebuild -workspace platform-darwin/MasterPassword.xcworkspace -configuration 'Test' -scheme 'MasterPassword macOS' clean build )" - "( xcodebuild -workspace platform-darwin/MasterPassword.xcworkspace -configuration 'Test' -scheme 'MasterPassword macOS' clean build )"
tags: tags:

View File

@ -24,7 +24,7 @@ buildscript {
} }
dependencies { dependencies {
classpath group: 'com.android.tools.build', name: 'gradle', version: '3.1.0' classpath group: 'com.android.tools.build', name: 'gradle', version: '3.5.0'
} }
} }

View File

@ -1,43 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="NullableNotNullManager">
<option name="myDefaultNullable" value="javax.annotation.Nullable" />
<option name="myDefaultNotNull" value="javax.annotation.Nonnull" />
<option name="myNullables">
<value>
<list size="9">
<item index="0" class="java.lang.String" itemvalue="org.jetbrains.annotations.Nullable" />
<item index="1" class="java.lang.String" itemvalue="javax.annotation.Nullable" />
<item index="2" class="java.lang.String" itemvalue="edu.umd.cs.findbugs.annotations.Nullable" />
<item index="3" class="java.lang.String" itemvalue="android.support.annotation.Nullable" />
<item index="4" class="java.lang.String" itemvalue="javax.annotation.CheckForNull" />
<item index="5" class="java.lang.String" itemvalue="androidx.annotation.Nullable" />
<item index="6" class="java.lang.String" itemvalue="org.checkerframework.checker.nullness.qual.Nullable" />
<item index="7" class="java.lang.String" itemvalue="org.checkerframework.checker.nullness.compatqual.NullableDecl" />
<item index="8" class="java.lang.String" itemvalue="org.checkerframework.checker.nullness.compatqual.NullableType" />
</list>
</value>
</option>
<option name="myNotNulls">
<value>
<list size="9">
<item index="0" class="java.lang.String" itemvalue="org.jetbrains.annotations.NotNull" />
<item index="1" class="java.lang.String" itemvalue="javax.annotation.Nonnull" />
<item index="2" class="java.lang.String" itemvalue="edu.umd.cs.findbugs.annotations.NonNull" />
<item index="3" class="java.lang.String" itemvalue="android.support.annotation.NonNull" />
<item index="4" class="java.lang.String" itemvalue="javax.validation.constraints.NotNull" />
<item index="5" class="java.lang.String" itemvalue="androidx.annotation.NonNull" />
<item index="6" class="java.lang.String" itemvalue="org.checkerframework.checker.nullness.qual.NonNull" />
<item index="7" class="java.lang.String" itemvalue="org.checkerframework.checker.nullness.compatqual.NonNullDecl" />
<item index="8" class="java.lang.String" itemvalue="org.checkerframework.checker.nullness.compatqual.NonNullType" />
</list>
</value>
</option>
</component>
<component name="ProjectRootManager" version="2" languageLevel="JDK_1_8" default="false" project-jdk-name="10" project-jdk-type="JavaSDK">
<output url="file://$PROJECT_DIR$/build/classes" />
</component>
<component name="ProjectType">
<option name="id" value="Android" />
</component>
</project>

View File

@ -1,5 +0,0 @@
<root>
<item name='com.google.common.base.Preconditions T checkNotNull(T, java.lang.Object) 1'>
<annotation name='org.jetbrains.annotations.NonNls' />
</item>
</root>

View File

@ -1,5 +0,0 @@
<root>
<item name='com.google.common.io.Resources java.net.URL getResource(java.lang.String) 0'>
<annotation name='org.jetbrains.annotations.NonNls' />
</item>
</root>

View File

@ -1,5 +0,0 @@
<root>
<item name='org.testng.Assert void assertEquals(java.lang.String, java.lang.String, java.lang.String) 2'>
<annotation name='org.jetbrains.annotations.NonNls' />
</item>
</root>

Binary file not shown.

BIN
gradle/wrapper/gradle-wrapper.jar vendored Normal file

Binary file not shown.

View File

@ -1,5 +1,6 @@
#Mon Sep 23 12:55:35 EDT 2019
distributionBase=GRADLE_USER_HOME distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-4.7-bin.zip
zipStoreBase=GRADLE_USER_HOME zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-5.6.2-all.zip

View File

@ -1,5 +1,21 @@
#!/usr/bin/env sh #!/usr/bin/env sh
#
# Copyright 2015 the original author or authors.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# https://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
############################################################################## ##############################################################################
## ##
## Gradle start up script for UN*X ## Gradle start up script for UN*X
@ -28,7 +44,7 @@ APP_NAME="Gradle"
APP_BASE_NAME=`basename "$0"` 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. # Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
DEFAULT_JVM_OPTS="" DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
# Use the maximum available, or set MAX_FD != -1 to use that value. # Use the maximum available, or set MAX_FD != -1 to use that value.
MAX_FD="maximum" MAX_FD="maximum"
@ -109,8 +125,8 @@ if $darwin; then
GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
fi fi
# For Cygwin, switch paths to Windows format before running java # For Cygwin or MSYS, switch paths to Windows format before running java
if $cygwin ; then if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then
APP_HOME=`cygpath --path --mixed "$APP_HOME"` APP_HOME=`cygpath --path --mixed "$APP_HOME"`
CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
JAVACMD=`cygpath --unix "$JAVACMD"` JAVACMD=`cygpath --unix "$JAVACMD"`

View File

@ -1,3 +1,19 @@
@rem
@rem Copyright 2015 the original author or authors.
@rem
@rem Licensed under the Apache License, Version 2.0 (the "License");
@rem you may not use this file except in compliance with the License.
@rem You may obtain a copy of the License at
@rem
@rem https://www.apache.org/licenses/LICENSE-2.0
@rem
@rem Unless required by applicable law or agreed to in writing, software
@rem distributed under the License is distributed on an "AS IS" BASIS,
@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@rem See the License for the specific language governing permissions and
@rem limitations under the License.
@rem
@if "%DEBUG%" == "" @echo off @if "%DEBUG%" == "" @echo off
@rem ########################################################################## @rem ##########################################################################
@rem @rem
@ -14,7 +30,7 @@ set APP_BASE_NAME=%~n0
set APP_HOME=%DIRNAME% set APP_HOME=%DIRNAME%
@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. @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 DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m"
@rem Find java.exe @rem Find java.exe
if defined JAVA_HOME goto findJavaFromJavaHome if defined JAVA_HOME goto findJavaFromJavaHome

View File

@ -1,13 +1,15 @@
apply plugin: 'com.android.application' plugins {
id 'com.android.application'
id 'com.github.spotbugs' version '2.0.0'
}
android { android {
compileSdkVersion 25 compileSdkVersion 28
buildToolsVersion '27.0.3'
defaultConfig { defaultConfig {
applicationId 'com.lyndir.masterpassword' applicationId 'com.lyndir.masterpassword'
minSdkVersion 19 minSdkVersion 24
targetSdkVersion 25 targetSdkVersion 28
versionCode 20701 versionCode 20701
versionName '2.7.1' versionName '2.7.1'
} }
@ -22,8 +24,8 @@ android {
} }
sourceSets { sourceSets {
main { main {
jniLibs.srcDirs "$rootDir/../lib/libsodium/build-android~/out/lib", jniLibs.srcDirs "$rootDir/lib/libsodium/build-android~/out/lib",
"$rootDir/../lib/libjson-c/build-android~/out/lib" "$rootDir/lib/libjson-c/build-android~/out/lib"
} }
} }
@ -50,28 +52,28 @@ dependencies {
implementation group: 'com.lyndir.lhunath.opal', name: 'opal-system', version: '1.7-p2' implementation group: 'com.lyndir.lhunath.opal', name: 'opal-system', version: '1.7-p2'
implementation group: 'org.slf4j', name: 'slf4j-android', version: '1.7.13-underscore' implementation group: 'org.slf4j', name: 'slf4j-android', version: '1.7.13-underscore'
implementation group: 'com.jakewharton', name: 'butterknife', version: '8.5.1' implementation group: 'com.jakewharton', name: 'butterknife', version: '10.2.0'
annotationProcessor group: 'com.jakewharton', name: 'butterknife-compiler', version: '8.5.1' annotationProcessor group: 'com.jakewharton', name: 'butterknife-compiler', version: '10.2.0'
} }
preBuild { preBuild {
dependsOn task( type: Exec, 'build_libsodium-android', { dependsOn task( type: Exec, 'build_libsodium-android', {
commandLine 'bash', "$rootDir/../lib/bin/build_libsodium-android" commandLine 'bash', "$rootDir/lib/bin/build_libsodium-android"
environment 'ANDROID_NDK_HOME', android.ndkDirectory environment 'ANDROID_NDK_HOME', android.ndkDirectory
} ) } )
dependsOn task( type: Exec, 'build_libjson-c-android', { dependsOn task( type: Exec, 'build_libjson-c-android', {
commandLine 'bash', "$rootDir/../lib/bin/build_libjson-c-android" commandLine 'bash', "$rootDir/lib/bin/build_libjson-c-android"
environment 'ANDROID_NDK_HOME', android.ndkDirectory environment 'ANDROID_NDK_HOME', android.ndkDirectory
} ) } )
} }
clean { clean {
dependsOn task( type: Exec, 'clean_libsodium-android', { dependsOn task( type: Exec, 'clean_libsodium-android', {
commandLine 'bash', "$rootDir/../lib/bin/build_libsodium-android", 'clean' commandLine 'bash', "$rootDir/lib/bin/build_libsodium-android", 'clean'
environment 'ANDROID_NDK_HOME', android.ndkDirectory environment 'ANDROID_NDK_HOME', android.ndkDirectory
} ) } )
dependsOn task( type: Exec, 'clean_libjson-c-android', { dependsOn task( type: Exec, 'clean_libjson-c-android', {
commandLine 'bash', "$rootDir/../lib/bin/build_libjson-c-android", 'clean' commandLine 'bash', "$rootDir/lib/bin/build_libjson-c-android", 'clean'
environment 'ANDROID_NDK_HOME', android.ndkDirectory environment 'ANDROID_NDK_HOME', android.ndkDirectory
} ) } )
} }

View File

@ -75,7 +75,7 @@
buildPhases = ( buildPhases = (
); );
buildToolPath = gradle; buildToolPath = gradle;
buildWorkingDirectory = /Users/lhunath/Documents/workspace/lyndir/MasterPassword/gradle; buildWorkingDirectory = /Users/lhunath/Documents/workspace/lyndir/MasterPassword;
dependencies = ( dependencies = (
); );
name = "MasterPassword-JNI"; name = "MasterPassword-JNI";

View File

@ -2,8 +2,8 @@ import org.gradle.internal.jvm.Jvm
plugins { plugins {
id 'cpp-library'
id 'base' id 'base'
id 'cpp-library'
} }
description = 'Master Password Algorithm Implementation' description = 'Master Password Algorithm Implementation'
@ -16,7 +16,7 @@ artifacts {
components.withType( ComponentWithRuntimeFile ) { components.withType( ComponentWithRuntimeFile ) {
if (optimized) if (optimized)
from runtimeFile, { from runtimeFile, {
into standardOperatingSystem( targetPlatform ) + '/' + standardArchitecture( targetPlatform ) into targetMachine.getOperatingSystemFamily().getName() + '/' + targetMachine.getArchitecture().getName()
} }
} }
} }
@ -25,6 +25,7 @@ artifacts {
library { library {
baseName.set( 'mpw' ) baseName.set( 'mpw' )
linkage.set( [Linkage.SHARED] ) linkage.set( [Linkage.SHARED] )
source.from fileTree( 'src' )
// Reconfigure the toolchain from C++ to C. // Reconfigure the toolchain from C++ to C.
toolChains { toolChains {
@ -42,75 +43,43 @@ library {
// Cross-compile for these host platforms. // Cross-compile for these host platforms.
// TODO: Cross-compiling, blocked by: https://github.com/gradle/gradle-native/issues/169 - CppLibraryPlugin.java:163 // TODO: Cross-compiling, blocked by: https://github.com/gradle/gradle-native/issues/169 - CppLibraryPlugin.java:163
operatingSystems.set( [objects.named( OperatingSystemFamily, OperatingSystemFamily.LINUX ), // operatingSystems.set( [objects.named( OperatingSystemFamily, OperatingSystemFamily.LINUX ),
objects.named( OperatingSystemFamily, OperatingSystemFamily.MAC_OS ), // objects.named( OperatingSystemFamily, OperatingSystemFamily.MAC_OS ),
objects.named( OperatingSystemFamily, OperatingSystemFamily.WINDOWS )] ) // objects.named( OperatingSystemFamily, OperatingSystemFamily.WINDOWS )] )
targetMachines.set( [
machines.linux.x86_64,
machines.windows.x86, machines.windows.x86_64,
machines.macOS.x86_64
] )
components.withType( CppComponent ) { components.withType( CppComponent ) {
cppSource.from fileTree( 'src' )
privateHeaders {
// JDK for JNI support. // JDK for JNI support.
from files( new File( Jvm.current().javaHome, 'include' ) ) { first().eachDir { from it } } privateHeaders.from files( new File( Jvm.current().javaHome, 'include' ) ) { first().eachDir { from it } }
}
binaries.whenElementFinalized { binaries.whenElementFinalized {
project.dependencies { project.dependencies {
def system = standardOperatingSystem( targetPlatform ) def system = targetMachine.getOperatingSystemFamily().getName()
// libsodium // libsodium
archive.dependsOn project.tasks.maybeCreate( "build_libsodium-${system}", Exec ).configure { archive.dependsOn project.tasks.maybeCreate( "build_libsodium-${system}", Exec ).configure {
commandLine 'bash', "$rootDir/../lib/bin/build_libsodium-${system}" commandLine 'bash', "$rootDir/lib/bin/build_libsodium-${system}"
privateHeaders.from "$rootDir/../lib/libsodium/build-${system}~/out/include" privateHeaders.from "$rootDir/lib/libsodium/build-${system}~/out/include"
add( linkLibraries.name, fileTree( "$rootDir/../lib/libsodium/build-${system}~/out/lib" ) ) add( linkLibraries.name, fileTree( "$rootDir/lib/libsodium/build-${system}~/out/lib" ) )
} }
clean.dependsOn project.tasks.maybeCreate( "clean_libsodium-${system}", Exec ).configure { clean.dependsOn project.tasks.maybeCreate( "clean_libsodium-${system}", Exec ).configure {
commandLine 'bash', "$rootDir/../lib/bin/build_libsodium-${system}", 'clean' commandLine 'bash', "$rootDir/lib/bin/build_libsodium-${system}", 'clean'
} }
// libjson-c // libjson-c
/*archive.dependsOn project.tasks.maybeCreate( "build_libjson-c-${system}", Exec ).configure { /*archive.dependsOn project.tasks.maybeCreate( "build_libjson-c-${system}", Exec ).configure {
commandLine 'bash', "$rootDir/../lib/bin/build_libjson-c-${system}" commandLine 'bash', "$rootDir/lib/bin/build_libjson-c-${system}"
privateHeaders.from "$rootDir/../lib/libjson-c/build-${system}~/out/include" privateHeaders.from "$rootDir/lib/libjson-c/build-${system}~/out/include"
add( linkLibraries.name, fileTree( "$rootDir/../lib/libjson-c/build-${system}~/out/lib" ) ) add( linkLibraries.name, fileTree( "$rootDir/lib/libjson-c/build-${system}~/out/lib" ) )
} }
clean.dependsOn project.tasks.maybeCreate( "clean_libjson-c-${system}", Exec ).configure { clean.dependsOn project.tasks.maybeCreate( "clean_libjson-c-${system}", Exec ).configure {
commandLine 'bash', "$rootDir/../lib/bin/build_libjson-c-${system}", 'clean' commandLine 'bash', "$rootDir/lib/bin/build_libjson-c-${system}", 'clean'
}*/ }*/
} }
} }
} }
} }
static String standardOperatingSystem(NativePlatform platform) {
OperatingSystem os = platform.getOperatingSystem()
if (os.isWindows())
return OperatingSystemFamily.WINDOWS
else if (os.isMacOsX())
return OperatingSystemFamily.MAC_OS
else if (os.isLinux())
return OperatingSystemFamily.LINUX
// Other systems will need to use a Linux compatibility layer.
return OperatingSystemFamily.LINUX
}
static String standardArchitecture(NativePlatform platform) {
Architecture arch = platform.getArchitecture()
if (arch.isArm())
return 'arm'
else if (arch.name.toLowerCase( Locale.ROOT ).startsWith( 'arm' ))
return 'arm64'
else if (arch.isAmd64())
return 'x86_64'
else if (arch.isI386())
return 'x86'
// Other systems will need to be compatible with the x86 architecture.
return 'x86'
}

View File

@ -1,5 +1,6 @@
plugins { plugins {
id 'java-library' id 'java-library'
id 'com.github.spotbugs' version '2.0.0'
} }
description = 'Master Password Algorithm Implementation' description = 'Master Password Algorithm Implementation'
@ -16,10 +17,8 @@ configurations {
dependencies { dependencies {
implementation group: 'com.lyndir.lhunath.opal', name: 'opal-system', version: '1.7-p2' implementation group: 'com.lyndir.lhunath.opal', name: 'opal-system', version: '1.7-p2'
api group: 'com.fasterxml.jackson.core', name: 'jackson-annotations', version: '2.9.5' api group: 'com.fasterxml.jackson.core', name: 'jackson-annotations', version: '2.9.8'
api group: 'org.jetbrains', name: 'annotations', version: '13.0' api group: 'org.jetbrains', name: 'annotations', version: '16.0.2'
api group: 'com.google.code.findbugs', name: 'jsr305', version: '3.0.2'
api group: 'com.google.code.findbugs', name: 'findbugs-annotations', version: '3.0.1'
lib project( path: ':masterpassword-core', configuration: 'default' ) lib project( path: ':masterpassword-core', configuration: 'default' )
} }

View File

@ -199,5 +199,11 @@ public final class Native {
return x86; return x86;
} }
@Override
public String toString() {
return name().replace('_', '-' );
}
} }
} }

View File

@ -1,7 +1,8 @@
plugins { plugins {
id 'java' id 'java'
id 'application' id 'application'
id 'com.github.johnrengelman.shadow' version '2.0.4' id 'com.github.spotbugs' version '2.0.0'
id 'com.github.johnrengelman.shadow' version '5.1.0'
} }
description = 'Master Password GUI' description = 'Master Password GUI'
@ -31,7 +32,7 @@ shadowJar {
storepass: System.getenv( 'STORE_PW' ), storepass: System.getenv( 'STORE_PW' ),
keypass: System.getenv( 'KEY_PW_DESKTOP' ), keypass: System.getenv( 'KEY_PW_DESKTOP' ),
preservelastmodified: 'true', preservelastmodified: 'true',
signedJar: "${rootDir}/../public/site/${project.name}-${project.version}.jar" ) signedJar: "${rootDir}/public/site/${project.name}-${project.version}.jar" )
} }
} }

View File

@ -1,22 +1,19 @@
plugins { plugins {
id 'java-library' id 'java-library'
id 'net.ltgt.apt' version '0.9' id 'com.github.spotbugs' version '2.0.0'
} }
description = 'Master Password Site Model' description = 'Master Password Site Model'
dependencies { dependencies {
implementation group: 'com.lyndir.lhunath.opal', name: 'opal-system', version: '1.7-p2' implementation group: 'com.lyndir.lhunath.opal', name: 'opal-system', version: '1.7-p2'
implementation group: 'com.fasterxml.jackson.core', name: 'jackson-core', version: '2.9.5' implementation group: 'com.fasterxml.jackson.core', name: 'jackson-core', version: '2.9.8'
implementation 'com.github.spotbugs:spotbugs-annotations:4.0.0-beta4'
api project( ':masterpassword-algorithm' ) api project( ':masterpassword-algorithm' )
api group: 'joda-time', name: 'joda-time', version: '2.4' api group: 'joda-time', name: 'joda-time', version: '2.10'
api group: 'com.fasterxml.jackson.core', name: 'jackson-annotations', version: '2.9.5' api group: 'com.fasterxml.jackson.core', name: 'jackson-annotations', version: '2.9.8'
api group: 'com.fasterxml.jackson.core', name: 'jackson-databind', version: '2.9.5' api group: 'com.fasterxml.jackson.core', name: 'jackson-databind', version: '2.9.8'
api group: 'com.google.code.findbugs', name: 'findbugs-annotations', version: '3.0.1'
compileOnly group: 'com.google.auto.value', name: 'auto-value', version: '1.2'
apt group: 'com.google.auto.value', name: 'auto-value', version: '1.2'
testImplementation group: 'org.testng', name: 'testng', version: '6.8.5' testImplementation group: 'org.testng', name: 'testng', version: '6.8.5'
testImplementation group: 'ch.qos.logback', name: 'logback-classic', version: '1.1.2' testImplementation group: 'ch.qos.logback', name: 'logback-classic', version: '1.1.2'

View File

@ -29,7 +29,7 @@ public abstract class Changeable {
} }
changeExecutor.submit( () -> { changeExecutor.submit( () -> {
synchronized (changeExecutor) { synchronized (mutex) {
if (grouping != Grouping.APPLY) if (grouping != Grouping.APPLY)
return; return;
changed = false; changed = false;

View File

@ -1,17 +1,21 @@
plugins { plugins {
id 'java' id 'java'
id 'com.github.spotbugs' version '2.0.0'
} }
description = 'Master Password Test Suite' description = 'Master Password Test Suite'
dependencies { dependencies {
implementation group: 'com.lyndir.lhunath.opal', name: 'opal-system', version: '1.7-p2' implementation group: 'com.lyndir.lhunath.opal', name: 'opal-system', version: '1.7-p2'
implementation group: 'javax.xml.bind', name: 'jaxb-api', version: '2.3.1'
implementation project( ':masterpassword-algorithm' ) implementation project( ':masterpassword-algorithm' )
implementation project( ':masterpassword-model' ) implementation project( ':masterpassword-model' )
testImplementation group: 'org.testng', name: 'testng', version: '6.8.5' testImplementation group: 'org.testng', name: 'testng', version: '6.8.5'
testImplementation group: 'ch.qos.logback', name: 'logback-classic', version: '1.1.2' testImplementation group: 'ch.qos.logback', name: 'logback-classic', version: '1.1.2'
runtime group: 'org.glassfish.jaxb', name: 'jaxb-runtime', version: '2.3.1'
} }
test.useTestNG() test.useTestNG()

View File

@ -5,23 +5,23 @@ def localFile = file( 'local.properties' )
localFile.exists() && local.load( localFile.newDataInputStream() ) localFile.exists() && local.load( localFile.newDataInputStream() )
include 'masterpassword-core' include 'masterpassword-core'
project( ':masterpassword-core' ).projectDir = new File( '../platform-independent/c/core' ) project( ':masterpassword-core' ).projectDir = new File( 'platform-independent/c/core' )
include 'masterpassword-algorithm' include 'masterpassword-algorithm'
project( ':masterpassword-algorithm' ).projectDir = new File( '../platform-independent/java/algorithm' ) project( ':masterpassword-algorithm' ).projectDir = new File( 'platform-independent/java/algorithm' )
include 'masterpassword-model' include 'masterpassword-model'
project( ':masterpassword-model' ).projectDir = new File( '../platform-independent/java/model' ) project( ':masterpassword-model' ).projectDir = new File( 'platform-independent/java/model' )
include 'masterpassword-tests' include 'masterpassword-tests'
project( ':masterpassword-tests' ).projectDir = new File( '../platform-independent/java/tests' ) project( ':masterpassword-tests' ).projectDir = new File( 'platform-independent/java/tests' )
include 'masterpassword-gui' include 'masterpassword-gui'
project( ':masterpassword-gui' ).projectDir = new File( '../platform-independent/java/gui' ) project( ':masterpassword-gui' ).projectDir = new File( 'platform-independent/java/gui' )
if (local.containsKey( 'sdk.dir' ) && file( local.getProperty( 'sdk.dir' ) ).exists()) { if (local.containsKey( 'sdk.dir' ) && file( local.getProperty( 'sdk.dir' ) ).exists()) {
include 'masterpassword-android' include 'masterpassword-android'
project( ':masterpassword-android' ).projectDir = new File( '../platform-android' ) project( ':masterpassword-android' ).projectDir = new File( 'platform-android' )
} else { } else {
logger.warn( "Skipping masterpassword-android since sdk.dir is not defined in local.properties." ) logger.warn( "Skipping masterpassword-android since sdk.dir is not defined in local.properties." )
} }