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))
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'))