Browse Source

ShaderTools: expand verbosity levels, add warnings as errors.

pull/481/head
Vladimír Vondruš 6 years ago
parent
commit
7ee589552f
  1. 9
      src/Magnum/ShaderTools/AbstractConverter.cpp
  2. 16
      src/Magnum/ShaderTools/AbstractConverter.h
  3. 21
      src/Magnum/ShaderTools/Test/AbstractConverterTest.cpp

9
src/Magnum/ShaderTools/AbstractConverter.cpp

@ -84,6 +84,8 @@ ConverterFeatures AbstractConverter::features() const {
}
void AbstractConverter::setFlags(const ConverterFlags flags) {
CORRADE_ASSERT(!(flags & ConverterFlag::Quiet) != !(flags & ConverterFlag::Verbose),
"ShaderTools::AbstractConverter::setFeatures(): can't have both Quiet and Verbose set", );
_flags = flags;
doSetFlags(flags);
}
@ -642,7 +644,9 @@ Debug& operator<<(Debug& debug, const ConverterFlag value) {
switch(value) {
/* LCOV_EXCL_START */
#define _c(v) case ConverterFlag::v: return debug << "::" #v;
_c(Quiet)
_c(Verbose)
_c(WarningAsError)
#undef _c
/* LCOV_EXCL_STOP */
}
@ -652,7 +656,10 @@ Debug& operator<<(Debug& debug, const ConverterFlag value) {
Debug& operator<<(Debug& debug, const ConverterFlags value) {
return Containers::enumSetDebugOutput(debug, value, "ShaderTools::ConverterFlags{}", {
ConverterFlag::Verbose});
ConverterFlag::Quiet,
ConverterFlag::Verbose,
ConverterFlag::WarningAsError
});
}
Debug& operator<<(Debug& debug, const Format value) {

16
src/Magnum/ShaderTools/AbstractConverter.h

@ -126,11 +126,25 @@ MAGNUM_SHADERTOOLS_EXPORT Debug& operator<<(Debug& debug, ConverterFeatures valu
@see @ref ConverterFlags, @ref AbstractConverter::setFlags()
*/
enum class ConverterFlag: UnsignedInt {
/**
* Suppress warnings, print just errors. By default the converter prints
* both warnings and errors.
* @see @ref ConverterFlag::WarningAsError
*/
Quiet = 1 << 0,
/**
* Print verbose diagnostic. By default the converter only prints warnings
* and errors.
*/
Verbose = 1 << 0
Verbose = 1 << 1,
/**
* Treat warnings as error. By default, if a warning occurs,
* validation or conversion succeeds. With this flag set, it fails.
* @see @ref ConverterFlag::Quiet
*/
WarningAsError = 1 << 2
};
/**

21
src/Magnum/ShaderTools/Test/AbstractConverterTest.cpp

@ -47,6 +47,7 @@ struct AbstractConverterTest: TestSuite::Tester {
void featuresNone();
void setFlags();
void setFlagsBothQuietAndVerbose();
void setFlagsNotImplemented();
void setInputOutputFormat();
@ -166,6 +167,7 @@ AbstractConverterTest::AbstractConverterTest() {
addTests({&AbstractConverterTest::featuresNone,
&AbstractConverterTest::setFlags,
&AbstractConverterTest::setFlagsBothQuietAndVerbose,
&AbstractConverterTest::setFlagsNotImplemented,
&AbstractConverterTest::setInputOutputFormat,
@ -326,6 +328,25 @@ void AbstractConverterTest::setFlags() {
CORRADE_COMPARE(converter._flags, ConverterFlag::Verbose);
}
void AbstractConverterTest::setFlagsBothQuietAndVerbose() {
#ifdef CORRADE_NO_ASSERT
CORRADE_SKIP("CORRADE_NO_ASSERT defined, can't test assertions");
#endif
struct: AbstractConverter {
ConverterFeatures doFeatures() const override {
return ConverterFeature::ValidateData;
}
void doSetInputFormat(Format, Containers::StringView) override {}
void doSetOutputFormat(Format, Containers::StringView) override {}
} converter;
std::ostringstream out;
Error redirectError{&out};
converter.setFlags(ConverterFlag::Quiet|ConverterFlag::Verbose);
CORRADE_COMPARE(out.str(), "ShaderTools::AbstractConverter::setFlags(): can't have both Quiet and Verbose set\n");
}
void AbstractConverterTest::setFlagsNotImplemented() {
struct: AbstractConverter {
ConverterFeatures doFeatures() const override {

Loading…
Cancel
Save