From 5e315c55da4790c2b29e060101d2c4a4c908c96d Mon Sep 17 00:00:00 2001 From: SiboVG Date: Tue, 27 Feb 2024 05:43:34 +0100 Subject: [PATCH] Some more gradle debugging... --- .idea/compiler.xml | 18 ++ build.gradle | 14 +- core/build.gradle | 39 +--- core/libs/script-api-1.0.jar | Bin 14732 -> 0 bytes core/src/main/java/module-info.java | 2 +- .../core/simulation/DisableStageTest.java | 2 +- settings.gradle | 6 +- swing/build.gradle | 19 +- swing/src/main/java/module-info.java | 4 +- .../openrocket/swing/ServicesForTesting.java | 184 ++++++++++++++++++ .../gui/configdialog/FinSetConfigTest.java | 2 +- .../logging/LogLevelBufferLoggerTest.java | 3 +- .../openrocket/swing/util/BaseTestCase.java | 34 ++++ 13 files changed, 265 insertions(+), 62 deletions(-) delete mode 100644 core/libs/script-api-1.0.jar create mode 100644 swing/src/test/java/info/openrocket/swing/ServicesForTesting.java create mode 100644 swing/src/test/java/info/openrocket/swing/util/BaseTestCase.java diff --git a/.idea/compiler.xml b/.idea/compiler.xml index 40ed93785..3dac0cf34 100644 --- a/.idea/compiler.xml +++ b/.idea/compiler.xml @@ -11,5 +11,23 @@ + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/build.gradle b/build.gradle index c30c9d9ff..e9a6f415c 100644 --- a/build.gradle +++ b/build.gradle @@ -61,8 +61,6 @@ subprojects { testImplementation group: 'org.hamcrest', name: 'hamcrest', version: '2.2' testImplementation group: 'org.hamcrest', name: 'hamcrest-core', version: '2.2' testImplementation group: 'org.hamcrest', name: 'hamcrest-library', version: '2.2' - //testImplementation group: 'org.hamcrest', name: 'hamcrest-internal', version: '2.2' - //testImplementation group: 'org.hamcrest', name: 'hamcrest-xml', version: '2.2' testImplementation group: 'org.junit.platform', name: 'junit-platform-runner', version: '1.10.2' testImplementation group: 'org.junit.platform', name: 'junit-platform-launcher', version: '1.10.2' testImplementation group: 'org.junit.jupiter', name: 'junit-jupiter-api', version: '5.10.0' @@ -72,11 +70,6 @@ subprojects { } } -dependencies { - implementation project(':core') - implementation project(':swing') -} - //tasks.register('serializeEngines') { // dependsOn ':core:serializeEngines' //} @@ -92,6 +85,11 @@ jar { } } +dependencies { + implementation(project(":core")) + implementation(project(":swing")) +} + shadowJar { archiveBaseName.set('OpenRocket') archiveClassifier.set(null) @@ -101,7 +99,7 @@ shadowJar { // Packages the application for distribution. tasks.register('dist') { - group = 'openrocket' + group = 'info.openrocket' dependsOn 'shadowJar' doLast { println "Completed the deployable jar in './build/libs" diff --git a/core/build.gradle b/core/build.gradle index 573a2fe1d..730ae4180 100644 --- a/core/build.gradle +++ b/core/build.gradle @@ -46,11 +46,10 @@ dependencies { implementation group: 'org.graalvm.sdk', name: 'graal-sdk', version: '23.0.3' implementation group: 'org.graalvm.js', name: 'js-scriptengine', version: '23.0.3' implementation group: 'org.graalvm.js', name: 'js', version: '23.0.3' - //implementation group: 'javax.script', name: 'script-api', version: '1.0-osgi' implementation group: 'org.graalvm.truffle', name: 'truffle-api', version: '23.0.3' implementation group: 'com.ibm.icu', name: 'icu4j', version: '71.1' // 72.1 - implementation group: 'com.sun.istack', name: 'istack-commons-tools', version: '4.1.1' // TODO: Should be gotten rid of? - implementation group: 'com.sun.istack', name: 'istack-commons-runtime', version: '4.1.1' // TODO: Should be gotten rid of? + //implementation group: 'com.sun.istack', name: 'istack-commons-tools', version: '4.1.1' // TODO: Should be gotten rid of? + //implementation group: 'com.sun.istack', name: 'istack-commons-runtime', version: '4.1.1' // TODO: Should be gotten rid of? implementation group: 'io.github.classgraph', name: 'classgraph', version: '4.8.165' implementation 'de.javagl:obj:0.4.0' @@ -67,17 +66,17 @@ def serializedEnginesPath = './src/main/resources/datafiles/thrustcurves/thrustc def serializedEnginesPathDist = './build/resources/main/datafiles/thrustcurves/thrustcurves.ser' // Executes the serialization of engines from ThrustCurve for a build. tasks.register('serializeEngines') { - group = 'openrocket' + group = 'info.openrocket' dependsOn serializeEnginesDelete dependsOn serializeEnginesExecute } tasks.register('serializeEnginesDist') { - group = 'openrocket' + group = 'info.openrocket' dependsOn serializeEnginesExecuteDist } // Deletes the serialize engine file if it exists. tasks.register('serializeEnginesDelete', Delete) { - group = 'openrocket' + group = 'info.openrocket' delete fileTree(serializedEnginesPath) doFirst { @@ -89,7 +88,7 @@ tasks.register('serializeEnginesDelete', Delete) { } // Executes the Java serialization program to fetch ThrustCurve rocket data and serialize it. tasks.register('serializeEnginesExecute', JavaExec) { - group = 'openrocket' + group = 'info.openrocket' dependsOn serializeEnginesDelete workingDir new File(projectDir, 'build/tmp') classpath = sourceSets.main.runtimeClasspath @@ -108,7 +107,7 @@ tasks.register('serializeEnginesExecute', JavaExec) { // TODO: Shouldn't need a seperate task, but the args are not changing when dynamically updating // the variable. tasks.register('serializeEnginesExecuteDist', JavaExec) { - group = 'openrocket' + group = 'info.openrocket' dependsOn serializeEnginesDelete workingDir new File(projectDir, 'build/tmp') classpath = sourceSets.main.runtimeClasspath @@ -124,7 +123,7 @@ tasks.register('serializeEnginesExecuteDist', JavaExec) { } // Validates that the serialize engines file exists. tasks.register('serializeEnginesValidate') { - group = 'openrocket' + group = 'info.openrocket' if (!project.file(serializedEnginesPath).exists()) { def message = "The serialized engine file does not exist at the following location:\n${project.file(serializedEnginesPath)}.\n" + "You will need to run the following from the command line in order to generate the serialized engine file:\n" @@ -149,25 +148,3 @@ tasks.register('copyReadmeMain', Copy) { processResources.dependsOn([copyReadmeMain]) //processResources.dependsOn([serializeEnginesValidate]) - -// https://docs.gradle.org/7.4/userguide/cross_project_publications.html -tasks.register('testCoreArtifactsJar', Jar) { - archiveClassifier.set("tests") - from sourceSets.test.output - exclude "**/META-INF", "**/pix", "**/arch", "**/communication", "**/database", "**/file", "**/l10n", "**/models", "**/motor", "**/optimization", "**/plugin", "**/preset", "**/rocketcomponent", "**/simulation", "**/startup", "**/unit" - include "**/ServicesForTesting.class", "**/util/BaseTestCase.class" -} - -// https://docs.gradle.org/7.4/userguide/cross_project_publications.html -configurations { - testArtifacts { - canBeConsumed = true - canBeResolved = false - extendsFrom testImplementation - } -} - -// https://docs.gradle.org/7.4/userguide/cross_project_publications.html -artifacts { - testArtifacts(testCoreArtifactsJar) -} \ No newline at end of file diff --git a/core/libs/script-api-1.0.jar b/core/libs/script-api-1.0.jar deleted file mode 100644 index b6e534669aeb8aac6d8e05e82ea410ecb4292e41..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14732 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 { + + private final AtomicReference translator = new AtomicReference(); + + @Override + public Translator get() { + + Translator oldTranslator = translator.get(); + + if (oldTranslator != null) { + return oldTranslator; + } + + Locale.setDefault(Locale.US); + + // Setup the translator + Translator newTranslator; + newTranslator = new ResourceBundleTranslator("l10n.messages"); + if (Locale.getDefault().getLanguage().equals("xx")) { + newTranslator = new DebugTranslator(newTranslator); + } + + if (translator.compareAndSet(null, newTranslator)) { + return newTranslator; + } else { + return translator.get(); + } + + } + + } + + public static class PreferencesForTesting extends Preferences { + + private static java.util.prefs.Preferences root = null; + + @Override + public boolean getBoolean(String key, boolean defaultValue) { + // TODO Auto-generated method stub + return false; + } + + @Override + public void putBoolean(String key, boolean value) { + // TODO Auto-generated method stub + + } + + @Override + public int getInt(String key, int defaultValue) { + // TODO Auto-generated method stub + return 0; + } + + @Override + public void putInt(String key, int value) { + // TODO Auto-generated method stub + + } + + @Override + public double getDouble(String key, double defaultValue) { + // TODO Auto-generated method stub + return 0; + } + + @Override + public void putDouble(String key, double value) { + // TODO Auto-generated method stub + + } + + @Override + public String getString(String key, String defaultValue) { + // TODO Auto-generated method stub + return null; + } + + @Override + public void putString(String key, String value) { + // TODO Auto-generated method stub + + } + + @Override + public String getString(String directory, String key, String defaultValue) { + // TODO Auto-generated method stub + return null; + } + + @Override + public void putString(String directory, String key, String value) { + // TODO Auto-generated method stub + + } + + @Override + public void addUserMaterial(Material m) { + // TODO Auto-generated method stub + + } + + @Override + public Set getUserMaterials() { + return Collections.emptySet(); + } + + @Override + public void removeUserMaterial(Material m) { + // TODO Auto-generated method stub + + } + + @Override + public void setComponentFavorite(ComponentPreset preset, Type type, boolean favorite) { + // TODO Auto-generated method stub + + } + + @Override + public Set getComponentFavorites(Type type) { + // TODO Auto-generated method stub + return null; + } + + @Override + public java.util.prefs.Preferences getNode(String nodeName) { + return getBaseNode().node(nodeName); + } + + @Override + public java.util.prefs.Preferences getPreferences() { + return getBaseNode(); + } + + private java.util.prefs.Preferences getBaseNode() { + if (root == null) { + final String name = "OpenRocket-unittest-" + System.currentTimeMillis(); + root = java.util.prefs.Preferences.userRoot().node(name); + Runtime.getRuntime().addShutdownHook(new Thread() { + @Override + public void run() { + try { + root.removeNode(); + } catch (BackingStoreException e) { + e.printStackTrace(); + } + } + }); + } + return root; + } + + } +} diff --git a/swing/src/test/java/info/openrocket/swing/gui/configdialog/FinSetConfigTest.java b/swing/src/test/java/info/openrocket/swing/gui/configdialog/FinSetConfigTest.java index 51abf5aef..bd4df2cbf 100644 --- a/swing/src/test/java/info/openrocket/swing/gui/configdialog/FinSetConfigTest.java +++ b/swing/src/test/java/info/openrocket/swing/gui/configdialog/FinSetConfigTest.java @@ -13,7 +13,7 @@ import info.openrocket.core.rocketcomponent.BodyTube; import info.openrocket.core.rocketcomponent.CenteringRing; import info.openrocket.core.rocketcomponent.RocketComponent; import info.openrocket.core.rocketcomponent.position.AxialMethod; -import info.openrocket.core.util.BaseTestCase; +import info.openrocket.swing.util.BaseTestCase; public class FinSetConfigTest extends BaseTestCase { diff --git a/swing/src/test/java/info/openrocket/swing/logging/LogLevelBufferLoggerTest.java b/swing/src/test/java/info/openrocket/swing/logging/LogLevelBufferLoggerTest.java index 07c785199..ff7e3c2dc 100644 --- a/swing/src/test/java/info/openrocket/swing/logging/LogLevelBufferLoggerTest.java +++ b/swing/src/test/java/info/openrocket/swing/logging/LogLevelBufferLoggerTest.java @@ -5,8 +5,7 @@ import static org.junit.jupiter.api.Assertions.assertEquals; import java.util.List; import info.openrocket.core.logging.Markers; -import info.openrocket.core.util.BaseTestCase; -import org.junit.Ignore; +import info.openrocket.swing.util.BaseTestCase; import org.junit.jupiter.api.Test; import org.slf4j.LoggerFactory; diff --git a/swing/src/test/java/info/openrocket/swing/util/BaseTestCase.java b/swing/src/test/java/info/openrocket/swing/util/BaseTestCase.java new file mode 100644 index 000000000..a6a3ad001 --- /dev/null +++ b/swing/src/test/java/info/openrocket/swing/util/BaseTestCase.java @@ -0,0 +1,34 @@ +package info.openrocket.swing.util; + +import info.openrocket.swing.ServicesForTesting; +import info.openrocket.core.l10n.DebugTranslator; +import info.openrocket.core.l10n.Translator; +import info.openrocket.core.plugin.PluginModule; +import info.openrocket.core.startup.Application; + +import com.google.inject.AbstractModule; +import com.google.inject.Guice; +import com.google.inject.Injector; +import com.google.inject.Module; +import com.google.inject.util.Modules; +import org.junit.jupiter.api.BeforeAll; + +public class BaseTestCase { + @BeforeAll + public static void setUp() throws Exception { + Module applicationModule = new ServicesForTesting(); + Module debugTranslator = new AbstractModule() { + + @Override + protected void configure() { + bind(Translator.class).toInstance(new DebugTranslator(null)); + } + + }; + Module pluginModule = new PluginModule(); + Injector injector = Guice.createInjector(Modules.override(applicationModule).with(debugTranslator), + pluginModule); + Application.setInjector(injector); + } +} +