typedef struct {
PyObject_HEAD
cr_XmlFile *xmlfile;
- cr_ContentStat *stat;
+ PyObject *py_stat;
} _XmlFileObject;
static PyObject * xmlfile_close(_XmlFileObject *self, void *nothing);
_XmlFileObject *self = (_XmlFileObject *)type->tp_alloc(type, 0);
if (self) {
self->xmlfile = NULL;
- self->stat = NULL;
+ self->py_stat = NULL;
}
return (PyObject *)self;
}
/* Free all previous resources when reinitialization */
ret = xmlfile_close(self, NULL);
Py_XDECREF(ret);
- Py_XDECREF(self->stat);
- self->stat = NULL;
+ Py_XDECREF(self->py_stat);
+ self->py_stat = NULL;
if (ret == NULL) {
// Error encountered!
return -1;
g_clear_error(&err);
return -1;
}
- self->stat = stat;
- Py_XINCREF(stat);
+
+ self->py_stat = py_stat;
+ Py_XINCREF(py_stat);
return 0;
}
xmlfile_dealloc(_XmlFileObject *self)
{
cr_xmlfile_close(self->xmlfile, NULL);
- Py_XDECREF(self->stat);
+ Py_XDECREF(self->py_stat);
Py_TYPE(self)->tp_free(self);
}
CR_UNUSED(nothing);
- Py_XDECREF(self->stat);
- self->stat = NULL;
-
if (self->xmlfile) {
cr_xmlfile_close(self->xmlfile, &err);
self->xmlfile = NULL;
- if (err) {
- PyErr_Format(CrErr_Exception, "Error while closing: %s", err->message);
- g_clear_error(&err);
- return NULL;
- }
+ }
+
+ Py_XDECREF(self->py_stat);
+ self->py_stat = NULL;
+
+ if (err) {
+ PyErr_Format(CrErr_Exception, "Error while closing: %s", err->message);
+ g_clear_error(&err);
+ return NULL;
}
Py_RETURN_NONE;
self.assertEqual(cs.checksum, "67bc6282915fad80dc11f3d7c3210977a0bde"\
"05a762256d86083c2447d425776")
+ def test_contentstat_2(self):
+ """Test if reference is saved properly"""
+
+ pkg = cr.package_from_rpm(PKG_ARCHER_PATH)
+ self.assertTrue(pkg)
+
+ pkg.time_file = 1
+ pkg.time_build = 1
+
+ cs = cr.ContentStat(cr.SHA256)
+ self.assertEqual(cs.size, 0)
+ self.assertEqual(cs.checksum_type, cr.SHA256)
+ self.assertEqual(cs.checksum, None)
+
+ path = os.path.join(self.tmpdir, "primary.xml.gz")
+ f = cr.PrimaryXmlFile(path, cr.GZ_COMPRESSION, cs)
+ self.assertTrue(f)
+ self.assertTrue(os.path.isfile(path))
+ del cs
+ f.add_pkg(pkg)
+ f.close()
+
+ self.assertTrue(os.path.isfile(path))