final Date promoteWhen = getDate( 2009, 0, 4, 23, 0, 0, null );
final Date fromDate = getDate( 2009, 0, 1, 0, 0, 0, null );
final Date toDate = getDate( 2009, 0, 5, 1, 0, 0, null );
// start tran (35)
List<Transaction> startTransaction = Collections.singletonList( new Transaction( 35L, fromDate, "sometran",
"anyone" ) );
when( accurev.history( "workspace5", "35", null, 1, true, true ) ).thenReturn( startTransaction );
// end tran (42)
List<Transaction> endTransaction = Collections.singletonList( new Transaction( 42L, toDate, "sometran",
"anyone" ) );
when( accurev.history( "workspace5", "42", null, 1, true, true ) ).thenReturn( endTransaction );
// Stream hierarchy
// S2 < S4, S2 < WS3, S4 < WS5, S4 << WS7
//
// Changelog(WS5,35,42) involves
// -- diff(S4,35,42)
// -- hist(WS5,36-42)
// -- hist(S4,36-42)
//
// Promote S4 to S2 - not in diffS4, not in histS4, not in hist WS5 -
// not in changeset
// Promote WS3 to S2 - in diffS4, not hist histS4, not in hist WS5 - in
// "upstream changes"
// Promote WS5 to S4 - in diffS4, in histS4, not in hist WS5 - not in
// changeset (real version from WS5)
// Promote WS7 to S4 - in diffS4, in histS4, not in hist WS5 - in
// changeset as a promote transaction
// Keep WS5 - not in diffS4, not in histS4, in histWS5 - in changeset as
// a keep transaction
// This workspace is stream 5, attached to basis mystream 5
Stream workspaceStream = new Stream( "workspace5", 5, "stream4", 4, "myDepot", getDate( 2008, 10, 1, 10, 0, 0,
null ), "workspace" );
when( accurev.showStream( "workspace5" ) ).thenReturn( workspaceStream );
Stream basisStream = new Stream( "stream4", 4, "myDepot", 1, "myDepot", getDate( 2008, 1, 1 ), "normal" );
when( accurev.showStream( "stream4" ) ).thenReturn( basisStream );
// now we call diff between the tran ids - 35 to 42
FileDifference diffWS3toS2 = new FileDifference( 32L, "/promoted/WS3toS2", "3/2", "/promoted/WS3toS2", "6/1" );
FileDifference diffWS5toS4 = new FileDifference( 54L, "/promoted/WS5toS4", "5/3", "/promoted/WS5toS4", "8/1" );
FileDifference diffWS7toS4 = new FileDifference( 74L, "/promoted/WS7toS4", "7/12", "/promoted/WS7toS4", "3/13" );
when( accurev.diff( "stream4", "35", "42" ) )
.thenReturn( Arrays.asList( diffWS3toS2, diffWS5toS4, diffWS7toS4 ) );
// and we call hist for tranid + 1 to end trand ii
Transaction promoteWS5toS4 = new Transaction( 37L, promoteWhen, "promote", "aUser" );
promoteWS5toS4.setComment( "WS5toS4" );
promoteWS5toS4.addVersion( 54L, "/./promoted/WS5toS4", "4/5", "5/3", "3/2" );
Transaction promoteWS7toS4 = new Transaction( 38L, promoteWhen, "promote", "aUser" );
promoteWS7toS4.setComment( "WS7toS4" );
promoteWS7toS4.addVersion( 74L, "/./promoted/WS7toS4", "4/11", "7/12", "3/2" );
when( accurev.history( "stream4", "36", "42", 0, false, false ) ).thenReturn( Arrays.asList( promoteWS5toS4,
promoteWS7toS4 ) );
Transaction keepWS5 = new Transaction( 39L, keepWhen, "keep", "anOther" );
keepWS5.addVersion( 5L, "/./kept/WS5", "5/7", "5/7", "7/21" );
keepWS5.setComment( "keepWS5" );
when( accurev.history( "workspace5", "36", "42", 0, false, false ) ).thenReturn( Collections
.singletonList( keepWS5 ) );
AccuRevChangeLogCommand command = new AccuRevChangeLogCommand( getLogger() );