sapling/eden/DEFS
Adam Simpkins ab05c494b9 update the integration tests to run hg from the local repository
Summary:
Update the logic for how the Eden integration tests find the hg binary:
- Use the contents of the EDEN_HG_BINARY environment variable if set.  When
  running tests via `buck test` buck will pass the hg.par output location in
  this variable.
- If EDEN_HG_BINARY is not set, use libfb.py.pathutils to find the location of
  the //scm/hg:hg rule output.  This makes sure the integration tests still
  prefer this par path even when run manually without EDEN_HG_BINARY set.  This
  is convenient when running individual tests not through buck.

If for some reason the hg python_binary() output cannot be found then we still
search through $PATH for hg.real or hg as usual.  For internal fbsource builds
we generally shouldn't hit this fallback case, though.

Reviewed By: wez, quark-zju

Differential Revision: D6986221

fbshipit-source-id: 982cb99112405a674dbc45df4ada73a990536489
2018-02-15 11:41:28 -08:00

63 lines
2.0 KiB
Plaintext

# This file contains macros that are shared across Eden.
def is_facebook_internal():
return read_config('codebase', 'mode') != 'public'
def get_fb_suffix():
'''Build rule suffix to use for Facebook-specific build targets.'''
# Internally at Facebook, it is convenient for the canonical version of an
# Eden build target to have no special suffix so that it can match the
# directory in which it is defined.
return '' if is_facebook_internal() else '-fb'
def get_oss_suffix():
'''Build rule suffix to use for open-source-specific build targets.'''
# Outside of Facebook, it is convenient for the canonical version of an
# Eden build target to have no special suffix so that it can match the
# directory in which it is defined.
return '-oss' if is_facebook_internal() else ''
def get_daemon_versions():
'''List of configurations to aid in creating dual build rules.
Returns:
An array of tuples where the first member is a build target for the
daemon and the second member is the suffix to use for other templated
build target names.
'''
return [
('//eden/fs/service:edenfs%s' % suffix, suffix)
for suffix in [get_fb_suffix(), get_oss_suffix()]
]
def get_test_env_and_deps(suffix=''):
'''Returns env vars and a dep list that is useful for locating various
build products from inside our tests'''
daemon_target = '//eden/fs/service:edenfs%s' % suffix
env_to_target = {
'EDENFS_CLI_PATH': '//eden/cli:cli',
'EDENFS_SERVER_PATH': daemon_target,
'EDENFS_POST_CLONE_PATH': '//eden/hooks/hg:post-clone',
'EDENFS_FSATTR_BIN': '//eden/integration:fsattr',
'EDEN_HG_BINARY': '//scm/hg:hg',
}
envs = {
'EDENFS_SUFFIX': suffix,
}
deps = []
for name, dep in sorted(env_to_target.items()):
envs[name] = '$(location %s)' % dep
deps.append(dep)
return {
'env': envs,
'deps': deps
}