def test_buildAll(self): """ L{NewsBuilder.buildAll} calls L{NewsBuilder.build} once for each subproject, passing that subproject's I{topfiles} directory as C{path}, the I{NEWS} file in that directory as C{output}, and the subproject's name as C{header}, and then again for each subproject with the top-level I{NEWS} file for C{output}. Blacklisted subprojects are skipped. """ builds = [] builder = NewsBuilder() builder.build = lambda path, output, header: builds.append(( path, output, header)) builder._today = lambda: '2009-12-01' project = self.createFakeTwistedProject() self.svnCommit(project) builder.buildAll(project) coreTopfiles = project.child("topfiles") coreNews = coreTopfiles.child("NEWS") coreHeader = "Twisted Core 1.2.3 (2009-12-01)" conchTopfiles = project.child("conch").child("topfiles") conchNews = conchTopfiles.child("NEWS") conchHeader = "Twisted Conch 3.4.5 (2009-12-01)" aggregateNews = project.child("NEWS") self.assertEqual( builds, [(conchTopfiles, conchNews, conchHeader), (conchTopfiles, aggregateNews, conchHeader), (coreTopfiles, coreNews, coreHeader), (coreTopfiles, aggregateNews, coreHeader)])
def test_changeVersionInNews(self): """ L{NewsBuilder._changeVersions} gets the release date for a given version of a project as a string. """ builder = NewsBuilder() builder._today = lambda: '2009-12-01' project = self.createFakeTwistedProject() self.svnCommit(project) builder.buildAll(project) newVersion = Version('TEMPLATE', 7, 7, 14) coreNews = project.child('topfiles').child('NEWS') # twisted 1.2.3 is the old version. builder._changeNewsVersion( coreNews, "Core", Version("twisted", 1, 2, 3), newVersion, '2010-01-01') expectedCore = ( 'Twisted Core 7.7.14 (2010-01-01)\n' '================================\n' '\n' 'Features\n' '--------\n' ' - Third feature addition. (#3)\n' '\n' 'Other\n' '-----\n' ' - #5\n\n\n') self.assertEqual( expectedCore + 'Old core news.\n', coreNews.getContent())
def test_changeVersionInNews(self): """ L{NewsBuilder._changeVersions} gets the release date for a given version of a project as a string. """ builder = NewsBuilder() builder._today = lambda: '2009-12-01' project = self.createFakeTwistedProject() self.svnCommit(project) builder.buildAll(project) newVersion = Version('TEMPLATE', 7, 7, 14) coreNews = project.child('topfiles').child('NEWS') # twisted 1.2.3 is the old version. builder._changeNewsVersion(coreNews, "Core", Version("twisted", 1, 2, 3), newVersion, '2010-01-01') expectedCore = ('Twisted Core 7.7.14 (2010-01-01)\n' '================================\n' '\n' 'Features\n' '--------\n' ' - Third feature addition. (#3)\n' '\n' 'Other\n' '-----\n' ' - #5\n\n\n') self.assertEqual(expectedCore + 'Old core news.\n', coreNews.getContent())
def test_buildAll(self): """ L{NewsBuilder.buildAll} calls L{NewsBuilder.build} once for each subproject, passing that subproject's I{topfiles} directory as C{path}, the I{NEWS} file in that directory as C{output}, and the subproject's name as C{header}, and then again for each subproject with the top-level I{NEWS} file for C{output}. Blacklisted subprojects are skipped. """ builds = [] builder = NewsBuilder() builder.build = lambda path, output, header: builds.append( (path, output, header)) builder._today = lambda: '2009-12-01' project = self.createFakeTwistedProject() self.svnCommit(project) builder.buildAll(project) coreTopfiles = project.child("topfiles") coreNews = coreTopfiles.child("NEWS") coreHeader = "Twisted Core 1.2.3 (2009-12-01)" conchTopfiles = project.child("conch").child("topfiles") conchNews = conchTopfiles.child("NEWS") conchHeader = "Twisted Conch 3.4.5 (2009-12-01)" aggregateNews = project.child("NEWS") self.assertEqual(builds, [(conchTopfiles, conchNews, conchHeader), (conchTopfiles, aggregateNews, conchHeader), (coreTopfiles, coreNews, coreHeader), (coreTopfiles, aggregateNews, coreHeader)])
def test_removeNEWSfragments(self): """ L{NewsBuilder.buildALL} removes all the NEWS fragments after the build process, using the C{svn} C{rm} command. """ builder = NewsBuilder() project = self.createFakeTwistedProject() self.svnCommit(project) builder.buildAll(project) self.assertEqual(5, len(project.children())) output = runCommand(["svn", "status", project.path]) removed = [line for line in output.splitlines() if line.startswith("D ")] self.assertEqual(3, len(removed))
def test_buildAllAggregate(self): """ L{NewsBuilder.buildAll} aggregates I{NEWS} information into the top files, only deleting fragments once it's done. """ builder = NewsBuilder() project = self.createFakeTwistedProject() self.svnCommit(project) builder.buildAll(project) aggregateNews = project.child("NEWS") aggregateContent = aggregateNews.getContent() self.assertIn("Third feature addition", aggregateContent) self.assertIn("Fixed that bug", aggregateContent) self.assertIn("Old boring stuff from the past", aggregateContent)
def test_removeNEWSfragments(self): """ L{NewsBuilder.buildALL} removes all the NEWS fragments after the build process, using the C{svn} C{rm} command. """ builder = NewsBuilder() project = self.createFakeTwistedProject() self.svnCommit(project) builder.buildAll(project) self.assertEqual(5, len(project.children())) output = runCommand(["svn", "status", project.path]) removed = [ line for line in output.splitlines() if line.startswith("D ") ] self.assertEqual(3, len(removed))