Skip to content

Update tests for JSpecify#380

Merged
jodastephen merged 1 commit into
mainfrom
jspecify-tests1
Jun 14, 2026
Merged

Update tests for JSpecify#380
jodastephen merged 1 commit into
mainfrom
jspecify-tests1

Conversation

@jodastephen

@jodastephen jodastephen commented Jun 14, 2026

Copy link
Copy Markdown
Member

Follow #379 by updating the tests, which mostly involves eliminating warnings.

Also fix a few other older testing styles.

Fixes #170

Summary by CodeRabbit

  • Tests
    • Strengthened null-parameter test coverage by adding clarity for intentionally null inputs while keeping the same expected exceptions and outcomes.
    • Improved test assertion style by using boolean-specific assertions and more consistent equality checks.
    • Enhanced null-safety in parameterized test data by marking nullable values and using primitives where applicable.
    • Updated test-time mock UTC rules to fail fast with explicit unsupported operations.
    • Added package-level nullness annotations for test packages.

Copilot AI review requested due to automatic review settings June 14, 2026 22:23
@coderabbitai

coderabbitai Bot commented Jun 14, 2026

Copy link
Copy Markdown

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: adcdbb35-a24b-460f-a4c7-794d5e70ff47

📥 Commits

Reviewing files that changed from the base of the PR and between b5e54a9 and 88994ee.

📒 Files selected for processing (41)
  • src/test/java/org/threeten/extra/TestAmPm.java
  • src/test/java/org/threeten/extra/TestAmountFormats.java
  • src/test/java/org/threeten/extra/TestDayOfMonth.java
  • src/test/java/org/threeten/extra/TestDayOfYear.java
  • src/test/java/org/threeten/extra/TestDays.java
  • src/test/java/org/threeten/extra/TestHalf.java
  • src/test/java/org/threeten/extra/TestHourMinute.java
  • src/test/java/org/threeten/extra/TestHours.java
  • src/test/java/org/threeten/extra/TestInterval.java
  • src/test/java/org/threeten/extra/TestLocalDateRange.java
  • src/test/java/org/threeten/extra/TestMinutes.java
  • src/test/java/org/threeten/extra/TestMonths.java
  • src/test/java/org/threeten/extra/TestMutableClock.java
  • src/test/java/org/threeten/extra/TestOffsetDate.java
  • src/test/java/org/threeten/extra/TestPeriodDuration.java
  • src/test/java/org/threeten/extra/TestQuarter.java
  • src/test/java/org/threeten/extra/TestSeconds.java
  • src/test/java/org/threeten/extra/TestTemporals.java
  • src/test/java/org/threeten/extra/TestWeeks.java
  • src/test/java/org/threeten/extra/TestYearHalf.java
  • src/test/java/org/threeten/extra/TestYearQuarter.java
  • src/test/java/org/threeten/extra/TestYearWeek.java
  • src/test/java/org/threeten/extra/TestYears.java
  • src/test/java/org/threeten/extra/chrono/TestAccountingChronology.java
  • src/test/java/org/threeten/extra/chrono/TestBritishCutoverChronology.java
  • src/test/java/org/threeten/extra/chrono/TestCopticChronology.java
  • src/test/java/org/threeten/extra/chrono/TestDiscordianChronology.java
  • src/test/java/org/threeten/extra/chrono/TestEthiopicChronology.java
  • src/test/java/org/threeten/extra/chrono/TestInternationalFixedChronology.java
  • src/test/java/org/threeten/extra/chrono/TestJulianChronology.java
  • src/test/java/org/threeten/extra/chrono/TestPaxChronology.java
  • src/test/java/org/threeten/extra/chrono/TestSymmetry010Chronology.java
  • src/test/java/org/threeten/extra/chrono/TestSymmetry454Chronology.java
  • src/test/java/org/threeten/extra/chrono/package-info.java
  • src/test/java/org/threeten/extra/package-info.java
  • src/test/java/org/threeten/extra/scale/MockUtcRulesAlwaysLeap.java
  • src/test/java/org/threeten/extra/scale/MockUtcRulesLeapOn1000.java
  • src/test/java/org/threeten/extra/scale/TestTaiInstant.java
  • src/test/java/org/threeten/extra/scale/TestUtcInstant.java
  • src/test/java/org/threeten/extra/scale/TestUtcRules.java
  • src/test/java/org/threeten/extra/scale/package-info.java
✅ Files skipped from review due to trivial changes (17)
  • src/test/java/org/threeten/extra/TestTemporals.java
  • src/test/java/org/threeten/extra/TestPeriodDuration.java
  • src/test/java/org/threeten/extra/TestSeconds.java
  • src/test/java/org/threeten/extra/TestLocalDateRange.java
  • src/test/java/org/threeten/extra/TestAmPm.java
  • src/test/java/org/threeten/extra/TestDayOfYear.java
  • src/test/java/org/threeten/extra/TestMonths.java
  • src/test/java/org/threeten/extra/TestHours.java
  • src/test/java/org/threeten/extra/TestHourMinute.java
  • src/test/java/org/threeten/extra/TestQuarter.java
  • src/test/java/org/threeten/extra/TestYearQuarter.java
  • src/test/java/org/threeten/extra/TestDays.java
  • src/test/java/org/threeten/extra/TestWeeks.java
  • src/test/java/org/threeten/extra/TestHalf.java
  • src/test/java/org/threeten/extra/TestYearWeek.java
  • src/test/java/org/threeten/extra/TestOffsetDate.java
  • src/test/java/org/threeten/extra/TestYearHalf.java
🚧 Files skipped from review as they are similar to previous changes (22)
  • src/test/java/org/threeten/extra/scale/MockUtcRulesLeapOn1000.java
  • src/test/java/org/threeten/extra/chrono/TestCopticChronology.java
  • src/test/java/org/threeten/extra/chrono/TestSymmetry010Chronology.java
  • src/test/java/org/threeten/extra/chrono/package-info.java
  • src/test/java/org/threeten/extra/package-info.java
  • src/test/java/org/threeten/extra/chrono/TestEthiopicChronology.java
  • src/test/java/org/threeten/extra/TestAmountFormats.java
  • src/test/java/org/threeten/extra/chrono/TestInternationalFixedChronology.java
  • src/test/java/org/threeten/extra/chrono/TestPaxChronology.java
  • src/test/java/org/threeten/extra/scale/package-info.java
  • src/test/java/org/threeten/extra/TestDayOfMonth.java
  • src/test/java/org/threeten/extra/chrono/TestDiscordianChronology.java
  • src/test/java/org/threeten/extra/chrono/TestSymmetry454Chronology.java
  • src/test/java/org/threeten/extra/chrono/TestBritishCutoverChronology.java
  • src/test/java/org/threeten/extra/chrono/TestAccountingChronology.java
  • src/test/java/org/threeten/extra/scale/TestUtcRules.java
  • src/test/java/org/threeten/extra/TestYears.java
  • src/test/java/org/threeten/extra/chrono/TestJulianChronology.java
  • src/test/java/org/threeten/extra/TestMutableClock.java
  • src/test/java/org/threeten/extra/scale/TestTaiInstant.java
  • src/test/java/org/threeten/extra/scale/TestUtcInstant.java
  • src/test/java/org/threeten/extra/TestInterval.java

📝 Walkthrough

Walkthrough

Adds @NullMarked package-level annotations to three test packages via new package-info.java files. Fixes two UTC mock classes to throw UnsupportedOperationException instead of returning null. Imports and applies @Nullable annotations to four test data providers and one Callable parameter type. Adds //noinspection DataFlowIssue - testing nulls suppression comments before intentional null-argument assertThrows calls across ~25 test classes. Modernizes JUnit assertions (assertTrue/assertFalse/assertNull replacing assertEquals(true/false/null, ...)). Removes "javadoc" from several @SuppressWarnings annotations and makes one test field final.

Changes

JSpecify @NullMarked Adoption in Test Packages

Layer / File(s) Summary
@NullMarked package-info.java declarations
src/test/java/org/threeten/extra/package-info.java, src/test/java/org/threeten/extra/chrono/package-info.java, src/test/java/org/threeten/extra/scale/package-info.java
Three new package-info.java files apply @NullMarked at the package level with license headers for org.threeten.extra, org.threeten.extra.chrono, and org.threeten.extra.scale.
Mock UTC rules: throw instead of returning null
src/test/java/org/threeten/extra/scale/MockUtcRulesAlwaysLeap.java, src/test/java/org/threeten/extra/scale/MockUtcRulesLeapOn1000.java
convertToTai and convertToUtc methods now throw UnsupportedOperationException instead of returning null, satisfying @NullMarked non-null return contracts.
@Nullable annotations on test data providers and parameters
src/test/java/org/threeten/extra/TestAmountFormats.java, src/test/java/org/threeten/extra/TestMutableClock.java, src/test/java/org/threeten/extra/scale/TestTaiInstant.java, src/test/java/org/threeten/extra/scale/TestUtcInstant.java
Imports org.jspecify.annotations.Nullable; annotates data provider return types as @Nullable Object[][]; tightens Callable<Void> to Callable<@nullable Void>; changes expectedNanos from Long to primitive long; adjusts assertions to match new types.
DataFlowIssue suppression across org.threeten.extra test classes
src/test/java/org/threeten/extra/Test*.java
Adds //noinspection DataFlowIssue - testing nulls immediately before assertThrows/assertThatNullPointerException calls that intentionally pass null in TestAmPm, TestDayOfMonth, TestDayOfYear, TestDays, TestHalf, TestHourMinute, TestHours, TestInterval, TestLocalDateRange, TestMinutes, TestMonths, TestMutableClock, TestOffsetDate, TestPeriodDuration, TestQuarter, TestSeconds, TestTemporals, TestWeeks, TestYearHalf, TestYearQuarter, TestYearWeek, and TestYears. No assertion logic changed.
JUnit assertion modernization and DataFlowIssue suppression in chrono and scale tests
src/test/java/org/threeten/extra/chrono/Test*.java, src/test/java/org/threeten/extra/scale/TestTaiInstant.java, src/test/java/org/threeten/extra/scale/TestUtcInstant.java, src/test/java/org/threeten/extra/scale/TestUtcRules.java
Replaces assertEquals(true/false, ...) with assertTrue/assertFalse for leap-year and era membership assertions; replaces assertEquals(null, ...) with assertNull; adds assertNotEquals in comparison helpers; imports Nullable where needed; removes "javadoc" from @SuppressWarnings; makes INSTANCE field final; adds DataFlowIssue suppression comments in chrono and scale null-argument tests.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~12 minutes

Possibly related PRs

  • ThreeTen/threeten-extra#379: Directly related — this PR adds test-side IDE suppression comments and @Nullable annotations corresponding to JSpecify null-annotation contracts introduced to production code in PR #379.

Poem

🐇 Hoppity-hop through test land so fine,
Where @NullMarked draws a clear line!
No more assertEquals(null, ...) in sight—
assertNull makes the assertions bright.
DataFlowIssue? We know what we're doing,
The bunnies test nulls with proper construing! 🌿✨

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 4.74% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title 'Update tests for JSpecify' accurately describes the main change - adding JSpecify nullability annotations and related test updates.
Linked Issues check ✅ Passed The PR addresses issue #170 by adding @Nullable annotations throughout the test suite to enable JSpecify compliance and improve nullability documentation for Kotlin users.
Out of Scope Changes check ✅ Passed All changes are focused on test suite updates for JSpecify compliance: adding @Nullable annotations, package-info files with @NullMarked, and IDE suppression comments for null-testing scenarios.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch jspecify-tests1

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR follows the introduction of JSpecify nullness annotations (#379) by updating the test suite to eliminate nullness-related warnings and to modernize a few older assertion styles, helping keep the tests clean under @NullMarked defaults.

Changes:

  • Added targeted suppressions/annotations in tests that intentionally pass null to verify NullPointerException behavior.
  • Modernized a number of assertions (assertTrue/False/Null, assertNotEquals) to avoid boolean-equality patterns.
  • Added @NullMarked package-info.java files under test source sets to match nullness defaults used in main code.

Reviewed changes

Copilot reviewed 41 out of 41 changed files in this pull request and generated 2 comments.

Show a summary per file
File Description
src/test/java/org/threeten/extra/TestYearWeek.java Suppress nullness warnings for intentional null parameter tests.
src/test/java/org/threeten/extra/TestYears.java Suppress nullness warnings for intentional null parameter tests.
src/test/java/org/threeten/extra/TestYearQuarter.java Suppress nullness warnings for intentional null parameter tests.
src/test/java/org/threeten/extra/TestYearHalf.java Suppress nullness warnings for intentional null parameter tests.
src/test/java/org/threeten/extra/TestWeeks.java Suppress nullness warnings for intentional null parameter tests.
src/test/java/org/threeten/extra/TestTemporals.java Suppress nullness warnings for intentional null parameter tests.
src/test/java/org/threeten/extra/TestSeconds.java Suppress nullness warnings for intentional null parameter tests.
src/test/java/org/threeten/extra/TestQuarter.java Suppress nullness warnings for intentional null parameter tests.
src/test/java/org/threeten/extra/TestPeriodDuration.java Suppress nullness warnings for intentional null parameter tests.
src/test/java/org/threeten/extra/TestOffsetDate.java Suppress nullness warnings for intentional null parameter tests.
src/test/java/org/threeten/extra/TestMutableClock.java Add @Nullable type-use for Callable<Void> returning null; suppress null test warnings.
src/test/java/org/threeten/extra/TestMonths.java Suppress nullness warnings for intentional null parameter tests.
src/test/java/org/threeten/extra/TestMinutes.java Suppress nullness warnings for intentional null parameter tests.
src/test/java/org/threeten/extra/TestLocalDateRange.java Suppress nullness warnings for intentional null parameter tests.
src/test/java/org/threeten/extra/TestInterval.java Suppress nullness warnings for intentional null parameter tests.
src/test/java/org/threeten/extra/TestHours.java Suppress nullness warnings for intentional null parameter tests.
src/test/java/org/threeten/extra/TestHourMinute.java Suppress nullness warnings for intentional null parameter tests (AssertJ-based).
src/test/java/org/threeten/extra/TestHalf.java Suppress nullness warnings for intentional null parameter tests.
src/test/java/org/threeten/extra/TestDays.java Suppress nullness warnings for intentional null parameter tests.
src/test/java/org/threeten/extra/TestDayOfYear.java Suppress nullness warnings for intentional null parameter tests.
src/test/java/org/threeten/extra/TestDayOfMonth.java Suppress nullness warnings for intentional null parameter tests.
src/test/java/org/threeten/extra/TestAmPm.java Suppress nullness warnings for intentional null parameter tests.
src/test/java/org/threeten/extra/TestAmountFormats.java Annotate method-source arrays to allow null elements in parameterized test data.
src/test/java/org/threeten/extra/package-info.java Add @NullMarked for test package nullness defaults.
src/test/java/org/threeten/extra/scale/TestUtcRules.java Modernize assertions; suppress nullness warnings for intentional null tests.
src/test/java/org/threeten/extra/scale/TestUtcInstant.java Annotate method-source arrays for nullable elements; modernize assertions.
src/test/java/org/threeten/extra/scale/TestTaiInstant.java Annotate method-source arrays for nullable elements; modernize assertions; suppress null test warnings.
src/test/java/org/threeten/extra/scale/MockUtcRulesLeapOn1000.java Replace null returns with UnsupportedOperationException to satisfy non-null defaults.
src/test/java/org/threeten/extra/scale/MockUtcRulesAlwaysLeap.java Replace null returns with UnsupportedOperationException to satisfy non-null defaults.
src/test/java/org/threeten/extra/scale/package-info.java Add @NullMarked for test package nullness defaults.
src/test/java/org/threeten/extra/chrono/TestSymmetry454Chronology.java Modernize null assertion and simplify suppression.
src/test/java/org/threeten/extra/chrono/TestSymmetry010Chronology.java Modernize null assertion and simplify suppression.
src/test/java/org/threeten/extra/chrono/TestPaxChronology.java Replace boolean-equality assertions with assertTrue/False; simplify suppression.
src/test/java/org/threeten/extra/chrono/TestJulianChronology.java Replace boolean-equality assertions with assertTrue/False.
src/test/java/org/threeten/extra/chrono/TestInternationalFixedChronology.java Modernize null assertion and simplify suppression.
src/test/java/org/threeten/extra/chrono/TestEthiopicChronology.java Replace boolean-equality assertions with assertTrue/False.
src/test/java/org/threeten/extra/chrono/TestDiscordianChronology.java Replace boolean-equality assertions with assertTrue/False.
src/test/java/org/threeten/extra/chrono/TestCopticChronology.java Replace boolean-equality assertions with assertTrue/False.
src/test/java/org/threeten/extra/chrono/TestBritishCutoverChronology.java Replace boolean-equality assertions with assertTrue/False; modernize null assertion; add null-test suppression.
src/test/java/org/threeten/extra/chrono/TestAccountingChronology.java Refactor test chronology constant; modernize assertions; suppress nullness warnings for intentional null tests.
src/test/java/org/threeten/extra/chrono/package-info.java Add @NullMarked for test package nullness defaults.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread src/test/java/org/threeten/extra/chrono/package-info.java Outdated
Comment thread src/test/java/org/threeten/extra/scale/package-info.java Outdated
@jodastephen jodastephen merged commit c684d23 into main Jun 14, 2026
9 checks passed
@jodastephen jodastephen deleted the jspecify-tests1 branch June 14, 2026 22:39
catull pushed a commit to catull/threeten-extra that referenced this pull request Jun 15, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Development

Successfully merging this pull request may close these issues.

NotNull annotations

2 participants