Esempio n. 1
0
    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)])
Esempio n. 2
0
 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())
Esempio n. 3
0
 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())
Esempio n. 4
0
    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)])
Esempio n. 5
0
    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))
Esempio n. 6
0
    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)
Esempio n. 7
0
    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))
Esempio n. 8
0
    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)