Giter Site home page Giter Site logo

Comments (8)

niknetniko avatar niknetniko commented on September 23, 2024 1

The conclusion of talking it over IRL is the following:

  • We will disable left stripping by default.
  • We will keep right stripping by default.
  • We will add an option to the DSL to changing the strictness.

from universal-judge.

niknetniko avatar niknetniko commented on September 23, 2024 1

I think the argument was made to in any case only strip newlines, not all white space, as this would break some exercises (e.g. those where a grid should be made). This seems reasonable to me.

from universal-judge.

pdawyndt avatar pdawyndt commented on September 23, 2024

After giving this some thought, here's what I would like to suggest:

  • use a parameter (suggested names sanitize-output or autocomplete-final-newline) that adds \n at the end of stdout and stderr (does not apply to a returned string-value) if it doesn't already end with a newline; the default value of this parameter is True to make stdout and stderr automatically compliant with the C-adage that all text files should end with a newline, without these newlines cluttering the test specification
  • because the previous silently adds newlines to stdout and stderr by default, it is quite safe to migrate to exact comparison between expected and generated stdout and stderr without stripping by default (without breaking too many exercises that already use TESTed)

I guess this is the better of worlds where we do exact matching by default, but with silent addition of final newlines in case they are missing from the test specification (or without the need to clutter the specification with newlines after single-line outputs. This might also alleviate the tricky ways in which YAML treats newlines in multiline strings.

from universal-judge.

pdawyndt avatar pdawyndt commented on September 23, 2024

Also relates to dodona-edu/dodona#5168: automatic insertion of final newlines if missing (by default) would also resolve this Python Tutor issue (although it would seem more sensible if Dodona also wouldn't ever strip the final character (newline)).

from universal-judge.

pdawyndt avatar pdawyndt commented on September 23, 2024

I now see that my suggestion is also what @niknetniko suggested (but didn't read the original post until the very end).

from universal-judge.

pdawyndt avatar pdawyndt commented on September 23, 2024

Here's another reason why I would by default append a newline to stdout and stderr the string included in the test specification does not end with a newline: to follow the C/POSIX convention in the expected output displayed in Dodona:

image

from universal-judge.

niknetniko avatar niknetniko commented on September 23, 2024

From #486:

That the expected/generated values are not the same is a big argument in favour of doing strict comparison in my opinion, so I would not be against making the validations strict (as the main argument against it previously was that the status quo caused no problems if I recall correctly).

from universal-judge.

pdawyndt avatar pdawyndt commented on September 23, 2024

Here's an example that shows how confusing the newline-difference is for students, as it distracts from the true issue:

image

image

from universal-judge.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.