Более простая и прямая коррекция для
Block body expression is on the same line as the block start.
(convention:Layout/MultilineBlockLayout)
может включать следующее:
it {
is_expected.to contain_registry_value('HKLM\SOFTWARE\Policies\Microsoft\something\something\something\000000\Functions').with(
ensure: 'present',
type: 'string',
data: 'ABC_ECDHE_JKL_WITH_ABC_123_RET_ABC_384_521,ABC_ECDHE_JKL_WITH_ABC_123_RET_ABC_384_521 ',
)
}
Правило состоит в том, что старт и конечные разделители блока multiline должны появляться на отдельных строках от чего-либо (кроме пробелов) в теле блока.
Это также все равно будет поднимать флаг, но тот, чье исправление более очевидно. Линтер хочет, чтобы вы использовали do
и end
для разграничения многострочных блоков, так что это то, где вы в конечном итоге хотите быть:
it do
is_expected.to contain_registry_value('HKLM\SOFTWARE\Policies\Microsoft\something\something\something\000000\Functions').with(
ensure: 'present',
type: 'string',
data: 'ABC_ECDHE_JKL_WITH_ABC_123_RET_ABC_384_521,ABC_ECDHE_JKL_WITH_ABC_123_RET_ABC_384_521 ',
)
end
Или, может быть, даже здесь:
it do
is_expected.to contain_registry_value('HKLM\SOFTWARE\Policies\Microsoft\something\something\something\000000\Functions')
.with(
ensure: 'present',
type: 'string',
data: 'ABC_ECDHE_JKL_WITH_ABC_123_RET_ABC_384_521,ABC_ECDHE_JKL_WITH_ABC_123_RET_ABC_384_521 ',
)
end
Я считаю этот последний более читабельным, особенно если вы хотите связать дополнительные предикаты.