| : |
| eval 'exec perl -wS $0 ${1+"$@"}' |
| if 0; |
| #************************************************************** |
| # |
| # Licensed to the Apache Software Foundation (ASF) under one |
| # or more contributor license agreements. See the NOTICE file |
| # distributed with this work for additional information |
| # regarding copyright ownership. The ASF licenses this file |
| # to you under the Apache License, Version 2.0 (the |
| # "License"); you may not use this file except in compliance |
| # with the License. You may obtain a copy of the License at |
| # |
| # http://www.apache.org/licenses/LICENSE-2.0 |
| # |
| # Unless required by applicable law or agreed to in writing, |
| # software distributed under the License is distributed on an |
| # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| # KIND, either express or implied. See the License for the |
| # specific language governing permissions and limitations |
| # under the License. |
| # |
| #************************************************************** |
| |
| |
| |
| # |
| # deliver.pl - copy from module output tree to solver |
| # |
| |
| my $progname = "testdefaultbootstrapping"; |
| my $defExeExt; |
| |
| if ($ENV{GUI} eq "WNT") { |
| %services = ( |
| 'com.sun.star.uno.NamingService' => 'namingservice.uno.dll', |
| 'com.sun.star.reflection.CoreReflection' => 'reflection.uno.dll', |
| 'com.sun.star.script.InvocationAdapterFactory' => 'invocadapt.uno.dll', |
| ); |
| |
| $defExeExt = ".exe"; |
| |
| } |
| else { |
| %services = ( |
| 'com.sun.star.uno.NamingService' => 'namingservice.uno.so', |
| 'com.sun.star.reflection.CoreReflection' => 'reflection.uno.so', |
| 'com.sun.star.script.InvocationAdapterFactory' => 'invocadapt.uno.so' |
| ); |
| |
| $defExeExt = ""; |
| } |
| |
| sub extendProgName($) { |
| my $_extension = shift; |
| my $_result; |
| |
| if ($ENV{GUI} eq "WNT") { |
| $_result = $progname . $_extension; |
| } |
| else { |
| $_result = $ENV{PWD} . "/" . $progname . $_extension; |
| } |
| |
| return $_result; |
| } |
| |
| |
| sub rmDefRDB() { |
| unlink $progname . "_services.rdb"; |
| } |
| |
| |
| sub unregisterService($){ |
| my $service_name = shift; |
| |
| my $rdb_name = $service_name . '.rdb'; |
| |
| unlink $rdb_name; |
| |
| return 1; |
| } |
| |
| sub testForServices($$$) { |
| my $_services = shift; |
| my $_pars = shift; |
| my $_testexe = shift; |
| |
| |
| # my $_rc = system 'echo', $_testexe, @{$_services}, $_pars; |
| my $_rc = system $_testexe, @{$_services}, $_pars; |
| |
| return $_rc >> 8; |
| } |
| |
| |
| sub registerService($$){ |
| my $service_lib = shift; |
| my $rdb_name = shift; |
| |
| # system 'echo', "regcomp -register -r " . $rdb_name . " -c $service_lib"; |
| my $rc = system "regcomp -register -r " . $rdb_name . " -c $service_lib"; |
| |
| |
| return ! ( $rc >> 8 ); |
| } |
| |
| |
| |
| my $state = 1; |
| my @allservices; |
| my $allservices_rdbs=""; |
| my $rc; |
| my $comment; |
| my $testexe; |
| |
| |
| sub registerServices() { |
| use Cwd; |
| |
| # ensure that services can not be instantiated |
| foreach $service ( keys %services ) { |
| # ensure that the current service is not reachable |
| unregisterService($service); |
| $rc = !testForServices([$service], "", $testexe); |
| if(!$rc) { |
| $comment = $comment . "\tcouldn't unregister service " . $service . "\n"; |
| $state = 0; |
| } |
| |
| |
| # register the service and ensure that it is reachable |
| $rc = registerService($services{$service}, $service . '.rdb'); |
| if(!$rc) { |
| $comment = $comment . "\tcouldn't register service " . $service . "\n"; |
| $state = 0; |
| } |
| |
| $rc = testForServices([$service], "-env:UNO_SERVICES=" . $service . ".rdb", $testexe); |
| if(!$rc) { |
| $comment = $comment . "\tcouldn't reach service " . $service . "\n"; |
| $state = 0; |
| } |
| |
| # memorize all services |
| if (length($allservices_rdbs)) { |
| $allservices_rdbs = $allservices_rdbs . " "; |
| } |
| $allservices_rdbs = $allservices_rdbs . "file://" . getcwd() . "/" . $service . ".rdb"; |
| push @allservices, $service; |
| } |
| } |
| |
| sub testIndirection() { |
| #test indirection |
| $rc = testForServices(['com.sun.star.uno.NamingService'], '-env:UNO_SERVICES=${testrc:Tests:TestKey1}', $testexe); |
| if (!$rc) { |
| $comment = $comment . "\tindirection test not passed\n"; |
| $state = 0; |
| } |
| } |
| |
| |
| sub testBeneathExe() { |
| my $service = 'com.sun.star.reflection.CoreReflection'; |
| my $_testexe; |
| |
| my @_exes = (extendProgName(".exe"), |
| extendProgName(".Exe"), |
| extendProgName(".bin"), |
| extendProgName(".Bin")); |
| |
| foreach $_testexe ( @_exes ) { |
| #test rdb found beneath executable |
| registerService($services{$service}, $progname . "_services.rdb"); |
| my $_rc = testForServices([$service], "", $_testexe); |
| if (!$_rc) { |
| $comment = $comment . "\tbeneath executable test not passed: " . $_testexe . "\n"; |
| $state = 0; |
| } |
| } |
| } |
| |
| sub testBeneathLib_rdb() { |
| my $_service = 'com.sun.star.uno.NamingService'; |
| |
| use UNO; |
| |
| my $_rdb_name; |
| |
| if ($ENV{GUI} eq "WNT") { |
| $_rdb_name = "UNO" . "_services.rdb"; |
| } |
| else { |
| $_rdb_name = "../lib/UNO" . "_services.rdb"; |
| } |
| |
| registerService($services{$_service}, $_rdb_name); |
| my $_rc = UNO::tryService($_service); |
| if (!$_rc) { |
| $comment = $comment . "\tbeneath lib test not passed\n"; |
| $state = 0; |
| } |
| unlink $_rdb_name; |
| } |
| |
| sub testBeneathLib_rc() { |
| my $_service = 'com.sun.star.uno.NamingService'; |
| |
| use UNO; |
| |
| my $_rc_name; |
| |
| if ($ENV{GUI} eq "WNT") { |
| $_rc_name = "UNO.ini"; |
| } |
| else { |
| $_rc_name = "../lib/UNOrc"; |
| } |
| |
| my $_rdb_name = "../lib/test.rdb"; |
| |
| my $_handle; |
| open $_handle, ">" . $_rc_name; |
| print $_handle "UNO_SERVICES=" . $_rdb_name . "\n"; |
| close $_handle; |
| |
| registerService($services{$_service}, $_rdb_name); |
| my $_rc = UNO::tryService($_service); |
| if (!$_rc) { |
| $comment = $comment . "\tbeneath lib rc test not passed\n"; |
| $state = 0; |
| } |
| unlink $_rdb_name; |
| unlink $_rc_name; |
| } |
| |
| sub testAllAvailable() { |
| # test that all services are reachable through different rdbs |
| # change the directory to ensure, that all paths become expanded |
| chdir ".."; |
| |
| $rc = testForServices(\@allservices, "-env:UNO_SERVICES=" . $allservices_rdbs, $testexe); |
| if (!$rc) { |
| $comment = $comment . "\tmulti rdb test not passed\n"; |
| $state = 0; |
| } |
| } |
| |
| $testexe = extendProgName($defExeExt); |
| |
| rmDefRDB(); |
| registerServices(); |
| #print "alls:", @allservices, $allservices_rdbs, "\n"; |
| |
| testIndirection(); |
| testBeneathExe(); |
| testBeneathLib_rc(); |
| testBeneathLib_rdb(); |
| testAllAvailable(); |
| |
| print "**************************\n"; |
| if($state) { |
| print "****** tests passed ******\n"; |
| } |
| else { |
| print "**** tests NOT passed ****\n"; |
| print "Commnent:\n", $comment, "\n"; |
| } |
| print "**************************\n"; |
| |
| |
| |