diff --git a/generate_pipeline.py b/generate_pipeline.py
index 7a092d581f9be4bf6554fe8948338e278e04ddf0..b5934d0bfc4a1de6044d6012255e9b371221f8eb 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/approved_files/test_approval.test_apps.main.main_only.with_sign.with_tests.with_flatpakrepo.deps_sign_none.approved.yaml b/tests/approved_files/test_approval.test_apps.main.main_only.with_sign.with_tests.with_flatpakrepo.deps_sign_none.approved.yaml
index b1b05df97fb21a02dd6b92806646d6639d9fa27a..392c7f253dd9fe9da804c7a23532fa2d480dd3ee 100644
--- a/tests/approved_files/test_approval.test_apps.main.main_only.with_sign.with_tests.with_flatpakrepo.deps_sign_none.approved.yaml
+++ b/tests/approved_files/test_approval.test_apps.main.main_only.with_sign.with_tests.with_flatpakrepo.deps_sign_none.approved.yaml
@@ -325,7 +325,9 @@ publish app org.test.Test-1 (x86_64):
                   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" \
@@ -406,7 +408,9 @@ publish app org.test.Test-1 (aarch64):
                   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" \
@@ -487,7 +491,9 @@ publish app org.test.Test-1 (arm):
                   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" \
@@ -568,7 +574,9 @@ publish app org.test.Test-2 (x86_64):
                   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" \
@@ -649,7 +657,9 @@ publish app org.test.Test-2 (aarch64):
                   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" \
@@ -730,7 +740,9 @@ publish app org.test.Test-2 (arm):
                   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/approved_files/test_approval.test_apps.main.main_only.without_sign.with_tests.with_flatpakrepo.deps_sign_ed25519.approved.yaml b/tests/approved_files/test_approval.test_apps.main.main_only.without_sign.with_tests.with_flatpakrepo.deps_sign_ed25519.approved.yaml
index a519b3390aa763c9df00f93e347abc0de1a55c19..07a05af2f51e74fdcb95501ea7c877b03912383f 100644
--- a/tests/approved_files/test_approval.test_apps.main.main_only.without_sign.with_tests.with_flatpakrepo.deps_sign_ed25519.approved.yaml
+++ b/tests/approved_files/test_approval.test_apps.main.main_only.without_sign.with_tests.with_flatpakrepo.deps_sign_ed25519.approved.yaml
@@ -325,7 +325,9 @@ publish app org.test.Test-1 (x86_64):
                   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" \
@@ -405,7 +407,9 @@ publish app org.test.Test-1 (aarch64):
                   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" \
@@ -485,7 +489,9 @@ publish app org.test.Test-1 (arm):
                   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" \
@@ -565,7 +571,9 @@ publish app org.test.Test-2 (x86_64):
                   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" \
@@ -645,7 +653,9 @@ publish app org.test.Test-2 (aarch64):
                   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" \
@@ -725,7 +735,9 @@ publish app org.test.Test-2 (arm):
                   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/approved_files/test_approval.test_apps.main.main_only.without_sign.without_tests.without_flatpakrepo.deps_sign_gpg.approved.yaml b/tests/approved_files/test_approval.test_apps.main.main_only.without_sign.without_tests.without_flatpakrepo.deps_sign_gpg.approved.yaml
index ce01a9f1a233f47503dc32589dc56ef1167af021..6c1205842bfd27991e0230fbc197243c9ae0c7b8 100644
--- a/tests/approved_files/test_approval.test_apps.main.main_only.without_sign.without_tests.without_flatpakrepo.deps_sign_gpg.approved.yaml
+++ b/tests/approved_files/test_approval.test_apps.main.main_only.without_sign.without_tests.without_flatpakrepo.deps_sign_gpg.approved.yaml
@@ -192,7 +192,9 @@ publish app org.test.Test-1 (x86_64):
                   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" \
@@ -272,7 +274,9 @@ publish app org.test.Test-1 (aarch64):
                   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" \
@@ -352,7 +356,9 @@ publish app org.test.Test-1 (arm):
                   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" \
@@ -432,7 +438,9 @@ publish app org.test.Test-2 (x86_64):
                   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" \
@@ -512,7 +520,9 @@ publish app org.test.Test-2 (aarch64):
                   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" \
@@ -592,7 +602,9 @@ publish app org.test.Test-2 (arm):
                   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/approved_files/test_approval.test_apps.main.versioned.with_sign.with_tests.with_flatpakrepo.deps_sign_none.approved.yaml b/tests/approved_files/test_approval.test_apps.main.versioned.with_sign.with_tests.with_flatpakrepo.deps_sign_none.approved.yaml
index dfd22551ef901d7563684d9b4050d2858d9b600e..e1eca0b9036f2e5d9e08a65fc8576c2e74e007f5 100644
--- a/tests/approved_files/test_approval.test_apps.main.versioned.with_sign.with_tests.with_flatpakrepo.deps_sign_none.approved.yaml
+++ b/tests/approved_files/test_approval.test_apps.main.versioned.with_sign.with_tests.with_flatpakrepo.deps_sign_none.approved.yaml
@@ -325,7 +325,9 @@ publish app org.test.Test-1 (x86_64):
                   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" \
@@ -406,7 +408,9 @@ publish app org.test.Test-1 (aarch64):
                   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" \
@@ -487,7 +491,9 @@ publish app org.test.Test-1 (arm):
                   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" \
@@ -568,7 +574,9 @@ publish app org.test.Test-2 (x86_64):
                   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" \
@@ -649,7 +657,9 @@ publish app org.test.Test-2 (aarch64):
                   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" \
@@ -730,7 +740,9 @@ publish app org.test.Test-2 (arm):
                   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/approved_files/test_approval.test_apps.main.versioned.without_sign.with_tests.with_flatpakrepo.deps_sign_ed25519.approved.yaml b/tests/approved_files/test_approval.test_apps.main.versioned.without_sign.with_tests.with_flatpakrepo.deps_sign_ed25519.approved.yaml
index 34d70f3752470f927de8e9dee77b1812990e7da6..a35c57de7970a029addaca60421ef7e1df91b2ca 100644
--- a/tests/approved_files/test_approval.test_apps.main.versioned.without_sign.with_tests.with_flatpakrepo.deps_sign_ed25519.approved.yaml
+++ b/tests/approved_files/test_approval.test_apps.main.versioned.without_sign.with_tests.with_flatpakrepo.deps_sign_ed25519.approved.yaml
@@ -325,7 +325,9 @@ publish app org.test.Test-1 (x86_64):
                   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" \
@@ -405,7 +407,9 @@ publish app org.test.Test-1 (aarch64):
                   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" \
@@ -485,7 +489,9 @@ publish app org.test.Test-1 (arm):
                   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" \
@@ -565,7 +571,9 @@ publish app org.test.Test-2 (x86_64):
                   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" \
@@ -645,7 +653,9 @@ publish app org.test.Test-2 (aarch64):
                   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" \
@@ -725,7 +735,9 @@ publish app org.test.Test-2 (arm):
                   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/approved_files/test_approval.test_apps.main.versioned.without_sign.without_tests.without_flatpakrepo.deps_sign_gpg.approved.yaml b/tests/approved_files/test_approval.test_apps.main.versioned.without_sign.without_tests.without_flatpakrepo.deps_sign_gpg.approved.yaml
index 933414e38d505582682fe95c27653d471992d4cc..7f60bfd1f559d396ce007b566cf0e369b54f07c6 100644
--- a/tests/approved_files/test_approval.test_apps.main.versioned.without_sign.without_tests.without_flatpakrepo.deps_sign_gpg.approved.yaml
+++ b/tests/approved_files/test_approval.test_apps.main.versioned.without_sign.without_tests.without_flatpakrepo.deps_sign_gpg.approved.yaml
@@ -192,7 +192,9 @@ publish app org.test.Test-1 (x86_64):
                   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" \
@@ -272,7 +274,9 @@ publish app org.test.Test-1 (aarch64):
                   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" \
@@ -352,7 +356,9 @@ publish app org.test.Test-1 (arm):
                   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" \
@@ -432,7 +438,9 @@ publish app org.test.Test-2 (x86_64):
                   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" \
@@ -512,7 +520,9 @@ publish app org.test.Test-2 (aarch64):
                   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" \
@@ -592,7 +602,9 @@ publish app org.test.Test-2 (arm):
                   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/approved_files/test_approval.test_apps.test.main_only.with_sign.with_tests.with_flatpakrepo.deps_sign_none.approved.yaml b/tests/approved_files/test_approval.test_apps.test.main_only.with_sign.with_tests.with_flatpakrepo.deps_sign_none.approved.yaml
index a1daab176109ec288bf087eca293c332583678d0..d0c229d418e325796c4900ca353c135794d77323 100644
--- a/tests/approved_files/test_approval.test_apps.test.main_only.with_sign.with_tests.with_flatpakrepo.deps_sign_none.approved.yaml
+++ b/tests/approved_files/test_approval.test_apps.test.main_only.with_sign.with_tests.with_flatpakrepo.deps_sign_none.approved.yaml
@@ -325,7 +325,9 @@ publish app org.test.Test-1 (x86_64):
                   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" \
@@ -406,7 +408,9 @@ publish app org.test.Test-1 (aarch64):
                   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" \
@@ -487,7 +491,9 @@ publish app org.test.Test-1 (arm):
                   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" \
@@ -568,7 +574,9 @@ publish app org.test.Test-2 (x86_64):
                   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" \
@@ -649,7 +657,9 @@ publish app org.test.Test-2 (aarch64):
                   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" \
@@ -730,7 +740,9 @@ publish app org.test.Test-2 (arm):
                   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/approved_files/test_approval.test_apps.test.main_only.without_sign.with_tests.with_flatpakrepo.deps_sign_ed25519.approved.yaml b/tests/approved_files/test_approval.test_apps.test.main_only.without_sign.with_tests.with_flatpakrepo.deps_sign_ed25519.approved.yaml
index 00ebfe1e1e9cbbcc4b0c89154fbadec03009a6f2..b2dd26998660a88313f3f40d39b5cc3782a83dbf 100644
--- a/tests/approved_files/test_approval.test_apps.test.main_only.without_sign.with_tests.with_flatpakrepo.deps_sign_ed25519.approved.yaml
+++ b/tests/approved_files/test_approval.test_apps.test.main_only.without_sign.with_tests.with_flatpakrepo.deps_sign_ed25519.approved.yaml
@@ -325,7 +325,9 @@ publish app org.test.Test-1 (x86_64):
                   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" \
@@ -405,7 +407,9 @@ publish app org.test.Test-1 (aarch64):
                   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" \
@@ -485,7 +489,9 @@ publish app org.test.Test-1 (arm):
                   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" \
@@ -565,7 +571,9 @@ publish app org.test.Test-2 (x86_64):
                   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" \
@@ -645,7 +653,9 @@ publish app org.test.Test-2 (aarch64):
                   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" \
@@ -725,7 +735,9 @@ publish app org.test.Test-2 (arm):
                   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/approved_files/test_approval.test_apps.test.main_only.without_sign.without_tests.without_flatpakrepo.deps_sign_gpg.approved.yaml b/tests/approved_files/test_approval.test_apps.test.main_only.without_sign.without_tests.without_flatpakrepo.deps_sign_gpg.approved.yaml
index 86e2c3f239b056c35c959ef86839bfad69d60383..8452a45c537fae66df7c5cb4104a33d008490c0f 100644
--- a/tests/approved_files/test_approval.test_apps.test.main_only.without_sign.without_tests.without_flatpakrepo.deps_sign_gpg.approved.yaml
+++ b/tests/approved_files/test_approval.test_apps.test.main_only.without_sign.without_tests.without_flatpakrepo.deps_sign_gpg.approved.yaml
@@ -192,7 +192,9 @@ publish app org.test.Test-1 (x86_64):
                   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" \
@@ -272,7 +274,9 @@ publish app org.test.Test-1 (aarch64):
                   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" \
@@ -352,7 +356,9 @@ publish app org.test.Test-1 (arm):
                   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" \
@@ -432,7 +438,9 @@ publish app org.test.Test-2 (x86_64):
                   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" \
@@ -512,7 +520,9 @@ publish app org.test.Test-2 (aarch64):
                   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" \
@@ -592,7 +602,9 @@ publish app org.test.Test-2 (arm):
                   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/approved_files/test_approval.test_apps.test.versioned.with_sign.with_tests.with_flatpakrepo.deps_sign_none.approved.yaml b/tests/approved_files/test_approval.test_apps.test.versioned.with_sign.with_tests.with_flatpakrepo.deps_sign_none.approved.yaml
index c928a444e4dd2a609eafa1a0c8b9ffbc1449bd9c..aac2f007b540b184e99f147417e6fa601d4c04fe 100644
--- a/tests/approved_files/test_approval.test_apps.test.versioned.with_sign.with_tests.with_flatpakrepo.deps_sign_none.approved.yaml
+++ b/tests/approved_files/test_approval.test_apps.test.versioned.with_sign.with_tests.with_flatpakrepo.deps_sign_none.approved.yaml
@@ -325,7 +325,9 @@ publish app org.test.Test-1 (x86_64):
                   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" \
@@ -406,7 +408,9 @@ publish app org.test.Test-1 (aarch64):
                   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" \
@@ -487,7 +491,9 @@ publish app org.test.Test-1 (arm):
                   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" \
@@ -568,7 +574,9 @@ publish app org.test.Test-2 (x86_64):
                   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" \
@@ -649,7 +657,9 @@ publish app org.test.Test-2 (aarch64):
                   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" \
@@ -730,7 +740,9 @@ publish app org.test.Test-2 (arm):
                   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/approved_files/test_approval.test_apps.test.versioned.without_sign.with_tests.with_flatpakrepo.deps_sign_ed25519.approved.yaml b/tests/approved_files/test_approval.test_apps.test.versioned.without_sign.with_tests.with_flatpakrepo.deps_sign_ed25519.approved.yaml
index 1c3e58bccfed9c2eeb494e41a9ed7c1e1f72c227..ddfc0738a7cad9d1f9bda51cb741892bb9a96f54 100644
--- a/tests/approved_files/test_approval.test_apps.test.versioned.without_sign.with_tests.with_flatpakrepo.deps_sign_ed25519.approved.yaml
+++ b/tests/approved_files/test_approval.test_apps.test.versioned.without_sign.with_tests.with_flatpakrepo.deps_sign_ed25519.approved.yaml
@@ -325,7 +325,9 @@ publish app org.test.Test-1 (x86_64):
                   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" \
@@ -405,7 +407,9 @@ publish app org.test.Test-1 (aarch64):
                   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" \
@@ -485,7 +489,9 @@ publish app org.test.Test-1 (arm):
                   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" \
@@ -565,7 +571,9 @@ publish app org.test.Test-2 (x86_64):
                   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" \
@@ -645,7 +653,9 @@ publish app org.test.Test-2 (aarch64):
                   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" \
@@ -725,7 +735,9 @@ publish app org.test.Test-2 (arm):
                   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/approved_files/test_approval.test_apps.test.versioned.without_sign.without_tests.without_flatpakrepo.deps_sign_gpg.approved.yaml b/tests/approved_files/test_approval.test_apps.test.versioned.without_sign.without_tests.without_flatpakrepo.deps_sign_gpg.approved.yaml
index aa847563e82441419199d75f1dedb1df8da6fcd9..b21ab05bf161a9be5ded731e05bcbab7150d2874 100644
--- a/tests/approved_files/test_approval.test_apps.test.versioned.without_sign.without_tests.without_flatpakrepo.deps_sign_gpg.approved.yaml
+++ b/tests/approved_files/test_approval.test_apps.test.versioned.without_sign.without_tests.without_flatpakrepo.deps_sign_gpg.approved.yaml
@@ -192,7 +192,9 @@ publish app org.test.Test-1 (x86_64):
                   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" \
@@ -272,7 +274,9 @@ publish app org.test.Test-1 (aarch64):
                   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" \
@@ -352,7 +356,9 @@ publish app org.test.Test-1 (arm):
                   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" \
@@ -432,7 +438,9 @@ publish app org.test.Test-2 (x86_64):
                   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" \
@@ -512,7 +520,9 @@ publish app org.test.Test-2 (aarch64):
                   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" \
@@ -592,7 +602,9 @@ publish app org.test.Test-2 (arm):
                   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/approved_files/test_approval.test_runtimes.main.main_only.with_sign.with_tests.with_flatpakrepo.deps_sign_none.approved.yaml b/tests/approved_files/test_approval.test_runtimes.main.main_only.with_sign.with_tests.with_flatpakrepo.deps_sign_none.approved.yaml
index a763b3bc1c40f6808da7f5e41eb33625d94baf81..38dcee03c1b8fa5d1fd412f1c798b5dcb57dcf14 100644
--- a/tests/approved_files/test_approval.test_runtimes.main.main_only.with_sign.with_tests.with_flatpakrepo.deps_sign_none.approved.yaml
+++ b/tests/approved_files/test_approval.test_runtimes.main.main_only.with_sign.with_tests.with_flatpakrepo.deps_sign_none.approved.yaml
@@ -570,7 +570,9 @@ publish runtime org.test.bar (x86_64):
                   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" \
@@ -651,7 +653,9 @@ publish runtime org.test.bar (aarch64):
                   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" \
@@ -732,7 +736,9 @@ publish runtime org.test.bar (arm):
                   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" \
@@ -813,7 +819,9 @@ publish runtime org.test.foo (x86_64):
                   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" \
@@ -897,7 +905,9 @@ publish runtime org.test.foo (aarch64):
                   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" \
@@ -981,7 +991,9 @@ publish runtime org.test.foo (arm):
                   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" \
@@ -1065,7 +1077,9 @@ publish app org.test.foo.Test (x86_64):
                   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" \
@@ -1149,7 +1163,9 @@ publish app org.test.foo.Test (aarch64):
                   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" \
@@ -1233,7 +1249,9 @@ publish app org.test.foo.Test (arm):
                   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" \
@@ -1317,7 +1335,9 @@ publish app org.test.bar.Test (x86_64):
                   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" \
@@ -1401,7 +1421,9 @@ publish app org.test.bar.Test (aarch64):
                   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" \
@@ -1485,7 +1507,9 @@ publish app org.test.bar.Test (arm):
                   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/approved_files/test_approval.test_runtimes.main.main_only.without_sign.with_tests.with_flatpakrepo.deps_sign_ed25519.approved.yaml b/tests/approved_files/test_approval.test_runtimes.main.main_only.without_sign.with_tests.with_flatpakrepo.deps_sign_ed25519.approved.yaml
index 03fa67bace1461b2ff25233b389560db18f3efb6..06e5ae2d49bb9fc0b21a3a219c57b93b3d7e3746 100644
--- a/tests/approved_files/test_approval.test_runtimes.main.main_only.without_sign.with_tests.with_flatpakrepo.deps_sign_ed25519.approved.yaml
+++ b/tests/approved_files/test_approval.test_runtimes.main.main_only.without_sign.with_tests.with_flatpakrepo.deps_sign_ed25519.approved.yaml
@@ -558,7 +558,9 @@ publish runtime org.test.bar (x86_64):
                   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" \
@@ -638,7 +640,9 @@ publish runtime org.test.bar (aarch64):
                   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" \
@@ -718,7 +722,9 @@ publish runtime org.test.bar (arm):
                   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" \
@@ -798,7 +804,9 @@ publish runtime org.test.foo (x86_64):
                   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" \
@@ -881,7 +889,9 @@ publish runtime org.test.foo (aarch64):
                   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" \
@@ -964,7 +974,9 @@ publish runtime org.test.foo (arm):
                   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" \
@@ -1047,7 +1059,9 @@ publish app org.test.foo.Test (x86_64):
                   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" \
@@ -1130,7 +1144,9 @@ publish app org.test.foo.Test (aarch64):
                   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" \
@@ -1213,7 +1229,9 @@ publish app org.test.foo.Test (arm):
                   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" \
@@ -1296,7 +1314,9 @@ publish app org.test.bar.Test (x86_64):
                   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" \
@@ -1379,7 +1399,9 @@ publish app org.test.bar.Test (aarch64):
                   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" \
@@ -1462,7 +1484,9 @@ publish app org.test.bar.Test (arm):
                   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/approved_files/test_approval.test_runtimes.main.main_only.without_sign.without_tests.without_flatpakrepo.deps_sign_gpg.approved.yaml b/tests/approved_files/test_approval.test_runtimes.main.main_only.without_sign.without_tests.without_flatpakrepo.deps_sign_gpg.approved.yaml
index 8ad2488ae3b56e8d3343c1d0f03db9bd95d10719..88bfa9697594ac3a281901808a7b87293c2eafd0 100644
--- a/tests/approved_files/test_approval.test_runtimes.main.main_only.without_sign.without_tests.without_flatpakrepo.deps_sign_gpg.approved.yaml
+++ b/tests/approved_files/test_approval.test_runtimes.main.main_only.without_sign.without_tests.without_flatpakrepo.deps_sign_gpg.approved.yaml
@@ -371,7 +371,9 @@ publish runtime org.test.bar (x86_64):
                   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" \
@@ -451,7 +453,9 @@ publish runtime org.test.bar (aarch64):
                   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" \
@@ -531,7 +535,9 @@ publish runtime org.test.bar (arm):
                   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" \
@@ -611,7 +617,9 @@ publish runtime org.test.foo (x86_64):
                   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" \
@@ -691,7 +699,9 @@ publish runtime org.test.foo (aarch64):
                   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" \
@@ -771,7 +781,9 @@ publish runtime org.test.foo (arm):
                   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" \
@@ -851,7 +863,9 @@ publish app org.test.foo.Test (x86_64):
                   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" \
@@ -931,7 +945,9 @@ publish app org.test.foo.Test (aarch64):
                   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" \
@@ -1011,7 +1027,9 @@ publish app org.test.foo.Test (arm):
                   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" \
@@ -1091,7 +1109,9 @@ publish app org.test.bar.Test (x86_64):
                   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" \
@@ -1171,7 +1191,9 @@ publish app org.test.bar.Test (aarch64):
                   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" \
@@ -1251,7 +1273,9 @@ publish app org.test.bar.Test (arm):
                   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/approved_files/test_approval.test_runtimes.main.versioned.with_sign.with_tests.with_flatpakrepo.deps_sign_none.approved.yaml b/tests/approved_files/test_approval.test_runtimes.main.versioned.with_sign.with_tests.with_flatpakrepo.deps_sign_none.approved.yaml
index 4616a09f59da7893334f951c9bffae3418fe9a82..a4b9cd11ff9c55b8f1cfe6d2a477fdcfa112d773 100644
--- a/tests/approved_files/test_approval.test_runtimes.main.versioned.with_sign.with_tests.with_flatpakrepo.deps_sign_none.approved.yaml
+++ b/tests/approved_files/test_approval.test_runtimes.main.versioned.with_sign.with_tests.with_flatpakrepo.deps_sign_none.approved.yaml
@@ -570,7 +570,9 @@ publish runtime org.test.bar (x86_64):
                   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" \
@@ -651,7 +653,9 @@ publish runtime org.test.bar (aarch64):
                   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" \
@@ -732,7 +736,9 @@ publish runtime org.test.bar (arm):
                   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" \
@@ -813,7 +819,9 @@ publish runtime org.test.foo (x86_64):
                   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" \
@@ -897,7 +905,9 @@ publish runtime org.test.foo (aarch64):
                   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" \
@@ -981,7 +991,9 @@ publish runtime org.test.foo (arm):
                   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" \
@@ -1065,7 +1077,9 @@ publish app org.test.foo.Test (x86_64):
                   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" \
@@ -1149,7 +1163,9 @@ publish app org.test.foo.Test (aarch64):
                   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" \
@@ -1233,7 +1249,9 @@ publish app org.test.foo.Test (arm):
                   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" \
@@ -1317,7 +1335,9 @@ publish app org.test.bar.Test (x86_64):
                   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" \
@@ -1401,7 +1421,9 @@ publish app org.test.bar.Test (aarch64):
                   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" \
@@ -1485,7 +1507,9 @@ publish app org.test.bar.Test (arm):
                   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/approved_files/test_approval.test_runtimes.main.versioned.without_sign.with_tests.with_flatpakrepo.deps_sign_ed25519.approved.yaml b/tests/approved_files/test_approval.test_runtimes.main.versioned.without_sign.with_tests.with_flatpakrepo.deps_sign_ed25519.approved.yaml
index 27f9273c238c4d5e475fc17f8783f5fe69f01039..b9db4e839cd499c0cfe451ac6493cc01ac8a4747 100644
--- a/tests/approved_files/test_approval.test_runtimes.main.versioned.without_sign.with_tests.with_flatpakrepo.deps_sign_ed25519.approved.yaml
+++ b/tests/approved_files/test_approval.test_runtimes.main.versioned.without_sign.with_tests.with_flatpakrepo.deps_sign_ed25519.approved.yaml
@@ -558,7 +558,9 @@ publish runtime org.test.bar (x86_64):
                   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" \
@@ -638,7 +640,9 @@ publish runtime org.test.bar (aarch64):
                   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" \
@@ -718,7 +722,9 @@ publish runtime org.test.bar (arm):
                   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" \
@@ -798,7 +804,9 @@ publish runtime org.test.foo (x86_64):
                   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" \
@@ -881,7 +889,9 @@ publish runtime org.test.foo (aarch64):
                   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" \
@@ -964,7 +974,9 @@ publish runtime org.test.foo (arm):
                   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" \
@@ -1047,7 +1059,9 @@ publish app org.test.foo.Test (x86_64):
                   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" \
@@ -1130,7 +1144,9 @@ publish app org.test.foo.Test (aarch64):
                   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" \
@@ -1213,7 +1229,9 @@ publish app org.test.foo.Test (arm):
                   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" \
@@ -1296,7 +1314,9 @@ publish app org.test.bar.Test (x86_64):
                   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" \
@@ -1379,7 +1399,9 @@ publish app org.test.bar.Test (aarch64):
                   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" \
@@ -1462,7 +1484,9 @@ publish app org.test.bar.Test (arm):
                   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/approved_files/test_approval.test_runtimes.main.versioned.without_sign.without_tests.without_flatpakrepo.deps_sign_gpg.approved.yaml b/tests/approved_files/test_approval.test_runtimes.main.versioned.without_sign.without_tests.without_flatpakrepo.deps_sign_gpg.approved.yaml
index 637db65de2778be7dce1ef87b29dc1a919b0a672..2afff2258976aad7431bf274bc4d17d7af186d89 100644
--- a/tests/approved_files/test_approval.test_runtimes.main.versioned.without_sign.without_tests.without_flatpakrepo.deps_sign_gpg.approved.yaml
+++ b/tests/approved_files/test_approval.test_runtimes.main.versioned.without_sign.without_tests.without_flatpakrepo.deps_sign_gpg.approved.yaml
@@ -371,7 +371,9 @@ publish runtime org.test.bar (x86_64):
                   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" \
@@ -451,7 +453,9 @@ publish runtime org.test.bar (aarch64):
                   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" \
@@ -531,7 +535,9 @@ publish runtime org.test.bar (arm):
                   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" \
@@ -611,7 +617,9 @@ publish runtime org.test.foo (x86_64):
                   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" \
@@ -691,7 +699,9 @@ publish runtime org.test.foo (aarch64):
                   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" \
@@ -771,7 +781,9 @@ publish runtime org.test.foo (arm):
                   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" \
@@ -851,7 +863,9 @@ publish app org.test.foo.Test (x86_64):
                   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" \
@@ -931,7 +945,9 @@ publish app org.test.foo.Test (aarch64):
                   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" \
@@ -1011,7 +1027,9 @@ publish app org.test.foo.Test (arm):
                   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" \
@@ -1091,7 +1109,9 @@ publish app org.test.bar.Test (x86_64):
                   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" \
@@ -1171,7 +1191,9 @@ publish app org.test.bar.Test (aarch64):
                   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" \
@@ -1251,7 +1273,9 @@ publish app org.test.bar.Test (arm):
                   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/approved_files/test_approval.test_runtimes.test.main_only.with_sign.with_tests.with_flatpakrepo.deps_sign_none.approved.yaml b/tests/approved_files/test_approval.test_runtimes.test.main_only.with_sign.with_tests.with_flatpakrepo.deps_sign_none.approved.yaml
index 5d9787cebf9fc6a12630d65acf231eb492eb675d..a1200e3785b62b6e76b70afb3340713cb8236174 100644
--- a/tests/approved_files/test_approval.test_runtimes.test.main_only.with_sign.with_tests.with_flatpakrepo.deps_sign_none.approved.yaml
+++ b/tests/approved_files/test_approval.test_runtimes.test.main_only.with_sign.with_tests.with_flatpakrepo.deps_sign_none.approved.yaml
@@ -564,7 +564,9 @@ publish runtime org.test.bar (x86_64):
                   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" \
@@ -645,7 +647,9 @@ publish runtime org.test.bar (aarch64):
                   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" \
@@ -726,7 +730,9 @@ publish runtime org.test.bar (arm):
                   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" \
@@ -807,7 +813,9 @@ publish runtime org.test.foo (x86_64):
                   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" \
@@ -891,7 +899,9 @@ publish runtime org.test.foo (aarch64):
                   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" \
@@ -975,7 +985,9 @@ publish runtime org.test.foo (arm):
                   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" \
@@ -1059,7 +1071,9 @@ publish app org.test.foo.Test (x86_64):
                   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" \
@@ -1143,7 +1157,9 @@ publish app org.test.foo.Test (aarch64):
                   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" \
@@ -1227,7 +1243,9 @@ publish app org.test.foo.Test (arm):
                   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" \
@@ -1311,7 +1329,9 @@ publish app org.test.bar.Test (x86_64):
                   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" \
@@ -1395,7 +1415,9 @@ publish app org.test.bar.Test (aarch64):
                   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" \
@@ -1479,7 +1501,9 @@ publish app org.test.bar.Test (arm):
                   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/approved_files/test_approval.test_runtimes.test.main_only.without_sign.with_tests.with_flatpakrepo.deps_sign_ed25519.approved.yaml b/tests/approved_files/test_approval.test_runtimes.test.main_only.without_sign.with_tests.with_flatpakrepo.deps_sign_ed25519.approved.yaml
index f99e49bae915cd20906e8038b5b25d234b671f37..1f10849cf64b9d0de54bfe806ca9a2e53e528458 100644
--- a/tests/approved_files/test_approval.test_runtimes.test.main_only.without_sign.with_tests.with_flatpakrepo.deps_sign_ed25519.approved.yaml
+++ b/tests/approved_files/test_approval.test_runtimes.test.main_only.without_sign.with_tests.with_flatpakrepo.deps_sign_ed25519.approved.yaml
@@ -552,7 +552,9 @@ publish runtime org.test.bar (x86_64):
                   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" \
@@ -632,7 +634,9 @@ publish runtime org.test.bar (aarch64):
                   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" \
@@ -712,7 +716,9 @@ publish runtime org.test.bar (arm):
                   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" \
@@ -792,7 +798,9 @@ publish runtime org.test.foo (x86_64):
                   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" \
@@ -875,7 +883,9 @@ publish runtime org.test.foo (aarch64):
                   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" \
@@ -958,7 +968,9 @@ publish runtime org.test.foo (arm):
                   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" \
@@ -1041,7 +1053,9 @@ publish app org.test.foo.Test (x86_64):
                   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" \
@@ -1124,7 +1138,9 @@ publish app org.test.foo.Test (aarch64):
                   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" \
@@ -1207,7 +1223,9 @@ publish app org.test.foo.Test (arm):
                   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" \
@@ -1290,7 +1308,9 @@ publish app org.test.bar.Test (x86_64):
                   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" \
@@ -1373,7 +1393,9 @@ publish app org.test.bar.Test (aarch64):
                   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" \
@@ -1456,7 +1478,9 @@ publish app org.test.bar.Test (arm):
                   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/approved_files/test_approval.test_runtimes.test.main_only.without_sign.without_tests.without_flatpakrepo.deps_sign_gpg.approved.yaml b/tests/approved_files/test_approval.test_runtimes.test.main_only.without_sign.without_tests.without_flatpakrepo.deps_sign_gpg.approved.yaml
index b59a74b48db00acdbf145f0d84e3641e760f3c38..b25e3a040ad0250fb4a0f2ad84879188d5ab5f0d 100644
--- a/tests/approved_files/test_approval.test_runtimes.test.main_only.without_sign.without_tests.without_flatpakrepo.deps_sign_gpg.approved.yaml
+++ b/tests/approved_files/test_approval.test_runtimes.test.main_only.without_sign.without_tests.without_flatpakrepo.deps_sign_gpg.approved.yaml
@@ -365,7 +365,9 @@ publish runtime org.test.bar (x86_64):
                   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" \
@@ -445,7 +447,9 @@ publish runtime org.test.bar (aarch64):
                   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" \
@@ -525,7 +529,9 @@ publish runtime org.test.bar (arm):
                   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" \
@@ -605,7 +611,9 @@ publish runtime org.test.foo (x86_64):
                   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" \
@@ -685,7 +693,9 @@ publish runtime org.test.foo (aarch64):
                   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" \
@@ -765,7 +775,9 @@ publish runtime org.test.foo (arm):
                   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" \
@@ -845,7 +857,9 @@ publish app org.test.foo.Test (x86_64):
                   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" \
@@ -925,7 +939,9 @@ publish app org.test.foo.Test (aarch64):
                   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" \
@@ -1005,7 +1021,9 @@ publish app org.test.foo.Test (arm):
                   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" \
@@ -1085,7 +1103,9 @@ publish app org.test.bar.Test (x86_64):
                   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" \
@@ -1165,7 +1185,9 @@ publish app org.test.bar.Test (aarch64):
                   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" \
@@ -1245,7 +1267,9 @@ publish app org.test.bar.Test (arm):
                   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/approved_files/test_approval.test_runtimes.test.versioned.with_sign.with_tests.with_flatpakrepo.deps_sign_none.approved.yaml b/tests/approved_files/test_approval.test_runtimes.test.versioned.with_sign.with_tests.with_flatpakrepo.deps_sign_none.approved.yaml
index 22f273d93dd377ff5c5c59667e7b99a7c6943bfe..f46d8058e34ed86f596771661fc2b29343d5681b 100644
--- a/tests/approved_files/test_approval.test_runtimes.test.versioned.with_sign.with_tests.with_flatpakrepo.deps_sign_none.approved.yaml
+++ b/tests/approved_files/test_approval.test_runtimes.test.versioned.with_sign.with_tests.with_flatpakrepo.deps_sign_none.approved.yaml
@@ -570,7 +570,9 @@ publish runtime org.test.bar (x86_64):
                   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" \
@@ -651,7 +653,9 @@ publish runtime org.test.bar (aarch64):
                   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" \
@@ -732,7 +736,9 @@ publish runtime org.test.bar (arm):
                   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" \
@@ -813,7 +819,9 @@ publish runtime org.test.foo (x86_64):
                   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" \
@@ -897,7 +905,9 @@ publish runtime org.test.foo (aarch64):
                   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" \
@@ -981,7 +991,9 @@ publish runtime org.test.foo (arm):
                   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" \
@@ -1065,7 +1077,9 @@ publish app org.test.foo.Test (x86_64):
                   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" \
@@ -1149,7 +1163,9 @@ publish app org.test.foo.Test (aarch64):
                   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" \
@@ -1233,7 +1249,9 @@ publish app org.test.foo.Test (arm):
                   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" \
@@ -1317,7 +1335,9 @@ publish app org.test.bar.Test (x86_64):
                   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" \
@@ -1401,7 +1421,9 @@ publish app org.test.bar.Test (aarch64):
                   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" \
@@ -1485,7 +1507,9 @@ publish app org.test.bar.Test (arm):
                   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/approved_files/test_approval.test_runtimes.test.versioned.without_sign.with_tests.with_flatpakrepo.deps_sign_ed25519.approved.yaml b/tests/approved_files/test_approval.test_runtimes.test.versioned.without_sign.with_tests.with_flatpakrepo.deps_sign_ed25519.approved.yaml
index e2ff1b230ff2c8a1fe68e3b342a1ac3636f13a3b..262a269cdee75fe0bdff08b5eda7b4900dff80ef 100644
--- a/tests/approved_files/test_approval.test_runtimes.test.versioned.without_sign.with_tests.with_flatpakrepo.deps_sign_ed25519.approved.yaml
+++ b/tests/approved_files/test_approval.test_runtimes.test.versioned.without_sign.with_tests.with_flatpakrepo.deps_sign_ed25519.approved.yaml
@@ -558,7 +558,9 @@ publish runtime org.test.bar (x86_64):
                   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" \
@@ -638,7 +640,9 @@ publish runtime org.test.bar (aarch64):
                   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" \
@@ -718,7 +722,9 @@ publish runtime org.test.bar (arm):
                   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" \
@@ -798,7 +804,9 @@ publish runtime org.test.foo (x86_64):
                   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" \
@@ -881,7 +889,9 @@ publish runtime org.test.foo (aarch64):
                   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" \
@@ -964,7 +974,9 @@ publish runtime org.test.foo (arm):
                   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" \
@@ -1047,7 +1059,9 @@ publish app org.test.foo.Test (x86_64):
                   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" \
@@ -1130,7 +1144,9 @@ publish app org.test.foo.Test (aarch64):
                   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" \
@@ -1213,7 +1229,9 @@ publish app org.test.foo.Test (arm):
                   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" \
@@ -1296,7 +1314,9 @@ publish app org.test.bar.Test (x86_64):
                   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" \
@@ -1379,7 +1399,9 @@ publish app org.test.bar.Test (aarch64):
                   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" \
@@ -1462,7 +1484,9 @@ publish app org.test.bar.Test (arm):
                   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/approved_files/test_approval.test_runtimes.test.versioned.without_sign.without_tests.without_flatpakrepo.deps_sign_gpg.approved.yaml b/tests/approved_files/test_approval.test_runtimes.test.versioned.without_sign.without_tests.without_flatpakrepo.deps_sign_gpg.approved.yaml
index edb311947d23c52837394a8a280446ef4ce9087a..6cbd8ca60162dc603c8bde2ed909b4b0017dfaa7 100644
--- a/tests/approved_files/test_approval.test_runtimes.test.versioned.without_sign.without_tests.without_flatpakrepo.deps_sign_gpg.approved.yaml
+++ b/tests/approved_files/test_approval.test_runtimes.test.versioned.without_sign.without_tests.without_flatpakrepo.deps_sign_gpg.approved.yaml
@@ -371,7 +371,9 @@ publish runtime org.test.bar (x86_64):
                   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" \
@@ -451,7 +453,9 @@ publish runtime org.test.bar (aarch64):
                   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" \
@@ -531,7 +535,9 @@ publish runtime org.test.bar (arm):
                   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" \
@@ -611,7 +617,9 @@ publish runtime org.test.foo (x86_64):
                   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" \
@@ -691,7 +699,9 @@ publish runtime org.test.foo (aarch64):
                   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" \
@@ -771,7 +781,9 @@ publish runtime org.test.foo (arm):
                   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" \
@@ -851,7 +863,9 @@ publish app org.test.foo.Test (x86_64):
                   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" \
@@ -931,7 +945,9 @@ publish app org.test.foo.Test (aarch64):
                   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" \
@@ -1011,7 +1027,9 @@ publish app org.test.foo.Test (arm):
                   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" \
@@ -1091,7 +1109,9 @@ publish app org.test.bar.Test (x86_64):
                   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" \
@@ -1171,7 +1191,9 @@ publish app org.test.bar.Test (aarch64):
                   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" \
@@ -1251,7 +1273,9 @@ publish app org.test.bar.Test (arm):
                   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 85ba50cb2b2c0fcfdc2e127d0fa14ff74e2e18b4..7e48653bc1f0e73a651c0f9afefab1c471325f90 100644
--- a/tests/test_build_pipelines.py
+++ b/tests/test_build_pipelines.py
@@ -496,10 +496,6 @@ def test_subsummaries_flatpak_metadata(subsummaries):
         refs, _meta = subsummary
 
         for ref, (_commit_size, _commit_checksum, ref_metadata) in refs:
-            flatpak_metadata = ref_metadata['xa.data'][2]
-            keyfile = GLib.KeyFile.new()
-            keyfile.load_from_bytes(GLib.Bytes.new(flatpak_metadata.encode('ascii')), 0)
-
             if ref.startswith('runtime/'):
                 group = 'Runtime'
             elif ref.startswith('app/'):
@@ -509,6 +505,15 @@ def test_subsummaries_flatpak_metadata(subsummaries):
             else:
                 assert False, ref
 
+            flatpak_metadata = ref_metadata['xa.data'][2]
+
+            # The metadata file should have a single trailing newline.
+            assert flatpak_metadata.endswith('\n'), ref
+            assert not flatpak_metadata.endswith('\n\n'), ref
+
+            keyfile = GLib.KeyFile.new()
+            keyfile.load_from_bytes(GLib.Bytes.new(flatpak_metadata.encode('ascii')), 0)
+
             ref_id = ref.split('/')[1]
             id_from_metadata = keyfile.get_string(group, 'name')
             assert ref_id == id_from_metadata