aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJussi Pakkanen <jpakkane@gmail.com>2017-12-28 00:01:31 +0200
committerJussi Pakkanen <jpakkane@gmail.com>2017-12-31 23:24:29 +0200
commit4a189cf8c53e22b747521cae93c18cac3a45cc5a (patch)
tree14f77b4d494cdb4d83dd1e177ef79d43ba7a398d
parentf1afd44b2b2fb85de1c55408b46e50b4381f50d2 (diff)
downloadmeson-4a189cf8c53e22b747521cae93c18cac3a45cc5a.zip
meson-4a189cf8c53e22b747521cae93c18cac3a45cc5a.tar.gz
meson-4a189cf8c53e22b747521cae93c18cac3a45cc5a.tar.bz2
Add unit test that checks that the sample projects compile.
-rw-r--r--docs/markdown/Project-templates.md4
-rw-r--r--docs/markdown/snippets/templates.md8
-rw-r--r--mesonbuild/minit.py8
-rwxr-xr-xrun_unittests.py15
4 files changed, 29 insertions, 6 deletions
diff --git a/docs/markdown/Project-templates.md b/docs/markdown/Project-templates.md
index dd86e13..d8459c6 100644
--- a/docs/markdown/Project-templates.md
+++ b/docs/markdown/Project-templates.md
@@ -2,7 +2,7 @@
short-description: Project templates
...
-# Project templates (available since 0.45.0)
+# Project templates
To make it easier for new developers to start working, Meson ships a
tool to generate the basic setup of different kinds of projects. This
@@ -26,3 +26,5 @@ $ ninja -C builddir
The generator has many different projects and settings. They can all
be listed by invoking the command `meson test --help`.
+
+This feature is available since Meson version 0.45.0.
diff --git a/docs/markdown/snippets/templates.md b/docs/markdown/snippets/templates.md
new file mode 100644
index 0000000..6f0474d
--- /dev/null
+++ b/docs/markdown/snippets/templates.md
@@ -0,0 +1,8 @@
+## Project templates
+
+Meson ships with predefined project templates. To start a new project from
+scratch, simply go to an empty directory and type:
+
+```meson
+meson init --name=myproject --type=executable --language=c
+```
diff --git a/mesonbuild/minit.py b/mesonbuild/minit.py
index 29b5056..98817cb 100644
--- a/mesonbuild/minit.py
+++ b/mesonbuild/minit.py
@@ -113,10 +113,10 @@ hello_c_template = '''#include <stdio.h>
int main(int argc, char **argv) {{
if(argc != 1) {{
- printf("%s takes not arguments.\\n", argv[0]);
+ printf("%s takes no arguments.\\n", argv[0]);
return 1;
}}
- printf("This is project %s.\n", PROJECT_NAME);
+ printf("This is project %s.\\n", PROJECT_NAME);
return 0;
}}
'''
@@ -138,7 +138,7 @@ hello_cpp_template = '''#include <iostream>
int main(int argc, char **argv) {{
if(argc != 1) {{
- printf("%s takes not arguments.\\n", argv[0]);
+ std::cout << argv[0] << "takes no arguments.\\n";
return 1;
}}
std::cout << "This is project " << PROJECT_NAME << ".\\n";
@@ -209,7 +209,7 @@ lib_cpp_test_template = '''#include <{header_file}>
int main(int argc, char **argv) {{
if(argc != 1) {{
- printf("%s takes no arguments.\\n", argv[0]);
+ std::cout << argv[0] << " takes no arguments.\\n";
return 1;
}}
{namespace}::{class_name} c;
diff --git a/run_unittests.py b/run_unittests.py
index 184386c..cbdcda0 100755
--- a/run_unittests.py
+++ b/run_unittests.py
@@ -36,7 +36,7 @@ import mesonbuild.coredata
from mesonbuild.interpreter import ObjectHolder
from mesonbuild.mesonlib import is_linux, is_windows, is_osx, is_cygwin, windows_proof_rmtree
from mesonbuild.mesonlib import python_command, meson_command, version_compare
-from mesonbuild.environment import Environment
+from mesonbuild.environment import Environment, detect_ninja
from mesonbuild.mesonlib import MesonException, EnvironmentException
from mesonbuild.dependencies import PkgConfigDependency, ExternalProgram
@@ -1707,6 +1707,19 @@ int main(int argc, char **argv) {
self.init(workdir)
self.build()
+ def test_templates(self):
+ ninja = detect_ninja()
+ if ninja is None:
+ raise unittest.SkipTest('This test currently requires ninja. Fix this once "meson build" works.')
+ for lang in ('c', 'cpp'):
+ for type in ('executable', 'library'):
+ with tempfile.TemporaryDirectory() as tmpdir:
+ self._run(meson_command + ['init', '--language', lang, '--type', type],
+ workdir=tmpdir)
+ self._run(self.meson_command + ['--backend=ninja', 'builddir'],
+ workdir=tmpdir)
+ self._run(ninja,
+ workdir=os.path.join(tmpdir, 'builddir'))
class FailureTests(BasePlatformTests):
'''