Make sure we only stash a given global only once per test case since we
do not want to override the original value.
This allows the same test to modify the same global multiple times,
while still preserving the original value to be restored after the
test case finished.
Change-Id: I9056d6d6879fb976a192960f661904287f9760a8
* if an array is given as first argument).
*/
protected function setMwGlobals( $pairs, $value = null ) {
* if an array is given as first argument).
*/
protected function setMwGlobals( $pairs, $value = null ) {
- if ( !is_array( $pairs ) ) {
- $key = $pairs;
- $this->mwGlobals[$key] = $GLOBALS[$key];
- $GLOBALS[$key] = $value;
- } else {
- foreach ( $pairs as $key => $value ) {
+
+ // Normalize (string, value) to an array
+ if( is_string( $pairs ) ) {
+ $pairs = array( $pairs => $value );
+ }
+
+ foreach ( $pairs as $key => $value ) {
+ // NOTE: make sure we only save the global once or a second call to
+ // setMwGlobals() on the same global would override the original
+ // value.
+ if ( !array_key_exists( $key, $this->mwGlobals ) ) {
$this->mwGlobals[$key] = $GLOBALS[$key];
$this->mwGlobals[$key] = $GLOBALS[$key];
- $GLOBALS[$key] = $value;
+
+ // Override the global
+ $GLOBALS[$key] = $value;