Add unit test that checks that the sample projects compile.

pull/2822/head
Jussi Pakkanen 7 years ago
parent f1afd44b2b
commit 4a189cf8c5
  1. 4
      docs/markdown/Project-templates.md
  2. 8
      docs/markdown/snippets/templates.md
  3. 8
      mesonbuild/minit.py
  4. 15
      run_unittests.py

@ -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.

@ -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
```

@ -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;

@ -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):
'''

Loading…
Cancel
Save