diff --git a/composer.json b/composer.json
index 5b18cb58520e783f01330a97541d61c4a11fece3..c3f8adcb2ab34c4d78af139b74078d1cb6094fde 100644
--- a/composer.json
+++ b/composer.json
@@ -19,6 +19,7 @@
   "minimum-stability": "dev",
   "prefer-stable": true,
   "require": {
+    "php": ">=7.1",
     "drupal/core": "^8.7 || ^9.0",
     "league/csv": "^9.1"
   },
diff --git a/tests/src/Kernel/Plugin/migrate/source/CSVTest.php b/tests/src/Kernel/Plugin/migrate/source/CSVTest.php
index 77d0701c3ab3a369b836d2b32962ea1052915af2..03ae6078d592eed57314884345f4ece8dc98a4bc 100644
--- a/tests/src/Kernel/Plugin/migrate/source/CSVTest.php
+++ b/tests/src/Kernel/Plugin/migrate/source/CSVTest.php
@@ -29,7 +29,7 @@ class CSVTest extends MigrateTestBase {
   /**
    * Tests execution of a migration sourced from CSV.
    */
-  public function testMigrate() {
+  public function testMigrate(): void {
     $this->installEntitySchema('user');
     $this->installEntitySchema('node');
     $this->installConfig(['migrate_source_csv_test']);
diff --git a/tests/src/Unit/Plugin/migrate/source/CSVUnitTest.php b/tests/src/Unit/Plugin/migrate/source/CSVUnitTest.php
index cc473c32d7af699b612afe624907e978b732972a..54d4af0b93926faefc90b55b1f9f310dfff208b6 100644
--- a/tests/src/Unit/Plugin/migrate/source/CSVUnitTest.php
+++ b/tests/src/Unit/Plugin/migrate/source/CSVUnitTest.php
@@ -53,7 +53,7 @@ class CSVUnitTest extends UnitTestCase {
   /**
    * {@inheritdoc}
    */
-  protected function setUp() {
+  protected function setUp(): void {
     parent::setUp();
     $this->pluginId = 'test csv migration';
     $this->pluginDefinition = [];
@@ -89,7 +89,7 @@ EOD;
    *
    * @covers ::__construct
    */
-  public function testCreate() {
+  public function testCreate(): void {
     $configuration = [
       'path' => $this->standardCharsPath,
       'ids' => ['id'],
@@ -101,7 +101,7 @@ EOD;
   /**
    * Tests that a missing path will throw an exception.
    */
-  public function testMigrateExceptionPathMissing() {
+  public function testMigrateExceptionPathMissing(): void {
     $this->expectException(\InvalidArgumentException::class);
     $this->expectExceptionMessage('You must declare the "path" to the source CSV file in your source settings.');
     new CSV([], $this->pluginId, $this->pluginDefinition, $this->migration);
@@ -110,7 +110,7 @@ EOD;
   /**
    * Tests that missing ids will throw an exception.
    */
-  public function testMigrateExceptionKeysMissing() {
+  public function testMigrateExceptionKeysMissing(): void {
     $configuration = [
       'path' => $this->standardCharsPath,
     ];
@@ -124,7 +124,7 @@ EOD;
    *
    * @covers ::__toString
    */
-  public function testToString() {
+  public function testToString(): void {
     $configuration = [
       'path' => $this->standardCharsPath,
       'ids' => ['id'],
@@ -144,7 +144,7 @@ EOD;
    * @covers ::initializeIterator
    * @dataProvider iteratorDataProvider
    */
-  public function testInitializeIterator(array $configuration, array $expected) {
+  public function testInitializeIterator(array $configuration, array $expected): void {
     $file_path = $this->standardCharsPath;
     if (isset($configuration['path']) && $configuration['path'] === 'non standard') {
       $file_path = $this->nonStandardCharsPath;
@@ -169,7 +169,7 @@ EOD;
    * @return array
    *   The test case.
    */
-  public function iteratorDataProvider() {
+  public function iteratorDataProvider(): array {
     $data['non standard'] = [
       'configuration' => [
         'ids' => ['ids'],
@@ -259,7 +259,7 @@ EOD;
    * @covers ::getIds
    * @dataProvider idsDataProvider
    */
-  public function testGetIds(array $configuration, array $expected) {
+  public function testGetIds(array $configuration, array $expected): void {
     $csv = new CSV($configuration + ['path' => $this->standardCharsPath], $this->pluginId, $this->pluginDefinition, $this->migration);
     $this->assertArrayEquals($expected, $csv->getIds());
   }
@@ -270,7 +270,7 @@ EOD;
    * @return array
    *   The test case.
    */
-  public function idsDataProvider() {
+  public function idsDataProvider(): array {
     $data['ids'] = [
       'configuration' => [
         'ids' => [
@@ -301,7 +301,7 @@ EOD;
    * @covers ::fields
    * @dataProvider fieldsDataProvider
    */
-  public function testFields(array $configuration, array $expected) {
+  public function testFields(array $configuration, array $expected): void {
     $csv = new CSV($configuration + ['path' => $this->standardCharsPath], $this->pluginId, $this->pluginDefinition, $this->migration);
     $this->assertArrayEquals($expected, $csv->fields());
   }
@@ -312,7 +312,7 @@ EOD;
    * @return array
    *   The test case.
    */
-  public function fieldsDataProvider() {
+  public function fieldsDataProvider(): array {
     $data['no fields'] = [
       'configuration' => [
         'ids' => ['id'],
@@ -352,7 +352,7 @@ EOD;
    *
    * @covers ::initializeIterator
    */
-  public function testMalformedFilePath() {
+  public function testMalformedFilePath(): void {
     $configuration = [
       'path' => 'non-existent-path',
       'ids' => ['id'],