Commit Graph

477 Commits

Author SHA1 Message Date
Phillip Webb 11a94ee6f0 Merge branch '2.3.x' into 2.4.x 2021-03-23 12:52:07 -07:00
Phillip Webb 82127fdaa3 Update copyright year of changed files 2021-03-23 12:50:49 -07:00
Andy Wilkinson 2f95c1e2c8 Merge branch '2.3.x' into 2.4.x
Closes gh-25513
2021-03-05 14:16:07 +00:00
Andy Wilkinson 22b73f3020 Polish "Improve documentaion of Mockito test execution listeners"
See gh-25375
2021-03-05 14:14:36 +00:00
dreis2211 1ccd8dae8a Allow the project to be built with Java 16
See gh-25171
2021-03-04 18:54:56 +00:00
Andy Wilkinson 297e3079d0 Fix handling of UriTemplateRequestEntity in TestRestTemplate
A change [1] in Spring Framework 5.3 means that getUrl() on a
RequestEntity will throw an UnsupportedOperationException if the
entity was created using a template.

This commit updates TestRestTemplate to check for instances of
UriTemplateRequestEntity and to resolve the URI using the
entity's UriTemplateHandler instead of calling getUrl() directly.

Fixes gh-25097

[1] a0f4d81db7
2021-02-04 10:59:00 +00:00
Andy Wilkinson 788a42d694 Merge branch '2.3.x' into 2.4.x
See gh-25076
2021-02-02 15:12:27 +00:00
Andy Wilkinson 67479b6380 Add junit-platform-launcher dependency by convention
Closes gh-25074
2021-02-02 13:03:21 +00:00
Phillip Webb d06407ec0a Update copyright year of changed files 2021-01-26 19:06:14 -08:00
Phillip Webb d95d7a0245 Update code for Spring Framework 5.3.4
See gh-24998
2021-01-26 17:35:54 -08:00
Madhura Bhave 920136d908 Merge branch '2.3.x' into 2.4.x
Closes gh-24678
2021-01-06 16:44:32 -08:00
Madhura Bhave 73a2a4b383 Consider context-path for WebTestClient baseUrl
Fixes gh-24168
2021-01-06 16:42:09 -08:00
dreis2211 fb207f73e7 Remove deprecated SpringBootContextLoader#getArgs()
See gh-24550
2020-12-21 09:44:28 +01:00
Phillip Webb d6890e39a7 Merge branch '2.3.x' into 2.4.x
Closes gh-24536
2020-12-16 13:10:35 -08:00
dreis2211 0ec603cdad Avoid duplicates in MergedContextConfiguration
Remove duplicate config attribute classes by using a `Set` rather
than a `List` in the `SpringBootTestContextBootstrapper`.

See gh-24532
2020-12-16 12:50:54 -08:00
Phillip Webb 72d36e0c07 Update copyright year of changed files 2020-12-10 10:46:04 -08:00
Phillip Webb 30c27274e2 Merge branch '2.3.x'
Closes gh-24339
2020-12-04 18:31:55 -08:00
Phillip Webb 5f351a6983 Merge branch '2.2.x' into 2.3.x
Closes gh-24338
2020-12-04 18:21:57 -08:00
Phillip Webb 837fc83527 Fix checkstyle header violations
See gh-24337
2020-12-04 18:05:53 -08:00
Stephane Nicoll f248cfe79c Polish "Check that WebClient is available"
See gh-24152
2020-11-25 14:52:47 +01:00
Tobias Gesellchen f6255cc691 Check that WebClient is available
This commit reinstanties the isWeBClientPresent() check so that
WebTestClientContextCustomizer is only added if a web client is
available.

See gh-24152
2020-11-25 14:38:42 +01:00
Andy Wilkinson d41e739f8c Merge branch '2.3.x'
Closes gh-24013
2020-11-03 14:58:41 +00:00
Andy Wilkinson dc86e8ce30 Merge branch '2.2.x' into 2.3.x
Closes gh-24012
2020-11-03 14:58:28 +00:00
Andy Wilkinson 6548ca4c11 Implement equals and hashCode in TestTypeExcludeFilter
Fixes gh-23978
2020-11-03 14:50:00 +00:00
Phillip Webb 929d8fcd3c Update copyright year of changed files 2020-10-29 09:08:13 -07:00
Andy Wilkinson 506f7acc8d Streamline use of TestContextAnnotationUtils
See gh-12470
2020-10-28 10:20:14 +00:00
Andy Wilkinson d9084eab67 Provide Mockito with a MockResolver that removes Spring-created proxies 2020-10-28 09:43:09 +00:00
Andy Wilkinson 6b437ece54 Inherit enclosing class's configuration in nested tests
Fixes gh-12470
2020-10-28 08:56:42 +00:00
Phillip Webb e790828e19 Allow TestPropertyValues.of to take a Map source
Extend the API of `TestPropertyValues` so that it can be constructed
from an existing `Map` or a `Stream` and mapping `Function`.

Closes gh-23685
2020-10-23 12:00:25 -07:00
Andy Wilkinson 2d8528d5bd Adapt to deprecation of StringUtils.isEmpty(Object)
See gh-23774
2020-10-22 17:09:33 +01:00
Andy Wilkinson 98914b65bc Merge branch '2.3.x'
Closes gh-23672
2020-10-13 11:23:00 +01:00
Andy Wilkinson a9a32f39b5 Merge branch '2.2.x' into 2.3.x
Closes gh-23671
2020-10-13 11:20:18 +01:00
Andy Wilkinson 667ccdae84 Simplify temp directory creation and improve diagnostics
Closes gh-23622
2020-10-13 11:18:06 +01:00
Andy Wilkinson 7b183ef99d Merge branch '2.3.x'
Closes gh-23478
2020-09-24 14:46:42 +01:00
Andy Wilkinson e626f7f47e Merge branch '2.2.x' into 2.3.x
Closes gh-23477
2020-09-24 14:45:55 +01:00
Andy Wilkinson bf9d23e55a Consider SpringBootTest's web environment in context cache key
Previously, the web environment configured on `@SpringBootTest` was not
part of the context cache key. As a result, two test classes that has
identical configuration other than one using a MOCK web environment and
the other using a DEFINED_PORT web environment would share a context
when they should not do so. Classes that use MOCK and RANDOM_PORT were
not affected as the use of RANDOM_PORT results in a property for the
port being added to the environment.

This commit adds a new ContextCustomizer, SpringBootTestWebEnvironment,
that is used to capture the `webEnvironment` from `@SpringBootTest`
and use it in its hashCode and equals implementations. This fixes the
problem as all context customizers are evaluated when determing the
equality of two context cache keys.

Fixes gh-23085
2020-09-24 14:43:51 +01:00
Phillip Webb 1ae1436211 Refactor BootstrapRegistry support
Refactor `BootstrapRegistry` support following initial prototype work
with the Spring Cloud team.

This update splits the `BootstrapRegistry` API into `BootstrapRegistry`,
`BootstrapContext` and  `ConfigurableBootstrapContext` interfaces and
moves it to the same package as `SpringApplication`.

A new `Bootstrapper` interface has been introduced that can be added
to the `SpringApplication` to customize the `BootstrapRegistry` before
it's used.

Closes gh-23326
2020-09-17 00:31:00 -07:00
Phillip Webb 6509310fdb Fix DefaultPropertiesPropertySource package tangle
Relocate `DefaultPropertiesPropertySource` to fix a package tangle.

Closes gh-23383
2020-09-17 00:31:00 -07:00
Stephane Nicoll 91cc283c39 Upgrade to JUnit Jupiter 5.7.0
Closes gh-23351
2020-09-16 13:28:31 +02:00
Phillip Webb d123c924a0 Add BootstrapRegisty support for config data
Expose the `BootstrapRegisty` to both `ConfigDataLocationResolver` and
`ConfigDataLoader` implementations. The registry is exposed via the
context interfaces and may be used to reuse instances that are expensive
to create. It may also be used to ultimately register beans with the
`ApplicationContext`.

Closes gh-22956
2020-08-20 21:49:03 -07:00
Andy Wilkinson 969dd35e45 Upgrade to Mockito 3.4.6
Closes gh-22838
2020-08-10 15:22:03 +01:00
Phillip Webb f8c8b65cbf Add ConfigDataEnvironmentPostProcessor.applyTo
Add static methods to `ConfigDataEnvironmentPostProcessor` so that
post-processing can be applied to `Environment` instances directly.

Closes gh-22601
2020-08-06 14:35:43 -07:00
Phillip Webb 8d06b0f368 Merge branch '2.3.x' 2020-08-06 10:15:36 -07:00
Phillip Webb 4924573074 Merge branch '2.2.x' into 2.3.x 2020-08-06 10:15:22 -07:00
Phillip Webb fdd6a89a61 Polish 2020-08-06 10:14:01 -07:00
Brian Clozel fb1234a22c Upgrade to Reactor 2020.0.0 SNAPSHOTs
See gh-22667
2020-08-04 13:26:47 +02:00
Andy Wilkinson d16838e4b7 Merge branch '2.3.x'
Closes gh-22584
2020-07-27 13:08:40 +01:00
Andy Wilkinson 39cb912819 Merge branch '2.2.x' into 2.3.x
Closes gh-22583
2020-07-27 13:08:14 +01:00
Andy Wilkinson 41954533b2 Fix Mock|SpyBean context caching
The fix for gh-20916 updated DefinitionsParser so that the
ResolvableType for each MockBean or SpyBean field included the
implementation class from which the field was found. Where the field
was declared with a variable generic signature that was made constant
by its implementation class, this allowed the correct concrete type to
be determined. It also had the unintended side-effect of preventing two
test classes with identical `@MockBean` and `@SpyBean` configuration
from sharing a context as the resolvable types for their mock and spy
bean fields would now be different.

This commit updates DefinitionsParser to only include the
implementation class in the ResolvableType if the field's generic type
is variable. For cases where it is not variable, this restores the
behaviour prior to the fix for gh-20916.

Fixes gh-22566
2020-07-27 13:04:02 +01:00
Phillip Webb 3352024b1c Provide ConfigFileApplicationListener replacement
Deprecate `ConfigFileApplicationListener` and provide a replacement
mechanism that supports arbitrary config data imports.

This commit updates the following areas:

- Extract `EnvironmentPostProcessor` invocation logic from the
  `ConfigFileApplicationListener` to new dedicated listener. Also
  providing support for `Log` injection.

- Extract `RandomPropertySource` adding logic from the
  `ConfigFileApplicationListener` to a dedicated class.

- Migrate to the recently introduced `DefaultPropertiesPropertySource`
  class when moving the defaultProperties `PropertySource`

- Replace processing logic with a phased approach to ensure that
  profile enablement happens in a distinct phase and that profiles
  can no longer be activated on an ad-hoc basis.

- Provide a more predictable and logical import order for processing
  `application.properties` and `application.yml` files.

- Add support for a `spring.config.import` property which can be used
  to import additional config data. Also provide a pluggable API
  allowing third-parties to resolve and load locations themselves.

- Add `spring.config.activate.on-profile` support which replaces the
  existing `spring.profiles` property.

- Add `spring.config.activate.on-cloud-platform` support which allows
  a config data document to be active only on a given cloud platform.

- Support a `spring.config.use-legacy-processing` property allowing the
  previous processing logic to be used.

Closes gh-22497

Co-authored-by: Madhura Bhave <mbhave@vmware.com>
2020-07-22 21:02:32 -07:00
Phillip Webb 14c1b0938a Polish 2020-07-22 18:25:27 -07:00
Phillip Webb da69286838 Merge branch '2.3.x' 2020-07-22 17:39:27 -07:00
Phillip Webb 217b2eff89 Merge branch '2.2.x' into 2.3.x 2020-07-22 17:03:23 -07:00
Phillip Webb b5e70157dc Update copyright year of changed files 2020-07-22 17:01:36 -07:00
Andy Wilkinson 0c8e52e877 Avoid using reflection to create SpringApplication's context
Closes gh-22322
2020-07-16 15:03:08 +01:00
XenoAmess 66dc24062f Fix typos in test code
See gh-22218
2020-07-07 10:01:48 +01:00
Andy Wilkinson 27c458ca26 Merge branch '2.3.x'
Closes gh-22160
2020-06-30 10:53:49 +01:00
Andy Wilkinson f86831da9c Use TCCL at time of access for resource loading
Fixes gh-22119
2020-06-30 10:51:13 +01:00
Andy Wilkinson 0d6ea79007 Start building against Spring Framework 5.3.0 snapshots
See gh-21929
2020-06-22 18:02:21 +01:00
Madhura Bhave f47e06c4ef Merge branch '2.3.x'
Closes gh-22007
2020-06-17 17:27:10 -07:00
Madhura Bhave f4ad30c448 Merge branch '2.2.x' into 2.3.x
Closes gh-22006
2020-06-17 17:26:40 -07:00
Madhura Bhave 615cf63a82 Make MockBean resolve right type for abstract test class
Fixes gh-20916
2020-06-17 17:25:03 -07:00
Andy Wilkinson 9e08490522 Merge branch 'gh-21271'
Closes gh-21271
2020-06-16 12:52:17 +01:00
Andy Wilkinson 753bea64c6 Enable varargs compilation warnings
See gh-21271
2020-06-16 12:50:53 +01:00
Andy Wilkinson 056d5f3120 Enable deprecation compilation warnings
See gh-21271
2020-06-16 12:50:47 +01:00
Andy Wilkinson 0de466e06e Require dependency on s-b-dependencies to use its constraints
Previously, Spring Boot's modules published Gradle Module Metadata
(GMM) the declared a platform dependency on spring-boot-dependencies.
This provided versions for each module's own dependencies but also had
they unwanted side-effect of pulling in spring-boot-dependencies
constraints which would influence the version of other dependencies
declared in the same configuration. This was undesirable as users
should be able to opt in to this level of dependency management, either
by using the dependency management plugin or by using Gradle's built-in
support via a platform dependency on spring-boot-dependencies.

This commit reworks how Spring Boot's build uses
spring-boot-dependencies and spring-boot-parent to provide its own
dependency management. Configurations that aren't seen by consumers are
configured to extend a dependencyManagement configuration that has an
enforced platform dependency on spring-boot-parent. This enforces
spring-boot-parent's version constraints on Spring Boot's build without
making them visible to consumers. To ensure that the versions that
Spring Boot has been built against are visible to consumers, the
Maven publication that produces pom files and GMM for the published
modules is configured to use the resolved versions from the module's
runtime classpath.

Fixes gh-21911
2020-06-16 08:50:21 +01:00
Phillip Webb 0a05b4c9fd Update copyright year of changed files 2020-06-05 15:36:09 -07:00
Andy Wilkinson daeca9f332 Restore Boot 2.2's compile-scoped dependencies
Fixes gh-21507
2020-06-03 12:55:11 +01:00
Phillip Webb 038ae93406 Update copyright year of changed files 2020-05-13 16:48:51 -07:00
Phillip Webb 49921d65ac Ensure @ActiveProfiles replaces existing profiles
Update `SpringBootContextLoader` to both add `spring.profiles.active`
properties and to directly call `Environment.setActiveProfiles`.
The additional `setActiveProfiles` call prevents `AbstractEnvironment`
from accidentally loading `spring.profiles.active` properties directly
when `doGetActiveProfiles` is called.

Directly setting active profiles has only become necessary since we
started adding properties using the square bracket notation. Previously
we added a comma-separated list which would be picked up by both the
`AbstractEnvironment` and the `ConfigurationFileApplicationListener`.

Closes gh-21302
2020-05-08 17:16:06 -07:00
Stephane Nicoll 846db6105f Merge branch '2.2.x'
Closes gh-21364
2020-05-08 14:51:49 +02:00
Stephane Nicoll 60ff8bafb5 Polish "Align TestRestTemplate Javadoc with documentation"
See gh-21318
2020-05-08 14:49:50 +02:00
Andrii Hrytsiuk f11c030b71 Align TestRestTemplate Javadoc with documentation
See gh-21318
2020-05-08 14:48:21 +02:00
Phillip Webb ad1248e4ec Replace "folder" with "directory"
Consistently use the term "directory" instead of "folder"

Closes gh-21218
2020-04-28 19:20:24 -07:00
dreis2211 c7d7facc3a Remove empty test rule package
See gh-21137
2020-04-27 10:32:44 +02:00
Stephane Nicoll c7baf5fda1 Update copyright year of changed file
See gh-21009
2020-04-25 08:55:27 +02:00
dreis2211 5eb5bf0a2d Polish
See gh-21009
2020-04-25 08:54:47 +02:00
Stephane Nicoll 85e9f713b0 Update copyright year of changed files
See gh-21007
2020-04-25 08:50:51 +02:00
Johnny Lim 29717423a3 Remove this keyword on member method invocations
See gh-21007
2020-04-25 08:49:44 +02:00
Phillip Webb b73d5038d5 Merge branch '2.2.x' 2020-04-23 14:35:08 -07:00
Phillip Webb 9bb53a4c37 Polish 2020-04-23 14:31:49 -07:00
Madhura Bhave b3ccefdb57 Merge branch '2.2.x'
Closes gh-21102
2020-04-23 10:19:10 -07:00
Madhura Bhave 4dc9bbe127 @SpringBootTest classes with different args shouldn't share a context
Fixes gh-20866
2020-04-23 10:18:14 -07:00
Madhura Bhave 21bb249a73 Merge branch '2.2.x'
Closes gh-21090
2020-04-22 14:36:36 -07:00
Madhura Bhave b9c2b7b257 Prevent early initialization in MockitoPostProcessor
Fixes gh-20665
2020-04-22 14:35:50 -07:00
Phillip Webb 7ab2bca376 Support commas in @ActiveProfiles
Update `SpringBootContextLoader` so that it correctly deals with an
`@ActiveProfiles` annotation that contains a comma.

Fixes gh-19537

Co-authored-by: Scott Frederick <sfrederick@pivotal.io>
Co-authored-by: Andy Wilkinson <awilkinson@pivotal.io>
2020-04-17 18:47:56 -07:00
Phillip Webb 3ca896e63f Polish 2020-04-07 12:10:49 -07:00
Stephane Nicoll f4c68dbc98 Do not set server.port=-1 for non embedded tests
Closes gh-16998
2020-04-02 18:12:39 +02:00
dreis2211 674f1e77b5 Fix typos
See gh-20704
2020-03-28 08:42:59 +01:00
dreis2211 ef9f1d39a3 Remove redundant MockitoAnnotations.initMocks()
See gh-20601
2020-03-22 08:43:50 +01:00
dreis2211 a9dabe13bb Remove redundant useJUnitPlatform declarations
See gh-20206
2020-02-17 09:15:57 +01:00
dreis2211 20251ccae4 Remove superfluous useJUnit()
See gh-20035
2020-02-06 16:54:51 +01:00
Phillip Webb 1eee83a07e Update copyright year of changed files 2020-01-30 17:09:49 -08:00
Stephane Nicoll eb852f1ad6 Disable bean overriding by default in ApplicationContextRunner
For consistency with SpringApplication, this commit disables bean
overriding by default in ApplicationContextRunner. Bean overriding can
be enabled again using withAllowBeanDefinitionOverriding.

Closes gh-18019
2020-01-28 15:57:28 +01:00
Stephane Nicoll 95be419527 Use Class.forName rather than ClassLoader.loadClass
This commit changes uses of ClassLoader.loadClass to Class.forName for
consistency with what was initiated in #19342 and better compatibility
with GraalVM.

Closes gh-19824
2020-01-23 10:47:53 +01:00
Phillip Webb e0013454b5 Use parentheses when declaring dependencies
Update all dependencies declarations to use the form `scope(reference)`
rather than `scope reference`.

Prior to this commit we declared dependencies without parentheses unless
we were forced to add them due to an `exclude`.
2020-01-22 16:02:38 -08:00
Phillip Webb 0209cd3e4c Polish quote form used in Gradle scripts
Replace Gradle single quote strings with the double quote form
whenever possible. The change helps to being consistency to the
dependencies section where mostly single quotes were used, but
occasionally double quotes were required due to `${}` references.
2020-01-22 15:49:52 -08:00
dreis2211 042694bc53 Reinstate running of OutputCaptureRuleTests
See gh-19826
2020-01-21 09:47:41 +01:00
Andy Wilkinson 29d8b6db5a Merge branch '2.2.x'
Closes gh-19822
2020-01-20 15:18:18 +00:00
Andy Wilkinson f708aace65 Merge branch '2.1.x' into 2.2.x
Fixes gh-19821
2020-01-20 15:18:00 +00:00