mirror of
https://github.com/NixOS/nix.git
synced 2025-11-09 03:56:01 +01:00
Make functional tests depend on nix binary so they auto recompile
With this I'm able to do a fresh config + meson test with all dependencies correctly propagated. Co-authored-by: Sergei Zimmerman <sergei@zimmerman.foo>
This commit is contained in:
parent
241420a788
commit
bf320465ae
5 changed files with 21 additions and 6 deletions
|
|
@ -211,6 +211,7 @@ if host_machine.system() == 'windows'
|
||||||
executable_suffix = '.exe'
|
executable_suffix = '.exe'
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
nix_symlinks_targets = []
|
||||||
foreach linkname : nix_symlinks
|
foreach linkname : nix_symlinks
|
||||||
install_symlink(
|
install_symlink(
|
||||||
linkname + executable_suffix,
|
linkname + executable_suffix,
|
||||||
|
|
@ -220,7 +221,7 @@ foreach linkname : nix_symlinks
|
||||||
# The 'runtime' tag is what executables default to, which we want to emulate here.
|
# The 'runtime' tag is what executables default to, which we want to emulate here.
|
||||||
install_tag : 'runtime',
|
install_tag : 'runtime',
|
||||||
)
|
)
|
||||||
custom_target(
|
symlink_target = custom_target(
|
||||||
command : [ 'ln', '-sf', fs.name(this_exe), '@OUTPUT@' ],
|
command : [ 'ln', '-sf', fs.name(this_exe), '@OUTPUT@' ],
|
||||||
output : linkname + executable_suffix,
|
output : linkname + executable_suffix,
|
||||||
# native doesn't allow dangling symlinks, but the target executable often doesn't exist at this time
|
# native doesn't allow dangling symlinks, but the target executable often doesn't exist at this time
|
||||||
|
|
@ -230,6 +231,7 @@ foreach linkname : nix_symlinks
|
||||||
)
|
)
|
||||||
# TODO(Ericson3214): Doesn't yet work
|
# TODO(Ericson3214): Doesn't yet work
|
||||||
#meson.override_find_program(linkname, t)
|
#meson.override_find_program(linkname, t)
|
||||||
|
nix_symlinks_targets += symlink_target
|
||||||
endforeach
|
endforeach
|
||||||
|
|
||||||
install_symlink(
|
install_symlink(
|
||||||
|
|
|
||||||
|
|
@ -16,8 +16,9 @@ nix_perl_scripts = files(
|
||||||
'Utils.pm',
|
'Utils.pm',
|
||||||
)
|
)
|
||||||
|
|
||||||
|
nix_perl_scripts_copy_tgts = []
|
||||||
foreach f : nix_perl_scripts
|
foreach f : nix_perl_scripts
|
||||||
fs.copyfile(f)
|
nix_perl_scripts_copy_tgts += fs.copyfile(f)
|
||||||
endforeach
|
endforeach
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -191,6 +191,6 @@ if get_option('tests').enabled()
|
||||||
yath,
|
yath,
|
||||||
args : [ 'test' ],
|
args : [ 'test' ],
|
||||||
workdir : meson.current_build_dir(),
|
workdir : meson.current_build_dir(),
|
||||||
depends : [ nix_perl_store_lib ],
|
depends : [ nix_perl_store_lib ] + nix_perl_tests_copy_tgts + nix_perl_scripts_copy_tgts,
|
||||||
)
|
)
|
||||||
endif
|
endif
|
||||||
|
|
|
||||||
|
|
@ -9,7 +9,7 @@ nix_perl_tests = files(
|
||||||
'init.t',
|
'init.t',
|
||||||
)
|
)
|
||||||
|
|
||||||
|
nix_perl_tests_copy_tgts = []
|
||||||
foreach f : nix_perl_tests
|
foreach f : nix_perl_tests
|
||||||
fs.copyfile(f)
|
nix_perl_tests_copy_tgts += fs.copyfile(f)
|
||||||
endforeach
|
endforeach
|
||||||
|
|
|
||||||
|
|
@ -223,6 +223,18 @@ subdir('local-overlay-store')
|
||||||
foreach suite : suites
|
foreach suite : suites
|
||||||
workdir = suite['workdir']
|
workdir = suite['workdir']
|
||||||
suite_name = suite['name']
|
suite_name = suite['name']
|
||||||
|
# This is workaround until [1] is resolved. When building in a devshell
|
||||||
|
# as a subproject we want the tests to depend on the nix build target, so
|
||||||
|
# that it gets automatically rebuilt.
|
||||||
|
# However, when the functional test suite is built separately (via componentized
|
||||||
|
# builds or in NixOS tests) we can't depend on the nix executable, since it's
|
||||||
|
# an external program. The following is a simple heuristic that suffices for now.
|
||||||
|
# [1]: https://github.com/mesonbuild/meson/issues/13877
|
||||||
|
deps = suite['deps']
|
||||||
|
if meson.is_subproject()
|
||||||
|
nix_subproject = subproject('nix')
|
||||||
|
deps += [ nix ] + nix_subproject.get_variable('nix_symlinks_targets')
|
||||||
|
endif
|
||||||
foreach script : suite['tests']
|
foreach script : suite['tests']
|
||||||
# Turns, e.g., `tests/functional/flakes/show.sh` into a Meson test target called
|
# Turns, e.g., `tests/functional/flakes/show.sh` into a Meson test target called
|
||||||
# `functional-flakes-show`.
|
# `functional-flakes-show`.
|
||||||
|
|
@ -252,7 +264,7 @@ foreach suite : suites
|
||||||
# them more time than the default of 30 seconds.
|
# them more time than the default of 30 seconds.
|
||||||
timeout : 300,
|
timeout : 300,
|
||||||
# Used for target dependency/ordering tracking, not adding compiler flags or anything.
|
# Used for target dependency/ordering tracking, not adding compiler flags or anything.
|
||||||
depends : suite['deps'],
|
depends : deps,
|
||||||
workdir : workdir,
|
workdir : workdir,
|
||||||
)
|
)
|
||||||
endforeach
|
endforeach
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue