From 531c9a1134539dcbc3ce3a20f46dfdb32ee81289 Mon Sep 17 00:00:00 2001 From: Franz Chih-Ping Hsieh Date: Aug 14 2018 12:56:06 +0000 Subject: copy data from static variable instead of use it directly to prevent caching. also update test cases to verfiy this issue. Fixes: #994 https://pagure.io/koji/issue/994 --- diff --git a/koji/rpmdiff.py b/koji/rpmdiff.py index 2e18583..a52add0 100644 --- a/koji/rpmdiff.py +++ b/koji/rpmdiff.py @@ -79,7 +79,7 @@ class Rpmdiff: if self.ignore is None: self.ignore = [] - FILEIDX = self.__FILEIDX + FILEIDX = [entry[:] for entry in self.__FILEIDX] for tag in self.ignore: for entry in FILEIDX: if tag == entry[0]: diff --git a/tests/test_hub/data/rpms/test-pkg-1.0.0-1.el7.noarch.rpm b/tests/test_hub/data/rpms/test-pkg-1.0.0-1.el7.noarch.rpm new file mode 100644 index 0000000..1180e2e Binary files /dev/null and b/tests/test_hub/data/rpms/test-pkg-1.0.0-1.el7.noarch.rpm differ diff --git a/tests/test_hub/data/rpms/test-pkg-1.0.0-1.fc24.noarch.rpm b/tests/test_hub/data/rpms/test-pkg-1.0.0-1.fc24.noarch.rpm new file mode 100644 index 0000000..e960b67 Binary files /dev/null and b/tests/test_hub/data/rpms/test-pkg-1.0.0-1.fc24.noarch.rpm differ diff --git a/tests/test_hub/test_rpmdiff.py b/tests/test_hub/test_rpmdiff.py index f8bae3e..e2fd9eb 100644 --- a/tests/test_hub/test_rpmdiff.py +++ b/tests/test_hub/test_rpmdiff.py @@ -1,6 +1,11 @@ import copy import unittest import mock +import os +try: + import unittest2 as unittest +except ImportError: + import unittest import koji import kojihub @@ -33,6 +38,30 @@ class TestRPMDiff(unittest.TestCase): Rpmdiff.assert_called_once_with('basepath/12/1234/foo', 'basepath/13/1345/bar', ignore='S5TN') d.textdiff.assert_called_once_with() + def test_rpmdiff_real_target(self): + data_path = os.path.abspath("tests/test_hub/data/rpms") + + # the only differences between rpm1 and rpm2 are 1) create time 2) file name + rpm1 = os.path.join(data_path, 'test-pkg-1.0.0-1.el7.noarch.rpm') + rpm2 = os.path.join(data_path, 'test-pkg-1.0.0-1.fc24.noarch.rpm') + + diff_output = "..........T /usr/share/test-pkg/test-doc01.txt\n" + \ + "..........T /usr/share/test-pkg/test-doc02.txt\n" + \ + "..........T /usr/share/test-pkg/test-doc03.txt\n" + \ + "..........T /usr/share/test-pkg/test-doc04.txt" + + # case 1. no ignore option, timestamp is different + # perform twice check to verify issue: #994 + for _ in range(0, 2): + d = koji.rpmdiff.Rpmdiff(rpm1, rpm2) + self.assertEqual(d.textdiff(), diff_output) + + # case 2. ignore timestamp, two rpms should be the same + # perform twice check to verify issue: #994 + for r in range(0, 2): + d = koji.rpmdiff.Rpmdiff(rpm1, rpm2, ignore='S5TN') + self.assertEqual(d.textdiff(), '') + class TestCheckNoarchRpms(unittest.TestCase): @mock.patch('kojihub.rpmdiff') def test_check_noarch_rpms_empty_invocation(self, rpmdiff):