This regressed in https://github.com/com-lihaoyi/cask/pull/52, resulting in both false positives (where a GET and a POST shared the same route, giving an unnecessary error) and false negatives (where multiple GETs sharing the same route failed to create an error). The basic problem was that since combining the various HTTP methods into a single routing trie, the old logic comparing uniqueness/duplication/etc. was no longer correct in the new combined trie.
This PR fixes it by doing a groupBy to split up the entries in the combined trie by HTTP method, before running essentially the same validation.
We augment the test suite, tightening up cask/test/src/test/cask/DispatchTrieTests.scala to make it stricter, checking exact error messages to ensure we get not just any failure but the correct failure when the validation code triggers. This should hopefully catch this sort of regression in future.
This regressed in https://github.com/com-lihaoyi/cask/pull/52, resulting in both false positives (where a
GET
and aPOST
shared the same route, giving an unnecessary error) and false negatives (where multipleGET
s sharing the same route failed to create an error). The basic problem was that since combining the various HTTP methods into a single routing trie, the old logic comparing uniqueness/duplication/etc. was no longer correct in the new combined trie.This PR fixes it by doing a
groupBy
to split up the entries in the combined trie by HTTP method, before running essentially the same validation.We augment the test suite, tightening up cask/test/src/test/cask/DispatchTrieTests.scala to make it stricter, checking exact error messages to ensure we get not just any failure but the correct failure when the validation code triggers. This should hopefully catch this sort of regression in future.