3 ms·
Is there something like "test-driven versioning"? It would be rather simple: "Here is the testsuite for our (public) api. We support the use cases tested, but
by trias 8y ago
Is there something like "test-driven versioning"?
It would be rather simple: "Here is the testsuite for our (public) api. We support the use cases tested, but no more.
If you want your use case covered, please submit a testcase.
If we change an existing test, we increase the major version.
If we add tests, we increase the minor level.
If the test suite remains the same and we only change the code, it's a patch-level increase."
This could be verified automatically, increasing trust.
- steveklabnik 8y agoSemVer talks a lot about compatibility, but doesn't define it. Each project is supposed to on its own. You can just say this for any given project, and it would be compatible.
- slowmovintarget 8y agoI prefer Rich Hickey's definition of compatibility [1]: A function is compatible if it requires no more than it did, and provides no less than it did in the previous version. A library is compatible if it provides no fewer functions, and requires no additional context (transitive dependencies) to use it, and all of its functions are compatible as defined. When you wish to require more, or provide less, you make a function with a new name. [1] As linked elsewhere: https://youtu.be/oyLBGkS5ICk?t=1189 https://youtu.be/oyLBGkS5ICk?t=1189
- RyanCavanaugh 8y agoWhat happens if you add a testcase that passes in 5.3.2 (current) but fails in 5.3.1?
- yyx 8y agoNew feature added!
- baroffoos 8y agoI really really like this idea. Often I am wondering if something I am doing simply works by chance or if its an actual supported feature and as a developer I wonder if I can change something because someone might be depending on it. But I am left wondering something. How can you easily let people find out if their use case is included in the tests without having them read 20,000 tests.
- crummy 8y agoLike contract testing? https://docs.pact.io/ https://docs.pact.io/ That's more for HTTP communication between services but I wonder if you could build something similar for libraries.