Add unit test that checks that the sample projects compile.
This commit is contained in:
parent
f1afd44b2b
commit
4a189cf8c5
|
@ -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…
Reference in New Issue