forked from mirror/waf
You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
73 lines
1.6 KiB
Python
73 lines
1.6 KiB
Python
#! /usr/bin/env python
|
|
|
|
from waflib import Utils, Build, Logs
|
|
import os
|
|
|
|
GRP = os.environ.get('WAF_TEST_GROUP', 'adm')
|
|
|
|
def test_chown(bld):
|
|
def create_and_chown(tsk):
|
|
tsk.outputs[0].write('test')
|
|
Utils.lchown(tsk.outputs[0].abspath(), -1, GRP)
|
|
bld.conf.env.CAN_CHOWN = True
|
|
bld(rule=create_and_chown, target='foo.txt', always=True)
|
|
|
|
def test_grp(bld):
|
|
def check_path(tsk):
|
|
import grp
|
|
entry = grp.getgrnam(GRP)
|
|
assert entry[0] == GRP
|
|
bld.conf.env.CAN_GRP = True
|
|
bld(rule=check_path, always=True)
|
|
|
|
def test_chown_install(bld):
|
|
bld.is_install = Build.INSTALL
|
|
|
|
dest_file = bld.bldnode.make_node('test/foo')
|
|
dest_link = bld.bldnode.make_node('test/foo_link')
|
|
|
|
tmpfile = bld.bldnode.make_node('foo.txt')
|
|
tmpfile.write('this is a test')
|
|
|
|
bld.install_as(dest_file,
|
|
tmpfile,
|
|
install_group=GRP)
|
|
bld.symlink_as(dest_link,
|
|
'foo',
|
|
install_group=GRP)
|
|
|
|
bld.add_group()
|
|
|
|
def check_path(tsk):
|
|
import grp
|
|
gid = grp.getgrnam(GRP)[2]
|
|
assert os.stat(dest_file.abspath()).st_gid == gid
|
|
assert os.stat(dest_link.abspath()).st_gid == gid
|
|
bld(rule=check_path, always=True)
|
|
|
|
def configure(conf):
|
|
conf.test(build_fun=test_grp,
|
|
msg='Checking for the python module grp',
|
|
okmsg='ok',
|
|
errmsg='grp is missing',
|
|
mandatory=False)
|
|
if not conf.env.CAN_GRP:
|
|
return
|
|
|
|
conf.test(build_fun=test_chown,
|
|
msg='Checking for Utils.lchown',
|
|
okmsg='ok',
|
|
errmsg='chown does not seem to work',
|
|
mandatory=False)
|
|
if not conf.env.CAN_CHOWN:
|
|
return
|
|
|
|
conf.test(build_fun=test_chown_install,
|
|
msg='Testing install_group="adm"',
|
|
okmsg='ok',
|
|
errmsg='there is a regression')
|
|
|
|
def build(bld):
|
|
pass
|
|
|