Split test code from library and merge with test data
GoogleCodeExporter opened this issue · 5 comments
In order to reduce the number of binary packages (Issue #83) it makes more sense to merge test cases with the test data. At the same time we still want test cases to be committed together with the code changes.
Therefore we will reorganise the layout of the repository to look something like this:
/mdanalysis
/package
/tests
where package will contain the current trunk without MDAnalysis/tests and tests will contain MDAnalysis/tests together with the test data.
Because git is much better at handling these kind of splitting/merging operations we will do this once the repository has been gittified (Issue #86).
Original issue reported on code.google.com by `orbeckst` on 19 Nov 2011 at 4:00
* Blocked on: #86
(If anyone else feels they would like to do this please grab the ticket!)
Original comment by orbeckst
on 19 Nov 2011 at 4:06
- Changed state: New
Original comment by orbeckst
on 6 Dec 2011 at 6:18
- Added labels: Type-Enhancement
- Removed labels: Type-Defect
I'm looking for suggestions on some git magic to create the new layout as per
the first comment.
My idea was to
1. somehow merge testdata back into master
2. git mv files into separate directories
The plan is flawed, though: Just merging replays all the deletions that were
used to split the test data from the code in the first place.
What I have at the moment strikes me as rather un-elegant (and it looses
history):
1. git mv master-stuff package
2. git checkout testdata MDAnalysisTestData # just gets the files but they
appear as "new" -- looses history
3. git mv stuff around...
Any suggestions how to use git to merge the testdata back into master?
Cherry-picking?
Thanks,
Oli
Original comment by orbeckst
on 19 Dec 2011 at 2:03
- Changed state: Started
Ok, I just played a little with git (and google) and here is what I think
should work as needed:
Prepare the master branch:
1. git checkout master
2. git mv stuff into package dir
3. git commit
Prepare the testdata branch
1'. git checkout testdata
2'. git mv stuff into tests dir
3'. git commit
And then do the merge:
4. git checkout master
5. git merge --squash -s resolve testdata
6. Check that everything is OK
7. git commit
The "--squash" if just to stop the merge process before committing.
The trick is using "-s resolve" when performing the merge: I tried this locally
and everything went smoothly without any conflict nor history loss.
Git is really awesome!
Original comment by sebastie...@gmail.com
on 20 Dec 2011 at 10:34
Thanks, Séb, that was some good git-voodoo.
I renamed the tests directory to testsuite and did various adjustments. See
comments for commit 30e21da161. Seems to work but feedback is most welcome.
The wiki and other docs needs to be updated. If anyone finds anything that is
obviously wrong please correct as needed. Thanks.
Oli
Original comment by orbeckst
on 21 Dec 2011 at 10:20
- Changed state: Fixed