dotnet/runtime

LdapSessionOptions.ReferralChasing property setter doesn't work on all Linux platforms

开放

#112,146 创建于 2025年2月4日

 (1 条评论) (0 个反应) (0 位负责人)C# (5,445 个派生)batch import
area-System.DirectoryServiceshelp wantedtest-bug

仓库指标

星标
 (17,886 个星标)
PR 合并指标
 (平均合并 12天 11小时) (30 天内合并 661 个 PR)

描述

These tests were recently re-enabled for Linux (all tests were disabled) and a recent DI test run for https://github.com/dotnet/runtime/pull/111877 had failures for:

[Centos.9.Amd64.Open]
[Debian.13.Amd64.Open]
[net10.0-linux-Debug-x64-Mono_Interpreter_Debug-Ubuntu.2204.Amd64.Open]

with test failure:

   at System.DirectoryServices.Protocols.Tests.LdapSessionOptionsTests.ReferralChasing_Set_GetReturnsExpected_On_Linux(ReferralChasingOptions value) in /_/src/libraries/System.DirectoryServices.Protocols/tests/LdapSessionOptionsTests.cs:line 43

Assert.Equal() Failure: Values differ
Expected: None
Actual:   All

Apparently, setting the value for None, which converts to 0 \ false for Linux when setting that bool property doesn't stick and the getter always returns All. Here's the current source for the Linux version of the setter for public ReferralChasingOptions ReferralChasing:

 SetBoolValueHelper(LdapOption.LDAP_OPT_REFERRALS, value == ReferralChasingOptions.All);

This tests past locally for me on Ubuntu.

Flagging as potential test bug, since these other platforms may not support a None options.

贡献者指南