◐ Shell
clean mode source ↗

Use of fullstop character in --%context(<name>)

Describe the bug

Using a full stop character in --%context(<name>) will cause all other contexts in the suite to be executed under an entirely different suite as seen in the output section below. The reason for this I believe is because the way a context name is interpreted as a path to allow users to execute specific contexts.

Version Info

utPLSQL: v3.1.6.2735
SQL Developer: 19.1.0.094

To Reproduce

1. Create tests

create or replace package test_context_bug_1 is

  --%suite

  --%context(suite_1 context_1)

    --%test
    procedure test1;

  --%endcontext
  
  --%context(suite_1 context_2)

    --%test
    procedure test2;

  --%endcontext

end;
/

create or replace package body test_context_bug_1 is

  procedure test1 is
  begin
    ut.expect( 1 ).to_equal( 1 );
  end;

  procedure test2 is
  begin
    ut.expect( 1 ).to_equal( 1 );
  end;

end;
/

create or replace package test_context_bug_2 is

  --%suite
  
  --%context(suite_2 context_1)
  
    --%test
    procedure test1;

  --%endcontext
  
  --%context(suite_2 context_2)

    --%test
    procedure test2;

  --%endcontext

end;
/

create or replace package body test_context_bug_2 is

  procedure test1 is
  begin
    ut.expect( 1 ).to_equal( 1 );
  end;

  procedure test2 is
  begin
    ut.expect( 1 ).to_equal( 1 );
  end;

end;
/

2. Add a full stop in a context name

--%context(suite_2. context_2)  

3. Run tests

SET SERVEROUTPUT ON SIZE UNLIMITED
EXECUTE ut.run(); 

Outputs

Expected output:

test_context_bug_1
  suite_1 context_2
    test2 [.003 sec]
  suite_1 context_1
    test1 [.002 sec]
 
test_context_bug_2
  suite_2 context_2
    test2 [.002 sec]
  suite_2 context_1
    test1 [.002 sec]
 
Finished in .013272 seconds
4 tests, 0 failed, 0 errored, 0 disabled, 0 warning(s)
PL/SQL procedure successfully completed.

Actual output:

test_context_bug_1
  suite_2 context_1
    test1 [.003 sec]
  suite_1 context_2
    test2 [.001 sec]
  suite_1 context_1
    test1 [.001 sec]
 
test_context_bug_2
  suite_2. context_2
    test2 [.003 sec]
 
Finished in .01466 seconds
4 tests, 0 failed, 0 errored, 0 disabled, 0 warning(s)
PL/SQL procedure successfully completed.

Expected behavior

When a full stop is present in --%context(<name>) the other contexts in the suite shouldn't be executed under another suite.