summaryrefslogtreecommitdiff
path: root/test/source
diff options
context:
space:
mode:
Diffstat (limited to 'test/source')
-rw-r--r--test/source/cpp/officeconnection.cxx114
-rw-r--r--test/source/java/OfficeConnection.java64
2 files changed, 103 insertions, 75 deletions
diff --git a/test/source/cpp/officeconnection.cxx b/test/source/cpp/officeconnection.cxx
index 0365484ea9c8..ccfd2cd0a069 100644
--- a/test/source/cpp/officeconnection.cxx
+++ b/test/source/cpp/officeconnection.cxx
@@ -54,57 +54,69 @@ OfficeConnection::OfficeConnection(): process_(0) {}
OfficeConnection::~OfficeConnection() {}
void OfficeConnection::setUp() {
- oslProcessInfo info;
- info.Size = sizeof info;
- CPPUNIT_ASSERT_EQUAL(
- osl_Process_E_None,
- osl_getProcessInfo(0, osl_Process_IDENTIFIER, &info));
- rtl::OUString desc(
- rtl::OUString(
- RTL_CONSTASCII_USTRINGPARAM("pipe,name=oootest")) +
- rtl::OUString::valueOf(static_cast< sal_Int64 >(info.Ident)) +
- rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(";urp")));
- rtl::OUString noquickArg(
- RTL_CONSTASCII_USTRINGPARAM("-quickstart=no"));
- rtl::OUString nofirstArg(
- RTL_CONSTASCII_USTRINGPARAM("-nofirststartwizard"));
- rtl::OUString norestoreArg(RTL_CONSTASCII_USTRINGPARAM("-norestore"));
- rtl::OUString acceptArg(
- rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("-accept=")) + desc);
- rtl::OUString argUser;
+ rtl::OUString desc;
+ rtl::OUString argSoffice;
CPPUNIT_ASSERT(
getArgument(
- rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("user")), &argUser));
- rtl::OUString userArg(
- rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("-env:UserInstallation=")) +
- toAbsoluteFileUrl(argUser));
- rtl::OUString jreArg(
- RTL_CONSTASCII_USTRINGPARAM("-env:UNO_JAVA_JFW_ENV_JREHOME=true"));
- rtl::OUString classpathArg(
- RTL_CONSTASCII_USTRINGPARAM("-env:UNO_JAVA_JFW_ENV_CLASSPATH=true"));
- rtl_uString * args[] = {
- noquickArg.pData, nofirstArg.pData, norestoreArg.pData, acceptArg.pData,
- userArg.pData, jreArg.pData, classpathArg.pData };
- rtl_uString ** envs = 0;
- rtl::OUString argEnv;
- if (getArgument(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("env")), &argEnv))
- {
- envs = &argEnv.pData;
+ rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("soffice")),
+ &argSoffice));
+ if (argSoffice.matchAsciiL(RTL_CONSTASCII_STRINGPARAM("path:"))) {
+ oslProcessInfo info;
+ info.Size = sizeof info;
+ CPPUNIT_ASSERT_EQUAL(
+ osl_Process_E_None,
+ osl_getProcessInfo(0, osl_Process_IDENTIFIER, &info));
+ desc = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("pipe,name=oootest")) +
+ rtl::OUString::valueOf(static_cast< sal_Int64 >(info.Ident));
+ rtl::OUString noquickArg(
+ RTL_CONSTASCII_USTRINGPARAM("-quickstart=no"));
+ rtl::OUString nofirstArg(
+ RTL_CONSTASCII_USTRINGPARAM("-nofirststartwizard"));
+ rtl::OUString norestoreArg(RTL_CONSTASCII_USTRINGPARAM("-norestore"));
+ rtl::OUString acceptArg(
+ rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("-accept=")) + desc +
+ rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(";urp")));
+ rtl::OUString argUser;
+ CPPUNIT_ASSERT(
+ getArgument(
+ rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("user")), &argUser));
+ rtl::OUString userArg(
+ rtl::OUString(
+ RTL_CONSTASCII_USTRINGPARAM("-env:UserInstallation=")) +
+ toAbsoluteFileUrl(argUser));
+ rtl::OUString jreArg(
+ RTL_CONSTASCII_USTRINGPARAM("-env:UNO_JAVA_JFW_ENV_JREHOME=true"));
+ rtl::OUString classpathArg(
+ RTL_CONSTASCII_USTRINGPARAM(
+ "-env:UNO_JAVA_JFW_ENV_CLASSPATH=true"));
+ rtl_uString * args[] = {
+ noquickArg.pData, nofirstArg.pData, norestoreArg.pData,
+ acceptArg.pData, userArg.pData, jreArg.pData, classpathArg.pData };
+ rtl_uString ** envs = 0;
+ rtl::OUString argEnv;
+ if (getArgument(
+ rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("env")), &argEnv))
+ {
+ envs = &argEnv.pData;
+ }
+ CPPUNIT_ASSERT_EQUAL(
+ osl_Process_E_None,
+ osl_executeProcess(
+ toAbsoluteFileUrl(
+ argSoffice.copy(RTL_CONSTASCII_LENGTH("path:"))).pData,
+ args, sizeof args / sizeof args[0], 0, 0, 0, envs,
+ envs == 0 ? 0 : 1, &process_));
+ } else if (argSoffice.matchAsciiL(RTL_CONSTASCII_STRINGPARAM("connect:"))) {
+ desc = argSoffice.copy(RTL_CONSTASCII_LENGTH("connect:"));
+ } else {
+ CPPUNIT_FAIL(
+ "\"soffice\" argument starts with neither \"path:\" nor"
+ " \"connect:\"");
}
- rtl::OUString argPath;
- CPPUNIT_ASSERT(
- getArgument(
- rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("path")), &argPath));
- CPPUNIT_ASSERT_EQUAL(
- osl_Process_E_None,
- osl_executeProcess(
- toAbsoluteFileUrl(argPath).pData, args,
- sizeof args / sizeof args[0], 0, 0, 0, envs, envs == 0 ? 0 : 1,
- &process_));
css::uno::Reference< css::bridge::XUnoUrlResolver > resolver(
css::bridge::UnoUrlResolver::create(
cppu::defaultBootstrap_InitialComponentContext()));
- for (int i = 0;; ++i) {
+ for (;;) {
try {
factory_ =
css::uno::Reference< css::lang::XMultiServiceFactory >(
@@ -113,14 +125,16 @@ void OfficeConnection::setUp() {
desc +
rtl::OUString(
RTL_CONSTASCII_USTRINGPARAM(
- ";StarOffice.ServiceManager"))),
+ ";urp;StarOffice.ServiceManager"))),
css::uno::UNO_QUERY_THROW);
break;
} catch (css::connection::NoConnectException &) {}
- TimeValue delay = { 1, 0 }; // 1 sec
- CPPUNIT_ASSERT_EQUAL(
- osl_Process_E_TimedOut,
- osl_joinProcessWithTimeout(process_, &delay));
+ if (process_ != 0) {
+ TimeValue delay = { 1, 0 }; // 1 sec
+ CPPUNIT_ASSERT_EQUAL(
+ osl_Process_E_TimedOut,
+ osl_joinProcessWithTimeout(process_, &delay));
+ }
}
}
diff --git a/test/source/java/OfficeConnection.java b/test/source/java/OfficeConnection.java
index 6a7ecd277758..6887c3bfa3cd 100644
--- a/test/source/java/OfficeConnection.java
+++ b/test/source/java/OfficeConnection.java
@@ -49,31 +49,41 @@ public final class OfficeConnection {
/** Start up an OOo instance.
*/
public void setUp() throws Exception {
- description = "pipe,name=oootest" + UUID.randomUUID();
- ProcessBuilder pb = new ProcessBuilder(
- getArgument("path"), "-quickstart=no", "-nofirststartwizard",
- "-norestore", "-accept=" + description + ";urp",
- "-env:UserInstallation=" + getArgument("user"),
- "-env:UNO_JAVA_JFW_ENV_JREHOME=true",
- "-env:UNO_JAVA_JFW_ENV_CLASSPATH=true");
- String envArg = getArgument("env");
- if (envArg != null) {
- Map<String, String> env = pb.environment();
- int i = envArg.indexOf("=");
- if (i == -1) {
- env.remove(envArg);
- } else {
- env.put(envArg.substring(0, i), envArg.substring(i + 1));
+ String sofficeArg = getArgument("soffice");
+ if (sofficeArg.startsWith("path:")) {
+ description = "pipe,name=oootest" + UUID.randomUUID();
+ ProcessBuilder pb = new ProcessBuilder(
+ sofficeArg.substring("path:".length()), "-quickstart=no",
+ "-nofirststartwizard", "-norestore",
+ "-accept=" + description + ";urp",
+ "-env:UserInstallation=" + getArgument("user"),
+ "-env:UNO_JAVA_JFW_ENV_JREHOME=true",
+ "-env:UNO_JAVA_JFW_ENV_CLASSPATH=true");
+ String envArg = getArgument("env");
+ if (envArg != null) {
+ Map<String, String> env = pb.environment();
+ int i = envArg.indexOf("=");
+ if (i == -1) {
+ env.remove(envArg);
+ } else {
+ env.put(envArg.substring(0, i), envArg.substring(i + 1));
+ }
}
+ process = pb.start();
+ outForward = new Forward(process.getInputStream(), System.out);
+ outForward.start();
+ errForward = new Forward(process.getErrorStream(), System.err);
+ errForward.start();
+ } else if (sofficeArg.startsWith("connect:")) {
+ description = sofficeArg.substring("connect:".length());
+ } else {
+ fail(
+ "\"soffice\" argument \"" + sofficeArg +
+ " starts with neither \"path:\" nor \"connect:\"");
}
- process = pb.start();
- outForward = new Forward(process.getInputStream(), System.out);
- outForward.start();
- errForward = new Forward(process.getErrorStream(), System.err);
- errForward.start();
XUnoUrlResolver resolver = UnoUrlResolver.create(
Bootstrap.createInitialComponentContext(null));
- for (int i = 0;; ++i) {
+ for (;;) {
try {
factory = UnoRuntime.queryInterface(
XMultiServiceFactory.class,
@@ -82,7 +92,9 @@ public final class OfficeConnection {
";urp;StarOffice.ServiceManager"));
break;
} catch (NoConnectException e) {}
- assertNull(waitForProcess(process, 1000)); // 1 sec
+ if (process != null) {
+ assertNull(waitForProcess(process, 1000)); // 1 sec
+ }
}
}
@@ -103,6 +115,8 @@ public final class OfficeConnection {
// it appears that DisposedExceptions can already happen while
// receiving the response of the terminate call
desktop = null;
+ } else if (process != null) {
+ process.destroy();
}
int code = 0;
if (process != null) {
@@ -194,9 +208,9 @@ public final class OfficeConnection {
return done;
}
- InputStream in;
- PrintStream out;
- boolean done = false;
+ private final InputStream in;
+ private final PrintStream out;
+ private boolean done = false;
}
private String description;