Skip to content

Commit

Permalink
Fix PATH uses by check_call for non-action planning activities
Browse files Browse the repository at this point in the history
  • Loading branch information
Jc2k committed Mar 22, 2015
1 parent 267114b commit d5f10eb
Show file tree
Hide file tree
Showing 16 changed files with 28 additions and 21 deletions.
5 changes: 5 additions & 0 deletions fuselage/platform.py
Original file line number Diff line number Diff line change
Expand Up @@ -160,6 +160,11 @@ def check_call(command, *args, **kwargs):
stdin = kwargs.pop('stdin', None)
kwargs['stdin'] = subprocess.PIPE if stdin else None
kwargs.setdefault('shell', not isinstance(command, list))

env = {"PATH": "/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"}
env.update(kwargs.get("env", {}))
kwargs['env'] = env

p = Process(command, *args, **kwargs)
if logger:
p.attach_callback(logger.info)
Expand Down
16 changes: 9 additions & 7 deletions fuselage/tests/base.py
Original file line number Diff line number Diff line change
Expand Up @@ -109,14 +109,16 @@ def check_call(command, *args, **kwargs):
command = shlex.split(command)
else:
command = list(command)

paths = [self.chroot.overlay_dir]
if "PATH" in env:
paths.extend(os.path.join(env["FAKECHROOT_BASE"], p.lstrip("/")) for p in env["PATH"].split(":"))
for p in paths:
path = os.path.join(p, command[0])
if os.path.exists(path):
command[0] = path
break
for p in env.get("PATH", "/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin").split(":"):
paths.append(os.path.join(env["FAKECHROOT_BASE"], p.lstrip("/")))

for p in paths:
path = os.path.join(p, command[0])
if os.path.exists(path):
command[0] = path
break

return orig_check_call(command, *args, **kwargs)

Expand Down
2 changes: 1 addition & 1 deletion fuselage/tests/test_event.json

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion fuselage/tests/test_providers_apt.json

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion fuselage/tests/test_providers_directory.json

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion fuselage/tests/test_providers_execute.json

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion fuselage/tests/test_providers_file.json

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion fuselage/tests/test_providers_git.json

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion fuselage/tests/test_providers_link.json

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion fuselage/tests/test_providers_mercurial.json

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion fuselage/tests/test_providers_mount.json
Original file line number Diff line number Diff line change
@@ -1 +1 @@
{"fuselage.tests.test_providers_mount.TestMount.test_existing_group": [["put", null, null], ["check_call", ["", ""], null], ["exists", false, null], ["makedirs", null, null], ["exists", false, null], ["makedirs", null, null], ["exists", false, null], ["isdir", true, null], ["get", "rootfs / rootfs rw 0 0\nsysfs /sys sysfs rw,nosuid,nodev,noexec,relatime 0 0\nproc /proc proc rw,nosuid,nodev,noexec,relatime 0 0\nudev /dev devtmpfs rw,relatime,size=6136220k,nr_inodes=1534055,mode=755 0 0\ndevpts /dev/pts devpts rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000 0 0\ntmpfs /run tmpfs rw,nosuid,noexec,relatime,size=1230268k,mode=755 0 0\n/dev/disk/by-uuid/3bbaf8eb-703a-4236-a1cd-094c177cc21a / ext4 rw,relatime,errors=remount-ro,data=ordered 0 0\nnone /sys/fs/fuse/connections fusectl rw,relatime 0 0\ncgroup /sys/fs/cgroup tmpfs rw,relatime,mode=755 0 0\nnone /sys/kernel/debug debugfs rw,relatime 0 0\nnone /sys/kernel/security securityfs rw,relatime 0 0\nnone /run/lock tmpfs rw,nosuid,nodev,noexec,relatime,size=5120k 0 0\nnone /run/shm tmpfs rw,nosuid,nodev,relatime 0 0\ncgroup /sys/fs/cgroup/cpuset cgroup rw,relatime,cpuset,release_agent=/run/cgmanager/agents/cgm-release-agent.cpuset,clone_children 0 0\ncgroup /sys/fs/cgroup/cpu cgroup rw,relatime,cpu,release_agent=/run/cgmanager/agents/cgm-release-agent.cpu 0 0\ncgroup /sys/fs/cgroup/cpuacct cgroup rw,relatime,cpuacct,release_agent=/run/cgmanager/agents/cgm-release-agent.cpuacct 0 0\ncgroup /sys/fs/cgroup/memory cgroup rw,relatime,memory,release_agent=/run/cgmanager/agents/cgm-release-agent.memory 0 0\ncgroup /sys/fs/cgroup/devices cgroup rw,relatime,devices,release_agent=/run/cgmanager/agents/cgm-release-agent.devices 0 0\ncgroup /sys/fs/cgroup/freezer cgroup rw,relatime,freezer,release_agent=/run/cgmanager/agents/cgm-release-agent.freezer 0 0\ncgroup /sys/fs/cgroup/blkio cgroup rw,relatime,blkio,release_agent=/run/cgmanager/agents/cgm-release-agent.blkio 0 0\ncgroup /sys/fs/cgroup/perf_event cgroup rw,relatime,perf_event,release_agent=/run/cgmanager/agents/cgm-release-agent.perf_event 0 0\ncgroup /sys/fs/cgroup/hugetlb cgroup rw,relatime,hugetlb,release_agent=/run/cgmanager/agents/cgm-release-agent.hugetlb 0 0\n/dev/md1 /home/john ext4 rw,relatime,data=ordered 0 0\nbinfmt_misc /proc/sys/fs/binfmt_misc binfmt_misc rw,nosuid,nodev,noexec,relatime 0 0\n/dev/disk/by-uuid/3bbaf8eb-703a-4236-a1cd-094c177cc21a /var/lib/docker/aufs ext4 rw,relatime,errors=remount-ro,data=ordered 0 0\nvmware-vmblock /run/vmblock-fuse fuse.vmware-vmblock rw,nosuid,nodev,relatime,user_id=0,group_id=0,default_permissions,allow_other 0 0\ngvfs-fuse-daemon /home/john/.gvfs fuse.gvfs-fuse-daemon rw,nosuid,nodev,relatime,user_id=1000,group_id=1000 0 0\n", null], ["exists", false, null], ["exists", false, null], ["exists", false, null], ["exists", false, null], ["exists", false, null], ["exists", true, null], ["getpwnam", ["root", "x", 0, 0, "root", "/root", "/bin/bash"], null], ["check_call", ["", ""], null], ["exists", false, null]]}
{"fuselage.tests.test_providers_mount.TestMount.test_existing_group": [["put", null, null], ["check_call", ["", ""], null], ["exists", false, null], ["makedirs", null, null], ["exists", false, null], ["makedirs", null, null], ["exists", false, null], ["isdir", true, null], ["get", "rootfs / rootfs rw 0 0\nsysfs /sys sysfs rw,nosuid,nodev,noexec,relatime 0 0\nproc /proc proc rw,nosuid,nodev,noexec,relatime 0 0\nudev /dev devtmpfs rw,relatime,size=490860k,nr_inodes=122715,mode=755 0 0\ndevpts /dev/pts devpts rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000 0 0\ntmpfs /run tmpfs rw,nosuid,noexec,relatime,size=100272k,mode=755 0 0\n/dev/disk/by-uuid/f071da0d-24fd-4fbf-9000-13921272548d / ext4 rw,relatime,errors=remount-ro,data=ordered 0 0\nnone /sys/fs/fuse/connections fusectl rw,relatime 0 0\nnone /sys/kernel/debug debugfs rw,relatime 0 0\nnone /sys/kernel/security securityfs rw,relatime 0 0\nnone /run/lock tmpfs rw,nosuid,nodev,noexec,relatime,size=5120k 0 0\nnone /run/shm tmpfs rw,nosuid,nodev,relatime 0 0\nvmware-vmblock /run/vmblock-fuse fuse.vmware-vmblock rw,nosuid,nodev,relatime,user_id=0,group_id=0,default_permissions,allow_other 0 0\n", null], ["exists", false, null], ["exists", false, null], ["exists", false, null], ["exists", false, null], ["exists", false, null], ["exists", true, null], ["getpwnam", ["root", "x", 0, 0, "root", "/root", "/bin/bash"], null], ["check_call", ["", ""], null], ["exists", false, null]]}
2 changes: 1 addition & 1 deletion fuselage/tests/test_providers_mounted.json
Original file line number Diff line number Diff line change
@@ -1 +1 @@
{"fuselage.tests.test_providers_mounted.TestDummyCheckout.test_dummy_checkout": [["exists", false, null], ["makedirs", null, null], ["exists", false, null], ["makedirs", null, null], ["exists", false, null], ["stat", [], "OSError"], ["getuid", 0, null], ["getpwuid", ["root", "x", 0, 0, "root", "/root", "/bin/bash"], null], ["getuid", 0, null], ["getpwuid", ["root", "x", 0, 0, "root", "/root", "/bin/bash"], null], ["getpwnam", ["root", "x", 0, 0, "root", "/root", "/bin/bash"], null], ["getgrgid", ["root", "x", 0, [""]], null], ["exists", false, null], ["exists", true, null], ["getpwnam", ["root", "x", 0, 0, "root", "/root", "/bin/bash"], null], ["check_call", ["", ""], null], ["exists", true, null], ["stat", [16893, 2, 54563669, 0, 0, 0, 4096, 1411649809, 1411649809, 1411649809], null], ["getpwnam", ["root", "x", 0, 0, "root", "/root", "/bin/bash"], null], ["getgrnam", ["root", "x", 0, [""]], null], ["exists", true, null], ["getpwnam", ["root", "x", 0, 0, "root", "/root", "/bin/bash"], null], ["check_call", ["", ""], null], ["stat", [], "OSError"], ["exists", true, null], ["exists", false, null], ["put", null, null], ["isdir", true, null], ["getuid", 0, null], ["getpwuid", ["root", "x", 0, 0, "root", "/root", "/bin/bash"], null], ["getuid", 0, null], ["getpwuid", ["root", "x", 0, 0, "root", "/root", "/bin/bash"], null], ["getpwnam", ["root", "x", 0, 0, "root", "/root", "/bin/bash"], null], ["getgrgid", ["root", "x", 0, [""]], null], ["exists", false, null], ["exists", false, null], ["exists", false, null], ["exists", false, null], ["exists", true, null], ["getpwnam", ["root", "x", 0, 0, "root", "/root", "/bin/bash"], null], ["check_call", ["", ""], null], ["exists", true, null], ["stat", [33204, 1, 54563671, 0, 0, 0, 0, 1411649809, 1411649809, 1411649809], null], ["getpwnam", ["root", "x", 0, 0, "root", "/root", "/bin/bash"], null], ["getgrnam", ["root", "x", 0, [""]], null], ["exists", true, null], ["getpwnam", ["root", "x", 0, 0, "root", "/root", "/bin/bash"], null], ["check_call", ["", ""], null], ["put", null, null], ["exists", true, null], ["unlink", null, null], ["exists", true, null], ["unlink", null, null], ["exists", true, null], ["exists", true, null], ["exists", false, null], ["stat", [], "OSError"], ["getuid", 0, null], ["getpwuid", ["root", "x", 0, 0, "root", "/root", "/bin/bash"], null], ["getuid", 0, null], ["getpwuid", ["root", "x", 0, 0, "root", "/root", "/bin/bash"], null], ["getpwnam", ["root", "x", 0, 0, "root", "/root", "/bin/bash"], null], ["getgrgid", ["root", "x", 0, [""]], null], ["exists", true, null], ["exists", true, null], ["stat", [16877, 2, 54563669, 0, 0, 0, 4096, 1411649809, 1411649809, 1411649809], null], ["getpwnam", ["root", "x", 0, 0, "root", "/root", "/bin/bash"], null], ["getgrnam", ["root", "x", 0, [""]], null], ["stat", [], "OSError"], ["exists", true, null], ["exists", false, null], ["put", null, null], ["isdir", true, null], ["getuid", 0, null], ["getpwuid", ["root", "x", 0, 0, "root", "/root", "/bin/bash"], null], ["getuid", 0, null], ["getpwuid", ["root", "x", 0, 0, "root", "/root", "/bin/bash"], null], ["getpwnam", ["root", "x", 0, 0, "root", "/root", "/bin/bash"], null], ["getgrgid", ["root", "x", 0, [""]], null], ["exists", false, null], ["exists", false, null], ["exists", false, null], ["exists", false, null], ["exists", true, null], ["getpwnam", ["root", "x", 0, 0, "root", "/root", "/bin/bash"], null], ["check_call", ["", ""], null], ["exists", true, null], ["stat", [33188, 1, 54563671, 0, 0, 0, 0, 1411649809, 1411649809, 1411649809], null], ["getpwnam", ["root", "x", 0, 0, "root", "/root", "/bin/bash"], null], ["getgrnam", ["root", "x", 0, [""]], null], ["put", null, null], ["exists", true, null], ["unlink", null, null], ["exists", true, null]]}
{"fuselage.tests.test_providers_mounted.TestDummyCheckout.test_dummy_checkout": [["exists", false, null], ["makedirs", null, null], ["exists", false, null], ["makedirs", null, null], ["exists", false, null], ["stat", [], "OSError"], ["getuid", 0, null], ["getpwuid", ["root", "x", 0, 0, "root", "/root", "/bin/bash"], null], ["getuid", 0, null], ["getpwuid", ["root", "x", 0, 0, "root", "/root", "/bin/bash"], null], ["getpwnam", ["root", "x", 0, 0, "root", "/root", "/bin/bash"], null], ["getgrgid", ["root", "x", 0, [""]], null], ["exists", false, null], ["exists", true, null], ["getpwnam", ["root", "x", 0, 0, "root", "/root", "/bin/bash"], null], ["check_call", ["", ""], null], ["exists", true, null], ["stat", [16893, 2, 2635360, 0, 0, 0, 4096, 1427061112, 1427061112, 1427061112], null], ["getpwnam", ["root", "x", 0, 0, "root", "/root", "/bin/bash"], null], ["getgrnam", ["root", "x", 0, [""]], null], ["exists", false, null], ["exists", false, null], ["exists", false, null], ["exists", false, null], ["exists", false, null], ["exists", true, null], ["getpwnam", ["root", "x", 0, 0, "root", "/root", "/bin/bash"], null], ["check_call", ["", ""], null], ["stat", [], "OSError"], ["exists", true, null], ["exists", false, null], ["put", null, null], ["isdir", true, null], ["getuid", 0, null], ["getpwuid", ["root", "x", 0, 0, "root", "/root", "/bin/bash"], null], ["getuid", 0, null], ["getpwuid", ["root", "x", 0, 0, "root", "/root", "/bin/bash"], null], ["getpwnam", ["root", "x", 0, 0, "root", "/root", "/bin/bash"], null], ["getgrgid", ["root", "x", 0, [""]], null], ["exists", false, null], ["exists", false, null], ["exists", false, null], ["exists", false, null], ["exists", true, null], ["getpwnam", ["root", "x", 0, 0, "root", "/root", "/bin/bash"], null], ["check_call", ["", ""], null], ["exists", true, null], ["stat", [33204, 1, 2635361, 0, 0, 0, 0, 1427061112, 1427061112, 1427061112], null], ["getpwnam", ["root", "x", 0, 0, "root", "/root", "/bin/bash"], null], ["getgrnam", ["root", "x", 0, [""]], null], ["exists", false, null], ["exists", false, null], ["exists", false, null], ["exists", false, null], ["exists", false, null], ["exists", true, null], ["getpwnam", ["root", "x", 0, 0, "root", "/root", "/bin/bash"], null], ["check_call", ["", ""], null], ["put", null, null], ["exists", true, null], ["unlink", null, null], ["exists", true, null], ["unlink", null, null], ["exists", true, null], ["exists", true, null], ["exists", false, null], ["stat", [], "OSError"], ["getuid", 0, null], ["getpwuid", ["root", "x", 0, 0, "root", "/root", "/bin/bash"], null], ["getuid", 0, null], ["getpwuid", ["root", "x", 0, 0, "root", "/root", "/bin/bash"], null], ["getpwnam", ["root", "x", 0, 0, "root", "/root", "/bin/bash"], null], ["getgrgid", ["root", "x", 0, [""]], null], ["exists", true, null], ["exists", true, null], ["stat", [16877, 2, 2635360, 0, 0, 0, 4096, 1427061112, 1427061112, 1427061112], null], ["getpwnam", ["root", "x", 0, 0, "root", "/root", "/bin/bash"], null], ["getgrnam", ["root", "x", 0, [""]], null], ["stat", [], "OSError"], ["exists", true, null], ["exists", false, null], ["put", null, null], ["isdir", true, null], ["getuid", 0, null], ["getpwuid", ["root", "x", 0, 0, "root", "/root", "/bin/bash"], null], ["getuid", 0, null], ["getpwuid", ["root", "x", 0, 0, "root", "/root", "/bin/bash"], null], ["getpwnam", ["root", "x", 0, 0, "root", "/root", "/bin/bash"], null], ["getgrgid", ["root", "x", 0, [""]], null], ["exists", false, null], ["exists", false, null], ["exists", false, null], ["exists", false, null], ["exists", true, null], ["getpwnam", ["root", "x", 0, 0, "root", "/root", "/bin/bash"], null], ["check_call", ["", ""], null], ["exists", true, null], ["stat", [33188, 1, 2635361, 0, 0, 0, 0, 1427061112, 1427061112, 1427061112], null], ["getpwnam", ["root", "x", 0, 0, "root", "/root", "/bin/bash"], null], ["getgrnam", ["root", "x", 0, [""]], null], ["put", null, null], ["exists", true, null], ["unlink", null, null], ["exists", true, null]]}
2 changes: 1 addition & 1 deletion fuselage/tests/test_providers_patch.json
Original file line number Diff line number Diff line change
@@ -1 +1 @@
{"fuselage.tests.test_providers_patch.TestPatch.test_simple_patch": [["put", null, null], ["exists", false, null], ["isdir", true, null], ["check_call", ["hello {{ everybody }}\n", ""], null], ["exists", false, null], ["exists", false, null], ["getpwnam", ["root", "x", 0, 0, "root", "/root", "/bin/bash"], null], ["exists", true, null], ["getpwnam", ["root", "x", 0, 0, "root", "/root", "/bin/bash"], null], ["getgrnam", ["root", "x", 0, [""]], null], ["exists", true, null], ["getpwnam", ["root", "x", 0, 0, "root", "/root", "/bin/bash"], null], ["exists", false, null], ["makedirs", null, null], ["exists", false, null], ["makedirs", null, null], ["exists", false, null], ["isdir", true, null], ["check_call", ["hello {{ everybody }}\n", ""], null], ["exists", false, null], ["put", null, null], ["exists", true, null], ["stat", [33204, 1, 39987332, 0, 0, 0, 22, 1411425797, 1411425797, 1411425797], null], ["getpwnam", ["root", "x", 0, 0, "root", "/root", "/bin/bash"], null], ["getgrnam", ["root", "x", 0, [""]], null], ["exists", true, null], ["getpwnam", ["root", "x", 0, 0, "root", "/root", "/bin/bash"], null], ["check_call", ["", ""], null], ["exists", false, null], ["exists", true, null], ["exists", true, null], ["exists", false, null], ["isdir", true, null], ["check_call", ["hello {{ everybody }}\n", ""], null], ["exists", true, null], ["get", "hello {{ everybody }}\n", null], ["exists", true, null], ["stat", [33188, 1, 39987332, 0, 0, 0, 22, 1411425797, 1411425797, 1411425797], null], ["getpwnam", ["root", "x", 0, 0, "root", "/root", "/bin/bash"], null], ["getgrnam", ["root", "x", 0, [""]], null]], "fuselage.tests.test_providers_patch.TestPatch.test_path_missing_component": [["exists", false, null], ["makedirs", null, null], ["exists", false, null], ["makedirs", null, null], ["exists", false, null], ["isdir", false, null], ["exists", true, null], ["isdir", true, null], ["exists", true, null], ["isdir", true, null], ["exists", false, null]]}
{"fuselage.tests.test_providers_patch.TestPatch.test_simple_patch": [["put", null, null], ["exists", false, null], ["isdir", true, null], ["check_call", ["hello {{ everybody }}\n", ""], null], ["exists", false, null], ["exists", false, null], ["getpwnam", ["root", "x", 0, 0, "root", "/root", "/bin/bash"], null], ["exists", false, null], ["exists", false, null], ["exists", false, null], ["exists", false, null], ["exists", false, null], ["exists", true, null], ["getpwnam", ["root", "x", 0, 0, "root", "/root", "/bin/bash"], null], ["getgrnam", ["root", "x", 0, [""]], null], ["exists", false, null], ["exists", false, null], ["exists", false, null], ["exists", false, null], ["exists", false, null], ["exists", true, null], ["getpwnam", ["root", "x", 0, 0, "root", "/root", "/bin/bash"], null], ["exists", false, null], ["makedirs", null, null], ["exists", false, null], ["makedirs", null, null], ["exists", false, null], ["isdir", true, null], ["check_call", ["hello {{ everybody }}\n", ""], null], ["exists", false, null], ["put", null, null], ["exists", true, null], ["stat", [33204, 1, 1333027, 0, 0, 0, 22, 1427061113, 1427061113, 1427061113], null], ["getpwnam", ["root", "x", 0, 0, "root", "/root", "/bin/bash"], null], ["getgrnam", ["root", "x", 0, [""]], null], ["exists", false, null], ["exists", false, null], ["exists", false, null], ["exists", false, null], ["exists", false, null], ["exists", true, null], ["getpwnam", ["root", "x", 0, 0, "root", "/root", "/bin/bash"], null], ["check_call", ["", ""], null], ["exists", false, null], ["exists", true, null], ["exists", true, null], ["exists", false, null], ["isdir", true, null], ["check_call", ["hello {{ everybody }}\n", ""], null], ["exists", true, null], ["get", "hello {{ everybody }}\n", null], ["exists", true, null], ["stat", [33188, 1, 1333027, 0, 0, 0, 22, 1427061113, 1427061113, 1427061113], null], ["getpwnam", ["root", "x", 0, 0, "root", "/root", "/bin/bash"], null], ["getgrnam", ["root", "x", 0, [""]], null]], "fuselage.tests.test_providers_patch.TestPatch.test_path_missing_component": [["exists", false, null], ["makedirs", null, null], ["exists", false, null], ["makedirs", null, null], ["exists", false, null], ["isdir", false, null], ["exists", true, null], ["isdir", true, null], ["exists", true, null], ["isdir", true, null], ["exists", false, null]]}
Loading

0 comments on commit d5f10eb

Please sign in to comment.