Tests that a new writer is only used if it actually works.
(t *testing.T)
| 80 | |
| 81 | // Tests that a new writer is only used if it actually works. |
| 82 | func TestResilientMultiWriter(t *testing.T) { |
| 83 | tests := []struct { |
| 84 | name string |
| 85 | writers []io.Writer |
| 86 | }{ |
| 87 | { |
| 88 | name: "All valid writers", |
| 89 | writers: []io.Writer{ |
| 90 | mockedWriter{ |
| 91 | wantErr: false, |
| 92 | }, |
| 93 | mockedWriter{ |
| 94 | wantErr: false, |
| 95 | }, |
| 96 | }, |
| 97 | }, |
| 98 | { |
| 99 | name: "All invalid writers", |
| 100 | writers: []io.Writer{ |
| 101 | mockedWriter{ |
| 102 | wantErr: true, |
| 103 | }, |
| 104 | mockedWriter{ |
| 105 | wantErr: true, |
| 106 | }, |
| 107 | }, |
| 108 | }, |
| 109 | { |
| 110 | name: "First invalid writer", |
| 111 | writers: []io.Writer{ |
| 112 | mockedWriter{ |
| 113 | wantErr: true, |
| 114 | }, |
| 115 | mockedWriter{ |
| 116 | wantErr: false, |
| 117 | }, |
| 118 | }, |
| 119 | }, |
| 120 | { |
| 121 | name: "First valid writer", |
| 122 | writers: []io.Writer{ |
| 123 | mockedWriter{ |
| 124 | wantErr: false, |
| 125 | }, |
| 126 | mockedWriter{ |
| 127 | wantErr: true, |
| 128 | }, |
| 129 | }, |
| 130 | }, |
| 131 | } |
| 132 | |
| 133 | for _, tt := range tests { |
| 134 | writers := tt.writers |
| 135 | multiWriter := MultiLevelWriter(writers...) |
| 136 | |
| 137 | logger := New(multiWriter).With().Timestamp().Logger().Level(InfoLevel) |
| 138 | logger.Info().Msg("Test msg") |
| 139 |