Abstract:
A software testing tool is presented, which uses dependency analysis to greatly optimize the process of running tests.
A software testing tool is presented, which uses dependency analysis to greatly optimize the process of running tests.
It has been more than a year since I created this question on GitHub Community; a couple of days after that I found the solution by myself, so I answered my own question, and to this date comments keep being added by people who were helped by my post.
When I look at it today, I notice that my answer has this particular style, this grumpy indignation which has become so characteristic of me, after a lifetime of battling with lame software, and even worse, with lame error messages.
I thought I should share this on my blog for posterity.
Here is the link:
A mechanism is described for automatically converting method invocations of
any programmatic interface into a single-method normal form and
converting back to invocations of the original interface, so that
general-purpose operations can be performed on the normal form without
explicit knowledge of the interface being invoked. Implementations are
provided for C# and for Java.
The Bathyscaphe logo, a line drawing of
bathyscaphe Trieste
by Mike Nakis, based on art found at
bertrandpiccard.com
|
This article introduces Bathyscaphe, an open-source java library that you can use to assert that your objects are immutable and/or thread-safe.
Programmers all over the world are embracing immutability more and more; however, mutation is still a thing, and in all likelihood will continue being a thing for as long as there will be programmers. In a world where both mutable and immutable objects exist side by side, there is often a need to ascertain that an object is of the immutable variety before proceeding to use it for certain purposes. For example, when an object is used as a key in a hash map, it better be immutable, or else the hash code of the key may change, causing the map to severely malfunction.
Please note that this is work in progress. I am still working on it and refining it, as my understanding of it improves.
I have a set of public repositories on GitHub showcasing my work, (⬀) which is in java with maven. These projects are interdependent, so when you check out one of them, in order to compile and run it you need the binaries of some of the others. You could manually check out all of them and put them in an IDE project, but that's too much work. Solving this problem requires having Continuous Integration & Continuous Deployment (CI/CD) in place, so I decided to try my luck in setting one up using free services only.
The process involves three entities:
We begin with a situation where we already have the Source Repository (GitHub) and we want to set-up the CI/CD Provider (CircleCI) and the Artifact Repository (Repsy).