Repository navigation
Let proof serve behave like a whole server - #3
Merged
Merged
Conversation
no-stdin said reading input gets an empty string right away, like on
Basilisp. That's only half the story. Basilisp and ClojureCLR have no
stdin op and read their own stdin instead, so reading input waits for
the server's terminal, or gets the end of input right away when the
server was started in the background (an empty string on Basilisp, nil
on ClojureCLR). no-stdin now gets nil, which is what Clojure gives at
the end of input, and names ClojureCLR as well.
jank doesn't have a stdin op either, but its read-line throws ("TODO:
port read-line"), which a client sees as an eval error rather than a
value. That's the new read-line-throws scenario.
ClojureCLR also has no interrupt op, and the version it puts in
versions is a plain string, like Babashka's.
Testing a client against something like jank meant looking up which scenarios jank does and listing them all. Now -like jank turns them on at once, and the same goes for every other server proof has a profile for. More scenarios can follow as before (e.g. -like jank byte-writes). Each scenario lists the profiles of the servers that do it, and that's where -like gets them from. The tests make sure each server's scenarios get its column of the compatibility matrix, apart from eval.no-code (clients always send some code) and the checks dialtone's and repartee's profiles skip for their languages, and that Who names every server a scenario lists. proof list shows which scenarios each server gets. As the flag package stops at the first scenario, a flag after one now gets a hint that flags go first instead of an unknown scenario error.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
-like jankturns on every scenario jank does, for any server proof has a profile for, and the tests hold each server's scenarios to its column of the compatibility matrix.Probing the servers to fill those in showed that no-stdin was wrong about Basilisp: it reads its own stdin, so it only returns an empty string right away when started in the background. ClojureCLR does the same but returns nil, and jank throws, which is now its own scenario.