helpers_test.go 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  1. package helpers
  2. import (
  3. "os"
  4. "testing"
  5. )
  6. type tester struct {
  7. t *testing.T
  8. }
  9. func TestHelpers(t *testing.T) {
  10. sf := &tester{
  11. t: t,
  12. }
  13. sf.assert()
  14. sf.hassert()
  15. sf.init_()
  16. }
  17. // Неизвестное значение STAGE
  18. func (sf *tester) init_() {
  19. sf.t.Log("init_")
  20. sf.initBad1()
  21. _ = os.Unsetenv("STAGE")
  22. _ = os.Setenv("STAGE", "local")
  23. init_()
  24. }
  25. func (sf *tester) initBad1() {
  26. sf.t.Log("initBad1")
  27. defer func() {
  28. if panic_ := recover(); panic_ == nil {
  29. sf.t.Fatalf("initBad1(): panic==nil")
  30. }
  31. }()
  32. _ = os.Unsetenv("STAGE")
  33. _ = os.Setenv("STAGE", "tra-lala")
  34. init_()
  35. }
  36. // Проверка мягкого ассерта
  37. func (sf *tester) hassert() {
  38. sf.t.Log("assert")
  39. sf.hassertLocal()
  40. sf.hassertProd()
  41. sf.hassertProdGood1()
  42. }
  43. // Мягкая ТВЁРДАЯ проверка на ок
  44. func (sf *tester) hassertProdGood1() {
  45. sf.t.Log("hassertProdGood1")
  46. Паника(true, "tra-la-la")
  47. }
  48. // Твёрдая проверка
  49. func (sf *tester) hassertProd() {
  50. sf.t.Log("hassertProd")
  51. err := os.Setenv("STAGE", "prod")
  52. if err != nil {
  53. sf.t.Fatalf("hassertProd(): err=%v", err)
  54. }
  55. init_()
  56. defer func() {
  57. if panic_ := recover(); panic_ == nil {
  58. sf.t.Fatalf("assertLocal(): panic==nil")
  59. }
  60. }()
  61. Паника(false, "tra-la-la")
  62. }
  63. // ТВЁРДАЯ проверка
  64. func (sf *tester) hassertLocal() {
  65. sf.t.Log("hassertLocal")
  66. defer func() {
  67. if panic_ := recover(); panic_ == nil {
  68. sf.t.Fatalf("assertLocal(): panic==nil")
  69. }
  70. }()
  71. Паника(false, "tra-la-la")
  72. }
  73. //========================================================================
  74. // Проверка мягкого ассерта
  75. func (sf *tester) assert() {
  76. sf.t.Log("assert")
  77. sf.assertLocal()
  78. sf.assertProd()
  79. sf.assertProdGood1()
  80. }
  81. // Мягкая ТВЁРДАЯ проверка на ок
  82. func (sf *tester) assertProdGood1() {
  83. sf.t.Log("assertProdGood1")
  84. Провер(true, "tra-la-la")
  85. }
  86. // Мягкая мягка проверка (на проде)
  87. func (sf *tester) assertProd() {
  88. sf.t.Log("assertProd")
  89. err := os.Setenv("STAGE", "prod")
  90. if err != nil {
  91. sf.t.Fatalf("assertProd(): err=%v", err)
  92. }
  93. init_()
  94. Провер(false, "tra-la-la")
  95. }
  96. // Мягкая ТВЁРДАЯ локальная проверка (локально)
  97. func (sf *tester) assertLocal() {
  98. sf.t.Log("assertLocal")
  99. defer func() {
  100. if panic_ := recover(); panic_ == nil {
  101. sf.t.Fatalf("assertLocal(): panic==nil")
  102. }
  103. }()
  104. Провер(false, "tra-la-la")
  105. }