Skip to content
Novus Examples
yaml370 B

YAML with a UTF-8 Byte Order Mark

A YAML file beginning with a UTF-8 byte order mark, which the spec permits at the start of a stream. A parser that does not strip it reads the first key as \ufeffname, so the lookup misses and the document appears to be missing its name field.

Preview — first 12 linesyaml
# This file begins with a UTF-8 byte order mark (EF BB BF). The YAML spec allows a BOM at the
# start of a stream, but a parser that does not strip it sees the first key as "name"
# instead of "name" — so the lookup misses and the document looks empty of that field.
name: bom-prefixed-pipeline
stages:
  - build
  - test

settings:
  strict: true
  timeout: 30

Specifications

Encoding
UTF-8 with BOM
Bom Bytes
EF BB BF
Line Endings
LF
Keys
3
Edge Case
an unstripped BOM makes the first key \ufeffname

Testing contract

Expected to pass
Scenario
Load a BOM-prefixed YAML file and look up its first key
Expected result
The key "name" resolves to bom-prefixed-pipeline; a loader that leaves the BOM attached returns no such key

What is a .yaml file?

YAML (YAML Ain't Markup Language) is a human-readable data-serialization format using indentation, key-value pairs, and lists, and is a superset of JSON. It supports comments, anchors, and multiple documents per file, favoring readability for configuration. Its indentation sensitivity makes it error-prone to hand-edit.

How to use this file

Use an example YAML file to test config parsers, indentation and anchor handling, multi-document streams, and safe-loading to avoid arbitrary object construction.

How to use this file for testing

“YAML with a UTF-8 Byte Order Mark” is a deterministic Novus Examples fixture for Config parsing, Encoding detection, Editor testing. TOML and INI configuration files with nested sections and typed values — for testing config parsers and loaders.

Documented properties for this file: UTF-8 with BOM · LF. Compare results against paired or grouped companions on this page when present (clean↔damaged, searchable↔scanned, or format twins) so scores stay reproducible across runs.

Download the file once, keep the path stable in CI or local scripts, and treat the spec table as the contract: dimensions, seeds, field lists, and roles are intentional. Corrupt or invalid samples are labelled as such — expect parsers to fail loudly rather than silently accept them.

Pipeline and infrastructure fixtures are inert configuration: steps reference fictional images and scripts, and nothing here executes. Run your linter, schema validator, migrator, or policy engine against them, and expect the deprecated-syntax and intentionally invalid variants to be rejected.

Point your config loader at the file and assert it reads the documented sections and typed values, including any deliberately-tricky nesting or comments.

Code examples

import yaml  # pip install pyyaml

with open("utf8-bom.yaml") as f:
    data = yaml.safe_load(f)
print(data)

Generated by generation/pipelines.py. Free for any use, no attribution required — license.