supercollider icon indicating copy to clipboard operation
supercollider copied to clipboard

Render/parse docs as a part of the CI

Open JordanHendersonMusic opened this issue 7 months ago • 3 comments

Motivation

It's easy to leave out a ::, making the docs invalid. As in #6938.

Probably don't need to render them, only parse them.

Description of Proposed Feature

Add a unit test, should be easy.

Plan for Implementation

JordanHendersonMusic avatar Jun 06 '25 06:06 JordanHendersonMusic

It would be great to catch broken internal links as well. Not sure offhand what the mechanism would be to catch this, but here are a couple places where broken links are caught in SCDoc:

https://github.com/supercollider/supercollider/blob/13c0be0c2f6d6d5580fa02f149a9014788938a53/SCClassLibrary/SCDoc/SCDoc.sc#L648-L686

https://github.com/supercollider/supercollider/blob/13c0be0c2f6d6d5580fa02f149a9014788938a53/SCClassLibrary/SCDoc/SCDocRenderer.sc#L55-L93

mtmccrea avatar Jun 06 '25 07:06 mtmccrea

I started digging into this (see https://github.com/supercollider/supercollider/compare/develop...capital-G:supercollider:build-help-target) but currently run into an error during the build step?

https://github.com/capital-G/supercollider/actions/runs/15487130834/job/43604340109

Run timeout 5m cmake --build $BUILD_PATH --config Release --target Help
[  0%] Built target tlsf
[  0%] Building CXX object server/scsynth/CMakeFiles/libscsynth.dir/SC_Jack.cpp.o
/home/runner/work/supercollider/supercollider/server/scsynth/SC_Jack.cpp:34:10: fatal error: 'jack/jack.h' file not found
   34 | #include <jack/jack.h>
      |          ^~~~~~~~~~~~~
1 error generated.
gmake[3]: *** [server/scsynth/CMakeFiles/libscsynth.dir/build.make:499: server/scsynth/CMakeFiles/libscsynth.dir/SC_Jack.cpp.o] Error 1
gmake[2]: *** [CMakeFiles/Makefile2:3901: server/scsynth/CMakeFiles/libscsynth.dir/all] Error 2
gmake[1]: *** [CMakeFiles/Makefile2:4127: lang/CMakeFiles/Help.dir/rule] Error 2

Can someone make sense of this why after an install build of SuperCollider we could run into an error b/c of missing jack?

One problem though: I think if we run into an invalid syntax the parser will bail out on a primitive level and this will also return sclang into its REPL state from which we can't exit anymore in CI - we will bail out after the timeout of 5 minutes though. We should introduce a flag to sclang like --script-mode in order to not have the ability to fall back into REPL mode if something goes south.

capital-G avatar Jun 06 '25 09:06 capital-G

I'm not too sure what is going on here. I was going to do this as a SC UnitTest by calling a method on SCDoc, there is already a render all, should be easy enough to add a parse all. This should throw a primitive error if it can't parse them, so we just test there were no exceptions thrown.

JordanHendersonMusic avatar Jun 06 '25 10:06 JordanHendersonMusic