[SSSD] [PATCH][ding_libs] Add version symbol files

Lukas Slebodnik lslebodn at redhat.com
Tue Jan 14 18:46:15 UTC 2014


On (13/01/14 16:46), Simo Sorce wrote:
>On Mon, 2014-01-13 at 15:00 -0500, Dmitri Pal wrote:
>> On 01/13/2014 02:53 PM, Stephen Gallagher wrote:
>> > On 01/13/2014 01:42 PM, Lukas Slebodnik wrote:
>> > > ehlo,
>> >
>> > > attached patch addresses ticket #2193
>> >
>> > > I have just a question about refarray/libref_array.sym There is
>> > > extern function ref_array_debug, which is not defined in public
>> > > header file (not exposed in public API), but it is used in
>> > > ref_array unit tests. It needs to be in global section because
>> > > linker with fail to find symbol. Should I add any comment to the
>> > > file libref_array.sym or does anyone better solution?
>> >
>> >
>> > If this isn't a public API and isn't used except by the unit test, it
>> > should probably not be built as part of the library. It should
>> > probably be part of the unit test.
>> 
>> IMO this is conceptually wrong.
>> Unit test emulates external use of the library. Unit test uses only
>> public header and not private headers if any.
>> If we put debug function in the unit test we will expose internal of the
>> library that should not be know outside.
>> I always view unit tests as example of use. If we show that it is OK to
>> include private headers people would include private headers and try to
>> access internal structures directly.
>
>Sorry but I see a few issues with this argument.
>
>You say that unit tests only use the public API, the  you proceed and
>use an undisclosed API that is not made available through the public
>header files ? Isn't this contradictory ?
>
>Also I see nothing wrong in accessing private data via unit tests, I
>never heard anyone have the expectation that unit tests are actually
>examples to follow.
>
>> Putting it into a separate module is probably the cleanest solution but
>> IMO too much overhead.
>
>A separate shared object would be too much, but you can statically link
>the function in the unit tests.
Static linking would work with unit test, but function ref_array_reset is also
used in the file ini/ini_valueobj.c (I forgot to mention it in the 1st mail)

  1065  #ifdef HAVE_TRACE
  1066
  1067          ref_array_debug(vo->raw_lines, 0);
  1068          ref_array_debug(vo->raw_lengths, 1);
  1069  #endif

LS



More information about the sssd-devel mailing list