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
|
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
|
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
|
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
|
The generator has many different projects and settings. They can all
|
||||||
be listed by invoking the command `meson test --help`.
|
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) {{
|
int main(int argc, char **argv) {{
|
||||||
if(argc != 1) {{
|
if(argc != 1) {{
|
||||||
printf("%s takes not arguments.\\n", argv[0]);
|
printf("%s takes no arguments.\\n", argv[0]);
|
||||||
return 1;
|
return 1;
|
||||||
}}
|
}}
|
||||||
printf("This is project %s.\n", PROJECT_NAME);
|
printf("This is project %s.\\n", PROJECT_NAME);
|
||||||
return 0;
|
return 0;
|
||||||
}}
|
}}
|
||||||
'''
|
'''
|
||||||
|
@ -138,7 +138,7 @@ hello_cpp_template = '''#include <iostream>
|
||||||
|
|
||||||
int main(int argc, char **argv) {{
|
int main(int argc, char **argv) {{
|
||||||
if(argc != 1) {{
|
if(argc != 1) {{
|
||||||
printf("%s takes not arguments.\\n", argv[0]);
|
std::cout << argv[0] << "takes no arguments.\\n";
|
||||||
return 1;
|
return 1;
|
||||||
}}
|
}}
|
||||||
std::cout << "This is project " << PROJECT_NAME << ".\\n";
|
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) {{
|
int main(int argc, char **argv) {{
|
||||||
if(argc != 1) {{
|
if(argc != 1) {{
|
||||||
printf("%s takes no arguments.\\n", argv[0]);
|
std::cout << argv[0] << " takes no arguments.\\n";
|
||||||
return 1;
|
return 1;
|
||||||
}}
|
}}
|
||||||
{namespace}::{class_name} c;
|
{namespace}::{class_name} c;
|
||||||
|
|
|
@ -36,7 +36,7 @@ import mesonbuild.coredata
|
||||||
from mesonbuild.interpreter import ObjectHolder
|
from mesonbuild.interpreter import ObjectHolder
|
||||||
from mesonbuild.mesonlib import is_linux, is_windows, is_osx, is_cygwin, windows_proof_rmtree
|
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.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.mesonlib import MesonException, EnvironmentException
|
||||||
from mesonbuild.dependencies import PkgConfigDependency, ExternalProgram
|
from mesonbuild.dependencies import PkgConfigDependency, ExternalProgram
|
||||||
|
|
||||||
|
@ -1707,6 +1707,19 @@ int main(int argc, char **argv) {
|
||||||
self.init(workdir)
|
self.init(workdir)
|
||||||
self.build()
|
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):
|
class FailureTests(BasePlatformTests):
|
||||||
'''
|
'''
|
||||||
|
|
Loading…
Reference in New Issue