Merge topic 'fix-test-clicolor'

3a01e2005e Tests: Unset CLICOLOR[_FORCE]

Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: Alex Turbov <i.zaufi@gmail.com>
Merge-request: !10070
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 6198c9e..5b3fda6 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -219,9 +219,9 @@
     variables:
         CMAKE_CI_JOB_NIGHTLY: "true"
 
-t:fedora39-hip-radeon:
+t:fedora41-hip-radeon:
     extends:
-        - .fedora39_hip_radeon
+        - .fedora41_hip_radeon
         - .cmake_test_linux_release
         - .linux_x86_64_tags_radeon
         - .run_dependent
diff --git a/.gitlab/ci/configure_fedora39_hip_radeon.cmake b/.gitlab/ci/configure_fedora41_hip_radeon.cmake
similarity index 100%
rename from .gitlab/ci/configure_fedora39_hip_radeon.cmake
rename to .gitlab/ci/configure_fedora41_hip_radeon.cmake
diff --git a/.gitlab/ci/docker/fedora39-hip/Dockerfile b/.gitlab/ci/docker/fedora41-hip/Dockerfile
similarity index 87%
rename from .gitlab/ci/docker/fedora39-hip/Dockerfile
rename to .gitlab/ci/docker/fedora41-hip/Dockerfile
index 0347cc4..606ddcc 100644
--- a/.gitlab/ci/docker/fedora39-hip/Dockerfile
+++ b/.gitlab/ci/docker/fedora41-hip/Dockerfile
@@ -1,6 +1,6 @@
 # syntax=docker/dockerfile:1
 
-ARG BASE_IMAGE=fedora:39
+ARG BASE_IMAGE=fedora:41
 
 FROM ${BASE_IMAGE} AS dnf-cache
 # Populate DNF cache w/ the fresh metadata and prefetch packages.
@@ -20,7 +20,7 @@
 
 RUN --mount=type=bind,source=install_deps.sh,target=/root/install_deps.sh \
     --mount=type=bind,source=deps_packages.lst,target=/root/deps_packages.lst \
-    --mount=type=cache,from=dnf-cache,source=/var/cache/dnf,target=/var/cache/dnf,sharing=private \
+    --mount=type=cache,from=dnf-cache,source=/var/lib/dnf,target=/var/lib/dnf,sharing=private \
     --mount=type=cache,target=/var/cache/pip \
     --mount=type=tmpfs,target=/var/log \
     --mount=type=tmpfs,target=/tmp \
diff --git a/.gitlab/ci/docker/fedora39-hip/deps_packages.lst b/.gitlab/ci/docker/fedora41-hip/deps_packages.lst
similarity index 100%
rename from .gitlab/ci/docker/fedora39-hip/deps_packages.lst
rename to .gitlab/ci/docker/fedora41-hip/deps_packages.lst
diff --git a/.gitlab/ci/docker/fedora39-hip/install_deps.sh b/.gitlab/ci/docker/fedora41-hip/install_deps.sh
similarity index 100%
rename from .gitlab/ci/docker/fedora39-hip/install_deps.sh
rename to .gitlab/ci/docker/fedora41-hip/install_deps.sh
diff --git a/.gitlab/ci/env_fedora39_hip_radeon.sh b/.gitlab/ci/env_fedora39_hip_radeon.sh
deleted file mode 100644
index 0f7df8d..0000000
--- a/.gitlab/ci/env_fedora39_hip_radeon.sh
+++ /dev/null
@@ -1 +0,0 @@
-export HIPCXX=/usr/bin/clang++-17
diff --git a/.gitlab/ci/env_fedora41_hip_radeon.sh b/.gitlab/ci/env_fedora41_hip_radeon.sh
new file mode 100644
index 0000000..8024f56
--- /dev/null
+++ b/.gitlab/ci/env_fedora41_hip_radeon.sh
@@ -0,0 +1 @@
+export HIPCXX=/usr/bin/clang++-18
diff --git a/.gitlab/os-linux.yml b/.gitlab/os-linux.yml
index 6ce543a..6b8c2d0 100644
--- a/.gitlab/os-linux.yml
+++ b/.gitlab/os-linux.yml
@@ -71,12 +71,12 @@
         GIT_CLONE_PATH: "$CI_BUILDS_DIR/cmake ci/long file name for testing purposes"
         CMAKE_ARCH: x86_64
 
-# FIXME(#25932): Our HIP tests do not fully work in CI with Fedora 40.
-.fedora39_hip:
-    image: "kitware/cmake:ci-fedora39-hip-x86_64-2024-04-24"
+.fedora41_hip:
+    image: "kitware/cmake:ci-fedora41-hip-x86_64-2024-12-02"
 
     variables:
-        GIT_CLONE_PATH: "$CI_BUILDS_DIR/cmake ci"
+        # FIXME(rocclr): device modules fail loading from binaries in paths with spaces
+        GIT_CLONE_PATH: "$CI_BUILDS_DIR/cmake-ci"
         CMAKE_ARCH: x86_64
 
 #### Lint builds
@@ -438,11 +438,11 @@
         CMAKE_CONFIGURATION: debian12_hip_radeon
         CTEST_LABELS: "HIP"
 
-.fedora39_hip_radeon:
-    extends: .fedora39_hip
+.fedora41_hip_radeon:
+    extends: .fedora41_hip
 
     variables:
-        CMAKE_CONFIGURATION: fedora39_hip_radeon
+        CMAKE_CONFIGURATION: fedora41_hip_radeon
         CTEST_LABELS: "HIP"
 
 .hip5.5_nvidia:
diff --git a/Help/prop_tgt/VS_PROJECT_IMPORT.rst b/Help/prop_tgt/VS_PROJECT_IMPORT.rst
index f5e9698..09cdcf2 100644
--- a/Help/prop_tgt/VS_PROJECT_IMPORT.rst
+++ b/Help/prop_tgt/VS_PROJECT_IMPORT.rst
@@ -5,6 +5,14 @@
 
 Visual Studio managed project imports
 
-Adds to a generated Visual Studio project one or more semicolon-delimited paths
-to .props files needed when building projects from some NuGet packages.
-For example, ``my_packages_path/MyPackage.1.0.0/build/MyPackage.props``.
+Adds to a generated Visual Studio project one or more paths to ``.props``
+files needed when building projects from some NuGet packages.
+
+For example:
+
+.. code-block:: cmake
+
+  set_property(TARGET myTarget PROPERTY VS_PROJECT_IMPORT
+    "my_packages_path/PackageA.1.0.0/build/PackageA.props"
+    "my_packages_path/PackageB.1.0.0/build/PackageB.props"
+  )
diff --git a/Source/CMakeVersion.cmake b/Source/CMakeVersion.cmake
index d18e310..f7b23fc 100644
--- a/Source/CMakeVersion.cmake
+++ b/Source/CMakeVersion.cmake
@@ -1,7 +1,7 @@
 # CMake version number components.
 set(CMake_VERSION_MAJOR 3)
 set(CMake_VERSION_MINOR 31)
-set(CMake_VERSION_PATCH 20241204)
+set(CMake_VERSION_PATCH 20241205)
 #set(CMake_VERSION_RC 0)
 set(CMake_VERSION_IS_DIRTY 0)
 
diff --git a/Source/cmFindPackageCommand.cxx b/Source/cmFindPackageCommand.cxx
index 12bf160..afaa166 100644
--- a/Source/cmFindPackageCommand.cxx
+++ b/Source/cmFindPackageCommand.cxx
@@ -424,11 +424,12 @@
 
 // Parse the version number and store the results that were
 // successfully parsed.
-int parseVersion(const std::string& version, unsigned int& major,
-                 unsigned int& minor, unsigned int& patch, unsigned int& tweak)
+unsigned int parseVersion(std::string const& version, unsigned int& major,
+                          unsigned int& minor, unsigned int& patch,
+                          unsigned int& tweak)
 {
-  return std::sscanf(version.c_str(), "%u.%u.%u.%u", &major, &minor, &patch,
-                     &tweak);
+  return static_cast<unsigned int>(std::sscanf(
+    version.c_str(), "%u.%u.%u.%u", &major, &minor, &patch, &tweak));
 }
 
 } // anonymous namespace
diff --git a/Source/cmGeneratorTarget_Options.cxx b/Source/cmGeneratorTarget_Options.cxx
index f1f0703..d71146d 100644
--- a/Source/cmGeneratorTarget_Options.cxx
+++ b/Source/cmGeneratorTarget_Options.cxx
@@ -548,8 +548,9 @@
   const std::string SHELL{ "SHELL:" };
   const std::string PREFIX_SHELL = cmStrCat(PREFIX, SHELL);
 
-  for (auto entry = result.begin(); entry != result.end(); ++entry) {
+  for (auto entry = result.begin(); entry != result.end();) {
     if (entry->Value.compare(0, PREFIX.length(), PREFIX) != 0) {
+      ++entry;
       continue;
     }
 
@@ -594,10 +595,10 @@
         entry,
         cmJoin(cmMakeRange(processedOptions.begin(), processedOptions.end()),
                " "_s));
-      entry = std::next(result.begin(), index);
+      entry = std::next(result.begin(), index + 1);
     } else {
       result.insert(entry, processedOptions.begin(), processedOptions.end());
-      entry = std::next(result.begin(), index + processedOptions.size() - 1);
+      entry = std::next(result.begin(), index + processedOptions.size());
     }
   }
   return result;
diff --git a/Source/cmQtAutoGenInitializer.cxx b/Source/cmQtAutoGenInitializer.cxx
index d04f72b..8dcace8 100644
--- a/Source/cmQtAutoGenInitializer.cxx
+++ b/Source/cmQtAutoGenInitializer.cxx
@@ -1334,25 +1334,9 @@
   }
 
   if (this->Uic.Enabled) {
-    auto const useAdvancedUicGraph = [this]() -> bool {
-      if (this->MultiConfig && this->GlobalGen->IsNinja()) {
-        return this->UseBetterGraph;
-      }
-      return true;
-    }();
-    if (useAdvancedUicGraph) {
-      // Make all ui_*.h files byproducts of the ${target}_autogen/timestamp
-      // custom command if the generation of depfile is enabled.
-      auto& byProducts = useDepfile ? timestampByproducts : autogenByproducts;
-      for (auto const& file : this->Uic.UiHeaders) {
-        this->AddGeneratedSource(file.first, this->Uic);
-        byProducts.push_back(file.second);
-      }
-    } else {
-      for (auto const& file : this->Uic.UiHeaders) {
-        this->AddGeneratedSource(file.first, this->Uic);
-        autogenByproducts.push_back(file.second);
-      }
+    for (auto const& file : this->Uic.UiHeaders) {
+      this->AddGeneratedSource(file.first, this->Uic);
+      autogenByproducts.push_back(file.second);
     }
   }
 
diff --git a/Tests/RunCMake/Autogen_6/RunCMakeTest.cmake b/Tests/RunCMake/Autogen_6/RunCMakeTest.cmake
index 66514f9..65d58a9 100644
--- a/Tests/RunCMake/Autogen_6/RunCMakeTest.cmake
+++ b/Tests/RunCMake/Autogen_6/RunCMakeTest.cmake
@@ -1,3 +1,4 @@
+
 include(RunCMake)
 include(Autogen_common/utils)
 
@@ -6,23 +7,22 @@
     -Dwith_qt_version=${with_qt_version}
     "-DQt${with_qt_version}_DIR:PATH=${Qt${with_qt_version}_DIR}"
     "-DCMAKE_PREFIX_PATH:STRING=${CMAKE_PREFIX_PATH}"
-    "-DCMAKE_AUTOGEN_BETTER_GRAPH_MULTI_CONFIG=ON"
   )
   if (QtCore_VERSION VERSION_GREATER_EQUAL 5.15.0)
     macro(set_test_variables_for_unwanted_builds)
       if (RunCMake_GENERATOR MATCHES "Ninja")
-        set(RunCMake_TEST_NOT_EXPECT_stdout "widget2.cpp.o.d|mainwindow.cpp.o.d")
+        set(RunCMake_TEST_EXPECT_stdout "ninja: no work to do.")
       elseif (RunCMake_GENERATOR MATCHES "Make")
-        set(RunCMake_TEST_NOT_EXPECT_stdout "Building CXX object multi_ui_files/CMakeFiles/example.dir/src/widget2.cpp.o|\
-                                             Building CXX object multi_ui_files/CMakeFiles/example.dir/src/mainwindow.cpp.o")
+        set(RunCMake_TEST_NOT_EXPECT_stdout "Building CXX object multi_ui_files/CMakeFiles/example.dir/src/main.cpp.o|\
+                                             Building CXX object multi_ui_files/CMakeFiles/example.dir/src/widget.cpp.o")
       elseif (RunCMake_GENERATOR MATCHES "Visual Studio")
-        set(RunCMake_TEST_NOT_EXPECT_stdout "widget2.cpp|mainwindow.cpp")
+        set(RunCMake_TEST_NOT_EXPECT_stdout "widget.cpp")
       elseif (RunCMake_GENERATOR MATCHES "Xcode")
-        set(RunCMake_TEST_NOT_EXPECT_stdout "widget2.cpp|mainwindow.cpp")
+        set(RunCMake_TEST_NOT_EXPECT_stdout "widget.cpp")
       endif()
     endmacro()
 
-    function(uic_build_test test_name binary_dir source_dir file_to_touch test_config)
+    function(uic_incremental_build_test test_name binary_dir source_dir test_config)
       set(RunCMake_TEST_BINARY_DIR ${binary_dir})
       set(RunCMake_TEST_SOURCE_DIR ${source_dir})
 
@@ -39,13 +39,14 @@
       endif()
       run_cmake_with_options(${test_name} ${RunCMake_TEST_OPTIONS} ${config_arg})
       set(RunCMake_TEST_NO_CLEAN 1)
+      set(RunCMake_TEST_VARIANT_DESCRIPTION "${RunCMake_TEST_VARIANT_DESCRIPTION}-First build")
+      run_cmake_command("${test_name}-build" ${CMAKE_COMMAND} --build . ${test_verbose_arg} ${multiconfig_config_arg})
+      set(RunCMake_TEST_VARIANT_DESCRIPTION "${config_desc}-Second build")
       run_cmake_command("${test_name}-build" ${CMAKE_COMMAND} --build . ${test_verbose_arg} ${multiconfig_config_arg})
 
-      file(TOUCH ${file_to_touch})
-      set(RunCMake_TEST_VARIANT_DESCRIPTION "${config_desc}-first_build_after_touching")
+      set(RunCMake_TEST_VARIANT_DESCRIPTION "${config_desc}-No files were built on the third build")
       set_test_variables_for_unwanted_builds()
       run_cmake_command("${test_name}-build" ${CMAKE_COMMAND} --build . ${test_verbose_arg} ${multiconfig_config_arg})
-      message(STATUS "${test_name}-build${config_desc}-Only build files that were touched were built - PASSED")
     endfunction()
 
     if(RunCMake_GENERATOR MATCHES "Make|Ninja|Visual Studio|Xcode")
@@ -60,11 +61,9 @@
           set(config_desc "-${config}")
         endif()
 
-        uic_build_test(multi_ui_files_touch_ui ${RunCMake_BINARY_DIR}/multi_ui_files_touch_ui${config_desc}-build
-          ${RunCMake_SOURCE_DIR}/multi_ui_files ${RunCMake_SOURCE_DIR}/multi_ui_files/src/widget1.ui ${config})
+        uic_incremental_build_test(incremental_build_test ${RunCMake_BINARY_DIR}/incremental_build${config_desc}-build
+          ${RunCMake_SOURCE_DIR}/incremental_build ${config})
 
-        uic_build_test(multi_ui_files_touch_cpp ${RunCMake_BINARY_DIR}/multi_ui_files_touch_cpp${config_desc}-build
-          ${RunCMake_SOURCE_DIR}/multi_ui_files ${RunCMake_SOURCE_DIR}/multi_ui_files/src/widget1.cpp ${config})
       endforeach()
     endif()
   endif()
diff --git a/Tests/RunCMake/Autogen_6/multi_ui_files/CMakeLists.txt b/Tests/RunCMake/Autogen_6/incremental_build/CMakeLists.txt
similarity index 68%
rename from Tests/RunCMake/Autogen_6/multi_ui_files/CMakeLists.txt
rename to Tests/RunCMake/Autogen_6/incremental_build/CMakeLists.txt
index a4f7206..1796b8f 100644
--- a/Tests/RunCMake/Autogen_6/multi_ui_files/CMakeLists.txt
+++ b/Tests/RunCMake/Autogen_6/incremental_build/CMakeLists.txt
@@ -8,16 +8,10 @@
 set(CMAKE_AUTOUIC ON)
 
 add_executable(example
-    src/mainwindow.ui
-    src/widget1.ui
-    src/widget2.ui
-    src/mainwindow.h
-    src/widget1.h
-    src/widget2.h
-    src/main.cpp
-    src/mainwindow.cpp
-    src/widget1.cpp
-    src/widget2.cpp
+    main.cpp
+    ui/widget.cpp
+    ui/widget.h
+    ui/widget.ui
 )
 
 target_link_libraries(example PRIVATE Qt${with_qt_version}::Widgets
diff --git a/Tests/RunCMake/Autogen_6/multi_ui_files/src/main.cpp b/Tests/RunCMake/Autogen_6/incremental_build/main.cpp
similarity index 75%
rename from Tests/RunCMake/Autogen_6/multi_ui_files/src/main.cpp
rename to Tests/RunCMake/Autogen_6/incremental_build/main.cpp
index 8d76ad9..c15abe4 100644
--- a/Tests/RunCMake/Autogen_6/multi_ui_files/src/main.cpp
+++ b/Tests/RunCMake/Autogen_6/incremental_build/main.cpp
@@ -1,11 +1,11 @@
 #include <QApplication>
 
-#include "mainwindow.h"
+#include "ui/widget.h"
 
 int main(int argc, char* argv[])
 {
   QApplication a(argc, argv);
-  MainWindow w;
+  Widget w;
   w.show();
   return a.exec();
 }
diff --git a/Tests/RunCMake/Autogen_6/incremental_build/ui/widget.cpp b/Tests/RunCMake/Autogen_6/incremental_build/ui/widget.cpp
new file mode 100644
index 0000000..4de4ed2
--- /dev/null
+++ b/Tests/RunCMake/Autogen_6/incremental_build/ui/widget.cpp
@@ -0,0 +1,15 @@
+#include "widget.h"
+
+#include "./ui_widget.h"
+
+Widget::Widget(QWidget* parent)
+  : QWidget(parent)
+  , ui(new Ui::Widget)
+{
+  ui->setupUi(this);
+}
+
+Widget::~Widget()
+{
+  delete ui;
+}
diff --git a/Tests/RunCMake/Autogen_6/incremental_build/ui/widget.h b/Tests/RunCMake/Autogen_6/incremental_build/ui/widget.h
new file mode 100644
index 0000000..2243ffe
--- /dev/null
+++ b/Tests/RunCMake/Autogen_6/incremental_build/ui/widget.h
@@ -0,0 +1,23 @@
+#ifndef WIDGET_H
+#define WIDGET_H
+
+#include <QWidget>
+
+QT_BEGIN_NAMESPACE
+namespace Ui {
+class Widget;
+}
+QT_END_NAMESPACE
+
+class Widget : public QWidget
+{
+  Q_OBJECT
+
+public:
+  Widget(QWidget* parent = nullptr);
+  ~Widget();
+
+private:
+  Ui::Widget* ui;
+};
+#endif // WIDGET_H
diff --git a/Tests/RunCMake/Autogen_6/incremental_build/ui/widget.ui b/Tests/RunCMake/Autogen_6/incremental_build/ui/widget.ui
new file mode 100644
index 0000000..b90248d
--- /dev/null
+++ b/Tests/RunCMake/Autogen_6/incremental_build/ui/widget.ui
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>Widget</class>
+ <widget class="QWidget" name="Widget">
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>800</width>
+    <height>600</height>
+   </rect>
+  </property>
+  <property name="windowTitle">
+   <string>Widget</string>
+  </property>
+ </widget>
+ <resources/>
+ <connections/>
+</ui>
diff --git a/Tests/RunCMake/Autogen_6/multi_ui_files/src/mainwindow.cpp b/Tests/RunCMake/Autogen_6/multi_ui_files/src/mainwindow.cpp
deleted file mode 100644
index eb3d366..0000000
--- a/Tests/RunCMake/Autogen_6/multi_ui_files/src/mainwindow.cpp
+++ /dev/null
@@ -1,25 +0,0 @@
-#include "mainwindow.h"
-
-#include <QVBoxLayout>
-
-#include "src/ui_mainwindow.h"
-#include "widget1.h"
-
-MainWindow::MainWindow(QWidget* parent)
-  : QMainWindow(parent)
-  , ui(new Ui::MainWindow)
-{
-  ui->setupUi(this);
-  auto layout = new QVBoxLayout;
-  layout->addWidget(new Widget1);
-
-  QWidget* w = new QWidget(this);
-  w->setLayout(layout);
-
-  setCentralWidget(w);
-}
-
-MainWindow::~MainWindow()
-{
-  delete ui;
-}
diff --git a/Tests/RunCMake/Autogen_6/multi_ui_files/src/mainwindow.h b/Tests/RunCMake/Autogen_6/multi_ui_files/src/mainwindow.h
deleted file mode 100644
index 3e64459..0000000
--- a/Tests/RunCMake/Autogen_6/multi_ui_files/src/mainwindow.h
+++ /dev/null
@@ -1,22 +0,0 @@
-#ifndef MAINWINDOW_H
-#define MAINWINDOW_H
-
-#include <QMainWindow>
-
-QT_BEGIN_NAMESPACE
-namespace Ui {
-class MainWindow;
-}
-QT_END_NAMESPACE
-
-class MainWindow : public QMainWindow
-{
-  Q_OBJECT
-public:
-  MainWindow(QWidget* parent = nullptr);
-  ~MainWindow();
-
-private:
-  Ui::MainWindow* ui;
-};
-#endif // MAINWINDOW_H
diff --git a/Tests/RunCMake/Autogen_6/multi_ui_files/src/mainwindow.ui b/Tests/RunCMake/Autogen_6/multi_ui_files/src/mainwindow.ui
deleted file mode 100644
index 828d7c1..0000000
--- a/Tests/RunCMake/Autogen_6/multi_ui_files/src/mainwindow.ui
+++ /dev/null
@@ -1,33 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<ui version="4.0">
- <class>MainWindow</class>
- <widget class="QMainWindow" name="MainWindow">
-  <property name="geometry">
-   <rect>
-    <x>0</x>
-    <y>0</y>
-    <width>800</width>
-    <height>600</height>
-   </rect>
-  </property>
-  <property name="windowTitle">
-   <string>MainWindow</string>
-  </property>
-  <widget class="QWidget" name="centralwidget">
-   <layout class="QGridLayout" name="gridLayout"/>
-  </widget>
-  <widget class="QMenuBar" name="menubar">
-   <property name="geometry">
-    <rect>
-     <x>0</x>
-     <y>0</y>
-     <width>800</width>
-     <height>22</height>
-    </rect>
-   </property>
-  </widget>
-  <widget class="QStatusBar" name="statusbar"/>
- </widget>
- <resources/>
- <connections/>
-</ui>
diff --git a/Tests/RunCMake/Autogen_6/multi_ui_files/src/widget1.cpp b/Tests/RunCMake/Autogen_6/multi_ui_files/src/widget1.cpp
deleted file mode 100644
index 05657ce..0000000
--- a/Tests/RunCMake/Autogen_6/multi_ui_files/src/widget1.cpp
+++ /dev/null
@@ -1,22 +0,0 @@
-#include "widget1.h"
-
-#include "src/ui_widget1.h"
-
-Widget1::Widget1(QWidget* parent)
-  : QWidget(parent)
-  , ui(new Ui::Widget1)
-{
-  ui->setupUi(this);
-  connect(ui->lineEdit, SIGNAL(textChanged(const QString&)), this,
-          SLOT(onTextChanged(const QString&)));
-}
-
-Widget1::~Widget1()
-{
-  delete ui;
-}
-
-void Widget1::onTextChanged(const QString& text)
-{
-  ui->OnTextChanged->setText(text);
-}
diff --git a/Tests/RunCMake/Autogen_6/multi_ui_files/src/widget1.h b/Tests/RunCMake/Autogen_6/multi_ui_files/src/widget1.h
deleted file mode 100644
index 8c28d6d..0000000
--- a/Tests/RunCMake/Autogen_6/multi_ui_files/src/widget1.h
+++ /dev/null
@@ -1,23 +0,0 @@
-#ifndef WIDGET1_H
-#define WIDGET1_H
-
-#include <QWidget>
-
-namespace Ui {
-class Widget1;
-}
-
-class Widget1 : public QWidget
-{
-  Q_OBJECT
-public:
-  explicit Widget1(QWidget* parent = nullptr);
-  ~Widget1();
-public slots:
-  void onTextChanged(const QString& text);
-
-private:
-  Ui::Widget1* ui;
-};
-
-#endif // WIDGET1_H
diff --git a/Tests/RunCMake/Autogen_6/multi_ui_files/src/widget1.ui b/Tests/RunCMake/Autogen_6/multi_ui_files/src/widget1.ui
deleted file mode 100644
index db0c58d..0000000
--- a/Tests/RunCMake/Autogen_6/multi_ui_files/src/widget1.ui
+++ /dev/null
@@ -1,52 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<ui version="4.0">
- <class>Widget1</class>
- <widget class="QWidget" name="Widget1">
-  <property name="geometry">
-   <rect>
-    <x>0</x>
-    <y>0</y>
-    <width>400</width>
-    <height>300</height>
-   </rect>
-  </property>
-  <property name="windowTitle">
-   <string>Form</string>
-  </property>
-  <layout class="QFormLayout" name="formLayout">
-   <item row="0" column="0">
-    <widget class="QLabel" name="label_3">
-     <property name="text">
-      <string>Input:</string>
-     </property>
-    </widget>
-   </item>
-   <item row="0" column="1">
-    <widget class="QLineEdit" name="lineEdit"/>
-   </item>
-   <item row="1" column="0">
-    <widget class="QLabel" name="label">
-     <property name="text">
-      <string>OnTextChanged:</string>
-     </property>
-    </widget>
-   </item>
-   <item row="1" column="1">
-    <widget class="QLabel" name="OnTextChanged">
-     <property name="text">
-      <string/>
-     </property>
-    </widget>
-   </item>
-   <item row="2" column="0">
-    <widget class="QLabel" name="label_2">
-     <property name="text">
-      <string>TextLabel</string>
-     </property>
-    </widget>
-   </item>
-  </layout>
- </widget>
- <resources/>
- <connections/>
-</ui>
diff --git a/Tests/RunCMake/Autogen_6/multi_ui_files/src/widget2.cpp b/Tests/RunCMake/Autogen_6/multi_ui_files/src/widget2.cpp
deleted file mode 100644
index 7f4bbaf..0000000
--- a/Tests/RunCMake/Autogen_6/multi_ui_files/src/widget2.cpp
+++ /dev/null
@@ -1,22 +0,0 @@
-#include "widget2.h"
-
-#include "src/ui_widget2.h"
-
-Widget2::Widget2(QWidget* parent)
-  : QWidget(parent)
-  , ui(new Ui::Widget2)
-{
-  ui->setupUi(this);
-  connect(ui->lineEdit, SIGNAL(textChanged(const QString&)), this,
-          SLOT(onTextChanged(const QString&)));
-}
-
-Widget2::~Widget2()
-{
-  delete ui;
-}
-
-void Widget2::onTextChanged(const QString& text)
-{
-  ui->OnTextChanged->setText(text);
-}
diff --git a/Tests/RunCMake/Autogen_6/multi_ui_files/src/widget2.h b/Tests/RunCMake/Autogen_6/multi_ui_files/src/widget2.h
deleted file mode 100644
index 41d7e1f..0000000
--- a/Tests/RunCMake/Autogen_6/multi_ui_files/src/widget2.h
+++ /dev/null
@@ -1,24 +0,0 @@
-#ifndef WIDGET2_H
-#define WIDGET2_H
-
-#include <QWidget>
-
-namespace Ui {
-class Widget2;
-}
-
-class Widget2 : public QWidget
-{
-  Q_OBJECT
-
-public:
-  explicit Widget2(QWidget* parent = nullptr);
-  ~Widget2();
-public slots:
-  void onTextChanged(const QString& text);
-
-private:
-  Ui::Widget2* ui;
-};
-
-#endif // WIDGET2_H
diff --git a/Tests/RunCMake/Autogen_6/multi_ui_files/src/widget2.ui b/Tests/RunCMake/Autogen_6/multi_ui_files/src/widget2.ui
deleted file mode 100644
index facf467..0000000
--- a/Tests/RunCMake/Autogen_6/multi_ui_files/src/widget2.ui
+++ /dev/null
@@ -1,45 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<ui version="4.0">
- <class>Widget2</class>
- <widget class="QWidget" name="Widget2">
-  <property name="geometry">
-   <rect>
-    <x>0</x>
-    <y>0</y>
-    <width>400</width>
-    <height>300</height>
-   </rect>
-  </property>
-  <property name="windowTitle">
-   <string>Form</string>
-  </property>
-  <layout class="QFormLayout" name="formLayout">
-   <item row="0" column="0">
-    <widget class="QLabel" name="label_3">
-     <property name="text">
-      <string>Input:</string>
-     </property>
-    </widget>
-   </item>
-   <item row="0" column="1">
-    <widget class="QLineEdit" name="lineEdit"/>
-   </item>
-   <item row="1" column="0">
-    <widget class="QLabel" name="label">
-     <property name="text">
-      <string>OnTextChanged:</string>
-     </property>
-    </widget>
-   </item>
-   <item row="1" column="1">
-    <widget class="QLabel" name="OnTextChanged">
-     <property name="text">
-      <string/>
-     </property>
-    </widget>
-   </item>
-  </layout>
- </widget>
- <resources/>
- <connections/>
-</ui>
diff --git a/Tests/RunCMake/target_link_options/LINKER_expansion.cmake b/Tests/RunCMake/target_link_options/LINKER_expansion.cmake
index 2219218..7a2ffa1 100644
--- a/Tests/RunCMake/target_link_options/LINKER_expansion.cmake
+++ b/Tests/RunCMake/target_link_options/LINKER_expansion.cmake
@@ -26,6 +26,7 @@
 # Use LINKER alone
 add_test_library(linker)
 target_link_options(linker PRIVATE "LINKER:-foo,bar")
+target_link_options(linker PRIVATE "LINKER:") # empty
 
 # Use LINKER with SHELL
 add_test_library(linker_shell)