Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
56 commits
Select commit Hold shift + click to select a range
a261861
Add file content matcher to FileMatchers
HaoWang420 May 21, 2021
166b2ab
Fix for JDK 17+
Feb 13, 2022
24f01f8
Fix for JDK 17+
Feb 17, 2022
6266372
Fix for JDK 17+
Feb 17, 2022
3839005
Merge branch 'master' of https://github.com/hamcrest/JavaHamcrest int…
Feb 17, 2022
0d4acea
Implement a matcher for parallel runs in iterables
Caster Mar 17, 2022
b02e58d
Allows to containsInAnyOrder with a Comparator
lhauspie Oct 12, 2023
d023d54
Refactor to feature descriptor in PropertyUtil
tumbarumba Nov 30, 2024
a7ad1e1
Add PropertyAccessor
tumbarumba Nov 30, 2024
6919275
Rebuild of PropertyAccessor
tumbarumba Dec 1, 2024
6205e14
Replace all references to PropertyUtil
tumbarumba Dec 1, 2024
22e5bc9
Close code section correctly
joegallo Apr 1, 2025
e3840aa
Fix tests that fail on Windows because of Line Separator mismatch.
rmcdouga Aug 24, 2025
7d8d755
Created static factory methods for creating Matchers
rmcdouga Aug 24, 2025
62cec01
Created PathMatchers class and unit tests
rmcdouga Aug 27, 2025
9acb7d1
Merge pull request #1 from joegallo/fix-notNullValue-javadoc-formatting
rmcdouga Aug 28, 2025
be259a6
Bump org.junit.jupiter:junit-jupiter from 5.11.3 to 5.13.4
rmcdouga Aug 28, 2025
cb2f06a
Merge branch 'Hamcrest_4_0_Draft' of https://github.com/rmcdouga/Java…
rmcdouga Aug 28, 2025
dea47c1
Add Eclipse plugin to gradle build to allow Eclipse to be used as IDE
rmcdouga Aug 28, 2025
2acfd0f
Bump org.gradle.toolchains.foojay-resolver-convention to 0.10.0
rmcdouga Aug 28, 2025
21f1d29
Bump Java version from 8 to 17.
rmcdouga Aug 28, 2025
10fc9dc
Merge pull request #2 from rmcdouga/Issue_438_OptionalMatchersTest_Te…
rmcdouga Aug 28, 2025
b8c1bf9
Merge pull request #3 from tumbarumba/property-util-tweaks
rmcdouga Aug 28, 2025
c0e0e14
Merge pull request #4 from lhauspie/master
rmcdouga Aug 28, 2025
0adc3b7
Merge pull request #5 from Caster/feature/containsParallelRunsOf
rmcdouga Aug 29, 2025
4aad918
Merge pull request #6 from Andremoniy/Issue249-jdk17
rmcdouga Aug 29, 2025
91865a9
Update IsIterableContainingParallelRunsTest to work with latest source
rmcdouga Aug 30, 2025
0f5d9c0
Update to latest versions of GitHub actions & update to Java 17
rmcdouga Aug 30, 2025
911ff5b
Updated IsUnmodifiableCollectionTests after PR merge.
rmcdouga Aug 30, 2025
63afa0e
Create RELEASE_NOTES for Hamcrest 4.0
rmcdouga Aug 30, 2025
2ab63a9
Enable tests
rmcdouga Aug 30, 2025
c533c09
Added @Deprecated annotations to deprecated methods
rmcdouga Aug 30, 2025
5d1262d
Address build error by adding specificity to call site.
rmcdouga Aug 30, 2025
a24f1db
Trivial: Removed tabs to pass gradle build checkstyle tests
rmcdouga Aug 31, 2025
cef4194
Address PathMatchers test failures on Linux
rmcdouga Aug 31, 2025
9af6bd7
Added support for Collections.empty...() to IsUnmodifiable.
rmcdouga Aug 31, 2025
ad57a77
Improved display names for parameterized tests.
rmcdouga Sep 2, 2025
bd073e9
Refactored Collection and List checking code into separate classes.
rmcdouga Sep 2, 2025
8b21881
Updated tests to test individual matchers.
rmcdouga Sep 3, 2025
0a6b29e
Added JavaDoc comments to public methods.
rmcdouga Sep 3, 2025
c0c3163
Added additional mismatch test.
rmcdouga Sep 3, 2025
dba4cb2
Renamed IsUnmodifiableCollection to IsUnmodifiable.
rmcdouga Sep 3, 2025
d362a9d
Created IsUnmodifiableCollection class to improve mismatch description
rmcdouga Sep 4, 2025
1e47c5b
Fix warning messages related to raw types.
rmcdouga Sep 4, 2025
af71477
Renamed internal Matcher classes to have Matcher in the name
rmcdouga Sep 4, 2025
14f7e53
Merge pull request #8 from night-gale/issue281
rmcdouga Sep 5, 2025
b3a3775
Leverage JUnit's @TempDir to ensure the cleanup of temp files.
rmcdouga Sep 5, 2025
102b116
Added missing @Test notations.
rmcdouga Sep 5, 2025
028841a
Added file content matchers to PathMatchers.
rmcdouga Sep 5, 2025
452e75c
Updated release notes file with info on latest merged PR.
rmcdouga Sep 6, 2025
f79f297
JavaDoc changes only - improved formatting and content.
rmcdouga Sep 9, 2025
dc64590
JavaDoc cleanup and added private constructor.
rmcdouga Sep 9, 2025
c3582bd
Updated formatting of JavaDocs
rmcdouga Sep 9, 2025
b687a08
Reformatted code to use standard indentation.
rmcdouga Sep 9, 2025
747a5f9
Created JavaDocs for Hamcrest 4.0 release.
rmcdouga Sep 9, 2025
4534668
Moved 4.0 changes into CHANGES.md.
rmcdouga Sep 10, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 4 additions & 4 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,17 +14,17 @@ jobs:
strategy:
fail-fast: true
matrix:
java: [ 8 ]
java: [ 17 ]
experimental: [false]
include:
- java: 17
- java: 21
experimental: true
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v5
with:
fetch-depth: 0
- name: Set up JDK ${{ matrix.java }}
uses: actions/setup-java@v4
uses: actions/setup-java@v5
with:
java-version: ${{ matrix.java }}
distribution: 'temurin'
Expand Down
31 changes: 19 additions & 12 deletions CHANGES.md
Original file line number Diff line number Diff line change
@@ -1,27 +1,34 @@
# Hamcrest Changes

## Version 3.1 (Unreleased)
## Version 4.0 (Unreleased)

### Breaking Changes

* The baseline version of Java required for Hamcrest 4.0 has been moved to Java 17. Developers who use Java 8-16 can still depend upon hamcrest-3.0.jar.
* As a result of the bugfix to allow matching against polymorphic collections
([PR #422](https://github.com/hamcrest/JavaHamcrest/pull/422)), the signature of the
`hasItem` and `hasItems` methods has changed. Code relying on the exact signature of
these methods will need to be updated. The following methods are affected:
* `org.hamcrest.CoreMatchers.hasItem`
* `org.hamcrest.CoreMatchers.hasItems`
* `org.hamcrest.Matchers.hasItem`
* `org.hamcrest.Matchers.hasItems`
* `org.hamcrest.core.IsCollectionContaining.hasItem`
* `org.hamcrest.core.IsCollectionContaining.hasItems`
* `org.hamcrest.core.IsIterableContaining.hasItem`
* `org.hamcrest.core.IsIterableContaining.hasItems`
* TODO: decide if these breaking changes should trigger a major version upgrade (i.e v4.0)
* `org.hamcrest.CoreMatchers.hasItem`
* `org.hamcrest.CoreMatchers.hasItems`
* `org.hamcrest.Matchers.hasItem`
* `org.hamcrest.Matchers.hasItems`
* `org.hamcrest.core.IsCollectionContaining.hasItem`
* `org.hamcrest.core.IsCollectionContaining.hasItems`
* `org.hamcrest.core.IsIterableContaining.hasItem`
* `org.hamcrest.core.IsIterableContaining.hasItems`

### New Features

* Optional matchers ([PR #421](https://github.com/hamcrest/JavaHamcrest/pull/421))
* Matchers for thrown exceptions ([PR #423](https://github.com/hamcrest/JavaHamcrest/pull/423))
* Optional matchers `emptyOptional()`, `optionalWithValue()` available in `org.hamcrest.Matchers` ([PR #421](https://github.com/hamcrest/JavaHamcrest/pull/421))
* Matchers for thrown exceptions available through `throwsException()` in `org.hamcrest.Matchers` ([PR #423](https://github.com/hamcrest/JavaHamcrest/pull/423))
* New `org.hamcrest.io.PathMatchers` class for matching `java.nio.files.Path` objects ([PR #442](https://github.com/hamcrest/JavaHamcrest/pull/442))
* Create custom matchers more succinctly using `matcher()` static factory methods on `FeatureMatcher` and `TypeSafeDiagnosingMatcher` ([PR #441](https://github.com/hamcrest/JavaHamcrest/pull/441))
* `org.hamcrest.beans` property matchers now support Java record naming conventions in addition to bean naming conventions ([PR #429](https://github.com/hamcrest/JavaHamcrest/pull/429))
* `IsIterableContainingInAnyOrder.containsInAnyOrder()` matcher now supports custom `Comparator`s ([PR #404](https://github.com/hamcrest/JavaHamcrest/pull/404))
* New `IsIterableContainingParallelRuns.containsParallelRunsOf()` matcher is a more general implementation of `containsInRelativeOrder()` ([PR #383](https://github.com/hamcrest/JavaHamcrest/pull/383))
* New `IsUnmodifiable.isUnmodifiableCollection` matcher for testing if a collection is unmodifiable. ([PR #381](https://github.com/hamcrest/JavaHamcrest/pull/381))([PR #379](https://github.com/hamcrest/JavaHamcrest/pull/379))
* New matchers for testing the content of files in `org.hamcrest.io.FileMatchers` and `org.hamcrest.io.PathMatchers` ([PR #345](https://github.com/hamcrest/JavaHamcrest/pull/345))

### Improvements

Expand Down
5 changes: 3 additions & 2 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -19,13 +19,14 @@ tasks.register("showVersion") {
subprojects {
apply plugin: 'checkstyle'
apply plugin: 'java-library'
apply plugin: "eclipse"

group = rootProject.group
version = rootProject.version

java {
sourceCompatibility = JavaVersion.VERSION_1_8
targetCompatibility = JavaVersion.VERSION_1_8
sourceCompatibility = JavaVersion.VERSION_17
targetCompatibility = JavaVersion.VERSION_17
}

repositories {
Expand Down
424 changes: 424 additions & 0 deletions docs/javadoc/4.0/allclasses-index.html

Large diffs are not rendered by default.

112 changes: 112 additions & 0 deletions docs/javadoc/4.0/allpackages-index.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,112 @@
<!DOCTYPE HTML>
<html lang="en">
<head>
<!-- Generated by javadoc (23) -->
<title>All Packages (Hamcrest 4.0 API)</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="description" content="package index">
<meta name="generator" content="javadoc/AllPackagesIndexWriter">
<link rel="stylesheet" type="text/css" href="resource-files/jquery-ui.min.css" title="Style">
<link rel="stylesheet" type="text/css" href="resource-files/stylesheet.css" title="Style">
<script type="text/javascript" src="script-files/script.js"></script>
<script type="text/javascript" src="script-files/jquery-3.7.1.min.js"></script>
<script type="text/javascript" src="script-files/jquery-ui.min.js"></script>
</head>
<body class="all-packages-index-page">
<script type="text/javascript">const pathtoroot = "./";
loadScripts(document, 'script');</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<header role="banner">
<nav role="navigation">
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="top-nav" id="navbar-top">
<div class="nav-content">
<div class="nav-menu-button"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button></div>
<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
<li><a href="index.html">Overview</a></li>
<li><a href="overview-tree.html">Tree</a></li>
<li><a href="deprecated-list.html">Deprecated</a></li>
<li><a href="index-all.html">Index</a></li>
<li><a href="search.html">Search</a></li>
<li><a href="help-doc.html#all-packages">Help</a></li>
</ul>
</div>
</div>
<div class="sub-nav">
<div class="nav-content">
<ol class="sub-nav-list"></ol>
<div class="nav-list-search">
<input type="text" id="search-input" disabled placeholder="Search" aria-label="Search in documentation" autocomplete="off">
<input type="reset" id="reset-search" disabled value="Reset">
</div>
</div>
</div>
<!-- ========= END OF TOP NAVBAR ========= -->
<span class="skip-nav" id="skip-navbar-top"></span></nav>
</header>
<div class="main-grid">
<main role="main">
<div class="header">
<h1 title="All&amp;nbsp;Packages" class="title">All&nbsp;Packages</h1>
</div>
<div class="caption"><span>Package Summary</span></div>
<div class="summary-table two-column-summary">
<div class="table-header col-first">Package</div>
<div class="table-header col-last">Description</div>
<div class="col-first even-row-color"><a href="org/hamcrest/package-summary.html">org.hamcrest</a></div>
<div class="col-last even-row-color">
<div class="block">Top level matcher classes and interfaces.</div>
</div>
<div class="col-first odd-row-color"><a href="org/hamcrest/beans/package-summary.html">org.hamcrest.beans</a></div>
<div class="col-last odd-row-color">
<div class="block">Matchers of Java Bean properties and their values.</div>
</div>
<div class="col-first even-row-color"><a href="org/hamcrest/collection/package-summary.html">org.hamcrest.collection</a></div>
<div class="col-last even-row-color">
<div class="block">Matchers of arrays and collections.</div>
</div>
<div class="col-first odd-row-color"><a href="org/hamcrest/comparator/package-summary.html">org.hamcrest.comparator</a></div>
<div class="col-last odd-row-color">
<div class="block">Helper classes for building matcher comparators.</div>
</div>
<div class="col-first even-row-color"><a href="org/hamcrest/core/package-summary.html">org.hamcrest.core</a></div>
<div class="col-last even-row-color">
<div class="block">Fundamental matchers of objects and values, and composite matchers.</div>
</div>
<div class="col-first odd-row-color"><a href="org/hamcrest/exception/package-summary.html">org.hamcrest.exception</a></div>
<div class="col-last odd-row-color">
<div class="block">Matchers of exceptions.</div>
</div>
<div class="col-first even-row-color"><a href="org/hamcrest/io/package-summary.html">org.hamcrest.io</a></div>
<div class="col-last even-row-color">
<div class="block">Matchers that perform file comparisons.</div>
</div>
<div class="col-first odd-row-color"><a href="org/hamcrest/number/package-summary.html">org.hamcrest.number</a></div>
<div class="col-last odd-row-color">
<div class="block">Matchers that perform numeric comparisons.</div>
</div>
<div class="col-first even-row-color"><a href="org/hamcrest/object/package-summary.html">org.hamcrest.object</a></div>
<div class="col-last even-row-color">
<div class="block">Matchers that inspect objects and classes.</div>
</div>
<div class="col-first odd-row-color"><a href="org/hamcrest/optional/package-summary.html">org.hamcrest.optional</a></div>
<div class="col-last odd-row-color">
<div class="block">Matchers that perform comparisons on <a href="https://docs.oracle.com/en/java/javase/23/docs/api/java.base/java/util/Optional.html" title="class or interface in java.util" class="external-link"><code>Optional</code></a> instances.</div>
</div>
<div class="col-first even-row-color"><a href="org/hamcrest/text/package-summary.html">org.hamcrest.text</a></div>
<div class="col-last even-row-color">
<div class="block">Matchers that perform text comparisons.</div>
</div>
<div class="col-first odd-row-color"><a href="org/hamcrest/xml/package-summary.html">org.hamcrest.xml</a></div>
<div class="col-last odd-row-color">
<div class="block">Matchers of XML documents.</div>
</div>
</div>
</main>
</div>
</body>
</html>
Loading