JSAbrahams / mamba

🐍 The Mamba programming language, because we care about safety
MIT License
85 stars 3 forks source link

Test suite overhaul and merge lexer and parser #234

Closed JSAbrahams closed 2 years ago

JSAbrahams commented 2 years ago

Relevant issues

Fixes #63

codecov[bot] commented 2 years ago

Codecov Report

:exclamation: No coverage uploaded for pull request base (develop@eb7a8a8). Click here to learn what that means. The diff coverage is n/a.

Impacted file tree graph

@@            Coverage Diff             @@
##             develop     #234   +/-   ##
==========================================
  Coverage           ?   79.46%           
==========================================
  Files              ?      100           
  Lines              ?     8527           
  Branches           ?        0           
==========================================
  Hits               ?     6776           
  Misses             ?     1751           
  Partials           ?        0           

Continue to review full report at Codecov.

Legend - Click here to learn more Δ = absolute <relative> (impact), ø = not affected, ? = missing data Powered by Codecov. Last update eb7a8a8...5d3acb3. Read the comment docs.

JSAbrahams commented 2 years ago

Need to sleep on this, some unit tests borderline look like integration tests, in which case they should not be alongside the source. I used the rule of, if it uses a test resource, it belongs in the test directory. However, this is somewhat arbitrary I'd say. There is not much difference between passing a string directly, and parsing a file first and then passing the string encoding the file contents. So the grouping perhaps does not make much sense.

JSAbrahams commented 2 years ago

I'd say that, since the lexer and parser are so tightly integrated, it makes sense to see them as unit tests. As for the type checker and core, the distinction is perhaps less straightforward. It would look like a unit test if we would manually constuct an AST tree, but this is far more work than its worth. However, the functioning of type checker tests is tightly integrated with the success of the parser. Perhaps then it is best to treat these as integration tests, though the structure is very similar to the parse unit tests so I'm a bit on the fence here.

JSAbrahams commented 2 years ago

Merging the two actually now makes the distinction between unit and integration pretty clear now, check and core now are integration. Output is more of a system test. On a sidenote, core tests are integration as it does not run the type checker.