aboutsummaryrefslogtreecommitdiff
path: root/build2/test/target.cxx
diff options
context:
space:
mode:
authorBoris Kolpackov <boris@codesynthesis.com>2016-10-14 10:41:48 +0200
committerBoris Kolpackov <boris@codesynthesis.com>2016-11-04 09:26:14 +0200
commit64eecc0f7ba15b1733bbc713a2f197dda590e12d (patch)
treebd3e05f5408e3f512eb39e37cddd9257d464e240 /build2/test/target.cxx
parentd4be6965ed8d5cacb79776fa892b763548e3d070 (diff)
Add test{} testscript target type
Diffstat (limited to 'build2/test/target.cxx')
-rw-r--r--build2/test/target.cxx47
1 files changed, 47 insertions, 0 deletions
diff --git a/build2/test/target.cxx b/build2/test/target.cxx
new file mode 100644
index 0000000..1a215ca
--- /dev/null
+++ b/build2/test/target.cxx
@@ -0,0 +1,47 @@
+// file : build2/test/target.cxx -*- C++ -*-
+// copyright : Copyright (c) 2014-2016 Code Synthesis Ltd
+// license : MIT; see accompanying LICENSE file
+
+#include <build2/test/target>
+
+using namespace std;
+using namespace butl;
+
+namespace build2
+{
+ namespace test
+ {
+ static target*
+ testscript_factory (const target_type&,
+ dir_path d,
+ dir_path o,
+ string n,
+ const string* e)
+ {
+ if (e == nullptr)
+ e = &extension_pool.find (n == "testscript" ? "" : "test");
+
+ return new testscript (move (d), move (o), move (n), e);
+ }
+
+ static const string*
+ testscript_target_extension (const target_key& tk, scope&)
+ {
+ // If the name is special 'testscript', then there is no extension,
+ // otherwise it is .test.
+ //
+ return &extension_pool.find (*tk.name == "testscript" ? "" : "test");
+ }
+
+ const target_type testscript::static_type
+ {
+ "test",
+ &file::static_type,
+ &testscript_factory,
+ &testscript_target_extension,
+ nullptr,
+ &search_file,
+ false
+ };
+ }
+}