Issue #23507 Allow to set null as the installRoot (in tests)

- ServerEnvironmentImpl is extremely problematic class as it's initialization
  is not well defined, but the class changes System.properties and affects
  whatever uses them later (but doesn't affect what started earlier)
diff --git a/nucleus/test-utils/utils/src/main/java/org/glassfish/tests/utils/DomainXml.java b/nucleus/test-utils/utils/src/main/java/org/glassfish/tests/utils/DomainXml.java
index fdb34c4..830b84e 100644
--- a/nucleus/test-utils/utils/src/main/java/org/glassfish/tests/utils/DomainXml.java
+++ b/nucleus/test-utils/utils/src/main/java/org/glassfish/tests/utils/DomainXml.java
@@ -24,6 +24,7 @@
 import java.lang.annotation.RetentionPolicy;
 import java.lang.annotation.Target;
 
+import org.glassfish.hk2.api.ServiceLocator;
 import org.glassfish.tests.utils.ConfigApiTest.TestDocument;
 import org.jvnet.hk2.config.DomDocument;
 
@@ -46,7 +47,8 @@
 
 
     /**
-     * @return DOM tree representation
+     * @return DOM tree representation. Must have public constructor with a single parameter
+     *         {@link ServiceLocator}
      */
     Class<? extends DomDocument<?>> domDocumentClass() default TestDocument.class;
 }
diff --git a/nucleus/test-utils/utils/src/main/java/org/glassfish/tests/utils/HK2JUnit5Extension.java b/nucleus/test-utils/utils/src/main/java/org/glassfish/tests/utils/HK2JUnit5Extension.java
index 039e7a0..69ec757 100644
--- a/nucleus/test-utils/utils/src/main/java/org/glassfish/tests/utils/HK2JUnit5Extension.java
+++ b/nucleus/test-utils/utils/src/main/java/org/glassfish/tests/utils/HK2JUnit5Extension.java
@@ -121,7 +121,6 @@
         final Set<Class<?>> excludedClasses = getExcludedClasses(testClass);
 
         config = locator.getService(DynamicConfigurationService.class).createDynamicConfiguration();
-        config.addActiveDescriptor(ServerEnvironmentImpl.class);
         addServicesFromLocatorFiles(loader, excludedClasses, getLocatorFilePaths(context));
         addServicesFromPackage(packages, excludedClasses);
         addServices(classes, excludedClasses);
@@ -232,6 +231,12 @@
         final StartupContext startupContext = new StartupContext(startupContextProperties);
         addOneConstant(locator, startupContext);
         addOneConstant(locator, new StaticModulesRegistry(getClassLoader(context), startupContext));
+        String installRoot = startupContext.getArguments().getProperty(Constants.INSTALL_ROOT_PROP_NAME);
+        if (installRoot == null) {
+            addOneConstant(locator, new ServerEnvironmentImpl());
+        } else {
+            addOneConstant(locator, new ServerEnvironmentImpl(new File(installRoot)));
+        }
     }