From 4b486cfe82a9d69801604ae995ef9895eca0f389 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Sun, 17 Mar 2019 13:25:35 -0400 Subject: [PATCH] [libcalamares] Add some debugging Jobs - FailJob always fails, and GoodJob always succeeds, both without doing anything. These aren't particularly useful, except for debugging. --- src/libcalamares/CMakeLists.txt | 1 + src/libcalamares/JobExample.cpp | 42 +++++++++++++++++++ src/libcalamares/JobExample.h | 73 +++++++++++++++++++++++++++++++++ 3 files changed, 116 insertions(+) create mode 100644 src/libcalamares/JobExample.cpp create mode 100644 src/libcalamares/JobExample.h diff --git a/src/libcalamares/CMakeLists.txt b/src/libcalamares/CMakeLists.txt index 4bf78176e..aeea34470 100644 --- a/src/libcalamares/CMakeLists.txt +++ b/src/libcalamares/CMakeLists.txt @@ -16,6 +16,7 @@ set( libSources CppJob.cpp GlobalStorage.cpp Job.cpp + JobExample.cpp JobQueue.cpp ProcessJob.cpp Settings.cpp diff --git a/src/libcalamares/JobExample.cpp b/src/libcalamares/JobExample.cpp new file mode 100644 index 000000000..83259ae6d --- /dev/null +++ b/src/libcalamares/JobExample.cpp @@ -0,0 +1,42 @@ +/* === This file is part of Calamares - === + * + * Copyright 2019, Adriaan de Groot + * + * Calamares is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Calamares 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Calamares. If not, see . + */ + +#include "JobExample.h" + +namespace Calamares +{ + +QString +NamedJob::prettyName() const +{ + return tr( "Example job (%1)" ).arg( m_name ); +} + +JobResult +GoodJob::exec() +{ + return JobResult::ok(); +} + +JobResult +FailJob::exec() +{ + return JobResult::error( tr( "Job failed (%1)" ).arg( m_name ), tr( "Programmed job failure was explicitly requested." ) ); +} + +} // namespace diff --git a/src/libcalamares/JobExample.h b/src/libcalamares/JobExample.h new file mode 100644 index 000000000..fd5eea109 --- /dev/null +++ b/src/libcalamares/JobExample.h @@ -0,0 +1,73 @@ +/* === This file is part of Calamares - === + * + * Copyright 2019, Adriaan de Groot + * + * Calamares is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Calamares 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Calamares. If not, see . + */ + +#ifndef CALAMARES_JOB_EXAMPLE_H +#define CALAMARES_JOB_EXAMPLE_H + +#include "Job.h" + +namespace Calamares { + +/** @brief A Job with a name + * + * This includes a default implementation of prettyName(), + * but is only used as a base for FailJob and GoodJob, + * which are support / bogus classes. + */ +class DLLEXPORT NamedJob : public Job +{ +public: + explicit NamedJob( const QString& name, QObject* parent = nullptr ) + : Job( parent ) + , m_name( name ) + { + } + + virtual QString prettyName() const override; +protected: + const QString m_name; +} ; + +/// @brief Job does nothing, always succeeds +class DLLEXPORT GoodJob : public NamedJob +{ +public: + explicit GoodJob( const QString& name, QObject* parent = nullptr ) + : NamedJob( name, parent ) + { + } + + virtual JobResult exec() override; +} ; + + +/// @brief Job does nothing, always fails +class DLLEXPORT FailJob : public NamedJob +{ +public: + explicit FailJob( const QString& name, QObject* parent = nullptr ) + : NamedJob( name, parent ) + { + } + + virtual JobResult exec() override; +} ; + +} // namespace Calamares + +#endif // CALAMARES_JOB_EXAMPLE_H