我有这个bash脚本,它基本上启动了带有进度指示器的web和selenium服务器.由于启动selenium服务器需要一些时间,因此我在无限循环中检查状态.
问题是,在等待它开始的时候我按下键意外地显示在屏幕上,如果循环结束(超时),它也会在命令提示符中显示.
我想在循环内部禁用所有用户输入(当然除了控制键):
start_selenium() {
echo -n "Starting selenium server"
java -jar ${selenium_jar} &> $selenium_log &
# wait for selenium server to spin up! (add -v for verbose output)
i=0
while ! nc -z localhost 4444; do
sleep 1
echo -n "."
((i++))
if [ $i -gt 20 ]; then
echo
echo -e $bg_red$bold"Selenium server connection timed out"$reset
exit 1
fi
done
}
Run Code Online (Sandbox Code Playgroud) 在一个烦人的角色中,我们提取了一个tar.gz文件,然后将提取的文件之一替换为另一个文件,以解决某些问题。
问题是当我们再次运行ansible时,由于目录内容已更改,因此ansible再次提取了归档文件,并且自然地标记了任务已更改,并且也按预期再次替换了文件。
因此,每次运行剧本时,我们都有两个“更改”。
我应该如何处理此问题以保持操作幂等?
在测试控制器时是否有内置方法可以完全跳过授权?
示例控制器:
public function changePassword(Request $request, LdapInterface $ldap)
{
$this->authorize('change-password');
$this->validate($request, [
'pass' => 'min:8|confirmed|weakpass|required',
]);
$success = $ldap->updatePassword($request->get('pass'));
$message = $success ?
'Your e-mail password has been successfully changed' :
'An error occured while trying to change your alumni e-mail password.';
return response()->json(['message' => $message]);
}
Run Code Online (Sandbox Code Playgroud)
我想跳过change-password规则,它是在里面定义的AuthServiceProvider:
public function boot(GateContract $gate)
{
$gate->define('change-password', function ($user) {
// Some complex logic here
});
}
Run Code Online (Sandbox Code Playgroud)
我不想添加smt。就像if (env('APP_ENV') == 'testing') return;在代码里面一样。