github.com/go-spring/spring-base@v1.1.3/run/run_test.go (about)

     1  /*
     2   * Copyright 2012-2019 the original author or authors.
     3   *
     4   * Licensed under the Apache License, Version 2.0 (the "License");
     5   * you may not use this file except in compliance with the License.
     6   * You may obtain a copy of the License at
     7   *
     8   *      https://www.apache.org/licenses/LICENSE-2.0
     9   *
    10   * Unless required by applicable law or agreed to in writing, software
    11   * distributed under the License is distributed on an "AS IS" BASIS,
    12   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    13   * See the License for the specific language governing permissions and
    14   * limitations under the License.
    15   */
    16  
    17  package run
    18  
    19  import (
    20  	"os"
    21  	"testing"
    22  
    23  	"github.com/go-spring/spring-base/assert"
    24  )
    25  
    26  func TestSetMode(t *testing.T) {
    27  	assert.True(t, TestMode())
    28  	reset := SetMode(NormalModeFlag)
    29  	assert.True(t, NormalMode())
    30  	assert.False(t, RecordMode())
    31  	assert.False(t, ReplayMode())
    32  	assert.False(t, TestMode())
    33  	reset()
    34  	assert.False(t, NormalMode())
    35  	assert.False(t, RecordMode())
    36  	assert.False(t, ReplayMode())
    37  	assert.True(t, TestMode())
    38  }
    39  
    40  func TestNormalMode(t *testing.T) {
    41  	oldArgs := os.Args
    42  	defer func() { os.Args = oldArgs }()
    43  	os.Args = nil
    44  	initMode()
    45  	assert.True(t, NormalMode())
    46  	assert.False(t, RecordMode())
    47  	assert.False(t, ReplayMode())
    48  	assert.False(t, TestMode())
    49  }
    50  
    51  func TestRecordMode(t *testing.T) {
    52  	oldArgs := os.Args
    53  	defer func() { os.Args = oldArgs }()
    54  	os.Args = nil
    55  	os.Setenv("GS_RECORD_MODE", "true")
    56  	defer func() { os.Unsetenv("GS_RECORD_MODE") }()
    57  	initMode()
    58  	assert.False(t, NormalMode())
    59  	assert.True(t, RecordMode())
    60  	assert.False(t, ReplayMode())
    61  	assert.False(t, TestMode())
    62  }
    63  
    64  func TestReplayMode(t *testing.T) {
    65  	oldArgs := os.Args
    66  	defer func() { os.Args = oldArgs }()
    67  	os.Args = nil
    68  	os.Setenv("GS_REPLAY_MODE", "local")
    69  	defer func() { os.Unsetenv("GS_REPLAY_MODE") }()
    70  	initMode()
    71  	assert.False(t, NormalMode())
    72  	assert.False(t, RecordMode())
    73  	assert.True(t, ReplayMode())
    74  	assert.False(t, TestMode())
    75  }
    76  
    77  func TestMustTestMode(t *testing.T) {
    78  	oldArgs := os.Args
    79  	defer func() { os.Args = oldArgs }()
    80  	os.Args = nil
    81  	assert.Panic(t, func() {
    82  		MustTestMode()
    83  	}, "should be called in test mode")
    84  }