def test_result_ranking_of_two_labs(self):
        r1 = MagicMock(report={
            'lab1_ex1': 0,
            'lab1_ex2': 2,
            'lab1_ex3': 0
        },
                       __getitem__=lambda s, index: s.report[index])
        r2 = MagicMock(report={
            'lab1_ex1': 2,
            'lab1_ex2': 2,
            'lab1_ex3': 2
        },
                       __getitem__=lambda s, index: s.report[index])
        r3 = MagicMock(report={
            'lab1_ex1': 0,
            'lab1_ex2': 0,
            'lab1_ex3': 0
        },
                       __getitem__=lambda s, index: s.report[index])

        written = []
        read = ['lab2_ex1: 0', 'lab2_ex2: 2']
        file = MagicMock(write=lambda line: written.append(line),
                         __iter__=lambda *args: iter(read))
        directory = MagicMock(all_partial_reports=lambda *args: [r1, r2, r3],
                              open=lambda name, opt: file)
        project = StudentProject('url.com/USER/REPO.git', directory)
        project.report_dir = directory
        project.compile_final_report('report')
        self.assertEquals([
            'lab1_ex1=0\n', 'lab1_ex2=0\n', 'lab1_ex3=0\n', 'lab1_ex1=ok\n',
            'lab1_ex2=ok\n', 'lab1_ex3=ok\n', 'lab1_ex1=0\n', 'lab1_ex2=0\n',
            'lab1_ex3=0\n', 'lab1_ex1=ok\n', 'lab1_ex2=ok\n', 'lab1_ex3=ok\n'
        ], written)
def process_single_project2(line, working_dir):
    working_dir.restore()
    repository = line.strip(' \t\n\r')
    project = StudentProject(repository, working_dir)
    project.synchronize()
    project.check_lab_to_date(
        ['lab1', 'lab2', 'lab3'],
        ['2017-03-15 23:59', '2017-03-22 23:59', '2017-03-29 23:59'])
    project.compile_final_report('report')
    def list_student_projects(self):
        if not self.listed:
            for n_line, line in enumerate(
                    self.parent_directory.open(self.file_name, 'r')):
                if ';' not in line:
                    print("{0} skpping invalid line({1}): {2}".format(
                        self.file_name, n_line, line))
                    continue
                project, owner1, owner2 = line.split(';')
                project_name = project.strip(' \t\n\r\f')
                owner1_name = owner1.strip(' \t\n\r\f')
                owner2_name = owner2.strip(' \t\n\r\f')
                p = StudentProject(project_name, self.parent_directory)
                if owner1_name != 'none':
                    p.add_owner(owner1_name)
                if owner2_name != 'none':
                    p.add_owner(owner2_name)

                self.__declared_order.append(project_name)
                self.__projects[project_name] = p
            self.listed = True
        return list(map(lambda name: self[name], self.__declared_order))
示例#4
0
    def projects(d):
        r1 = 'https://github.com/owner/repo-2.git'
        p1 = StudentProject(r1, d)
        p1.add_owner('111111')
        p1.add_owner('222222')

        r2 = 'https://github.com/another-owner/repo-2.git'
        p2 = StudentProject(r2, d)
        p2.add_owner('313131')
        p2.add_owner('111112')

        r3 = 'https://github.com/owner2/repo-2.git'
        p3 = StudentProject(r3, d)
        p3.add_owner('891929')

        return [p1, p2, p3]
 def test_create_project_without_git_extension(self):
     project = StudentProject('https://github.com/USER/REPO', MagicMock())
     self.assertEquals('USER', project.user_dir_name)
     self.assertEquals('REPO', project.project_dir_name)
 def test_create_project_name_with_dots(self):
     project = StudentProject(
         'https://github.com/USER..WITH.HYPHENS/REPO.WITH.DOTS...git',
         MagicMock())
     self.assertEquals('USER..WITH.HYPHENS', project.user_dir_name)
     self.assertEquals('REPO.WITH.DOTS..', project.project_dir_name)
 def test_create_project_name_with_hyphens(self):
     project = StudentProject(
         'https://github.com/USER--WITH-HYPHENS/REPO-WITH--HYPHENS--.git',
         MagicMock())
     self.assertEquals('USER--WITH-HYPHENS', project.user_dir_name)
     self.assertEquals('REPO-WITH--HYPHENS--', project.project_dir_name)
 def test_create_simple_project_name(self):
     project = StudentProject('https://github.com/USER/REPO.git',
                              MagicMock())
     self.assertEquals('USER', project.user_dir_name)
     self.assertEquals('REPO', project.project_dir_name)
 def test_changing_protocol_to_ssh(self):
     self.assertEquals(
         'ssh://[email protected]/USER/REPO.git',
         StudentProject.to_ssh('https://github.com/USER/REPO.git'))