xref: /aosp_15_r20/external/autotest/client/deps/fakegudev/src/test-fakesyscalls.sh (revision 9c5db1993ded3edbeafc8092d69fe5de2ee02df7)
1*9c5db199SXin Li#!/bin/env bash
2*9c5db199SXin Li#
3*9c5db199SXin Li# Copyright (c) 2013 The Chromium OS Authors. All rights reserved.
4*9c5db199SXin Li# Use of this source code is governed by a BSD-style license that can be
5*9c5db199SXin Li# found in the LICENSE file.
6*9c5db199SXin Li
7*9c5db199SXin LiFAKE_SYSCALLS_LIB=`pwd`/libfakesyscalls.so
8*9c5db199SXin LiFAKE_SYSCALLS_DBG=/tmp/fake_syscalls.dbg
9*9c5db199SXin LiTEST_EXE=`pwd`/fakesyscalls-exercise
10*9c5db199SXin Li
11*9c5db199SXin Li# build up the redirection envrionment variable
12*9c5db199SXin LiFILE_REDIRECTIONS_PRELOAD=:
13*9c5db199SXin LiFILE_REDIRECTIONS_PRELOAD=${FILE_REDIRECTIONS_PRELOAD}:/tmp/foo1=/tmp/foo2
14*9c5db199SXin LiFILE_REDIRECTIONS_PRELOAD=${FILE_REDIRECTIONS_PRELOAD}:/tmp/foo3
15*9c5db199SXin LiFILE_REDIRECTIONS_PRELOAD=${FILE_REDIRECTIONS_PRELOAD}:/tmp/foo4=.
16*9c5db199SXin LiFILE_REDIRECTIONS_PRELOAD=${FILE_REDIRECTIONS_PRELOAD}:/tmp/foo5=/tmp/foo6
17*9c5db199SXin Liexport FILE_REDIRECTIONS_PRELOAD=$FILE_REDIRECTIONS_PRELOAD
18*9c5db199SXin Li
19*9c5db199SXin Lirm -f /tmp/foo1 /tmp/foo2 /tmp/foo3 /tmp/foo4 /tmp/foo5 /tmp/foo6 /tmp/foo99
20*9c5db199SXin Lirm -f ${FAKE_SYSCALLS_DBG}
21*9c5db199SXin Li
22*9c5db199SXin Li# Successful redirection
23*9c5db199SXin Liecho LD_PRELOAD=${FAKE_SYSCALLS_LIB} ${TEST_EXE} /tmp/foo1 /tmp/foo2
24*9c5db199SXin LiLD_PRELOAD=${FAKE_SYSCALLS_LIB} ${TEST_EXE} /tmp/foo1 /tmp/foo2
25*9c5db199SXin Liecho
26*9c5db199SXin Liecho ${FAKE_SYSCALLS_DBG}
27*9c5db199SXin Licat ${FAKE_SYSCALLS_DBG}
28*9c5db199SXin Liecho
29*9c5db199SXin Li
30*9c5db199SXin Li# Malformed map --> unsuccessful redirection
31*9c5db199SXin Liecho LD_PRELOAD=${FAKE_SYSCALLS_LIB} ${TEST_EXE} /tmp/foo3 /tmp/foo3
32*9c5db199SXin LiLD_PRELOAD=${FAKE_SYSCALLS_LIB} ${TEST_EXE} /tmp/foo3 /tmp/foo3
33*9c5db199SXin Liecho
34*9c5db199SXin Liecho ${FAKE_SYSCALLS_DBG}
35*9c5db199SXin Licat ${FAKE_SYSCALLS_DBG}
36*9c5db199SXin Liecho
37*9c5db199SXin Li
38*9c5db199SXin Li# Relative path in map --> unsuccessful redirection
39*9c5db199SXin Liecho LD_PRELOAD=${FAKE_SYSCALLS_LIB} ${TEST_EXE} /tmp/foo4 /tmp/foo4
40*9c5db199SXin LiLD_PRELOAD=${FAKE_SYSCALLS_LIB} ${TEST_EXE} /tmp/foo4 /tmp/foo4
41*9c5db199SXin Liecho
42*9c5db199SXin Liecho ${FAKE_SYSCALLS_DBG}
43*9c5db199SXin Licat ${FAKE_SYSCALLS_DBG}
44*9c5db199SXin Liecho
45*9c5db199SXin Li
46*9c5db199SXin Li# Does not exist in map --> no redirection.
47*9c5db199SXin Liecho LD_PRELOAD=${FAKE_SYSCALLS_LIB} ${TEST_EXE} /tmp/foo99 /tmp/foo99
48*9c5db199SXin LiLD_PRELOAD=${FAKE_SYSCALLS_LIB} ${TEST_EXE} /tmp/foo99 /tmp/foo99
49*9c5db199SXin Liecho
50*9c5db199SXin Liecho ${FAKE_SYSCALLS_DBG}
51*9c5db199SXin Licat ${FAKE_SYSCALLS_DBG}
52*9c5db199SXin Liecho
53*9c5db199SXin Li
54*9c5db199SXin Li
55*9c5db199SXin Lipushd . >/dev/null
56*9c5db199SXin Licd /tmp >/dev/null
57*9c5db199SXin Li# Relative path in open() --> unsuccessful redirection
58*9c5db199SXin Liecho LD_PRELOAD=${FAKE_SYSCALLS_LIB} ${TEST_EXE} foo5 foo5
59*9c5db199SXin LiLD_PRELOAD=${FAKE_SYSCALLS_LIB} ${TEST_EXE} foo5 foo5
60*9c5db199SXin Liif test -e /tmp/foo6
61*9c5db199SXin Lithen
62*9c5db199SXin Li  echo Fail: /tmp/foo6 should not have been created. foo6:
63*9c5db199SXin Li  cat /tmp/foo6
64*9c5db199SXin Lifi
65*9c5db199SXin Liecho
66*9c5db199SXin Liecho ${FAKE_SYSCALLS_DBG}
67*9c5db199SXin Licat ${FAKE_SYSCALLS_DBG}
68*9c5db199SXin Liecho
69*9c5db199SXin Lipopd >/dev/null
70