utPLSQL/utPLSQL-cli

PLS-00306: wrong number or types of arguments in call to 'RUN'

danbuenhombre opened this issue · 2 comments

Probably me being stupid but I can't get tests to run via CLI. I've got version 3.1.9 installed and 3.1.9 installed in the database. No matter what I provide in the -p option, I get the above error.

I've got several tests defined in a suite path starting with "common". Here's an example command.
.\utplsql.bat run -f UT_TFS_JUNIT_REPORTER -o report.xml -p "username:common.test_split" username/password@dbdev:1521/MYDB

In the database, I can run this successfully:
begin ut.run('username:common.test_split'); end;

Here's the output from CLI.
15:42:28.829 [main] DEBUG org.utplsql.cli.Cli - Args: run, -f, UT_TFS_JUNIT_REPORTER, -o, report.xml, -p, username:common.test_split, username/password@dbdev:1521/MYDB
########### utPLSQL cli ############

utPLSQL-cli 3.1.9.local

utPLSQL-java-api 3.1.9.local

Java-Version: 19.0.2

ORACLE_HOME: null

NLS_LANG: null

Thanks for testing!

####################################

Use connection string jdbc:oracle:oci8:/@dbdev:1521/MYDB
Successfully connected to database. UtPLSQL core: v3.1.9.3270
Oracle-Version: 19.0.0.0.0
Running tests now.

TestRunner initialized
Running on utPLSQL v3.1.9.3270
Initializing reporters
Running tests
ORA-06550: line 1, column 7:
PLS-00306: wrong number or types of arguments in call to 'RUN'
ORA-06550: line 1, column 7:
PL/SQL: Statement ignored

java.sql.SQLException: ORA-06550: line 1, column 7:
PLS-00306: wrong number or types of arguments in call to 'RUN'
ORA-06550: line 1, column 7:
PL/SQL: Statement ignored

    at oracle.jdbc.driver.T2CConnection.checkError(T2CConnection.java:1157)
    at oracle.jdbc.driver.T2CConnection.checkError(T2CConnection.java:1054)
    at oracle.jdbc.driver.T2CCallableStatement.executeForDescribe(T2CCallableStatement.java:764)
    at oracle.jdbc.driver.T2CCallableStatement.executeForRows(T2CCallableStatement.java:1007)
    at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1205)
    at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3666)
    at oracle.jdbc.driver.OraclePreparedStatement.execute(OraclePreparedStatement.java:3778)
    at oracle.jdbc.driver.OracleCallableStatement.execute(OracleCallableStatement.java:4251)
    at oracle.jdbc.driver.OraclePreparedStatementWrapper.execute(OraclePreparedStatementWrapper.java:1081)
    at org.utplsql.api.testRunner.DynamicTestRunnerStatement.execute(DynamicTestRunnerStatement.java:84)
    at org.utplsql.api.TestRunner.run(TestRunner.java:223)
    at org.utplsql.cli.RunTestRunnerTask.call(RunTestRunnerTask.java:45)
    at org.utplsql.cli.RunTestRunnerTask.call(RunTestRunnerTask.java:24)
    at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:317)
    at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144)
    at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642)
    at java.base/java.lang.Thread.run(Thread.java:1589)

Caused by: Error : 6550, Position : 6, Sql = BEGIN ut_runner.run(a_paths => :1 , a_reporters => :2 , a_color_console => (case :3 when 1 then true else false end), a_fail_on_errors => (case :4 when 1 then true else false end), a_client_character_set => :5 , a_random_test_order => (case :6 when 1 then true else false end));END;, OriginalSql = BEGIN ut_runner.run(a_paths => ?, a_reporters => ?, a_color_console => (case ? when 1 then true else false end), a_fail_on_errors => (case ? when 1 then true else false end), a_client_character_set => ?, a_random_test_order => (case ? when 1 then true else false end));END;, Error Msg = ORA-06550: line 1, column 7:
PLS-00306: wrong number or types of arguments in call to 'RUN'
ORA-06550: line 1, column 7:
PL/SQL: Statement ignored

    at oracle.jdbc.driver.T2CConnection.checkError(T2CConnection.java:1170)
    ... 16 more

Update. If I log into the database as the owner of the test packages, I get the error. If I log in as a different user it works.

It turns out someone had tried to install utPLSQL in the schema where the tests were compiled. The UT package wasn't there but many other objects were there. Once these objects were removed, it works.