publicreadfixture

package
v0.6.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 24, 2026 License: AGPL-3.0 Imports: 9 Imported by: 0

Documentation

Overview

Package publicreadfixture — фикстуры доставки стадии S5 (kaname#856) и их законные близнецы с ВЫЧИСЛЕННОЙ дельтой.

Приёмка: docs/engineering/acceptance/anonymous-and-authenticated-are-subject-classes.md, П6, SC-60…73.

Зачем отдельный пакет, а не по копии в каждой пробе

Фикстура новой редакции манифеста registry нужна пробам ПЯТИ пакетов сразу (manifest, modelrender, modelcompose, reconcile, access_binding). Копия в каждом — пять мест об одном предмете; разойдясь, они дали бы пробы, зелёные по разным манифестам. Так же устроен `catalogfixture`.

Близнец строится ПРАВКОЙ, а дельту считает пакет, а не автор

Отрицательному кейсу положен положительный близнец, отличающийся ровно одним фактом. Объявление «отличается одним» здесь не принимается на веру: всякий близнец строится из документа-основы заменой, и Delta сверяет вычисленную разницу строк с объявленной. Близнец, меняющий два факта, отвергается раньше, чем проба дойдёт до испытуемого: вердикта держателя он не даёт.

Index

Constants

View Source
const (
	// NewEditionFile — манифест registry новой редакции (kacho#3274): ключ на
	// `registries` и раздел `roles` с ролью `registry.public.read`.
	NewEditionFile = "registry.public-read-fixture.yaml"
	// PriorEditionFile — раздел `resources` манифеста registry kacho @a95248464.
	PriorEditionFile = "registry.prior-edition-fixture.yaml"
	// ProbemodFile — модуль, отличный от registry (SC-65 «И»).
	ProbemodFile = "probemod.public-read-fixture.yaml"
	// ChildrenProbemodFile — модуль трёх уровней родства (П3 приёмки
	// `nested-rule-reaches-descendants-of-a-named-container.md`, kaname#874):
	// глубину вложенного правила утверждают на нём (ND-08).
	ChildrenProbemodFile = "probemod.children-fixture.yaml"
)

Имена файлов фикстур в `internal/manifest/testdata`.

View Source
const (
	PublicReadRoleName = "registry.public.read"
	PublicReadRoleID   = "rolb1325b011aa17211d"
)

PublicReadRoleName / PublicReadRoleID — роль Р9 п. 4 и её id ('rol' || substr(md5(имя), 1, 17)).

View Source
const (
	Key = "publicReadToChildren"
)

Ключ и его единственная законная форма (Р9 «Способ»: ключ либо отсутствует, либо равен true).

View Source
const ViewerRoleID = "probemod.viewer"

ViewerRoleID — роль, которую дописывает WithRoles: форма `<модуль>.<имя>` модуля фикстуры `probemod`.

Variables

This section is empty.

Functions

func Delta

func Delta(base, twin []byte) (removed, added []string)

Delta — разница двух документов построчно: строки, которых нет во втором (removed), и строки, которых нет в первом (added). Порядок — порядок появления. Повторяющиеся строки считаются кратностью.

func KeyMovedToRepositories

func KeyMovedToRepositories(doc []byte) ([]byte, error)

KeyMovedToRepositories — третья форма SC-70 (в): ключ стоит на `repositories` (`resources[1]`) вместо `registries`. Один факт — ресурс, на котором стоит ключ: строка ключа уходит из одного ресурса и встаёт в другой.

func OneWordInRegistriesNote

func OneWordInRegistriesNote(doc []byte) ([]byte, error)

OneWordInRegistriesNote — третья форма SC-70 (г): в авторском примечании ресурса `registries` изменено одно слово. Дельта — одна строка заменена одной, и отличаются они ровно одним словом.

func OnlyPublicReadRole

func OnlyPublicReadRole(doc []byte) ([]byte, error)

OnlyPublicReadRole — документ, в разделе `roles` которого осталась одна роль `registry.public.read`: вычеркнуты пробные роли kaname#874, стоящие после неё (их kacho#3274 не вносит). Это редакция ровно в том составе, в каком её доставляет kacho#3274: правило `[get, list]` над `registries` с вложенным `[get, list]` над `repositories`.

Нужен пробам, чьи числа — свойство этой одной роли: пробные роли добавили бы к переписи свои пары, и число мерило бы состав фикстуры, а не предмет.

func Read

func Read(name string) ([]byte, error)

Read — байты фикстуры по имени файла.

func Reformatted added in v0.6.0

func Reformatted(doc []byte) ([]byte, error)

Reformatted — тот же документ в ИНОЙ ЗАПИСИ, без изменения смысла:

  • блоки ключей верхнего уровня переставлены в обратном порядке (блок — строка ключа в первой колонке и все строки до следующей такой);
  • добавлена строка комментария;
  • последовательность `parents: [project]` записана блоком;
  • значение `module` взято в двойные кавычки.

Отказывает, если хоть одна из правок не нашла своего места: близнец, в котором правка не применилась, отличался бы от исходника меньшим, чем объявлено, и проба «переформатирование — не конфликт» зеленела бы на неизменном документе.

func WithEmptyRoles added in v0.6.0

func WithEmptyRoles(doc []byte) ([]byte, error)

WithEmptyRoles дописывает `roles: []` — раздел объявлен и пуст (документ `E(n, open)`): применитель ролей снимает роли модуля, которых раздел не называет.

func WithKeyValue

func WithKeyValue(doc []byte, value string) ([]byte, error)

WithKeyValue — близнец «ключ равен <value>» (SC-71 (в): `false`). Дельта — одна строка заменена одной.

func WithRevision added in v0.6.0

func WithRevision(doc []byte, n int64) ([]byte, error)

WithRevision вписывает `revision: n` (десятичной записью). Если ключ уже есть, заменяется ровно его строка; иначе строка вставляется за строкой `module`. Разность с исходником — ровно эта строка.

func WithRevisionText added in v0.6.0

func WithRevisionText(doc []byte, text string) ([]byte, error)

WithRevisionText — то же, но значение вписывается ТЕКСТОМ как есть: так пишутся отрицательные кейсы формы значения (`0x10`, `"5"`, `1.5`, `~`).

func WithRoleDescription added in v0.6.0

func WithRoleDescription(doc []byte, id, description string) ([]byte, error)

WithRoleDescription заменяет текст описания роли id на description (документ `I~(n)` приёмки: равный номер, иное содержимое без типов вне канона). Значение пишется строкой в двойных кавычках (`strconv.Quote`), отступ берётся у заменяемой строки. Роль ищется по строке `- id: <id>` раздела `roles`, а строка описания — внутри её элемента, до следующего элемента; отсутствие роли, её описания либо повтор роли — отказ фикстуры, а не правка «где нашлось». Разность с исходником — ровно строка `description` этой роли.

func WithRoles added in v0.6.0

func WithRoles(doc []byte, description string) ([]byte, error)

WithRoles дописывает в конец раздел `roles` из одной роли кластерного яруса: `id: probemod.viewer`, описание `description` ВПИСАНО КАК ЕСТЬ, без кавычек (так пишутся документы `Q(n, open, t)`: тег скаляра описания назначает разборщик), правило — `get` над `boxes`.

func WithoutKey

func WithoutKey(doc []byte) ([]byte, error)

WithoutKey — близнец «ключ отсутствует»: вычеркнута ровно одна строка ключа. Дельта сверяется: удалена одна строка, добавлено ноль.

func WithoutRevision added in v0.6.0

func WithoutRevision(doc []byte) ([]byte, error)

WithoutRevision вычёркивает строку ключа `revision`. Разность — ровно она.

func WithoutRoles

func WithoutRoles(doc []byte) ([]byte, error)

WithoutRoles — документ без раздела `roles` (всё от строки `roles:` до конца). Нужен там, где близнецу положено нести ровно прежний состав ролей.

Types

This section is empty.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL