[calamares] Inject a pre-script when testing Python modules
Co-opt the subprocess module and replace call and check_call functions with something that logs the call and does nothing.
This commit is contained in:
parent
629fc83f21
commit
cc0e39db56
@ -18,6 +18,7 @@
|
|||||||
#include "GlobalStorage.h"
|
#include "GlobalStorage.h"
|
||||||
#include "Job.h"
|
#include "Job.h"
|
||||||
#include "JobQueue.h"
|
#include "JobQueue.h"
|
||||||
|
#include "PythonJob.h"
|
||||||
#include "Settings.h"
|
#include "Settings.h"
|
||||||
#include "ViewManager.h"
|
#include "ViewManager.h"
|
||||||
#include "modulesystem/Module.h"
|
#include "modulesystem/Module.h"
|
||||||
@ -365,6 +366,27 @@ createApplication( int& argc, char* argv[] )
|
|||||||
return new QCoreApplication( argc, argv );
|
return new QCoreApplication( argc, argv );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static const char pythonPreScript[] = R"(
|
||||||
|
# This is Python code executed by Python modules *before* the
|
||||||
|
# script file (e.g. main.py) is executed. Beware " before )
|
||||||
|
# because it's a C++ raw-string.
|
||||||
|
_calamares_subprocess = __import__("subprocess", globals(), locals(), [], 0)
|
||||||
|
import sys
|
||||||
|
import libcalamares
|
||||||
|
class fake_subprocess(object):
|
||||||
|
@staticmethod
|
||||||
|
def call(*args, **kwargs):
|
||||||
|
libcalamares.utils.debug("subprocess.call(%r,%r) X run normally" % (args, kwargs))
|
||||||
|
return 0
|
||||||
|
@staticmethod
|
||||||
|
def check_call(*args, **kwargs):
|
||||||
|
libcalamares.utils.debug("subprocess.check_call(%r,%r) X subverted to call" % (args, kwargs))
|
||||||
|
return 0
|
||||||
|
sys.modules["subprocess"] = fake_subprocess
|
||||||
|
libcalamares.utils.debug('pre-script for testing purposes injected')
|
||||||
|
|
||||||
|
)";
|
||||||
|
|
||||||
int
|
int
|
||||||
main( int argc, char* argv[] )
|
main( int argc, char* argv[] )
|
||||||
{
|
{
|
||||||
@ -397,6 +419,7 @@ main( int argc, char* argv[] )
|
|||||||
#ifdef WITH_QML
|
#ifdef WITH_QML
|
||||||
CalamaresUtils::initQmlModulesDir(); // don't care if failed
|
CalamaresUtils::initQmlModulesDir(); // don't care if failed
|
||||||
#endif
|
#endif
|
||||||
|
Calamares::PythonJob::setInjectedPreScript(pythonPreScript);
|
||||||
|
|
||||||
cDebug() << "Calamares module-loader testing" << module.moduleName();
|
cDebug() << "Calamares module-loader testing" << module.moduleName();
|
||||||
Calamares::Module* m = load_module( module );
|
Calamares::Module* m = load_module( module );
|
||||||
|
Loading…
Reference in New Issue
Block a user