Blob Blame History Raw
From f66d185dd5c2c1750b3626c2e0bdfeab63e427b6 Mon Sep 17 00:00:00 2001
From: Stephen Gallagher <sgallagh@redhat.com>
Date: Fri, 11 Jan 2019 08:36:11 -0500
Subject: [PATCH] Include modified value when copying Defaults objects

The symptom of this was that any defaults object read from a YAML
stream would end up stored in the ModuleIndex with the a zero for
the modified value.

Signed-off-by: Stephen Gallagher <sgallagh@redhat.com>
---
 modulemd/v2/modulemd-defaults.c             |  7 ++++--
 modulemd/v2/tests/ModulemdTests/defaults.py | 25 +++++++++++++++++++++
 2 files changed, 30 insertions(+), 2 deletions(-)

diff --git a/modulemd/v2/modulemd-defaults.c b/modulemd/v2/modulemd-defaults.c
index 9e5c31b499704ae7a8543c91b9ea3bbf0dbf981d..c577d4a0c3db45319c8e0582b4cc07f3943836fa 100644
--- a/modulemd/v2/modulemd-defaults.c
+++ b/modulemd/v2/modulemd-defaults.c
@@ -91,14 +91,18 @@ modulemd_defaults_copy (ModulemdDefaults *self)
 
 
 static ModulemdDefaults *
 modulemd_defaults_default_copy (ModulemdDefaults *self)
 {
+  g_autoptr (ModulemdDefaults) copy = NULL;
   g_return_val_if_fail (MODULEMD_IS_DEFAULTS (self), NULL);
 
-  return modulemd_defaults_new (modulemd_defaults_get_mdversion (self),
+  copy = modulemd_defaults_new (modulemd_defaults_get_mdversion (self),
                                 modulemd_defaults_get_module_name (self));
+  modulemd_defaults_set_modified (copy, modulemd_defaults_get_modified (self));
+
+  return g_steal_pointer (&copy);
 }
 
 
 gboolean
 modulemd_defaults_validate (ModulemdDefaults *self, GError **error)
@@ -214,11 +218,10 @@ modulemd_defaults_set_modified (ModulemdDefaults *self, guint64 modified)
 {
   g_return_if_fail (MODULEMD_IS_DEFAULTS (self));
 
   ModulemdDefaultsPrivate *priv =
     modulemd_defaults_get_instance_private (self);
-
   priv->modified = modified;
 }
 
 
 guint64
diff --git a/modulemd/v2/tests/ModulemdTests/defaults.py b/modulemd/v2/tests/ModulemdTests/defaults.py
index ddac23bbed573b3725feb8cb0090fb878a1f4f22..9a783d25617fc53f59448bc32a68c6e2755dd034 100644
--- a/modulemd/v2/tests/ModulemdTests/defaults.py
+++ b/modulemd/v2/tests/ModulemdTests/defaults.py
@@ -10,11 +10,13 @@
 # This program is free software.
 # For more information on the license, see COPYING.
 # For more information on free software, see
 # <https://www.gnu.org/philosophy/free-sw.en.html>.
 
+import os
 import sys
+
 try:
     import unittest
     import gi
     gi.require_version('Modulemd', '2.0')
     from gi.repository import Modulemd
@@ -92,10 +94,33 @@ class TestDefaults(TestBase):
 
         # Ensure we cannot set the module_name
         with self.expect_signal():
             defs.props.module_name = None
 
+    def test_modified(self):
+        defs = Modulemd.Defaults.new(
+            Modulemd.DefaultsVersionEnum.LATEST, 'foo')
+        self.assertIsNotNone(defs)
+
+        self.assertEqual(defs.get_modified(), 0)
+
+        defs.set_modified(201901110830)
+
+        self.assertEqual(defs.get_modified(), 201901110830)
+
+        # Load a defaults object into an Index
+        index = Modulemd.ModuleIndex.new()
+        index.update_from_file("%s/mod-defaults/spec.v1.yaml" % (
+            os.getenv('MESON_SOURCE_ROOT')), True)
+        module_names = index.get_module_names()
+        self.assertEqual(len(module_names), 1)
+
+        defs = index.get_module(index.get_module_names()[0]).get_defaults()
+        self.assertIsNotNone(defs)
+
+        self.assertEqual(defs.get_modified(), 201812071200)
+
     def test_validate(self):
         defs = Modulemd.Defaults.new(
             Modulemd.DefaultsVersionEnum.LATEST, 'foo')
         assert defs
 
-- 
2.20.1