Skip to content
Novus Examples
yaml916 B

YAML Norway Problem (Boolean Coercion)

The Norway problem in full: eleven bare words that a YAML 1.1 resolver turns into booleans, a matching quoted control group that survives, and a country-code list where position two silently becomes false. The definitive fixture for resolver-version behaviour.

Preview — first 35 linesyaml
# The Norway problem. Under the YAML 1.1 resolver — PyYAML, SnakeYAML's default, Ruby Psych —
# every bare word below on the left of the `unquoted` map resolves to a BOOLEAN. The country
# code for Norway becomes false, `y` and `n` become true and false, and `on`/`off` join them.
# YAML 1.2's core schema resolves only true and false, so most of this stays a string there.
#
# The fix is always the same: quote it. The `quoted` map shows the same values surviving.
unquoted:
  norway: NO
  yes_word: yes
  no_word: no
  on_word: on
  off_word: off
  y_letter: y
  n_letter: n
  true_word: true
  false_word: false
  True_title: True
  OFF_upper: OFF

quoted:
  norway: "NO"
  yes_word: "yes"
  on_word: "on"
  y_letter: "y"

country_codes:
  - GB
  - NO
  - SE
  - FI

expected_note: >-
  Under YAML 1.1 the country_codes list contains a boolean in position two.
  Under YAML 1.2 core it contains four strings.

Specifications

Coerced Under Yaml11
11
Quoted Controls
4
Country Code Affected
NO
Yaml12 Core Schema
only true/false resolve as boolean

Testing contract

Expected to recover
Scenario
Load a document containing bare NO, yes, on, off, y and n under each YAML schema version
Expected result
A YAML 1.1 loader returns booleans for all eleven unquoted values including NO, while a YAML 1.2 core-schema loader returns strings for all but true and false

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 Norway Problem (Boolean Coercion)” 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: YAML · 916 bytes. 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("norway-problem.yaml") as f:
    data = yaml.safe_load(f)
print(data)

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