1*b1cdbd2cSJim Jagielski: 2*b1cdbd2cSJim Jagielskieval 'exec perl -wS $0 ${1+"$@"}' 3*b1cdbd2cSJim Jagielski if 0; 4*b1cdbd2cSJim Jagielski#************************************************************** 5*b1cdbd2cSJim Jagielski# 6*b1cdbd2cSJim Jagielski# Licensed to the Apache Software Foundation (ASF) under one 7*b1cdbd2cSJim Jagielski# or more contributor license agreements. See the NOTICE file 8*b1cdbd2cSJim Jagielski# distributed with this work for additional information 9*b1cdbd2cSJim Jagielski# regarding copyright ownership. The ASF licenses this file 10*b1cdbd2cSJim Jagielski# to you under the Apache License, Version 2.0 (the 11*b1cdbd2cSJim Jagielski# "License"); you may not use this file except in compliance 12*b1cdbd2cSJim Jagielski# with the License. You may obtain a copy of the License at 13*b1cdbd2cSJim Jagielski# 14*b1cdbd2cSJim Jagielski# http://www.apache.org/licenses/LICENSE-2.0 15*b1cdbd2cSJim Jagielski# 16*b1cdbd2cSJim Jagielski# Unless required by applicable law or agreed to in writing, 17*b1cdbd2cSJim Jagielski# software distributed under the License is distributed on an 18*b1cdbd2cSJim Jagielski# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 19*b1cdbd2cSJim Jagielski# KIND, either express or implied. See the License for the 20*b1cdbd2cSJim Jagielski# specific language governing permissions and limitations 21*b1cdbd2cSJim Jagielski# under the License. 22*b1cdbd2cSJim Jagielski# 23*b1cdbd2cSJim Jagielski#************************************************************** 24*b1cdbd2cSJim Jagielski 25*b1cdbd2cSJim Jagielski 26*b1cdbd2cSJim Jagielski 27*b1cdbd2cSJim Jagielski# 28*b1cdbd2cSJim Jagielski# deliver.pl - copy from module output tree to solver 29*b1cdbd2cSJim Jagielski# 30*b1cdbd2cSJim Jagielski 31*b1cdbd2cSJim Jagielskimy $progname = "testdefaultbootstrapping"; 32*b1cdbd2cSJim Jagielskimy $defExeExt; 33*b1cdbd2cSJim Jagielski 34*b1cdbd2cSJim Jagielskiif ($ENV{GUI} eq "WNT") { 35*b1cdbd2cSJim Jagielski %services = ( 36*b1cdbd2cSJim Jagielski 'com.sun.star.uno.NamingService' => 'namingservice.uno.dll', 37*b1cdbd2cSJim Jagielski 'com.sun.star.reflection.CoreReflection' => 'reflection.uno.dll', 38*b1cdbd2cSJim Jagielski 'com.sun.star.script.InvocationAdapterFactory' => 'invocadapt.uno.dll', 39*b1cdbd2cSJim Jagielski ); 40*b1cdbd2cSJim Jagielski 41*b1cdbd2cSJim Jagielski $defExeExt = ".exe"; 42*b1cdbd2cSJim Jagielski 43*b1cdbd2cSJim Jagielski} 44*b1cdbd2cSJim Jagielskielse { 45*b1cdbd2cSJim Jagielski %services = ( 46*b1cdbd2cSJim Jagielski 'com.sun.star.uno.NamingService' => 'namingservice.uno.so', 47*b1cdbd2cSJim Jagielski 'com.sun.star.reflection.CoreReflection' => 'reflection.uno.so', 48*b1cdbd2cSJim Jagielski 'com.sun.star.script.InvocationAdapterFactory' => 'invocadapt.uno.so' 49*b1cdbd2cSJim Jagielski ); 50*b1cdbd2cSJim Jagielski 51*b1cdbd2cSJim Jagielski $defExeExt = ""; 52*b1cdbd2cSJim Jagielski} 53*b1cdbd2cSJim Jagielski 54*b1cdbd2cSJim Jagielskisub extendProgName($) { 55*b1cdbd2cSJim Jagielski my $_extension = shift; 56*b1cdbd2cSJim Jagielski my $_result; 57*b1cdbd2cSJim Jagielski 58*b1cdbd2cSJim Jagielski if ($ENV{GUI} eq "WNT") { 59*b1cdbd2cSJim Jagielski $_result = $progname . $_extension; 60*b1cdbd2cSJim Jagielski } 61*b1cdbd2cSJim Jagielski else { 62*b1cdbd2cSJim Jagielski $_result = $ENV{PWD} . "/" . $progname . $_extension; 63*b1cdbd2cSJim Jagielski } 64*b1cdbd2cSJim Jagielski 65*b1cdbd2cSJim Jagielski return $_result; 66*b1cdbd2cSJim Jagielski} 67*b1cdbd2cSJim Jagielski 68*b1cdbd2cSJim Jagielski 69*b1cdbd2cSJim Jagielskisub rmDefRDB() { 70*b1cdbd2cSJim Jagielski unlink $progname . "_services.rdb"; 71*b1cdbd2cSJim Jagielski} 72*b1cdbd2cSJim Jagielski 73*b1cdbd2cSJim Jagielski 74*b1cdbd2cSJim Jagielskisub unregisterService($){ 75*b1cdbd2cSJim Jagielski my $service_name = shift; 76*b1cdbd2cSJim Jagielski 77*b1cdbd2cSJim Jagielski my $rdb_name = $service_name . '.rdb'; 78*b1cdbd2cSJim Jagielski 79*b1cdbd2cSJim Jagielski unlink $rdb_name; 80*b1cdbd2cSJim Jagielski 81*b1cdbd2cSJim Jagielski return 1; 82*b1cdbd2cSJim Jagielski} 83*b1cdbd2cSJim Jagielski 84*b1cdbd2cSJim Jagielskisub testForServices($$$) { 85*b1cdbd2cSJim Jagielski my $_services = shift; 86*b1cdbd2cSJim Jagielski my $_pars = shift; 87*b1cdbd2cSJim Jagielski my $_testexe = shift; 88*b1cdbd2cSJim Jagielski 89*b1cdbd2cSJim Jagielski 90*b1cdbd2cSJim Jagielski# my $_rc = system 'echo', $_testexe, @{$_services}, $_pars; 91*b1cdbd2cSJim Jagielski my $_rc = system $_testexe, @{$_services}, $_pars; 92*b1cdbd2cSJim Jagielski 93*b1cdbd2cSJim Jagielski return $_rc >> 8; 94*b1cdbd2cSJim Jagielski} 95*b1cdbd2cSJim Jagielski 96*b1cdbd2cSJim Jagielski 97*b1cdbd2cSJim Jagielskisub registerService($$){ 98*b1cdbd2cSJim Jagielski my $service_lib = shift; 99*b1cdbd2cSJim Jagielski my $rdb_name = shift; 100*b1cdbd2cSJim Jagielski 101*b1cdbd2cSJim Jagielski# system 'echo', "regcomp -register -r " . $rdb_name . " -c $service_lib"; 102*b1cdbd2cSJim Jagielski my $rc = system "regcomp -register -r " . $rdb_name . " -c $service_lib"; 103*b1cdbd2cSJim Jagielski 104*b1cdbd2cSJim Jagielski 105*b1cdbd2cSJim Jagielski return ! ( $rc >> 8 ); 106*b1cdbd2cSJim Jagielski} 107*b1cdbd2cSJim Jagielski 108*b1cdbd2cSJim Jagielski 109*b1cdbd2cSJim Jagielski 110*b1cdbd2cSJim Jagielskimy $state = 1; 111*b1cdbd2cSJim Jagielskimy @allservices; 112*b1cdbd2cSJim Jagielskimy $allservices_rdbs=""; 113*b1cdbd2cSJim Jagielskimy $rc; 114*b1cdbd2cSJim Jagielskimy $comment; 115*b1cdbd2cSJim Jagielskimy $testexe; 116*b1cdbd2cSJim Jagielski 117*b1cdbd2cSJim Jagielski 118*b1cdbd2cSJim Jagielskisub registerServices() { 119*b1cdbd2cSJim Jagielski use Cwd; 120*b1cdbd2cSJim Jagielski 121*b1cdbd2cSJim Jagielski # ensure that services can not be instantiated 122*b1cdbd2cSJim Jagielski foreach $service ( keys %services ) { 123*b1cdbd2cSJim Jagielski # ensure that the current service is not reachable 124*b1cdbd2cSJim Jagielski unregisterService($service); 125*b1cdbd2cSJim Jagielski $rc = !testForServices([$service], "", $testexe); 126*b1cdbd2cSJim Jagielski if(!$rc) { 127*b1cdbd2cSJim Jagielski $comment = $comment . "\tcouldn't unregister service " . $service . "\n"; 128*b1cdbd2cSJim Jagielski $state = 0; 129*b1cdbd2cSJim Jagielski } 130*b1cdbd2cSJim Jagielski 131*b1cdbd2cSJim Jagielski 132*b1cdbd2cSJim Jagielski # register the service and ensure that it is reachable 133*b1cdbd2cSJim Jagielski $rc = registerService($services{$service}, $service . '.rdb'); 134*b1cdbd2cSJim Jagielski if(!$rc) { 135*b1cdbd2cSJim Jagielski $comment = $comment . "\tcouldn't register service " . $service . "\n"; 136*b1cdbd2cSJim Jagielski $state = 0; 137*b1cdbd2cSJim Jagielski } 138*b1cdbd2cSJim Jagielski 139*b1cdbd2cSJim Jagielski $rc = testForServices([$service], "-env:UNO_SERVICES=" . $service . ".rdb", $testexe); 140*b1cdbd2cSJim Jagielski if(!$rc) { 141*b1cdbd2cSJim Jagielski $comment = $comment . "\tcouldn't reach service " . $service . "\n"; 142*b1cdbd2cSJim Jagielski $state = 0; 143*b1cdbd2cSJim Jagielski } 144*b1cdbd2cSJim Jagielski 145*b1cdbd2cSJim Jagielski # memorize all services 146*b1cdbd2cSJim Jagielski if (length($allservices_rdbs)) { 147*b1cdbd2cSJim Jagielski $allservices_rdbs = $allservices_rdbs . " "; 148*b1cdbd2cSJim Jagielski } 149*b1cdbd2cSJim Jagielski $allservices_rdbs = $allservices_rdbs . "file://" . getcwd() . "/" . $service . ".rdb"; 150*b1cdbd2cSJim Jagielski push @allservices, $service; 151*b1cdbd2cSJim Jagielski } 152*b1cdbd2cSJim Jagielski} 153*b1cdbd2cSJim Jagielski 154*b1cdbd2cSJim Jagielskisub testIndirection() { 155*b1cdbd2cSJim Jagielski #test indirection 156*b1cdbd2cSJim Jagielski $rc = testForServices(['com.sun.star.uno.NamingService'], '-env:UNO_SERVICES=${testrc:Tests:TestKey1}', $testexe); 157*b1cdbd2cSJim Jagielski if (!$rc) { 158*b1cdbd2cSJim Jagielski $comment = $comment . "\tindirection test not passed\n"; 159*b1cdbd2cSJim Jagielski $state = 0; 160*b1cdbd2cSJim Jagielski } 161*b1cdbd2cSJim Jagielski} 162*b1cdbd2cSJim Jagielski 163*b1cdbd2cSJim Jagielski 164*b1cdbd2cSJim Jagielskisub testBeneathExe() { 165*b1cdbd2cSJim Jagielski my $service = 'com.sun.star.reflection.CoreReflection'; 166*b1cdbd2cSJim Jagielski my $_testexe; 167*b1cdbd2cSJim Jagielski 168*b1cdbd2cSJim Jagielski my @_exes = (extendProgName(".exe"), 169*b1cdbd2cSJim Jagielski extendProgName(".Exe"), 170*b1cdbd2cSJim Jagielski extendProgName(".bin"), 171*b1cdbd2cSJim Jagielski extendProgName(".Bin")); 172*b1cdbd2cSJim Jagielski 173*b1cdbd2cSJim Jagielski foreach $_testexe ( @_exes ) { 174*b1cdbd2cSJim Jagielski #test rdb found beneath executable 175*b1cdbd2cSJim Jagielski registerService($services{$service}, $progname . "_services.rdb"); 176*b1cdbd2cSJim Jagielski my $_rc = testForServices([$service], "", $_testexe); 177*b1cdbd2cSJim Jagielski if (!$_rc) { 178*b1cdbd2cSJim Jagielski $comment = $comment . "\tbeneath executable test not passed: " . $_testexe . "\n"; 179*b1cdbd2cSJim Jagielski $state = 0; 180*b1cdbd2cSJim Jagielski } 181*b1cdbd2cSJim Jagielski } 182*b1cdbd2cSJim Jagielski} 183*b1cdbd2cSJim Jagielski 184*b1cdbd2cSJim Jagielskisub testBeneathLib_rdb() { 185*b1cdbd2cSJim Jagielski my $_service = 'com.sun.star.uno.NamingService'; 186*b1cdbd2cSJim Jagielski 187*b1cdbd2cSJim Jagielski use UNO; 188*b1cdbd2cSJim Jagielski 189*b1cdbd2cSJim Jagielski my $_rdb_name; 190*b1cdbd2cSJim Jagielski 191*b1cdbd2cSJim Jagielski if ($ENV{GUI} eq "WNT") { 192*b1cdbd2cSJim Jagielski $_rdb_name = "UNO" . "_services.rdb"; 193*b1cdbd2cSJim Jagielski } 194*b1cdbd2cSJim Jagielski else { 195*b1cdbd2cSJim Jagielski $_rdb_name = "../lib/UNO" . "_services.rdb"; 196*b1cdbd2cSJim Jagielski } 197*b1cdbd2cSJim Jagielski 198*b1cdbd2cSJim Jagielski registerService($services{$_service}, $_rdb_name); 199*b1cdbd2cSJim Jagielski my $_rc = UNO::tryService($_service); 200*b1cdbd2cSJim Jagielski if (!$_rc) { 201*b1cdbd2cSJim Jagielski $comment = $comment . "\tbeneath lib test not passed\n"; 202*b1cdbd2cSJim Jagielski $state = 0; 203*b1cdbd2cSJim Jagielski } 204*b1cdbd2cSJim Jagielski unlink $_rdb_name; 205*b1cdbd2cSJim Jagielski} 206*b1cdbd2cSJim Jagielski 207*b1cdbd2cSJim Jagielskisub testBeneathLib_rc() { 208*b1cdbd2cSJim Jagielski my $_service = 'com.sun.star.uno.NamingService'; 209*b1cdbd2cSJim Jagielski 210*b1cdbd2cSJim Jagielski use UNO; 211*b1cdbd2cSJim Jagielski 212*b1cdbd2cSJim Jagielski my $_rc_name; 213*b1cdbd2cSJim Jagielski 214*b1cdbd2cSJim Jagielski if ($ENV{GUI} eq "WNT") { 215*b1cdbd2cSJim Jagielski $_rc_name = "UNO.ini"; 216*b1cdbd2cSJim Jagielski } 217*b1cdbd2cSJim Jagielski else { 218*b1cdbd2cSJim Jagielski $_rc_name = "../lib/UNOrc"; 219*b1cdbd2cSJim Jagielski } 220*b1cdbd2cSJim Jagielski 221*b1cdbd2cSJim Jagielski my $_rdb_name = "../lib/test.rdb"; 222*b1cdbd2cSJim Jagielski 223*b1cdbd2cSJim Jagielski my $_handle; 224*b1cdbd2cSJim Jagielski open $_handle, ">" . $_rc_name; 225*b1cdbd2cSJim Jagielski print $_handle "UNO_SERVICES=" . $_rdb_name . "\n"; 226*b1cdbd2cSJim Jagielski close $_handle; 227*b1cdbd2cSJim Jagielski 228*b1cdbd2cSJim Jagielski registerService($services{$_service}, $_rdb_name); 229*b1cdbd2cSJim Jagielski my $_rc = UNO::tryService($_service); 230*b1cdbd2cSJim Jagielski if (!$_rc) { 231*b1cdbd2cSJim Jagielski $comment = $comment . "\tbeneath lib rc test not passed\n"; 232*b1cdbd2cSJim Jagielski $state = 0; 233*b1cdbd2cSJim Jagielski } 234*b1cdbd2cSJim Jagielski unlink $_rdb_name; 235*b1cdbd2cSJim Jagielski unlink $_rc_name; 236*b1cdbd2cSJim Jagielski} 237*b1cdbd2cSJim Jagielski 238*b1cdbd2cSJim Jagielskisub testAllAvailable() { 239*b1cdbd2cSJim Jagielski # test that all services are reachable through different rdbs 240*b1cdbd2cSJim Jagielski # change the directory to ensure, that all paths become expanded 241*b1cdbd2cSJim Jagielski chdir ".."; 242*b1cdbd2cSJim Jagielski 243*b1cdbd2cSJim Jagielski $rc = testForServices(\@allservices, "-env:UNO_SERVICES=" . $allservices_rdbs, $testexe); 244*b1cdbd2cSJim Jagielski if (!$rc) { 245*b1cdbd2cSJim Jagielski $comment = $comment . "\tmulti rdb test not passed\n"; 246*b1cdbd2cSJim Jagielski $state = 0; 247*b1cdbd2cSJim Jagielski } 248*b1cdbd2cSJim Jagielski} 249*b1cdbd2cSJim Jagielski 250*b1cdbd2cSJim Jagielski$testexe = extendProgName($defExeExt); 251*b1cdbd2cSJim Jagielski 252*b1cdbd2cSJim JagielskirmDefRDB(); 253*b1cdbd2cSJim JagielskiregisterServices(); 254*b1cdbd2cSJim Jagielski#print "alls:", @allservices, $allservices_rdbs, "\n"; 255*b1cdbd2cSJim Jagielski 256*b1cdbd2cSJim JagielskitestIndirection(); 257*b1cdbd2cSJim JagielskitestBeneathExe(); 258*b1cdbd2cSJim JagielskitestBeneathLib_rc(); 259*b1cdbd2cSJim JagielskitestBeneathLib_rdb(); 260*b1cdbd2cSJim JagielskitestAllAvailable(); 261*b1cdbd2cSJim Jagielski 262*b1cdbd2cSJim Jagielskiprint "**************************\n"; 263*b1cdbd2cSJim Jagielskiif($state) { 264*b1cdbd2cSJim Jagielski print "****** tests passed ******\n"; 265*b1cdbd2cSJim Jagielski} 266*b1cdbd2cSJim Jagielskielse { 267*b1cdbd2cSJim Jagielski print "**** tests NOT passed ****\n"; 268*b1cdbd2cSJim Jagielski print "Commnent:\n", $comment, "\n"; 269*b1cdbd2cSJim Jagielski} 270*b1cdbd2cSJim Jagielskiprint "**************************\n"; 271*b1cdbd2cSJim Jagielski 272*b1cdbd2cSJim Jagielski 273*b1cdbd2cSJim Jagielski 274