From 4114c20faa7864c17fa7226227b2b5069a62729e Mon Sep 17 00:00:00 2001 From: Ryan Gonzalez <ryan.gonzalez@collabora.com> Date: Fri, 26 Aug 2022 09:24:39 -0500 Subject: [PATCH] Preserve trailing newlines during rebase Bash likes to remove these, which meant the metadata that went inside the new commit didn't actually match the file it was read from. https://gitlab.apertis.org/infrastructure/apertis-issues/-/issues/170 Signed-off-by: Ryan Gonzalez <ryan.gonzalez@collabora.com> --- generate_pipeline.py | 4 +++- tests/test_build_pipelines.py | 4 ++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/generate_pipeline.py b/generate_pipeline.py index 7a092d5..b5934d0 100755 --- a/generate_pipeline.py +++ b/generate_pipeline.py @@ -79,7 +79,9 @@ for ref in $refs; do message=$(ostree show "$prev" \\ | grep '^ ' \\ | sed 's/^ *//g') - metadata=$(ostree cat "$prev" metadata) + # Trick to preserve any trailing newlines: + # https://unix.stackexchange.com/a/383411/117660 + IFS= read -rd '' metadata < <(ostree cat "$prev" metadata) echo 'Applying new changes on top of remote...' ostree commit -b "$ref" -m "$message" \\ diff --git a/tests/test_build_pipelines.py b/tests/test_build_pipelines.py index 85ba50c..a53ed97 100644 --- a/tests/test_build_pipelines.py +++ b/tests/test_build_pipelines.py @@ -497,6 +497,10 @@ def test_subsummaries_flatpak_metadata(subsummaries): for ref, (_commit_size, _commit_checksum, ref_metadata) in refs: flatpak_metadata = ref_metadata['xa.data'][2] + # The metadata file should have a single trailing newline. + assert flatpak_metadata.endswith('\n') + assert not flatpak_metadata.endswith('\n\n') + keyfile = GLib.KeyFile.new() keyfile.load_from_bytes(GLib.Bytes.new(flatpak_metadata.encode('ascii')), 0) -- GitLab