示例#1
0
文件: tests.py 项目: dahool/vertaal
    def runTest(self):
        man = Manager(self.project,
                      self.release,
                      self.component,
                      self.language,
                      self.log)

        """ perform checkout """
        # perform build
        rev = man.build()

        # check if the file was added
        pofiles = POFile.objects.filter(component=self.component,
                                  release=self.release,
                                  language=self.language)
        
        # the repo should contain one file only
        self.assertEquals(pofiles.count(),1)
        
        """ perform commit """
        # modify the file
        f = open(pofiles[0].file,"a")
        f.write("test")
        f.close()
        
        # perform commit
        revc = man.commit(None, None, "test")
        self.assertEquals(revc, (rev + 1))
        
        # POT creation
        potman = POTUpdater(self.project, self.release, self.component,self.log)        
        potman.build()
        
        potfiles = POTFile.objects.filter(component=self.component)
        
        self.assertEquals(potfiles.count(),1)
        self.assertEquals(potfiles[0].total,5) # 5 messages
        self.assertEquals(potfiles[0].updated,'2009-09-21 09:47+0200')
示例#2
0
    def handle(self, *args, **options):

        self.stdout.write('Started.\n')
        logger.info("Start")
        t_start = time.time() 

        potonly = options['potonly']
        
        BOT_USERNAME = getattr(settings, 'BOT_USERNAME', 'bot')
        BOT_USER = User.objects.get(username=BOT_USERNAME)

        projects = Project.objects.filter(enabled=True, read_only=False)
        
        b = None
        failedProjects = []
        try:
            for project in projects:
                teams = project.teams.all()
                for release in project.releases.filter(enabled=True, read_only=False):
                    for component in project.components.all():

                        try:
                            b = BuildCache.objects.get(component=component, release=release)
                            if b.is_locked:
                                logger.info("%s - %s is locked" % (release, component))
                                break
                        except:
                            b = BuildCache.objects.create(component=component,
                                                      release=release)
                        
                        b.lock()

                        try:
                            if not potonly:
                                for team in teams:
                                    if project.slug in failedProjects:
                                        self.stdout.write("Project %s skipped because previous fails\n" % project.slug)
                                        logger.info("Project %s skipped because previous fails" % project.slug)
                                        break
                                    
                                    logger.info("Refresh project %s, release %s, component %s, team %s" % (project.name,
                                                                                                          release.name,
                                                                                                          component.name,
                                                                                                          team.language.name))
                                    man = Manager(project, release, component, team.language, user=BOT_USER)
                                    
                                    try:
                                        logger.debug('Create lock')
                                        with LockRepo(project.slug,
                                                      release.slug,
                                                      component.slug,
                                                      team.language.code) as lock:
                                            logger.debug('Refresh')
                                            man.revert()
                                            man.refresh()
                                        logger.debug('Process Stats')
                                        man.update_stats(False)
                                    except Exception, e:
                                        failedProjects.append(project.slug)
                                        logger.error(e)
                                        traceback.print_exc(file=sys.stdout)
                                    finally:
                                        del man
                                    
                            if component.potlocation:
                                logger.info("Processing POT")
                                repo = POTUpdater(project, release, component)
                                try:
                                    repo.update_stats(True)
                                except Exception, e:
                                    logger.error(e)
                                    traceback.print_exc(file=sys.stdout)
                                finally:
                                    del repo
示例#3
0
                                               component.slug,
                                               team.language.code) as lock:        
                                     if dorefresh:
                                         man.revert()
                                         b.setrev(man.refresh())
                                     man.update_stats(False)
                             except Exception, e:
                                 failedProjects.append(project.slug)
                                 logger.error(e)
                                 traceback.print_exc(file=sys.stdout)
                             finally:
                                 del man
                             
                         if component.potlocation:
                             logger.info("Processing POT")
                             repo = POTUpdater(project, release, component)
                             try:
                                 repo.update_stats(dorefresh)
                             except Exception, e:
                                 logger.error(e)
                                 traceback.print_exc(file=sys.stdout)
                             finally:
                                 del repo
                                 
                             filelst = POFile.objects.filter(component=component, release=release)
                             for pofl in filelst:
                                 potnotification.check_notification(pofl, None, True)
                         else:
                             logger.debug("POT skipped")
 
                         b.unlock()