github.com/unirita/cuto@v0.9.8-0.20160830082821-aa6652f877b7/servant/main_test.go (about)

     1  package main
     2  
     3  import (
     4  	"os"
     5  	"path/filepath"
     6  	"runtime"
     7  	"strings"
     8  	"testing"
     9  
    10  	"github.com/unirita/cuto/servant/config"
    11  	"github.com/unirita/cuto/testutil"
    12  )
    13  
    14  func getTestDataDir() string {
    15  	return filepath.Join(testutil.GetBaseDir(), "servant", "_testdata")
    16  }
    17  
    18  func TestRealMain_バージョン確認ができる(t *testing.T) {
    19  	c := testutil.NewStdoutCapturer()
    20  	args := new(arguments)
    21  	args.v = true
    22  
    23  	c.Start()
    24  	realMain(args)
    25  	out := c.Stop()
    26  
    27  	if !strings.Contains(out, Version) {
    28  		t.Error("バージョンが出力されていない。")
    29  	}
    30  }
    31  
    32  func TestRealMain_設定ファイルから設定がロードされた上で内容にエラーがあればリターンコードrc_errorを返す(t *testing.T) {
    33  	var configFile string
    34  	if runtime.GOOS == "windows" {
    35  		configFile = "error.ini"
    36  	} else {
    37  		configFile = "error_l.ini"
    38  	}
    39  	config.FilePath = filepath.Join(getTestDataDir(), configFile)
    40  
    41  	args := new(arguments)
    42  	rc := realMain(args)
    43  
    44  	if config.Servant.Sys.BindPort != 65536 {
    45  		t.Error("取得した設定値が想定と違っている。")
    46  	}
    47  	if rc != rc_error {
    48  		t.Errorf("リターンコード[%d]が想定値と違っている。", rc)
    49  	}
    50  }
    51  
    52  func TestRealMain_ロガー初期化でのエラー発生時にリターンコードrc_errorを返す(t *testing.T) {
    53  	var configFile string
    54  	if runtime.GOOS == "windows" {
    55  		configFile = "logerror.ini"
    56  	} else {
    57  		configFile = "logerror_l.ini"
    58  	}
    59  	config.FilePath = filepath.Join(getTestDataDir(), configFile)
    60  
    61  	args := new(arguments)
    62  	rc := realMain(args)
    63  
    64  	if rc != rc_error {
    65  		t.Errorf("リターンコード[%d]が想定値と違っている。", rc)
    66  	}
    67  }
    68  
    69  func TestRealMain_Run関数でのエラー発生時にリターンコードrc_errorを返す(t *testing.T) {
    70  	var configFile string
    71  	if runtime.GOOS == "windows" {
    72  		configFile = "binderror.ini"
    73  	} else {
    74  		configFile = "binderror_l.ini"
    75  	}
    76  	config.FilePath = filepath.Join(getTestDataDir(), configFile)
    77  
    78  	args := new(arguments)
    79  	rc := realMain(args)
    80  
    81  	if rc != rc_error {
    82  		t.Errorf("リターンコード[%d]が想定値と違っている。", rc)
    83  	}
    84  }
    85  
    86  func TestFetchArgs_実行時引数を取得できる(t *testing.T) {
    87  	os.Args = append(os.Args, "-v")
    88  	args := fetchArgs()
    89  	if !args.v {
    90  		t.Error("バージョン出力オプションが取得できていない。")
    91  	}
    92  }