Skip to content

Multiple spaces are replaced by single spaces in failure message #140

Closed
@erikvanroon

Description

@erikvanroon

When the actual or expected value has multiple consecutive spaces and the test fails, the message on the failures tab shows both values with all multi-spaces replaced by a single one.
(See test script below)

This is annoying because at first I couldn't figure out why a test was failing because the message showed identical strings for actual and expected.
Running the test from SQLcl showed that actual had an extra space which isn't visible in feedback from the plugin.

Test Suite to reproduce

create or replace package ut_spaces
authid definer
is
    -- %suite(Test Plugin Output)

    -- %context(Multiple spaces in values)

        -- %test(Multiple spaces in actual)
        procedure multi_space_actual;

        -- %test(Multiple spaces in expect)
        procedure multi_space_expect;

    -- %endcontext

end ut_spaces;
/

create or replace package body ut_spaces
is

    -- Multiple spaces in actual
    procedure multi_space_actual
    is
        l_expect   varchar2(100);
        l_actual   varchar2(100);
    begin
        l_expect := 'This line has spaces';
        l_actual := 'This          line          has          spaces';

        ut.expect(l_actual).to_equal(l_expect);
    end;


    -- Multiple spaces in expect
    procedure multi_space_expect
    is
        l_expect   varchar2(100);
        l_actual   varchar2(100);
    begin
        l_expect := 'This          line          has          spaces';
        l_actual := 'This line has spaces';

        ut.expect(l_actual).to_equal(l_expect);
    end;

end ut_spaces;
/

In SQL Developer plugin
Running hese tests the plugin will report on the Failures tab:

Actual: 'This line has spaces' (varchar2) was expected to equal: 'This line has spaces' (varchar2)
at "ERO.UT_SPACES.MULTI_SPACE_ACTUAL", line 13 ut.expect(l_actual).to_equal(l_expect);

Note how all multiple spaces have been replaced by single spaces.

In SQLcl

Running the tests in SQLcl does show the multiple spaces
ERO@EVROCS>exec ut.run ('ut_spaces')
Test Plugin Output
  Multiple spaces in values
    Multiple spaces in actual [,481 sec] (FAILED - 1)
    Multiple spaces in expect [,004 sec] (FAILED - 2)

Failures:

  1) multi_space_actual
      Actual: 'This          line          has          spaces' (varchar2) was expected to equal: 'This line has spaces' (varchar2)
      at "ERO.UT_SPACES.MULTI_SPACE_ACTUAL", line 13 ut.expect(l_actual).to_equal(l_expect);

  2) multi_space_expect
      Actual: 'This line has spaces' (varchar2) was expected to equal: 'This          line          has          spaces' (varchar2)
      at "ERO.UT_SPACES.MULTI_SPACE_EXPECT", line 26 ut.expect(l_actual).to_equal(l_expect);

Finished in ,487971 seconds
2 tests, 2 failed, 0 errored, 0 disabled, 0 warning(s)


PL/SQL procedure successfully completed.

Metadata

Metadata

Labels

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions