1#! /usr/bin/env python 2 3from waflib import Utils, Build, Logs 4import os 5 6GRP = os.environ.get('WAF_TEST_GROUP', 'adm') 7 8def test_chown(bld): 9 def create_and_chown(tsk): 10 tsk.outputs[0].write('test') 11 Utils.lchown(tsk.outputs[0].abspath(), -1, GRP) 12 bld.conf.env.CAN_CHOWN = True 13 bld(rule=create_and_chown, target='foo.txt', always=True) 14 15def test_grp(bld): 16 def check_path(tsk): 17 import grp 18 entry = grp.getgrnam(GRP) 19 assert entry[0] == GRP 20 bld.conf.env.CAN_GRP = True 21 bld(rule=check_path, always=True) 22 23def test_chown_install(bld): 24 bld.is_install = Build.INSTALL 25 26 dest_file = bld.bldnode.make_node('test/foo') 27 dest_link = bld.bldnode.make_node('test/foo_link') 28 29 tmpfile = bld.bldnode.make_node('foo.txt') 30 tmpfile.write('this is a test') 31 32 bld.install_as(dest_file, 33 tmpfile, 34 install_group=GRP) 35 bld.symlink_as(dest_link, 36 'foo', 37 install_group=GRP) 38 39 bld.add_group() 40 41 def check_path(tsk): 42 import grp 43 gid = grp.getgrnam(GRP)[2] 44 assert os.stat(dest_file.abspath()).st_gid == gid 45 assert os.stat(dest_link.abspath()).st_gid == gid 46 bld(rule=check_path, always=True) 47 48def configure(conf): 49 conf.test(build_fun=test_grp, 50 msg='Checking for the python module grp', 51 okmsg='ok', 52 errmsg='grp is missing', 53 mandatory=False) 54 if not conf.env.CAN_GRP: 55 return 56 57 conf.test(build_fun=test_chown, 58 msg='Checking for Utils.lchown', 59 okmsg='ok', 60 errmsg='chown does not seem to work', 61 mandatory=False) 62 if not conf.env.CAN_CHOWN: 63 return 64 65 conf.test(build_fun=test_chown_install, 66 msg='Testing install_group="adm"', 67 okmsg='ok', 68 errmsg='there is a regression') 69 70def build(bld): 71 pass 72 73