Skip to content

Testing scripts are too different, and code quality is inconsistent #40

@dwRchyngqxs

Description

@dwRchyngqxs

I think there are two issues that we kind of swept under the rug and they came to bite us now in the form of inconsistent marking.
We have maintained the build+testing+marking processes separately and overall poorly.

I propose several fixes going forward; EDIT: I guess this has become a meta-issue / discussion so let's just embrace it and also list item raised by other people here:

  • Make a base marking repo for the marking infrastructure.
  • Have the coursework repo be a submodule of the base marking repo.
  • Share provided tests.
  • Disable ASAN recovery.
  • Update dependencies.
  • Update CI image.
  • Make PR/issue tags to know whether they are to be merged before marking or for the following year.
  • Make a list of interesting compilers to test changes on.
  • Justify the benefit of several compilation flows.
  • Move toward a unified building+testing+marking again.
  • Move the Rights and Components part of this issue to a .md file in the marking repo.

No longer to do:

  • Make a project listing all the changes to be done for a given year, and all the long running issues.
  • Make a script+CI to ensure building and report are consistent between all the different scripts scattered. (UI can stay different.) Not necessary: the TA script will import the student script.
  • Have a way to test compilers in different machine and with different environments. People seem against me on that one. Since github doesn't provide distros other than ubuntu for CI, I guess I can just try this item myself using act.
  • Improve code quality for building+testing+marking scripts. Tackled progressively with the recent PRs. Improvements are still welcomed.

About this last point: These build scripts are code that students may wish to read and understand, so we should strive to keep them readable, understandable, and using best code practices.
Thank you @Fiwo735 for the amazing work. Global variables are mostly gone, format strings are used instead of + concatenation. Most of the ugly code is gone! I'm still not satisfied with our class use but I will take the time to open issues progressively.

Components:

  • A repo for the marking infrastructure with a marking script, hidden tests, a Dockerfile, the marking CI, a test validation CI, and the coursework as a submodule.
  • For each year a marking repo with student marks and feedback.
  • A prebuilt riscv-gcc+spike+pk as an artifact on langproc-cw.
  • Coursework repo with a skeleton compiler, provided tests, course documentation, debugging documentation, a Dockerfile, 2 building scripts, a testing script. -> Ideally the build workflow is unified.
  • A Coursework repo for each group with CI permission (thanks @Fiwo735 @Jpnock).
  • The CI marking Docker image.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions