There is a complex software product, branched into Dev/Beta/Stable and having Hotfixes -- all branches migrate 'left to right' together time to time. We are writing functional tests (dozens, in future few hundred of kbytes of high level language code) and don't actually mess with original software code -- we test the executable. The question is about managing the tests on at leasts two branches.
The software consists of several components. Some of them are parallel and their updates influe only 5% of our tests code. Some are perpendicular and touch everything. The perpendicular component change is solvable via versioning the abstract communication layers.
My idea is:
- have a universal wrapper, which recognizes the version of software and:
- in case of component's big change the wrapper runs another tests file
- in case of tests set change the
skipIf Version >/</==/...decorators work for us
- remove outdated tests time to time according to Skip details
- have a single branch (trunk) in a repository
But my collegue says:
- branch the tests
- time to time put one branch over another, throwing away the Stable one
- "we don't need
ifs - they make code too complex"
So while we are developing several (at least Dev and Beta) branches at the same time, we would mess with folders and do copypaste. And what's wrong with
if? I thought they are ok in programming...
P.S.: wanted tags: branching, code-organization, versioning, functional-testing