summaryrefslogtreecommitdiffstats
path: root/tools/slang-test
diff options
context:
space:
mode:
authorjsmall-nvidia <jsmall@nvidia.com>2018-12-21 11:00:28 -0500
committerGitHub <noreply@github.com>2018-12-21 11:00:28 -0500
commitefa2c8f41aa5cd2c27990fd9b57ea0eff06976e7 (patch)
tree4c1a4d8e6e71e81c42cfbf315610e380d75527bf /tools/slang-test
parentb5bda9b3d155234be079debe6997cbc900773cf2 (diff)
Feature/remove app context (#765)
* Remove AppContext. Use StdChannels to hold writers, and TestToolUtil to hold test tool specific functionality. * StdChannels -> StdWriters * getStdOut -> getOut, getStdError -> getError
Diffstat (limited to 'tools/slang-test')
-rw-r--r--tools/slang-test/main.cpp30
-rw-r--r--tools/slang-test/options.cpp2
-rw-r--r--tools/slang-test/slangc-tool.cpp8
-rw-r--r--tools/slang-test/slangc-tool.h4
-rw-r--r--tools/slang-test/test-context.h7
-rw-r--r--tools/slang-test/test-reporter.h2
6 files changed, 30 insertions, 23 deletions
diff --git a/tools/slang-test/main.cpp b/tools/slang-test/main.cpp
index 07647e58f..102b0b961 100644
--- a/tools/slang-test/main.cpp
+++ b/tools/slang-test/main.cpp
@@ -2,7 +2,7 @@
#include "../../source/core/slang-io.h"
#include "../../source/core/token-reader.h"
-#include "../../source/core/slang-app-context.h"
+#include "../../source/core/slang-std-writers.h"
#include "../../slang-com-helper.h"
@@ -386,16 +386,17 @@ OSError spawnAndWait(TestContext* context, const String& testPath, OSProcessSpaw
StringWriter stdError(&stdErrorString, WriterFlag::IsConsole | WriterFlag::IsStatic);
StringWriter stdOut(&stdOutString, WriterFlag::IsConsole | WriterFlag::IsStatic);
- AppContext appContext;
- appContext.setWriter(SLANG_WRITER_CHANNEL_STD_ERROR, &stdError);
- appContext.setWriter(SLANG_WRITER_CHANNEL_STD_OUTPUT, &stdOut);
+ StdWriters* prevStdWriters = StdWriters::getSingleton();
+
+ StdWriters stdWriters;
+ stdWriters.setWriter(SLANG_WRITER_CHANNEL_STD_ERROR, &stdError);
+ stdWriters.setWriter(SLANG_WRITER_CHANNEL_STD_OUTPUT, &stdOut);
if (exeName == "slangc")
{
- appContext.setWriter(SLANG_WRITER_CHANNEL_DIAGNOSTIC, &stdError);
+ stdWriters.setWriter(SLANG_WRITER_CHANNEL_DIAGNOSTIC, &stdError);
}
- appContext.setReplaceWriterFlagsAll();
-
+
List<const char*> args;
args.Add(exeName.Buffer());
for (int i = 0; i < int(spawner.argumentList_.Count()); ++i)
@@ -403,11 +404,14 @@ OSError spawnAndWait(TestContext* context, const String& testPath, OSProcessSpaw
args.Add(spawner.argumentList_[i].Buffer());
}
- SlangResult res = func(&appContext, context->getSession(), int(args.Count()), args.begin());
+ SlangResult res = func(&stdWriters, context->getSession(), int(args.Count()), args.begin());
+
+ StdWriters::setSingleton(prevStdWriters);
spawner.standardError_ = stdErrorString;
spawner.standardOutput_ = stdOutString;
- spawner.resultCode_ = AppContext::getReturnCode(res);
+
+ spawner.resultCode_ = TestToolUtil::getReturnCode(res);
return kOSError_None;
}
@@ -1763,7 +1767,7 @@ void runTestsInDirectory(
SlangResult innerMain(int argc, char** argv)
{
- AppContext::initDefault();
+ StdWriters::initDefault();
// The context holds useful things used during testing
TestContext context;
@@ -1789,7 +1793,7 @@ SlangResult innerMain(int argc, char** argv)
context.setInnerMainFunc("slangc", &SlangCTool::innerMain);
}
- SLANG_RETURN_ON_FAIL(Options::parse(argc, argv, &categorySet, AppContext::getStdError(), &context.options));
+ SLANG_RETURN_ON_FAIL(Options::parse(argc, argv, &categorySet, StdWriters::getError(), &context.options));
Options& options = context.options;
@@ -1799,7 +1803,7 @@ SlangResult innerMain(int argc, char** argv)
auto func = context.getInnerMainFunc(options.binDir, options.subCommand);
if (!func)
{
- AppContext::getStdError().print("error: Unable to launch tool '%s'\n", options.subCommand.Buffer());
+ StdWriters::getError().print("error: Unable to launch tool '%s'\n", options.subCommand.Buffer());
return SLANG_FAIL;
}
@@ -1812,7 +1816,7 @@ SlangResult innerMain(int argc, char** argv)
args[i] = srcArgs[i].Buffer();
}
- return func(AppContext::getSingleton(), context.getSession(), int(args.Count()), args.Buffer());
+ return func(StdWriters::getSingleton(), context.getSession(), int(args.Count()), args.Buffer());
}
if( options.includeCategories.Count() == 0 )
diff --git a/tools/slang-test/options.cpp b/tools/slang-test/options.cpp
index 6f3f5d79b..0a6023733 100644
--- a/tools/slang-test/options.cpp
+++ b/tools/slang-test/options.cpp
@@ -37,7 +37,7 @@ TestCategory* TestCategorySet::findOrError(String const& name)
TestCategory* category = find(name);
if (!category)
{
- AppContext::getStdError().print("error: unknown test category name '%s'\n", name.Buffer());
+ StdWriters::getError().print("error: unknown test category name '%s'\n", name.Buffer());
}
return category;
}
diff --git a/tools/slang-test/slangc-tool.cpp b/tools/slang-test/slangc-tool.cpp
index 3085e2ab5..bf1bb8c28 100644
--- a/tools/slang-test/slangc-tool.cpp
+++ b/tools/slang-test/slangc-tool.cpp
@@ -7,19 +7,19 @@ SLANG_API void spSetCommandLineCompilerMode(SlangCompileRequest* request);
static void _diagnosticCallback(char const* message, void* /*userData*/)
{
- auto stdError = AppContext::getStdError();
+ auto stdError = StdWriters::getError();
stdError.put(message);
stdError.flush();
}
-SlangResult SlangCTool::innerMain(AppContext* appContext, SlangSession* session, int argc, const char*const* argv)
+SlangResult SlangCTool::innerMain(StdWriters* stdWriters, SlangSession* session, int argc, const char*const* argv)
{
SlangCompileRequest* compileRequest = spCreateCompileRequest(session);
spSetDiagnosticCallback(compileRequest, &_diagnosticCallback, nullptr);
spSetCommandLineCompilerMode(compileRequest);
// Do any app specific configuration
- appContext->configureRequest(compileRequest);
+ stdWriters->setRequestWriters(compileRequest);
{
const SlangResult res = spProcessCommandLineArguments(compileRequest, &argv[1], argc - 1);
@@ -45,7 +45,7 @@ SlangResult SlangCTool::innerMain(AppContext* appContext, SlangSession* session,
#ifndef _DEBUG
catch (Exception & e)
{
- AppContext::getStdOut().print("internal compiler error: %S\n", e.Message.ToWString().begin());
+ StdWriters::getOut().print("internal compiler error: %S\n", e.Message.ToWString().begin());
res = SLANG_FAIL;
}
#endif
diff --git a/tools/slang-test/slangc-tool.h b/tools/slang-test/slangc-tool.h
index dd6e1b977..a1fcaa71b 100644
--- a/tools/slang-test/slangc-tool.h
+++ b/tools/slang-test/slangc-tool.h
@@ -3,13 +3,13 @@
#ifndef SLANGC_TOOL_H_INCLUDED
#define SLANGC_TOOL_H_INCLUDED
-#include "../../source/core/slang-app-context.h"
+#include "../../source/core/slang-std-writers.h"
/* The slangc 'tool' interface, such that slangc like functionality is available directly without invoking slangc command line tool, or
need for a dll/shared library. */
struct SlangCTool
{
- static SlangResult innerMain(Slang::AppContext* appContext, SlangSession* session, int argc, const char*const* argv);
+ static SlangResult innerMain(Slang::StdWriters* stdWriters, SlangSession* session, int argc, const char*const* argv);
};
#endif // SLANGC_TOOL_H_INCLUDED
diff --git a/tools/slang-test/test-context.h b/tools/slang-test/test-context.h
index cfa9837da..b07ca94e6 100644
--- a/tools/slang-test/test-context.h
+++ b/tools/slang-test/test-context.h
@@ -5,15 +5,18 @@
#include "../../source/core/slang-string-util.h"
#include "../../source/core/platform.h"
-#include "../../source/core/slang-app-context.h"
+#include "../../source/core/slang-std-writers.h"
#include "../../source/core/dictionary.h"
+#include "../../source/core/slang-test-tool-util.h"
#include "options.h"
class TestContext
{
public:
- typedef SlangResult(*InnerMainFunc)(Slang::AppContext* appContext, SlangSession* session, int argc, const char*const* argv);
+
+ typedef Slang::TestToolUtil::InnerMainFunc InnerMainFunc;
+
/// Get the slang session
SlangSession* getSession() const { return m_session; }
diff --git a/tools/slang-test/test-reporter.h b/tools/slang-test/test-reporter.h
index 13bcfe6a4..38e0d2cc3 100644
--- a/tools/slang-test/test-reporter.h
+++ b/tools/slang-test/test-reporter.h
@@ -5,7 +5,7 @@
#include "../../source/core/slang-string-util.h"
#include "../../source/core/platform.h"
-#include "../../source/core/slang-app-context.h"
+#include "../../source/core/slang-std-writers.h"
#include "../../source/core/dictionary.h"