You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by ah...@apache.org on 2018/11/29 15:59:37 UTC
[isis] branch 2039-Redesign_of_Config updated: ISIS-2039: fixing
junit tests ...
This is an automated email from the ASF dual-hosted git repository.
ahuber pushed a commit to branch 2039-Redesign_of_Config
in repository https://gitbox.apache.org/repos/asf/isis.git
The following commit(s) were added to refs/heads/2039-Redesign_of_Config by this push:
new 688a2b1 ISIS-2039: fixing junit tests ...
688a2b1 is described below
commit 688a2b1206d54820c63acb1a6a23ce35e407286f
Author: Andi Huber <ah...@apache.org>
AuthorDate: Thu Nov 29 16:48:20 2018 +0100
ISIS-2039: fixing junit tests ...
by having the IsisSystemEnvironment#isUnitTesting correctly setup by
JunitRuleMocker2
Task-Url: https://issues.apache.org/jira/browse/ISIS-2039
---
.../plugins/environment/IsisSystemEnvironment.java | 12 ++++++++++++
.../org/apache/isis/config/internal/_Config.java | 4 +++-
.../IsisConfigurationBuilderDefault.java | 20 +++++++++++---------
.../configbuilder/IsisConfigurationDefault.java | 3 ++-
.../commons/configbuilder/ModulePackageHelper.java | 4 ++--
.../facets/AbstractFacetFactoryJUnit4TestCase.java | 3 ---
.../metamodel/facets/AbstractFacetFactoryTest.java | 1 +
.../property/PropertyAnnotationFacetFactoryTest.java | 5 +++++
.../services/ServicesInjectorDefaultTest.java | 2 +-
.../headless/HeadlessWithBootstrappingAbstract.java | 7 +++----
.../unittestsupport/jmocking/JUnitRuleMockery2.java | 9 ++++++---
11 files changed, 46 insertions(+), 24 deletions(-)
diff --git a/core/commons/src/main/java/org/apache/isis/core/plugins/environment/IsisSystemEnvironment.java b/core/commons/src/main/java/org/apache/isis/core/plugins/environment/IsisSystemEnvironment.java
index 46005e9..a84eb70 100644
--- a/core/commons/src/main/java/org/apache/isis/core/plugins/environment/IsisSystemEnvironment.java
+++ b/core/commons/src/main/java/org/apache/isis/core/plugins/environment/IsisSystemEnvironment.java
@@ -52,7 +52,19 @@ public interface IsisSystemEnvironment {
};
}
+
+ // -- INIT
+ /**
+ * For framework internal unit tests.<p>
+ * Let the framework know what context we are running on.
+ * Must be set prior to configuration bootstrapping.
+ * @param isUnitTesting
+ */
+ public static void setUnitTesting(boolean isUnitTesting) {
+ System.setProperty("UNITTESTING", ""+isUnitTesting);
+ }
+
// -- DEFAULT IMPLEMENTATION
public static final IsisSystemEnvironment DEFAULT = new IsisSystemEnvironment() {
diff --git a/core/config/src/main/java/org/apache/isis/config/internal/_Config.java b/core/config/src/main/java/org/apache/isis/config/internal/_Config.java
index 3ec1d7e..afcd8d7 100644
--- a/core/config/src/main/java/org/apache/isis/config/internal/_Config.java
+++ b/core/config/src/main/java/org/apache/isis/config/internal/_Config.java
@@ -55,8 +55,10 @@ public class _Config {
}
/**
+ * Most likely used for testing.
+ * <p>
* Throws away any configuration resources currently on this life-cycle's context.
- * Makes a new config builder singleton instance available. Most likely used for testing.
+ * Makes a new config builder singleton instance lazily available.
*/
public static void clear() {
_Context.remove(_Config_LifecycleResource.class);
diff --git a/core/config/src/main/java/org/apache/isis/core/commons/configbuilder/IsisConfigurationBuilderDefault.java b/core/config/src/main/java/org/apache/isis/core/commons/configbuilder/IsisConfigurationBuilderDefault.java
index a37aecf..9cdad48 100644
--- a/core/config/src/main/java/org/apache/isis/core/commons/configbuilder/IsisConfigurationBuilderDefault.java
+++ b/core/config/src/main/java/org/apache/isis/core/commons/configbuilder/IsisConfigurationBuilderDefault.java
@@ -80,19 +80,19 @@ final class IsisConfigurationBuilderDefault implements IsisConfigurationBuilder
return builder;
}
- static IsisConfigurationBuilderDefault getDefault() {
+ static IsisConfigurationBuilder getDefault() {
+
+ if(_Context.isUnitTesting()) {
+ return empty();
+ }
final ResourceStreamSourceChainOfResponsibility chain = createComposite(Arrays.asList(
ResourceStreamSourceFileSystem.create(ConfigurationConstants.DEFAULT_CONFIG_DIRECTORY)
));
final IsisConfigurationBuilderDefault builder = new IsisConfigurationBuilderDefault(chain);
- final NotFoundPolicy continuePolicy = _Context.isUnitTesting()
- ? NotFoundPolicy.CONTINUE
- : NotFoundPolicy.FAIL_FAST;
-
builder.addDefaultPrimers();
- builder.addTopLevelDefaultConfigurationResource(continuePolicy);
+ builder.addTopLevelDefaultConfigurationResource();
builder.addDefaultConfigurationResources();
return builder;
@@ -118,9 +118,9 @@ final class IsisConfigurationBuilderDefault implements IsisConfigurationBuilder
return composite;
}
- private void addTopLevelDefaultConfigurationResource(NotFoundPolicy continuePolicy) {
+ private void addTopLevelDefaultConfigurationResource() {
addConfigurationResource(ConfigurationConstants.DEFAULT_CONFIG_FILE,
- continuePolicy, ContainsPolicy.IGNORE);
+ NotFoundPolicy.FAIL_FAST, ContainsPolicy.IGNORE);
}
private void addDefaultConfigurationResources() {
@@ -341,7 +341,9 @@ final class IsisConfigurationBuilderDefault implements IsisConfigurationBuilder
@Override
public IsisConfiguration build() {
- configuration.triggerTypeDiscovery();
+ if(configuration.getAppManifest()!=null) {
+ configuration.triggerTypeDiscovery();
+ }
if (LOG.isDebugEnabled()) {
dumpResourcesToLog();
diff --git a/core/config/src/main/java/org/apache/isis/core/commons/configbuilder/IsisConfigurationDefault.java b/core/config/src/main/java/org/apache/isis/core/commons/configbuilder/IsisConfigurationDefault.java
index 8f15099..5e6b90d 100644
--- a/core/config/src/main/java/org/apache/isis/core/commons/configbuilder/IsisConfigurationDefault.java
+++ b/core/config/src/main/java/org/apache/isis/core/commons/configbuilder/IsisConfigurationDefault.java
@@ -53,7 +53,8 @@ import static org.apache.isis.commons.internal.base._With.requires;
* {@link ServicesInjector#addFallbackIfRequired(Class, Object)}.
*
* <p>
- * If an integration test is running, then the <code>IsisConfigurationForJdoIntegTests</code> will be used instead.
+ * If an integration test is running, then the <code>IsisConfigurationForJdoIntegTests</code>
+ * will be used instead.
* </p>
*/
//[2039] @DomainObject(objectType=...) fixes meta-data validation complaining, otherwise not required ...
diff --git a/core/config/src/main/java/org/apache/isis/core/commons/configbuilder/ModulePackageHelper.java b/core/config/src/main/java/org/apache/isis/core/commons/configbuilder/ModulePackageHelper.java
index 8e1a458..5642a29 100644
--- a/core/config/src/main/java/org/apache/isis/core/commons/configbuilder/ModulePackageHelper.java
+++ b/core/config/src/main/java/org/apache/isis/core/commons/configbuilder/ModulePackageHelper.java
@@ -185,8 +185,8 @@ class ModulePackageHelper {
return true;
}
}
- System.out.println("!!! skipping " + className);
-
+ //TODO [2039] we may need to re-think this policy, there should not be surprising use-cases
+ LOG.warn("Skipping a service for registration because due to not being part of the packagess to include: " + className);
return false;
}
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/AbstractFacetFactoryJUnit4TestCase.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/AbstractFacetFactoryJUnit4TestCase.java
index 63fe365..4cb0121 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/AbstractFacetFactoryJUnit4TestCase.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/AbstractFacetFactoryJUnit4TestCase.java
@@ -31,10 +31,7 @@ import org.junit.Rule;
import org.apache.isis.applib.Identifier;
import org.apache.isis.applib.services.i18n.TranslationService;
-import org.apache.isis.commons.internal.context._Context;
-import org.apache.isis.config.internal._Config;
import org.apache.isis.core.commons.authentication.AuthenticationSessionProvider;
-import org.apache.isis.core.commons.configbuilder.IsisConfigurationBuilder;
import org.apache.isis.core.metamodel.facetapi.FacetHolder;
import org.apache.isis.core.metamodel.facetapi.FeatureType;
import org.apache.isis.core.metamodel.facetapi.IdentifiedHolder;
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/AbstractFacetFactoryTest.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/AbstractFacetFactoryTest.java
index 2b01c1a..8600798 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/AbstractFacetFactoryTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/AbstractFacetFactoryTest.java
@@ -38,6 +38,7 @@ import org.apache.isis.core.metamodel.services.ServicesInjector;
import org.apache.isis.core.metamodel.services.persistsession.PersistenceSessionServiceInternal;
import org.apache.isis.core.metamodel.spec.ObjectSpecification;
import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
+import org.apache.isis.core.plugins.environment.IsisSystemEnvironment;
import org.apache.isis.core.unittestsupport.jmocking.JUnitRuleMockery2;
import junit.framework.TestCase;
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/properties/property/PropertyAnnotationFacetFactoryTest.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/properties/property/PropertyAnnotationFacetFactoryTest.java
index c3dca49..4de4a4d 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/properties/property/PropertyAnnotationFacetFactoryTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/properties/property/PropertyAnnotationFacetFactoryTest.java
@@ -73,6 +73,7 @@ import org.apache.isis.core.metamodel.facets.properties.update.modify.PropertySe
import org.apache.isis.core.metamodel.spec.ManagedObject;
import org.apache.isis.core.metamodel.spec.ObjectSpecification;
import org.apache.isis.core.metamodel.spec.feature.OneToOneAssociation;
+import org.apache.isis.core.plugins.environment.IsisSystemEnvironment;
import static org.apache.isis.core.commons.matchers.IsisMatchers.classEqualTo;
import static org.hamcrest.CoreMatchers.is;
@@ -102,6 +103,10 @@ public class PropertyAnnotationFacetFactoryTest extends AbstractFacetFactoryJUni
allowing(mockSpecificationLoader).loadSpecification(returnType);
will(returnValue(mockReturnTypeSpec));
+
+ allowing(mockTypeSpec).getFacet(PropertyDomainEventDefaultFacetForDomainObjectAnnotation.class);
+ will(returnValue(null));
+
}});
}
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/services/ServicesInjectorDefaultTest.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/services/ServicesInjectorDefaultTest.java
index 739acc5..95f9e87 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/services/ServicesInjectorDefaultTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/services/ServicesInjectorDefaultTest.java
@@ -104,7 +104,7 @@ public class ServicesInjectorDefaultTest {
@Test
public void shouldStreamRegisteredServices() {
List<Class<?>> registeredServices = injector.streamServiceTypes().collect(Collectors.toList());
- Assert.assertEquals(3, registeredServices.size());
+ Assert.assertTrue(registeredServices.size()>=3);
}
}
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/headless/HeadlessWithBootstrappingAbstract.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/headless/HeadlessWithBootstrappingAbstract.java
index 5393882..c5c5589 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/headless/HeadlessWithBootstrappingAbstract.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/headless/HeadlessWithBootstrappingAbstract.java
@@ -31,6 +31,7 @@ import org.apache.isis.applib.services.xactn.TransactionService;
import org.apache.isis.commons.internal.base._Strings;
import org.apache.isis.core.commons.config.IsisConfiguration;
import org.apache.isis.core.commons.factory.InstanceUtil;
+import org.apache.isis.core.plugins.environment.IsisSystemEnvironment;
import org.apache.isis.core.runtime.headless.logging.LeveledLogger;
import org.apache.isis.core.runtime.headless.logging.LogConfig;
import org.apache.isis.core.runtime.headless.logging.LogStream;
@@ -72,10 +73,8 @@ public abstract class HeadlessWithBootstrappingAbstract extends HeadlessAbstract
final LogConfig logConfig,
final Module module) {
- // let the framework know what context we are running on
- // this system property is looked up by the default implementation of IsisSystemEnvironment
- System.setProperty("UNITTESTING", "true");
-
+ IsisSystemEnvironment.setUnitTesting(true);
+
this.logConfig = logConfig;
this.logger = new LeveledLogger(LOG, logConfig.getTestLoggingLevel());
diff --git a/core/unittestsupport/src/main/java/org/apache/isis/core/unittestsupport/jmocking/JUnitRuleMockery2.java b/core/unittestsupport/src/main/java/org/apache/isis/core/unittestsupport/jmocking/JUnitRuleMockery2.java
index 2b55fe1..66b584b 100644
--- a/core/unittestsupport/src/main/java/org/apache/isis/core/unittestsupport/jmocking/JUnitRuleMockery2.java
+++ b/core/unittestsupport/src/main/java/org/apache/isis/core/unittestsupport/jmocking/JUnitRuleMockery2.java
@@ -18,15 +18,12 @@
*/
package org.apache.isis.core.unittestsupport.jmocking;
-import junit.framework.AssertionFailedError;
-
import java.lang.annotation.Retention;
import java.lang.annotation.Target;
import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.util.List;
-import org.apache.isis.commons.internal.base._Casts;
import org.jmock.Expectations;
import org.jmock.auto.Mock;
import org.jmock.integration.junit4.JUnit4Mockery;
@@ -38,10 +35,15 @@ import org.junit.runners.model.Statement;
import org.picocontainer.MutablePicoContainer;
import org.picocontainer.PicoBuilder;
+import org.apache.isis.commons.internal.base._Casts;
+import org.apache.isis.core.plugins.environment.IsisSystemEnvironment;
+
import static java.lang.annotation.ElementType.FIELD;
import static java.lang.annotation.RetentionPolicy.RUNTIME;
import static org.junit.Assert.fail;
+import junit.framework.AssertionFailedError;
+
/**
* Use as a <tt>@Rule</tt>, meaning that the <tt>@RunWith(JMock.class)</tt> can
@@ -67,6 +69,7 @@ public class JUnitRuleMockery2 extends JUnit4Mockery implements MethodRule {
* Factory method.
*/
public static JUnitRuleMockery2 createFor(final Mode mode) {
+ IsisSystemEnvironment.setUnitTesting(true);
final JUnitRuleMockery2 jUnitRuleMockery2 = new JUnitRuleMockery2();
if (mode == Mode.INTERFACES_AND_CLASSES) {
jUnitRuleMockery2.setImposteriser(Imposterisers.getDefault());