Blueforce-Linux/tests
emirhanmamak-blueforce d2672eb776 fix(offline-repo): read dpkg-deb output in both of its shapes
dpkg-deb prints a BARE VALUE when one control field is requested and
"<Field>: <value>" when several are. Every reader was written for one shape and
broke on the other, so no pool could be read and no pin could be matched against
real files:

- build-index.sh: kept the label, so "Package: curl" failed the name check and
  the pool came out empty -- the build refused with "no .deb files";
- add-packages.sh (read_deb): rejected every genuine .deb as an invalid name;
  (scan_existing): produced empty keys, so a version conflict went undetected
  and the same package was copied twice;
- build-offline-repo.sh: compared a labelled value with a "package=version" pin,
  which can never match.

A first attempt with `sed 's/^Field: //'` was wrong in the other direction: sed
-v prints nothing when the pattern does not match, which emptied the single-field
reads. The label is now dropped only when it is present
(awk: if the first word ends with a colon), which leaves a bare value and a
version like "1:2.3-4" untouched.

Also fixed in build-index.sh: the foreign-file guard did not list
repo-manifest.yaml, the record this script writes into the bundle itself, so
every second build stopped on its own previous output. Accepting it is what
makes a rebuild possible at all.

Tests
- The dpkg-deb stub now reproduces both shapes, the single- and the multi-field
  one. It emitted only one, which is exactly why this class stayed invisible
  while the suite was green.
- The rebuild case mirrors the production layout (record inside the output
  directory) and is proven by mutation: removing repo-manifest.yaml from the
  guard's allow-list turns it red.
2026-09-16 21:57:44 +03:00
..
.gitkeep docs: Blueforce 700-device fleet architecture (TR) - GNOME baseline 2026-09-15 17:03:02 +03:00
check-admin-static.sh feat(install): internet-free install flow, auto-discovered local packages 2026-09-16 16:53:24 +03:00
check-ansible-static.sh feat(field-os): provisioning layer, real ISO build, offline contracts 2026-09-16 11:14:42 +03:00
check-configs.sh feat(field-os): provisioning layer, real ISO build, offline contracts 2026-09-16 11:14:42 +03:00
check-migration-static.sh feat(field-os): provisioning layer, real ISO build, offline contracts 2026-09-16 11:14:42 +03:00
check-offline-repo-static.sh fix(offline-repo): read dpkg-deb output in both of its shapes 2026-09-16 21:57:44 +03:00
check-provisioning-static.sh feat(offline-repo): ship the reviewed package set so installs never download 2026-09-16 19:03:45 +03:00
check-specs.sh feat(field-os): provisioning layer, real ISO build, offline contracts 2026-09-16 11:14:42 +03:00
qemu-field-os-test-plan.md feat(field-os): provisioning layer, real ISO build, offline contracts 2026-09-16 11:14:42 +03:00
run-all.sh feat(bfos): Python operator console, Turkish UI, committable offline packages 2026-09-16 16:15:27 +03:00
semaphore-community-limits.md feat(field-os): provisioning layer, real ISO build, offline contracts 2026-09-16 11:14:42 +03:00
test-field-os-lifecycle.sh feat(field-os): provisioning layer, real ISO build, offline contracts 2026-09-16 11:14:42 +03:00
test-firstboot-static.sh feat(field-os): provisioning layer, real ISO build, offline contracts 2026-09-16 11:14:42 +03:00
test_bfos.py feat(offline-repo): build the APT index so installs work without network 2026-09-16 21:42:27 +03:00
test_bfos_gui_static.py feat(offline-repo): build the APT index so installs work without network 2026-09-16 21:42:27 +03:00