@@ -46,5 +46,106 @@ public void CanApplyToCurrentContext_ShouldBeFalse_WhenEnvironmentVariableIsNotS
4646 // Assert
4747 result . ShouldBeFalse ( ) ;
4848 }
49+
50+ [ Test ]
51+ public void GetCurrentBranch_ShouldDroneBranch_InCaseOfPush ( )
52+ {
53+ // Arrange
54+ const string droneBranch = "droneBranch" ;
55+
56+ Environment . SetEnvironmentVariable ( "DRONE_PULL_REQUEST" , "" ) ;
57+ Environment . SetEnvironmentVariable ( "DRONE_BRANCH" , droneBranch ) ;
58+
59+ var buildServer = new Drone ( ) ;
60+
61+ // Act
62+ var result = buildServer . GetCurrentBranch ( false ) ;
63+
64+ // Assert
65+ result . ShouldBe ( droneBranch ) ;
66+ }
67+
68+ [ Test ]
69+ public void GetCurrentBranch_ShouldUseDroneSourceBranch_InCaseOfPullRequestAndNonEmptyDroneSourceBranch ( )
70+ {
71+ // Arrange
72+ const string droneSourceBranch = "droneSourceBranch" ;
73+ Environment . SetEnvironmentVariable ( "DRONE_PULL_REQUEST" , "1" ) ;
74+ Environment . SetEnvironmentVariable ( "DRONE_SOURCE_BRANCH" , droneSourceBranch ) ;
75+
76+ var buildServer = new Drone ( ) ;
77+
78+ // Act
79+ var result = buildServer . GetCurrentBranch ( false ) ;
80+
81+ // Assert
82+ result . ShouldBe ( droneSourceBranch ) ;
83+ }
84+
85+ [ Test ]
86+ public void GetCurrentBranch_ShouldUseSourceBranchFromCiCommitRefSpec_InCaseOfPullRequestAndEmptyDroneSourceBranch ( )
87+ {
88+ // Arrange
89+ const string droneSourceBranch = "droneSourceBranch" ;
90+ const string droneDestinationBranch = "droneDestinationBranch" ;
91+
92+ string ciCommitRefSpec = $ "{ droneSourceBranch } :{ droneDestinationBranch } ";
93+
94+ Environment . SetEnvironmentVariable ( "DRONE_PULL_REQUEST" , "1" ) ;
95+ Environment . SetEnvironmentVariable ( "DRONE_SOURCE_BRANCH" , "" ) ;
96+ Environment . SetEnvironmentVariable ( "CI_COMMIT_REFSPEC" , ciCommitRefSpec ) ;
97+
98+ var buildServer = new Drone ( ) ;
99+
100+ // Act
101+ var result = buildServer . GetCurrentBranch ( false ) ;
102+
103+ // Assert
104+ result . ShouldBe ( droneSourceBranch ) ;
105+ }
106+
107+ [ Test ]
108+ public void GetCurrentBranch_ShouldUseDroneBranch_InCaseOfPullRequestAndEmptyDroneSourceBranchAndCiCommitRefSpec ( )
109+ {
110+ // Arrange
111+ const string droneBranch = "droneBranch" ;
112+
113+ Environment . SetEnvironmentVariable ( "DRONE_PULL_REQUEST" , "1" ) ;
114+ Environment . SetEnvironmentVariable ( "DRONE_SOURCE_BRANCH" , "" ) ;
115+ Environment . SetEnvironmentVariable ( "CI_COMMIT_REFSPEC" , "" ) ;
116+ Environment . SetEnvironmentVariable ( "DRONE_BRANCH" , droneBranch ) ;
117+
118+ var buildServer = new Drone ( ) ;
119+
120+ // Act
121+ var result = buildServer . GetCurrentBranch ( false ) ;
122+
123+ // Assert
124+ result . ShouldBe ( droneBranch ) ;
125+ }
126+
127+ [ Test ]
128+ public void GetCurrentBranch_ShouldUseDroneBranch_InCaseOfPullRequestAndEmptyDroneSourceBranchAndInvalidFormatOfCiCommitRefSpec ( )
129+ {
130+ // Arrange
131+ const string droneBranch = "droneBranch" ;
132+ const string droneSourceBranch = "droneSourceBranch" ;
133+ const string droneDestinationBranch = "droneDestinationBranch" ;
134+
135+ string ciCommitRefSpec = $ "{ droneSourceBranch } ;{ droneDestinationBranch } ";
136+
137+ Environment . SetEnvironmentVariable ( "DRONE_PULL_REQUEST" , "1" ) ;
138+ Environment . SetEnvironmentVariable ( "DRONE_SOURCE_BRANCH" , "" ) ;
139+ Environment . SetEnvironmentVariable ( "CI_COMMIT_REFSPEC" , ciCommitRefSpec ) ;
140+ Environment . SetEnvironmentVariable ( "DRONE_BRANCH" , droneBranch ) ;
141+
142+ var buildServer = new Drone ( ) ;
143+
144+ // Act
145+ var result = buildServer . GetCurrentBranch ( false ) ;
146+
147+ // Assert
148+ result . ShouldBe ( droneBranch ) ;
149+ }
49150 }
50151}
0 commit comments