115
107
def test_hourly_script(self):
116
108
"""Ensure garbo-hourly.py actually runs."""
117
# Our sampledata doesn't contain anything that PopulateSPRChangelogs
118
# can process without errors, so it's easier to just set all of the
119
# changelogs to a random LFA. We can't just expire every LFA, since
120
# a bunch of SPRs have no SPRFs at all.
121
IMasterStore(SourcePackageRelease).find(SourcePackageRelease).set(
123
transaction.commit() # run_script() is a different process.
124
109
rv, out, err = run_script(
125
110
"cronscripts/garbo-hourly.py", ["-q"], expect_returncode=0)
126
111
self.failIf(out.strip(), "Output to stdout: %s" % out)
889
874
""" % sqlbase.quote(template.id)).get_one()
891
876
self.assertEqual(1, count)
893
def upload_to_debian(self, restricted=False):
894
sid = getUtility(IDistributionSet)['debian']['sid']
895
spn = self.factory.makeSourcePackageName('9wm')
896
spr = self.factory.makeSourcePackageRelease(
897
sourcepackagename=spn, version='1.2-7', distroseries=sid)
898
archive = sid.main_archive
900
archive = self.factory.makeArchive(
901
distribution=sid.distribution, private=True)
902
self.factory.makeSourcePackagePublishingHistory(
903
sourcepackagerelease=spr, archive=archive,
904
status=PackagePublishingStatus.PUBLISHED)
906
'9wm_1.2-7.diff.gz', '9wm_1.2.orig.tar.gz', '9wm_1.2-7.dsc'):
908
'lib/lp/soyuz/scripts/tests/gina_test_archive/pool/main/9',
910
lfa = getUtility(ILibraryFileAliasSet).create(
911
name, os.stat(path).st_size, open(path, 'r'),
912
'application/octet-stream', restricted=restricted)
914
with TempDir() as tmp_dir:
915
fnull = open('/dev/null', 'w')
916
ret = subprocess.call(
917
['dpkg-source', '-x', path, os.path.join(
918
tmp_dir.path, 'extracted')],
919
stdout=fnull, stderr=fnull)
921
self.assertEqual(0, ret)
922
changelog_path = findFile(tmp_dir.path, 'debian/changelog')
923
changelog = open(changelog_path, 'r').read()
924
transaction.commit() # .runHourly() switches dbuser.
925
return (spr, changelog)
927
def test_populateSPRChangelogs(self):
928
# We set SPR.changelog for imported records from Debian.
929
LaunchpadZopelessLayer.switchDbUser('testadmin')
930
spr, changelog = self.upload_to_debian()
931
collector = self.runHourly()
932
log = self.log_buffer.getvalue()
934
'SPR %d (9wm 1.2-7) changelog imported.' % spr.id in log)
935
self.assertFalse(spr.changelog == None)
936
self.assertFalse(spr.changelog.restricted)
937
self.assertEqual(changelog, spr.changelog.read())
939
def test_populateSPRChangelogs_restricted_sprf(self):
940
LaunchpadZopelessLayer.switchDbUser('testadmin')
941
spr, changelog = self.upload_to_debian(restricted=True)
942
collector = self.runHourly()
943
log = self.log_buffer.getvalue()
945
'SPR %d (9wm 1.2-7) changelog imported.' % spr.id in log)
946
self.assertFalse(spr.changelog == None)
947
self.assertTrue(spr.changelog.restricted)
948
self.assertEqual(changelog, spr.changelog.read())