/
githubmirror
/
guava
Обзор
Документация
Войти
/
githubmirror
/
guava
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
android/guava-testlib/test/com/google/common/testing/TestLogHandlerTest.java
102 строки
3 KB
cpovirk
Address some more counterfactual [CheckedExceptionNotThrown](https://errorprone.info/bugpattern/CheckedExceptionNotThrown) findings.
25 июн 2026, 20:33
25 июн 2026, 20:33
c37cd2a
Код
Авторство
О чём код?
/* * Copyright (C) 2008 The Guava Authors * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.google.common.testing; import static com.google.common.truth.Truth.assertThat; import java.util.logging.Level; import java.util.logging.LogRecord; import java.util.logging.Logger; import junit.framework.TestCase; import org.jspecify.annotations.NullUnmarked; /** * Unit test for {@link TestLogHandler}. * * @author kevinb */ @NullUnmarked public class TestLogHandlerTest extends TestCase { private TestLogHandler handler; private final TearDownStack stack = new TearDownStack(); @Override protected void setUp() throws Exception { super.setUp(); handler = new TestLogHandler(); // You could also apply it higher up the Logger hierarchy than this ExampleClassUnderTest.logger.addHandler(handler); ExampleClassUnderTest.logger.setUseParentHandlers(false); // optional stack.addTearDown( () -> { ExampleClassUnderTest.logger.setUseParentHandlers(true); ExampleClassUnderTest.logger.removeHandler(handler); }); } public void test() { assertTrue(handler.getStoredLogRecords().isEmpty()); ExampleClassUnderTest.foo(); LogRecord record = handler.getStoredLogRecords().get(0); assertEquals(Level.INFO, record.getLevel()); assertThat(record.getMessage()).isEqualTo("message"); assertThat(record.getThrown()).isEqualTo(EXCEPTION); } public void testConcurrentModification() { // Tests for the absence of a bug where logging while iterating over the // stored log records causes a ConcurrentModificationException assertTrue(handler.getStoredLogRecords().isEmpty()); ExampleClassUnderTest.foo(); ExampleClassUnderTest.foo(); for (LogRecord unused : handler.getStoredLogRecords()) { ExampleClassUnderTest.foo(); } } @Override public final void runBare() throws Throwable { try { setUp(); runTest(); } finally { tearDown(); } } @Override protected void tearDown() { stack.runTearDown(); } static final Exception EXCEPTION = new Exception(); static final class ExampleClassUnderTest { static final Logger logger = Logger.getLogger(ExampleClassUnderTest.class.getName()); static void foo() { logger.log(Level.INFO, "message", EXCEPTION); } private ExampleClassUnderTest() {} } }