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 (©);
}
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