-
Notifications
You must be signed in to change notification settings - Fork 303
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Programming exercises
: Add Rust programming template
#8802
Programming exercises
: Add Rust programming template
#8802
Conversation
.gitattributes and .gitignore are ignored usually ignored by gradle, but we need them to be included for programming exercise templates.
This only applies to methods returning multiple Resources using a pattern. All use-cases expect non-directories only.
…low-all-template-filenames
…low-all-template-filenames
...tum/in/www1/artemis/service/connectors/jenkins/JenkinsProgrammingLanguageFeatureService.java
Show resolved
Hide resolved
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
👍 for code and manual test in Jenkins setup.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Reapprove Artemis code
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Tested on Ts3 and works
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM on TS3
Checklist
General
Server
Changes affecting Programming Exercises
Motivation and Context
Description
This PR adds a programming language template for Rust.
The template runs standard cargo tests using the cargo-nextest runner for JUnit output.
In the server code Rust is added to the
ProgrammingLanguage
enum and its switch statements.The template exercise example is the Strategy Pattern exercise as used in Java, Python and Swift.
Rust's reference rules and the long lived references of OOP patterns do not combine well. To not over-complicate the implementation, I moved the
dates
member ofContext
to the respective method parameters with shorter lifetimes.For testing code to be able to query the runtime type of trait objects (
Box<dyn SortStrategy>
) the trait needs to haveAny
as a supertrait.Because Rust has no reflection, structural tests are implemented by parsing the source code files.
Steps for Testing
Prerequisites:
High-Level Instructions
Setup
Rust
as the programming languageGenerate
Local Test
test/
test/assignment/
test/
directorycargo test
Exercise Participation
Cleanup
Testserver States
Note
These badges show the state of the test servers.
Green = Currently available, Red = Currently locked
Review Progress
Performance Review
Code Review
Manual Tests
Test Coverage
Screenshots
Summary by CodeRabbit
Summary by CodeRabbit
New Features
Documentation