From c23769f3f446ed718ee88cf6b4f43c3b147eff71 Mon Sep 17 00:00:00 2001
From: phenaproxima <phenaproxima@205645.no-reply.drupal.org>
Date: Wed, 21 Sep 2022 19:40:36 +0000
Subject: [PATCH] Issue #3310997 by phenaproxima: Remove fake-site fixture from
 Automatic Updates

---
 .../tests/fixtures/fake_site/composer.json    |  9 ++++-
 .../fake_site/vendor/composer/installed.json  |  8 +++++
 tests/fixtures/fake-site/composer.json        | 15 --------
 tests/fixtures/fake-site/composer.lock        | 28 ---------------
 .../fake-site/files/private/ignore.txt        |  1 -
 .../fake-site/files/public/ignore.txt         |  1 -
 tests/fixtures/fake-site/files/staged.txt     |  1 -
 .../fake-site/sites/default/services.yml      |  2 --
 .../sites/default/settings.local.php          |  6 ----
 .../fake-site/sites/default/settings.php      |  6 ----
 .../fake-site/sites/default/staged.txt        |  1 -
 .../fake-site/sites/simpletest/ignore.txt     |  1 -
 .../fake-site/vendor/composer/installed.json  | 35 -------------------
 .../fake-site/vendor/composer/installed.php   | 10 ------
 .../AutomaticUpdatesFunctionalTestBase.php    |  2 +-
 tests/src/Kernel/CronUpdaterTest.php          | 10 +++---
 tests/src/Kernel/UpdaterTest.php              |  5 ---
 17 files changed, 23 insertions(+), 118 deletions(-)
 delete mode 100644 tests/fixtures/fake-site/composer.json
 delete mode 100644 tests/fixtures/fake-site/composer.lock
 delete mode 100644 tests/fixtures/fake-site/files/private/ignore.txt
 delete mode 100644 tests/fixtures/fake-site/files/public/ignore.txt
 delete mode 100644 tests/fixtures/fake-site/files/staged.txt
 delete mode 100644 tests/fixtures/fake-site/sites/default/services.yml
 delete mode 100644 tests/fixtures/fake-site/sites/default/settings.local.php
 delete mode 100644 tests/fixtures/fake-site/sites/default/settings.php
 delete mode 100644 tests/fixtures/fake-site/sites/default/staged.txt
 delete mode 100644 tests/fixtures/fake-site/sites/simpletest/ignore.txt
 delete mode 100644 tests/fixtures/fake-site/vendor/composer/installed.json
 delete mode 100644 tests/fixtures/fake-site/vendor/composer/installed.php

diff --git a/package_manager/tests/fixtures/fake_site/composer.json b/package_manager/tests/fixtures/fake_site/composer.json
index 0967ef424b..13d086d70d 100644
--- a/package_manager/tests/fixtures/fake_site/composer.json
+++ b/package_manager/tests/fixtures/fake_site/composer.json
@@ -1 +1,8 @@
-{}
+{
+  "require": {
+    "drupal/core-recommended": "9.8.0"
+  },
+  "require-dev": {
+    "drupal/core-dev": "^9"
+  }
+}
diff --git a/package_manager/tests/fixtures/fake_site/vendor/composer/installed.json b/package_manager/tests/fixtures/fake_site/vendor/composer/installed.json
index bc3f936e44..dd37230ed6 100644
--- a/package_manager/tests/fixtures/fake_site/vendor/composer/installed.json
+++ b/package_manager/tests/fixtures/fake_site/vendor/composer/installed.json
@@ -11,6 +11,14 @@
           }
         }
       }
+    },
+    {
+      "name": "drupal/core-recommended",
+      "version": "9.8.0"
+    },
+    {
+      "name": "drupal/core-dev",
+      "version": "9.8.0"
     }
   ]
 }
diff --git a/tests/fixtures/fake-site/composer.json b/tests/fixtures/fake-site/composer.json
deleted file mode 100644
index ed5b67b7c8..0000000000
--- a/tests/fixtures/fake-site/composer.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
-    "require": {
-        "drupal/test-distribution": "*"
-    },
-    "require-dev": {
-        "drupal/core-dev": "^9"
-    },
-    "extra": {
-        "_comment": [
-            "This is a fake composer.json simulating a site which requires a distribution.",
-            "The required core packages are determined by scanning the lock file.",
-            "The required dev packages are determined by looking at the require-dev section of this file."
-        ]
-    }
-}
diff --git a/tests/fixtures/fake-site/composer.lock b/tests/fixtures/fake-site/composer.lock
deleted file mode 100644
index 05715cda77..0000000000
--- a/tests/fixtures/fake-site/composer.lock
+++ /dev/null
@@ -1,28 +0,0 @@
-{
-    "packages": [
-        {
-            "name": "drupal/test-distribution",
-            "version": "1.0.0",
-            "require": {
-                "drupal/core-recommended": "*"
-            }
-        },
-        {
-            "name": "drupal/core-recommended",
-            "version": "9.8.0",
-            "require": {
-                "drupal/core": "9.8.0"
-            }
-        },
-        {
-            "name": "drupal/core",
-            "version": "9.8.0"
-        }
-    ],
-    "packages-dev": [
-        {
-            "name": "drupal/core-dev",
-            "version": "9.8.0"
-        }
-    ]
-}
diff --git a/tests/fixtures/fake-site/files/private/ignore.txt b/tests/fixtures/fake-site/files/private/ignore.txt
deleted file mode 100644
index 4f9da38be5..0000000000
--- a/tests/fixtures/fake-site/files/private/ignore.txt
+++ /dev/null
@@ -1 +0,0 @@
-This private file should never be staged.
diff --git a/tests/fixtures/fake-site/files/public/ignore.txt b/tests/fixtures/fake-site/files/public/ignore.txt
deleted file mode 100644
index ab6a7649fa..0000000000
--- a/tests/fixtures/fake-site/files/public/ignore.txt
+++ /dev/null
@@ -1 +0,0 @@
-This public file should never be staged.
diff --git a/tests/fixtures/fake-site/files/staged.txt b/tests/fixtures/fake-site/files/staged.txt
deleted file mode 100644
index 0087269e33..0000000000
--- a/tests/fixtures/fake-site/files/staged.txt
+++ /dev/null
@@ -1 +0,0 @@
-This file should be staged.
diff --git a/tests/fixtures/fake-site/sites/default/services.yml b/tests/fixtures/fake-site/sites/default/services.yml
deleted file mode 100644
index ea9529af01..0000000000
--- a/tests/fixtures/fake-site/sites/default/services.yml
+++ /dev/null
@@ -1,2 +0,0 @@
-# A fake services file that should never be staged.
-services: {}
diff --git a/tests/fixtures/fake-site/sites/default/settings.local.php b/tests/fixtures/fake-site/sites/default/settings.local.php
deleted file mode 100644
index e54016a9d2..0000000000
--- a/tests/fixtures/fake-site/sites/default/settings.local.php
+++ /dev/null
@@ -1,6 +0,0 @@
-<?php
-
-/**
- * @file
- * A fake local settings file that should never be staged.
- */
diff --git a/tests/fixtures/fake-site/sites/default/settings.php b/tests/fixtures/fake-site/sites/default/settings.php
deleted file mode 100644
index 9b995731d1..0000000000
--- a/tests/fixtures/fake-site/sites/default/settings.php
+++ /dev/null
@@ -1,6 +0,0 @@
-<?php
-
-/**
- * @file
- * A fake settings file that should never be staged.
- */
diff --git a/tests/fixtures/fake-site/sites/default/staged.txt b/tests/fixtures/fake-site/sites/default/staged.txt
deleted file mode 100644
index 0087269e33..0000000000
--- a/tests/fixtures/fake-site/sites/default/staged.txt
+++ /dev/null
@@ -1 +0,0 @@
-This file should be staged.
diff --git a/tests/fixtures/fake-site/sites/simpletest/ignore.txt b/tests/fixtures/fake-site/sites/simpletest/ignore.txt
deleted file mode 100644
index e4525907f2..0000000000
--- a/tests/fixtures/fake-site/sites/simpletest/ignore.txt
+++ /dev/null
@@ -1 +0,0 @@
-This file should not be staged.
diff --git a/tests/fixtures/fake-site/vendor/composer/installed.json b/tests/fixtures/fake-site/vendor/composer/installed.json
deleted file mode 100644
index 75bdd28cd5..0000000000
--- a/tests/fixtures/fake-site/vendor/composer/installed.json
+++ /dev/null
@@ -1,35 +0,0 @@
-{
-    "packages": [
-        {
-            "name": "drupal/test-distribution",
-            "version": "1.0.0",
-            "require": {
-                "drupal/core-recommended": "*"
-            }
-        },
-        {
-            "name": "drupal/core-recommended",
-            "version": "9.8.0",
-            "require": {
-                "drupal/core": "9.8.0"
-            }
-        },
-        {
-            "name": "drupal/core",
-            "version": "9.8.0",
-            "extra": {
-                "drupal-scaffold": {
-                    "file-mapping": {}
-                }
-            }
-        },
-        {
-            "name": "drupal/core-dev",
-            "version": "9.8.0"
-        }
-    ],
-    "dev": true,
-    "dev-package-names": [
-        "drupal/core-dev"
-    ]
-}
diff --git a/tests/fixtures/fake-site/vendor/composer/installed.php b/tests/fixtures/fake-site/vendor/composer/installed.php
deleted file mode 100644
index 52ff3f53b1..0000000000
--- a/tests/fixtures/fake-site/vendor/composer/installed.php
+++ /dev/null
@@ -1,10 +0,0 @@
-<?php
-
-/**
- * @file
- * Simulates that no packages are installed.
- */
-
-return [
-  'versions' => [],
-];
diff --git a/tests/src/Functional/AutomaticUpdatesFunctionalTestBase.php b/tests/src/Functional/AutomaticUpdatesFunctionalTestBase.php
index 0ced3170d1..9a043e65df 100644
--- a/tests/src/Functional/AutomaticUpdatesFunctionalTestBase.php
+++ b/tests/src/Functional/AutomaticUpdatesFunctionalTestBase.php
@@ -47,7 +47,7 @@ abstract class AutomaticUpdatesFunctionalTestBase extends BrowserTestBase {
   protected function setUp(): void {
     parent::setUp();
     $this->disableValidators($this->disableValidators);
-    $this->useFixtureDirectoryAsActive(__DIR__ . '/../../fixtures/fake-site');
+    $this->useFixtureDirectoryAsActive(__DIR__ . '/../../../package_manager/tests/fixtures/fake_site');
   }
 
   /**
diff --git a/tests/src/Kernel/CronUpdaterTest.php b/tests/src/Kernel/CronUpdaterTest.php
index 814edca99f..9d438aee3d 100644
--- a/tests/src/Kernel/CronUpdaterTest.php
+++ b/tests/src/Kernel/CronUpdaterTest.php
@@ -197,10 +197,12 @@ class CronUpdaterTest extends AutomaticUpdatesKernelTestBase {
 
     $will_update = (int) $will_update;
     $this->assertCount($will_update, $this->container->get('package_manager.beginner')->getInvocationArguments());
-    // If updates happen, then there will be two calls to the stager: one to
-    // change the constraints in composer.json, and another to actually update
-    // the installed dependencies.
-    $this->assertCount($will_update * 2, $this->container->get('package_manager.stager')->getInvocationArguments());
+    // If updates happen, there will be at least two calls to the stager: one
+    // to change the runtime constraints in composer.json, and another to
+    // actually update the installed dependencies. If there are any core
+    // dev requirements (such as `drupal/core-dev`), the stager will also be
+    // called to update the dev constraints in composer.json.
+    $this->assertGreaterThanOrEqual($will_update * 2, $this->container->get('package_manager.stager')->getInvocationArguments());
     $this->assertCount($will_update, $this->container->get('package_manager.committer')->getInvocationArguments());
   }
 
diff --git a/tests/src/Kernel/UpdaterTest.php b/tests/src/Kernel/UpdaterTest.php
index 2d2b5d9245..d131a5041b 100644
--- a/tests/src/Kernel/UpdaterTest.php
+++ b/tests/src/Kernel/UpdaterTest.php
@@ -49,11 +49,6 @@ class UpdaterTest extends AutomaticUpdatesKernelTestBase {
     $user = $this->createUser([], NULL, TRUE, ['uid' => 2]);
     $this->setCurrentUser($user);
 
-    // Point to a fake site which requires Drupal core via a distribution. The
-    // lock file should be scanned to determine the core packages, which should
-    // result in drupal/core-recommended being updated.
-    $this->createVirtualProject(__DIR__ . '/../../fixtures/fake-site');
-
     $id = $this->container->get('automatic_updates.updater')->begin([
       'drupal' => '9.8.1',
     ]);
-- 
GitLab