This will allow us to run tests using firewall on hosts where the mocked
binaries are not available/installed instead of skipping these tests.
Signed-off-by: Pavel Hrdina <phrdina(a)redhat.com>
---
src/util/virfile.h | 3 ++-
tests/meson.build | 1 +
tests/virfirewallmock.c | 34 ++++++++++++++++++++++++++++++++++
3 files changed, 37 insertions(+), 1 deletion(-)
create mode 100644 tests/virfirewallmock.c
diff --git a/src/util/virfile.h b/src/util/virfile.h
index a02779f0ec..b9f7b1766f 100644
--- a/src/util/virfile.h
+++ b/src/util/virfile.h
@@ -184,7 +184,8 @@ int virFileResolveAllLinks(const char *linkpath,
int virFileIsLink(const char *linkpath)
ATTRIBUTE_NONNULL(1) G_GNUC_WARN_UNUSED_RESULT;
-char *virFindFileInPath(const char *file);
+char *virFindFileInPath(const char *file)
+ G_GNUC_NO_INLINE;
char *virFileFindResource(const char *filename,
const char *builddir,
diff --git a/tests/meson.build b/tests/meson.build
index 3f66861332..05c3e90195 100644
--- a/tests/meson.build
+++ b/tests/meson.build
@@ -60,6 +60,7 @@ mock_libs = [
{ 'name': 'shunload', 'sources': [ 'shunloadhelper.c' ]
},
{ 'name': 'vircgroupmock' },
{ 'name': 'virfilecachemock' },
+ { 'name': 'virfirewallmock' },
{ 'name': 'virgdbusmock' },
{ 'name': 'virhostcpumock' },
{ 'name': 'virhostdevmock' },
diff --git a/tests/virfirewallmock.c b/tests/virfirewallmock.c
new file mode 100644
index 0000000000..6b096701c9
--- /dev/null
+++ b/tests/virfirewallmock.c
@@ -0,0 +1,34 @@
+/*
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library. If not, see
+ * <
http://www.gnu.org/licenses/>.
+ */
+
+#include <config.h>
+
+#include "internal.h"
+#include "virfile.h"
+
+char *
+virFindFileInPath(const char *file)
+{
+ if (file &&
+ (g_strrstr(file, "ebtables") ||
+ g_strrstr(file, "iptables") ||
+ g_strrstr(file, "ip6tables"))) {
+ return g_strdup(file);
+ }
+
+ /* We should not need any other binaries so return NULL. */
+ return NULL;
+}
--
2.30.2