Make sure MODULE.tools's direct dependencies are up-to-date

PiperOrigin-RevId: 681834244
Change-Id: I854eadfd31a0cb87f8f08ba4ada68289673d4c56
diff --git a/src/BUILD b/src/BUILD
index 7b63d3a..9fc0c93 100644
--- a/src/BUILD
+++ b/src/BUILD
@@ -10,7 +10,10 @@
 
 package(default_applicable_licenses = ["@io_bazel//:license"])
 
-exports_files(["jdeps_modules.golden"])
+exports_files([
+    "jdeps_modules.golden",
+    "MODULE.tools",
+])
 
 md5_cmd = "set -e -o pipefail && %s $(SRCS) | %s | %s > $@"
 
diff --git a/src/MODULE.tools b/src/MODULE.tools
index b296f8e..dc99e9f 100644
--- a/src/MODULE.tools
+++ b/src/MODULE.tools
@@ -4,11 +4,11 @@
 
 module(name = "bazel_tools")
 
-bazel_dep(name = "rules_license", version = "0.0.3")
-bazel_dep(name = "rules_proto", version = "4.0.0")
+bazel_dep(name = "rules_license", version = "0.0.7")
+bazel_dep(name = "rules_proto", version = "6.0.2")
 
 bazel_dep(name = "buildozer", version = "7.1.2")
-bazel_dep(name = "platforms", version = "0.0.9")
+bazel_dep(name = "platforms", version = "0.0.10")
 bazel_dep(name = "zlib", version = "1.3.1.bcr.3")
 
 cc_configure = use_extension("//tools/cpp:cc_configure.bzl", "cc_configure_extension")
@@ -48,9 +48,9 @@
 
 # Dependencies used to auto-load removed symbols and rules from Bazel (due to Starlarkification)
 # See also:  --incompatible_autoload_externally, AutoloadSymbols
-bazel_dep(name = "protobuf", version = "3.19.6", repo_name = "com_google_protobuf")
+bazel_dep(name = "protobuf", version = "24.4", repo_name = "com_google_protobuf")
 bazel_dep(name = "rules_java", version = "7.12.1")
-bazel_dep(name = "rules_cc", version = "0.0.9")
+bazel_dep(name = "rules_cc", version = "0.0.10")
 bazel_dep(name = "rules_python", version = "0.36.0")
 # add rules_android
 # add apple_support
diff --git a/src/test/tools/bzlmod/BUILD b/src/test/tools/bzlmod/BUILD
index a414788..103aa76 100644
--- a/src/test/tools/bzlmod/BUILD
+++ b/src/test/tools/bzlmod/BUILD
@@ -21,6 +21,7 @@
     data = [
         ":MODULE.bazel.lock",
         "//:MODULE.bazel.lock",
+        "//src:MODULE.tools",
         "//src:bazel",
         "//src/test/shell/bazel:test-deps",
     ],
diff --git a/src/test/tools/bzlmod/MODULE.bazel.lock b/src/test/tools/bzlmod/MODULE.bazel.lock
index b0ce661..12d51e5 100644
--- a/src/test/tools/bzlmod/MODULE.bazel.lock
+++ b/src/test/tools/bzlmod/MODULE.bazel.lock
@@ -32,11 +32,9 @@
     "https://bcr.bazel.build/modules/platforms/0.0.6/MODULE.bazel": "ad6eeef431dc52aefd2d77ed20a4b353f8ebf0f4ecdd26a807d2da5aa8cd0615",
     "https://bcr.bazel.build/modules/platforms/0.0.7/MODULE.bazel": "72fd4a0ede9ee5c021f6a8dd92b503e089f46c227ba2813ff183b71616034814",
     "https://bcr.bazel.build/modules/platforms/0.0.8/MODULE.bazel": "9f142c03e348f6d263719f5074b21ef3adf0b139ee4c5133e2aa35664da9eb2d",
-    "https://bcr.bazel.build/modules/platforms/0.0.9/MODULE.bazel": "4a87a60c927b56ddd67db50c89acaa62f4ce2a1d2149ccb63ffd871d5ce29ebc",
     "https://bcr.bazel.build/modules/protobuf/23.1/MODULE.bazel": "88b393b3eb4101d18129e5db51847cd40a5517a53e81216144a8c32dfeeca52a",
     "https://bcr.bazel.build/modules/protobuf/24.4/MODULE.bazel": "7bc7ce5f2abf36b3b7b7c8218d3acdebb9426aeb35c2257c96445756f970eb12",
     "https://bcr.bazel.build/modules/protobuf/24.4/source.json": "ace4b8c65d4cfe64efe544f09fc5e5df77faf3a67fbb29c5341e0d755d9b15d6",
-    "https://bcr.bazel.build/modules/protobuf/3.19.6/MODULE.bazel": "9233edc5e1f2ee276a60de3eaa47ac4132302ef9643238f23128fea53ea12858",
     "https://bcr.bazel.build/modules/rules_cc/0.0.1/MODULE.bazel": "cb2aa0747f84c6c3a78dad4e2049c154f08ab9d166b1273835a8174940365647",
     "https://bcr.bazel.build/modules/rules_cc/0.0.10/MODULE.bazel": "ec1705118f7eaedd6e118508d3d26deba2a4e76476ada7e0e3965211be012002",
     "https://bcr.bazel.build/modules/rules_cc/0.0.10/source.json": "90310b16e0e7df0cf40f8d1dccd7d373360f42419a6bfbbf5bb013182dd70e84",
@@ -73,7 +71,6 @@
     "https://bcr.bazel.build/modules/upb/0.0.0-20230516-61a97ef/MODULE.bazel": "c0df5e35ad55e264160417fd0875932ee3c9dda63d9fccace35ac62f45e1b6f9",
     "https://bcr.bazel.build/modules/upb/0.0.0-20230516-61a97ef/source.json": "b2150404947339e8b947c6b16baa39fa75657f4ddec5e37272c7b11c7ab533bc",
     "https://bcr.bazel.build/modules/zlib/1.2.11/MODULE.bazel": "07b389abc85fdbca459b69e2ec656ae5622873af3f845e1c9d80fe179f3effa0",
-    "https://bcr.bazel.build/modules/zlib/1.2.12/MODULE.bazel": "3b1a8834ada2a883674be8cbd36ede1b6ec481477ada359cd2d3ddc562340b27",
     "https://bcr.bazel.build/modules/zlib/1.3.1.bcr.3/MODULE.bazel": "af322bc08976524477c79d1e45e241b6efbeb918c497e8840b8ab116802dda79",
     "https://bcr.bazel.build/modules/zlib/1.3.1.bcr.3/source.json": "2be409ac3c7601245958cd4fcdff4288be79ed23bd690b4b951f500d54ee6e7d"
   },
diff --git a/src/test/tools/bzlmod/verify_default_lock_file.sh b/src/test/tools/bzlmod/verify_default_lock_file.sh
index a9f0f2b..dca4995 100755
--- a/src/test/tools/bzlmod/verify_default_lock_file.sh
+++ b/src/test/tools/bzlmod/verify_default_lock_file.sh
@@ -33,9 +33,9 @@
   rm -f MODULE.bazel
   touch MODULE.bazel
   echo 'common --incompatible_use_plus_in_repo_names' > .bazelrc
-  cp $(rlocation io_bazel/src/test/tools/bzlmod/MODULE.bazel.lock) MODULE.bazel.lock
-  echo "Running: bazel mod deps --lockfile_mode=error"
-  bazel mod deps --lockfile_mode=error || fail "Default lockfile for empty workspace is no longer in sync with MODULE.tools. Please run \"bazel run //src/test/tools/bzlmod:update_default_lock_file\""
+  echo "Running: bazel mod deps --lockfile_mode=update to generate the lockfile."
+  bazel mod deps --lockfile_mode=update
+  diff -u $(rlocation io_bazel/src/test/tools/bzlmod/MODULE.bazel.lock) MODULE.bazel.lock || fail "Default lockfile for empty workspace is no longer in sync with MODULE.tools. Please run \"bazel run //src/test/tools/bzlmod:update_default_lock_file\""
 
   # Verify if python toolchain version matches Bazel's lock file to ensure it's cached in integration tests.
   # Check strings like `"default_version": "3.11"`` for default python version.
@@ -49,6 +49,12 @@
   if [ "$python_version" != "$python_version_root" ]; then
     fail "Python version in default lockfile does not match root lockfile. Please update Python toolchain version in the root MODULE.bazel file to match."
   fi
+
+  # Verify MODULE.tools with --check_direct_dependencies=error
+  echo "Running: bazel mod deps --check_direct_dependencies for MODULE.tools"
+  cp $(rlocation io_bazel/src/MODULE.tools) MODULE.bazel
+  sed -i.bak '/module(name = "bazel_tools")/d' MODULE.bazel
+  bazel mod deps --check_direct_dependencies=error || fail "Please update MODULE.tools to match the resolved versions."
 }
 
 run_suite "test_verify_lock_file"