Commit Graph

679 Commits (125ff54aaf11b04aa81657b344350a123f530be4)

Author SHA1 Message Date
Andy Wilkinson 5dc589e7ae Merge branch '2.7.x'
Closes gh-33263
2 years ago
Andy Wilkinson 6bf35e3dd0 Merge branch '2.6.x' into 2.7.x
Closes gh-33262
2 years ago
Andy Wilkinson 0c8ae65bd4 Switch of the banner when SpringBootTest runs an app with a parent
Closes gh-33079
2 years ago
Phillip Webb fafbefa35c Ensure @ContextHierarchy is never used with UseMainMethod
Fixes gh-33078
2 years ago
Johnny Lim 6027508cf7 Polish
See gh-33108
2 years ago
Phillip Webb e212214227 Fix Kotlin main method detection for UseMainMethod
Update `SpringBootContextLoader` to detect main methods on `*Kt`
classes.

Fixes gh-33114
2 years ago
Scott Frederick b882de7c68 Throw ContextLoadException on test context load failure
When a test context fails to load, a `ContextLoadException` should
be thrown so that Framework can catch it and call any registered
`ApplicationContextFailureProcessor`s.

Closes gh-31793
2 years ago
Andy Wilkinson b357239861 Upgrade to Jakarta Activation 2.1.0
Closes gh-33045
2 years ago
Scott Frederick a0d765cab8 Restore invocation of DefaultTestExecutionListenersPostProcessors
This commit partially reverts c81ebf63d9,
so that `DefaultTestExecutionListenersPostProcessor`s are invoked
even though deprecated.

See gh-31793
2 years ago
Scott Frederick c81ebf63d9 Use ApplicationContextFailureProcessor to log report on failure
Closes gh-31793
2 years ago
Phillip Webb a59b6cb1f3 Polish 2 years ago
Phillip Webb 4be3218cb6 Merge branch '2.7.x' 2 years ago
Phillip Webb c8676a81de Merge branch '2.6.x' into 2.7.x 2 years ago
Phillip Webb d7ac20cd6c Update copyright year of changed files 2 years ago
Phillip Webb 9505673d6f Ensure application event listeners are always refreshed
Update `EventPublishingRunListener` to ensure that application event
listeners are always refreshed before multicasting initial events.

Prior to this commit, refreshing occurred after multicasting which
meant that listeners added by a different `SpringApplicationRunListener`
would not be picked up. This caused properties from tests that have
`UseMainMethod` set to `ALWAYS` or `WHEN_AVAILABLE` to be missing.

Fixes gh-32860
2 years ago
Andy Wilkinson e6c37d698f Reinstate support for read timeouts with RestTemplateBuilder
Refactor the way `ClientHttpRequestFactory` instances are created in
order to support setting read timeouts.

Prior to this commit, the reflection based approach would call
`setReadTimeout`. As of Spring Framework 6.0, the
`HttpComponentsClientHttpRequestFactory` class no longer supports this
approach. The timeout must be set on the `HttpClientConnectionManager`
used in the `HttpClient` which can be passed in to the constructor.

In order to support this approach, the `ClientHttpRequestFactory` can
now be created using a `Function` rather than a `Supplier`. The
function accepts a `ClientHttpRequestFactorySettings` which provides
the timeout settings to apply.

The `ClientHttpRequestFactories` utility class provides methods to
create `ClientHttpRequestFactory` instances that respect the settings.
Whenever possible, these are created without using reflection.

Fixes gh-32857

Co-authored-by: Phillip Webb <pwebb@vmware.com>
2 years ago
Moritz Halbritter 383d6c897f Remove reflection for SimpleRequestExpectationManager creation
Closes gh-32867
2 years ago
Moritz Halbritter 9ee3fd0b0b Disable HttpGraphQlTesterContextCustomizer after AOT processing
After AOT processing, a HttpGraphQlTester bean will be defined directly
so the context customizer that initiates its registration is not
needed.

Closes gh-32872
2 years ago
Moritz Halbritter b014039a34 Disable WebTestClientContextCustomizer after AOT processing
After AOT processing, a WebTestClient bean will be defined directly
so the context customizer that initiates its registration is not
needed.

Closes gh-32859
2 years ago
Moritz Halbritter f2c004f604 Remove reflection in OutputCaptureExtension
Closes gh-32870
2 years ago
Moritz Halbritter 512a4c7544 Revert "Register runtime hints for OutputCapture"
This reverts commit 35abc3a6dc.
2 years ago
Moritz Halbritter 35abc3a6dc Register runtime hints for OutputCapture
Closes gh-32870
2 years ago
Andy Wilkinson b78e7b5ac7 Disable TestRestTemplateContextCustomizer after AOT processing
After AOT processing, a TestRestTemplate bean will be defined
directly so the context customizer that initiates its registration is
not needed. We'd already disabled the registrar but this is
insufficient in Graal 22.3 which fails fast when the customizer tries
to reference the registrar.

Fixes gh-32848
2 years ago
Andy Wilkinson 7bae02be2d Adapt to breaking changes to AotProcessor settings
See gh-32696
2 years ago
Andy Wilkinson d351086a06 Adapt to breaking changes to AOT processing entry points
See gh-32550
2 years ago
Andy Wilkinson 68e4aa232b Prevent duplicate registration of TestRestTemplate after AOT processing
Closes gh-32542
2 years ago
Johnny Lim 64132afba4 Add Javadoc since for UseMainMethod
See gh-32568
2 years ago
Phillip Webb e0b67889a8 Use Stream.toList instead of Stream.collect when possible
Update code to make use of `Stream.toList()` whenever possible.

Closes gh-28177
2 years ago
Phillip Webb 118836d204 Merge branch '2.7.x'
Closes gh-32576
2 years ago
Phillip Webb 0f4d98b1f4 Merge branch '2.6.x' into 2.7.x
Closes gh-32575
2 years ago
Phillip Webb e917bd0ed0 Only build OutputCapture strings when necessary
Update `OutputCapture` so that expensive build operations are only
performed when necessary. This update is especially important for Kotlin
users calling `"Expected String" in output` since this results in a call
to Kotlin's `CharSequence.contains` which calls the `length()` and
`charAt()` methods many times.

Closes gh-32033
2 years ago
Andy Wilkinson 51df7813a5 Remove code deprecated in 2.x and add since and forRemoval attributes
Closes gh-32548
Closes gh-32549
2 years ago
Phillip Webb 7a5b61fd19 Replace AotApplicationContextInitializer with Framework version 2 years ago
Brian Clozel cc169e7623 Adapt TestRestTemplate to httpclient5 changes
This commit adapts the `TestRestTemplate` implementation to the
httpclient5 API since httpclient 4.x is now unsupported in Spring
Framework.

See gh-32461
2 years ago
Brian Clozel 5fb2a50ad0 Adapt build dependencies to httpclient5
As htttpclient 4.x is not supported anymore by `RestTemplate`, this
commit changes such dependencies to httpclient5 instead. In some cases,
the httpclient 4.x was transitively brought by a non-Spring dependency.

See gh-32461
2 years ago
Stephane Nicoll 3702c71fc1 Adapt to Spring AOT changes 2 years ago
Stephane Nicoll f6f545dbf1 Merge branch '2.7.x'
Closes gh-32510
2 years ago
Stephane Nicoll 33680e5acc Merge branch '2.6.x' into 2.7.x
Closes gh-32509
2 years ago
dreis2211 cee353fba6 Avoid using JUnit 4 assertions
See gh-32504
2 years ago
Stephane Nicoll 0f325f98b5 Disable ContextCustomizer implementations at runtime if necessary
This commit disables ContextCustomizer implementations that tune a
test configuration context at runtime. Previously, these ran again and
required additional hints to work properly.

Rather than contributing those hints, the customizer is skipped as its
impact is irrelevant in an AOT-optimized context: the context is fully
prepared and the updates on the MergedContextConfiguration are not taken
into account.

Closes gh-32422
2 years ago
Stephane Nicoll 190d4cbc2f Relax ImportsContextCustomizer to only require a class name
Closes gh-32421
2 years ago
Phillip Webb 7f5785182d Switch @SpringBootTest to UseMainMethod.NEVER by default
See gh-22405
2 years ago
Phillip Webb 48f3cd75d4 Refine SpringBootTest.useMainMethod support
Refine `SpringBootContextLoader` so that calls to the main method do
not exit early and the hook is only used when necessary.

See gh-22405
2 years ago
Andy Wilkinson 0476b5da5d Upgrade to Selenium HtmlUnit 3.64.0 and Selenium 4.4.0
Closes gh-32372
Closes gh-32373
2 years ago
Phillip Webb 4d037c3003 Update SpringBootContextLoader to support AOT
Update `SpringBootContextLoader` so that it now implements the
`AotContextLoader` interface. The `ContextLoaderHook` will abandon
at `contextLoaded` if the test class is being AOT processed.

This commit also introduces a new `AotApplicationContextInitializer`
which allows us to plug-in an alternative AOT application context
listener when the `SpringApplication` is running in test mode.

Closes gh-31965
2 years ago
Phillip Webb 41e0bbf4bb Add SpringBootTest.useMainMethod support
Add a new `useMainMethod` attribute to `SpringBootTest` which can be
used to determine how the test should run. The three available options
are:

	- `ALWAYS`
	- `NEVER`
	- `WHEN_AVAILABLE`

The default is `WHEN_AVAILABLE` which will attempt to launch the test
using the `main` method if there is one.

The `SpringBootContextLoader` has been updated to use the new
`SpringApplicationHook` interface when the main method is being used.

Closes gh-22405
2 years ago
Phillip Webb fadbb4b763 Polish SpringBootContextLoader 2 years ago
Phillip Webb 46be4a3f30 Merge branch '2.7.x' 2 years ago
Phillip Webb e599a70425 Disable ResetMocksTestExecutionListener on native
Add a guard for `ResetMocksTestExecutionListener` so that it is
not applied when running in a native image.

See gh-32195
2 years ago
Andy Wilkinson ba93e6c0ed Restore support for Jersey
Closes gh-28637
2 years ago
Phillip Webb dd87cf47a4 Revert SpringBootContextLoader and ErrorPageFilterIntegrationTests changes"
Spring Framework has change the signature so we no longer need the updates.
2 years ago
Phillip Webb 2dae04b2f4 Adapt SpringBootContextLoader to upstream Spring Framework changes 2 years ago
Brian Clozel a8c558a671 Fix build after Spring Framework deprecation
See spring-projects/spring-framework#28905
2 years ago
Brian Clozel 38f1bc9793 Reinstate Spring for GraphQL auto-configuration
This commit adds the Spring for GraphQL auto-configuration back
into Spring Boot 3.0, now that a 1.1.0 release is scheduled with the
required baseline. This release also needs GraphQL Java 19.0 as a
baseline.

Closes gh-31809
2 years ago
Phillip Webb 7377d85096 Merge branch '2.7.x'
Closes gh-31866
2 years ago
Phillip Webb a4ef6a7c5c Merge branch '2.6.x' into 2.7.x
Closes gh-31865
2 years ago
Phillip Webb f8412847dc Update copyright year for "Fix typos in code and documentation"
See gh-31734
2 years ago
Marc Wrobel dbfc6bded4 Fix typos in code and documentation
See gh-31734
2 years ago
Andy Wilkinson ac59b5781f Align with breaking changes in spring-test
See gh-31241
2 years ago
dreis2211 5db04da275 Use pattern matching for instanceof where appropriate
See gh-31475
2 years ago
Stephane Nicoll b99295fff4 Revert "Polish contribution"
This reverts commit a000ed4beb.

See gh-31454
2 years ago
Stephane Nicoll a000ed4beb Polish contribution
See gh-31454
2 years ago
Johnny Lim c3f1b4f595 Add Javadoc since to AbstractApplicationContextRunner.prepare()
See gh-31454
2 years ago
Phillip Webb e8f9386594 Add Runnable variant of TestPropertyValues.applyToSystemProperties
Closes gh-31303
2 years ago
Phillip Webb 11184aae8d Allow ApplicationContextRunner to return non-refreshed context
Add `AbstractApplicationContextRunner.prepare` which can be used to
test an `ApplicationContext` that has been prepared but not refreshed.

Closes gh-31302
2 years ago
Andy Wilkinson 62f40f2c38 Apply initializers and bean registrations before registering classes
Previously, classes were registered first which meant that their
conditions were evaluated before any initializers and bean
registrations were applied. This prevented the bean registrations and
initializers from affecting the outcome of the condition evaluation.

This commit inverts the ordering so that classes are not registerd,
and therefore their conditions are not evaluated, until after the
bean registrations and initializers have been applied.

Closes gh-31280
2 years ago
Andy Wilkinson 4bb5ba2bd0 Merge branch '2.7.x' 3 years ago
Andy Wilkinson 935d1264e0 Merge branch '2.6.x' into 2.7.x 3 years ago
Andy Wilkinson 3d203d0215 Polish 3 years ago
Andy Wilkinson 5dfa5adb75 Merge branch '2.7.x'
Closes gh-31178
3 years ago
Andy Wilkinson 455ee0ce22 Merge branch '2.6.x' into 2.7.x
Closes gh-31177
3 years ago
Andy Wilkinson ee45fd2fc8 Remove redundant throws declarations from internal APIs
Closes gh-31176
3 years ago
Andy Wilkinson b3a4982f31 Merge branch '2.6.x' into 2.7.x
Closes gh-31174
3 years ago
Andy Wilkinson cbf42dea14 Update deprecation messages to change removal version from 2.8 to 3.0
Closes gh-30903
3 years ago
Brian Clozel 5352c441e1 Do not use application/graphql as default MIME type
As seen in spring-projects/spring-graphql#375, Spring Boot should also
use "application/json" as the default MIME type but remain compatible
with "application/graphql+json" still if clients POST content with this
type or explicitly accept it.

Closes gh-30860
3 years ago
Andy Wilkinson 9658661bd4 Merge branch '2.7.x' 3 years ago
Andy Wilkinson 7789a18d23 Merge branch '2.6.x' into 2.7.x
Closes gh-30667
3 years ago
Andy Wilkinson d4348279a7 Merge branch '2.5.x' into 2.6.x
Closes gh-30666
3 years ago
Andy Wilkinson 8f1b8622ba Ensure that webEnvironment=NONE creates non-web context
Previously, if spring.main.web-application-type was configured in
application.properties to servlet or reactive, setting
webEnvironment=NONE on @SpringBootTest would not work correctly and
a servlet or reactive web application context would be created
based on the value of spring.main.web-application-type.

This commit updates the test context bootstapper to set
spring.main.web-application-type to none when webEnvironment has been
set to none. This is done in the merged context configuration's
property source properties which are applied to the environment in a
high-precedence test property source that will override configuration
in application.properties.

Closes gh-29695
3 years ago
Andy Wilkinson 21ccd58f67 Merge branch '2.7.x' 3 years ago
Andy Wilkinson 4545d39603 Merge branch '2.6.x' into 2.7.x
Closes gh-30665
3 years ago
Andy Wilkinson 887fa4a13f Merge branch '2.5.x' into 2.6.x
Closes gh-30664
3 years ago
Andy Wilkinson c8de843d85 Honor final web application type when creating context in tests
Previously, SpringBootContextLoader would configure its
SpringApplication with an ApplicationContextFactory that ignores
the WebApplicationType with which its called and instead returns a
hard-coded type of context based on the type of the
MergedContextConfiguration. This hard-coding would result in the
wrong type of context being used if a subsequent change was made to
the application's WebApplicationType, for example due to binding of
the spring.main.web-application-type configuration property.

This commit updates SpringBootContextLoader to configure
SpringApplication with an ApplicationContextFactory that takes the
WebApplicationType with which it is called into consideration.

Fixes gh-29170
3 years ago
Andy Wilkinson b871a1e457 Merge branch '2.7.x' 3 years ago
Andy Wilkinson 48f8021d88 Migrate @Local*Port annotations to spring-boot-test
Closes gh-29589
3 years ago
Brian Clozel 1c71567c94 Support "application/graphql+json" media type in GraphQL HTTP mapping
As seen in spring-projects/spring-graphql#108, the GraphQL HTTP spec now
requires the "application/graphql+json" media type and accepts
"application/json" for backwards compatibility.

This commit updates the `RouterFunction` definition for the GraphQL HTTP
endpoints so that both types are accepted.

Closes gh-30407
3 years ago
Andy Wilkinson e3b2fb5deb Merge branch '2.7.x' 3 years ago
Andy Wilkinson bcb71dfd1b Merge branch '2.6.x' into 2.7.x
Closes gh-30383
3 years ago
Andy Wilkinson 1244c429a6 Merge branch '2.5.x' into 2.6.x
Closes gh-30382
3 years ago
Andy Wilkinson e927cd71dd Clarify type matching performed by MockBean and SpyBean
Closes gh-28656
3 years ago
Andy Wilkinson dd812a3f76 Upgrade to Groovy 4.0.1
Closes gh-30279
3 years ago
Brian Clozel 81754c8bc4 Upgrade to Spring GraphQL 1.0.0-SNAPSHOT
This commit switches to 1.0.0-SNAPSHOT for Spring GraphQL, before its
upcoming 1.0.0-M6 version.

This commit adapts to the changes introduced in
spring-projects/spring-graphql#317 : now that `GraphQlClient` has been
introduced, `GraphQlTester` has been aligned with the new
infrastructure. The `@GraphQlTest` and `@SpringBootTest` testing support
is now using different variants for each.

All samples have been updated to use the proper GraphQL terminology, see
and spring-projects/spring-graphql#310 .

See gh-29637
3 years ago
Andy Wilkinson 3f489a374c Merge branch '2.7.x' 3 years ago
Andy Wilkinson 5f2ae858b6 Merge branch '2.6.x' into 2.7.x
Closes gh-29910
3 years ago
Andy Wilkinson 95d67a985b Merge branch 'gh-29639' into 2.6.x
Closes gh-29909
3 years ago
Andy Wilkinson 5baa71f1b3 Allow beans with circular dependencies to be spied
Closes gh-29639
3 years ago
Andy Wilkinson 9a3f053034 Allow beans with circular dependencies to be spied
Closes gh-29639
3 years ago
Phillip Webb ff4b92a3ba Update copyright year of changed files 3 years ago
Phillip Webb a282f912e6 Organize imports
Organize imports according to updated checkstyle rules.
3 years ago
Stephane Nicoll b403877cc1 Merge branch '2.7.x' 3 years ago