diff --git a/build_tools/create_basic_gitlab.py b/build_tools/create_basic_gitlab.py index f1ff18e1e54ec8c35cd3c7d2730abfbbb024fa84..ba18ca5c2eb65a9fea9d4d6ced6b7374d306f155 100644 --- a/build_tools/create_basic_gitlab.py +++ b/build_tools/create_basic_gitlab.py @@ -53,24 +53,37 @@ gitlab_oauth_token = resp_data["access_token"] gl = gitlab.Gitlab(gitlab_url, oauth_token=gitlab_oauth_token) # create users -user_data = { - "username": "travo-test-etu", - "email": "travo@gmail.com", - "name": "Étudiant de test pour travo", - "password": "aqwzsx(t1", - "can_create_group": "True", -} - -user = create_user(user_data) - -other_user_data = { - "username": "blondin_al", - "email": "blondin_al@blondin_al.fr", - "name": "Utilisateur de test pour travo", - "password": "aqwzsx(t2", -} +users_data = [ + { + "username": "student1", + "email": "travo@gmail.com", + "name": "Étudiant de test pour travo", + "password": "aqwzsx(t1", + "can_create_group": "True", + }, + { + "username": "student2", + "email": "student2@foo.bar", + "name": "Student 2", + "password": "aqwzsx(t2", + }, + { + "username": "instructor1", + "email": "instructor1@foo.bar", + "name": "Instructor 1", + "password": "aqwzsx(t3", + }, + { + "username": "instructor2", + "email": "instructor2@foo.bar", + "name": "Instructor 2", + "password": "aqwzsx(t4", + }, +] + +users = {user_data["username"]: create_user(user_data) for user_data in users_data} +user = users["student1"] -other_user = create_user(other_user_data) # create user projects and groups project_data = {"name": "nom-valide", "visibility": "private"} @@ -78,7 +91,7 @@ project_data = {"name": "nom-valide", "visibility": "private"} create_user_project(user, project_data) project_data = { - "name": "Fork-de-travo-test-etu-du-projet-Exemple-projet-CICD", + "name": "Fork-de-student1-du-projet-Exemple-projet-CICD", "visibility": "private", } @@ -119,7 +132,7 @@ project = create_user_project(admin_user, project_data) # create commits # See https://docs.gitlab.com/ce/api/commits.html#create-a-commit-with-multiple-files-and-actions # noqa: E501 # for actions detail -data = { +commits_data = { "branch": "master", "commit_message": "blah blah blah", "author_name": user.name, @@ -134,7 +147,7 @@ data = { } try: - project.commits.create(data) + project.commits.create(commits_data) except gitlab.exceptions.GitlabCreateError as e: print(f"file already committed: {e.error_message}") diff --git a/conftest.py b/conftest.py index 6c080411527117e39e3d3ed690c938efa76b07dd..8178b2ec8e0ecad089374869bce1c1da3f0e046e 100644 --- a/conftest.py +++ b/conftest.py @@ -41,7 +41,7 @@ def test_run_id() -> str: @pytest.fixture def project_path(test_run_id: str) -> str: - return f"travo-test-etu/temporary-test-projet-{test_run_id}" + return f"student1/temporary-test-projet-{test_run_id}" @pytest.fixture @@ -76,7 +76,7 @@ def group(gitlab: GitLab, group_path: str, group_name: str) -> Iterator[Group]: @pytest.fixture def user_name() -> str: - return "travo-test-etu" + return "student1" @pytest.fixture @@ -86,7 +86,7 @@ def user(gitlab: GitLab, user_name: str) -> User: @pytest.fixture def other_user(gitlab: GitLab) -> User: - return gitlab.get_user("blondin_al") + return gitlab.get_user("student2") @pytest.fixture diff --git a/travo/assignment.py b/travo/assignment.py index 9446106c04c39b5d6d4b80f4efc715b89064d84b..f5e56e4b1a152bd5e83e0c1c71967b71502cd497 100755 --- a/travo/assignment.py +++ b/travo/assignment.py @@ -113,7 +113,7 @@ class Assignment: >>> assignment = getfixture("standalone_assignment") >>> assignment.submission_path() - 'travo-test-etu/TestAssignment-2...' + 'student1/TestAssignment-2...' """ username = self.get_username(username) return username + "/" + os.path.basename(self.repo_path) @@ -167,7 +167,7 @@ class Assignment: >>> assignment.get_submission_username(assignment.repo()) >>> project = getfixture("standalone_assignment_submission") >>> assignment.get_submission_username(project) - 'travo-test-etu' + 'student1' """ if project.path_with_namespace == self.repo_path: return None @@ -332,7 +332,7 @@ class Assignment: >>> path = assignment.submission_path() >>> project = forge.get_project(path) >>> project.path_with_namespace - 'travo-test-etu/TestAssignment-20...' + 'student1/TestAssignment-20...' >>> print(forge.git(["config", "--local", "user.name"], ... capture_output=True, ... cwd=assignment_dir).stdout.decode(), end='') @@ -348,8 +348,8 @@ class Assignment: ... capture_output=True, ... cwd=assignment_dir, ... ).stdout.decode(), end='') - origin http://.../travo-test-etu/TestAssig...git (fetch) - origin http://.../travo-test-etu/TestAssig...git (push) + origin http://.../student1/TestAssig...git (fetch) + origin http://.../student1/TestAssig...git (push) This is an idempotent operation: diff --git a/travo/course.py b/travo/course.py index 9077528a52e3ea1aba08a3cd4a60299904bf831b..1c59bdbe089ede106b95388c134c7813e9ea0869 100755 --- a/travo/course.py +++ b/travo/course.py @@ -80,7 +80,7 @@ class CourseAssignment(Assignment): >>> assignment = course.assignment("SubCourse/Assignment1") >>> assignment.submission_path_components() - ('travo-test-etu', 'TestCourse', '2020-2021', 'SubCourse', 'Assignment1') + ('student1', 'TestCourse', '2020-2021', 'SubCourse', 'Assignment1') >>> assignment.submission_path_components(username="john.doo") ('john.doo', 'TestCourse', '2020-2021', 'SubCourse', 'Assignment1') @@ -91,7 +91,7 @@ class CourseAssignment(Assignment): >>> course.path='TestModule/TestCourse' >>> assignment.submission_path_components() - ('travo-test-etu-travo', 'TestModule', 'TestCourse', '2020-2021', 'SubCourse', 'Assignment1') + ('student1-travo', 'TestModule', 'TestCourse', '2020-2021', 'SubCourse', 'Assignment1') """ root = self.get_username(username) if self.course.group_submissions: @@ -110,21 +110,21 @@ class CourseAssignment(Assignment): >>> course = getfixture("course") >>> course.assignment("SubCourse/Assignment1").submission_path() - 'travo-test-etu/TestCourse-SubCourse-Assignment1' + 'student1/TestCourse-SubCourse-Assignment1' >>> course = getfixture("rich_course") >>> course.assignment("SubCourse/Assignment1").submission_path() - 'travo-test-etu/TestCourse-2020-2021-SubCourse-Assignment1' + 'student1/TestCourse-2020-2021-SubCourse-Assignment1' >>> course.assignment("SubCourse/Assignment1", ... student_group="Group1").submission_path() - 'travo-test-etu/TestCourse-2020-2021-SubCourse-Assignment1' + 'student1/TestCourse-2020-2021-SubCourse-Assignment1' More examples with grouped submissions: >>> course.group_submissions = True >>> assignment = course.assignment("SubCourse/Assignment1") >>> assignment.submission_path() - 'travo-test-etu-travo/TestCourse/2020-2021/SubCourse/Assignment1' + 'student1-travo/TestCourse/2020-2021/SubCourse/Assignment1' >>> assignment.submission_path(username="john.doo") 'john-doo-travo/TestCourse/2020-2021/SubCourse/Assignment1' """ @@ -277,7 +277,7 @@ class CourseAssignment(Assignment): >>> assignment.get_submission_username(assignment.repo()) >>> assignment.get_submission_username(submission_repo) - 'travo-test-etu' + 'student1' TODO: test with a rich course and the assignment fork for a student group """ diff --git a/travo/gitlab.py b/travo/gitlab.py index 9f90c2dc2dd747ef0719b8db4e3f7b0a4b45d165..18f110b3e004ff6a5432b3578cf32358f5faced6 100644 --- a/travo/gitlab.py +++ b/travo/gitlab.py @@ -208,7 +208,7 @@ class GitLab: Login. Here the credentials are passed as parameters; they typically are instead entered interactively by the user: - >>> gitlab.login(username="travo-test-etu", + >>> gitlab.login(username="student1", ... password="aqwzsx(t1") Now we may access non-public information like the user status: @@ -397,12 +397,12 @@ class GitLab: >>> forge = getfixture("gitlab") >>> forge.login() >>> forge.namespace_id("") - >>> forge.namespace_id("travo-test-etu") + >>> forge.namespace_id("student1") 2 >>> forge.namespace_id("group1") - 6 + 8 >>> forge.namespace_id("group1/subgroup") - 7 + 9 >>> forge.namespace_id("not_a_group") Traceback (most recent call last): @@ -471,7 +471,7 @@ class GitLab: >>> forge = getfixture('gitlab') >>> path = getfixture('project_path'); path - 'travo-test-etu/temporary-test-projet-20...' + 'student1/temporary-test-projet-20...' >>> name = getfixture('project_name'); name 'temporary test projet created at 20...' @@ -562,13 +562,13 @@ class GitLab: >>> project.http_url_to_repo 'http://.../groupe-public-test/projet-public.git' - >>> project = gitlab.get_project("travo-test-etu/nom-valide") + >>> project = gitlab.get_project("student1/nom-valide") Traceback (most recent call last): ... travo.gitlab.ResourceNotFoundError: ...ide not found: 404 Project Not Found >>> gitlab.login() - >>> project = gitlab.get_project("travo-test-etu/nom-valide") + >>> project = gitlab.get_project("student1/nom-valide") >>> project.owner User(gitlab=...) """ @@ -593,7 +593,7 @@ class GitLab: 'http://.../groupe-public-test/projet-public.git' >>> path = getfixture('project_path'); path - 'travo-test-etu/temporary-test-projet-20...' + 'student1/temporary-test-projet-20...' >>> name = getfixture('project_name'); name 'temporary test projet created at 20...' @@ -714,7 +714,7 @@ class GitLab: >>> gitlab.login() >>> user = gitlab.get_current_user() >>> user.username - 'travo-test-etu' + 'student1' >>> gitlab.logout() @@ -740,11 +740,11 @@ class GitLab: >>> gitlab = getfixture("gitlab") - >>> user = gitlab.get_user("travo-test-etu") + >>> user = gitlab.get_user("student1") >>> user.username - 'travo-test-etu' + 'student1' >>> user.web_url - 'http://.../travo-test-etu' + 'http://.../student1' >>> user.public_email >>> assert gitlab.get_user(user) is user @@ -787,8 +787,8 @@ class GitLab: >>> capfd = getfixture('capfd') >>> gitlab_url = getfixture('gitlab_url') - >>> url = (f"{gitlab_url}/travo-test-etu/" - ... "Fork-de-travo-test-etu-du-projet-Exemple-projet-CICD.git") + >>> url = (f"{gitlab_url}/student1/" + ... "Fork-de-student1-du-projet-Exemple-projet-CICD.git") >>> gitlab = getfixture('gitlab') >>> gitlab.login() >>> gitlab.git(["clone", url, "repository"], cwd=gitlab.home_dir) @@ -1112,7 +1112,7 @@ class Resource(metaclass=ClassCallMetaclass): >>> gitlab = getfixture('gitlab') >>> gitlab.login() - >>> project = gitlab.get_project("travo-test-etu/nom-valide") + >>> project = gitlab.get_project("student1/nom-valide") >>> import datetime >>> description = f"Description: {datetime.datetime.now()}" >>> import logging @@ -1122,7 +1122,7 @@ class Resource(metaclass=ClassCallMetaclass): 'Description: 20...' >>> assert project.description == description - >>> project = gitlab.get_project("travo-test-etu/nom-valide") + >>> project = gitlab.get_project("student1/nom-valide") >>> assert project.description == description """ self.setattributes(**{key: value}) @@ -1786,7 +1786,7 @@ class Project(Resource): Traceback (most recent call last): ... RuntimeError: get file myfile of ref mybranch - of project travo-test-etu/temporary-test-projet-20... + of project student1/temporary-test-projet-20... failed: 404 Commit Not Found >>> project.ensure_file(filename, branch) @@ -1815,14 +1815,14 @@ class Project(Resource): Traceback (most recent call last): ... RuntimeError: get file foobar of ref mybranch - of project travo-test-etu/temporary-test-projet-20... + of project student1/temporary-test-projet-20... failed: 404 Commit Not Found >>> project.get_file(filename, "foobar") Traceback (most recent call last): ... RuntimeError: get file foobar of ref mybranch - of project travo-test-etu/temporary-test-projet-20... + of project student1/temporary-test-projet-20... failed: 404 Commit Not Found """ file = urlencode(file) @@ -2038,7 +2038,7 @@ class Project(Resource): >>> project = getfixture('project') >>> project.get_creator() - User(gitlab=...username='travo-test-etu'...) + User(gitlab=...username='student1'...) """ if self._get_creator_cache is None: creator_id = self.creator_id @@ -2658,7 +2658,7 @@ class GitLabTest(GitLab): """ base_url: str = "http://gitlab/" - username: str = "travo-test-etu" + username: str = "student1" password: str = "aqwzsx(t1" def __init__(self, base_url: str = base_url) -> None: