成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

防止刪庫悲劇發生,這里有個Bash腳本測試框架,危險代碼一測便知

新聞 前端
想要清理文件夾內部分冗余文件,結果誤刪了同事剛合的代碼?

 本文經AI新媒體量子位(公眾號ID:QbitAI)授權轉載,轉載請聯系出處。

想要清理文件夾內部分冗余文件,結果誤刪了同事剛合的代碼?

(例如,在rm -rf /usr/bin/test的/usr后面加了個空格,結果刪掉了整個/usr文件)

相比于其他語言,Bash自帶許多令人摸不著頭腦的設計,其中之一就是變量中間不能加空格。這就導致Bash在調試時,某些命令具有危險性,例如rm -rf是刪除文件夾下所有文件,一旦執行錯誤,可能會產生爆炸的效果。

現在,手殘黨的福音來了:GitHub上有一位朋友推出了一款Bash命令的測試框架Bach,助你檢測腳本里有沒有危險的成分。

防止刪庫悲劇發生,這里有個Bash腳本測試框架,危險代碼一測便知

據開發者介紹,這款框架能讓你心情平靜

只要在測試腳本中導入這款Bach框架,就相當于服下了一劑后悔藥,能讓你趕緊改掉手殘寫錯的代碼提前測試Bash腳本的行為。

這樣,便能防止Bash的危險命令執行了錯誤的參數,從而帶來的災難性后果。

下圖是Bach框架中提供的一個名為 @do-not-panic 的 API,將它直接放進含有危險命令的測試方法后,可以避免出現不小心調用的情況。

防止刪庫悲劇發生,這里有個Bash腳本測試框架,危險代碼一測便知

有用戶指出,這個API的名字非常友好

看起來再也不用刪庫跑路了。

使用方法也很簡單,只需要掌握幾個測試實例,就能輕松上手使用這款測試框架。(文末附框架代碼)

Bach測試方法

這款測試框架的優勢在于,它真的非常小(50kB左右),下載后只要在編寫腳本測試前,用source命令導入一下Bach框架中的bach.sh,就能直接使用。

下圖是測試含rm -rf這樣的危險命令的樣例。

圖中可見,我們將需要執行的代碼部分寫在以test-開頭的方法中,Bach則會自動尋找與這個測試方法對應的-assert結尾的驗證。

防止刪庫悲劇發生,這里有個Bash腳本測試框架,危險代碼一測便知

圖中是手殘的范例,變量抄都抄錯了

也就是說,Bach運行兩個方法時,會驗證兩個方法中執行的命令及其參數是否一致(圖中顯然不一致),如果不一致,測試結果便會失敗。

了解了測試腳本的方法,來看看怎么寫模擬命令。

用Bach模擬/直接調用命令

在Bach測試框架中,所提供的API都是以@開頭的。

其中,有一部分命令可以被模擬(Mock API),另外,如果不得不在測試時直接調用部分命令,Bach中也提供了直接執行這些命令的API。

鑒于command和xargs命令的特殊性,Bach很特別地為這兩個命令做了模擬。

在網頁的測試說明中,會對這些API進行統一說明。

防止刪庫悲劇發生,這里有個Bash腳本測試框架,危險代碼一測便知

API調用說明范例

簡單了解后,也許有用戶會問,就Unix遺留的某些值得吐槽的設計Bash本身特性而言,已經有不少測試的框架了,Bach到底特殊在哪里?

Bach測試原理

事實上,Bach最特別的地方,在于這是一個真正的Bash單元測試框架

也就是說,Bach可以用于測試Bash中一些非常危險的命令,且不用擔心會產生任何后果。

畢竟在Bach中,沒有任何在PATH中的命令會被執行,除非明確地指定了路徑。

Bach驗證的是命令的調用,而非命令的結果,畢竟對于Shell腳本來說,最重要的是驗證命令的調用是否傳入了期望的參數或選項。

這款Bach測試框架與目前其他部分測試框架(如Bats、Shunit2等)的區別在于,后者實際上都會調用系統PATH中的命令,然而Bach是絕對安全的。

所以,即使是初學者,也可以安心地用Bach去練習Bash編程,且不用擔心任何誤操作。

防止刪庫悲劇發生,這里有個Bash腳本測試框架,危險代碼一測便知

網頁內的代碼有非常友好詳細的注釋

聽起來簡直就像是為Bash設計的完美補丁。

當然,目前Bach依舊有所限制,例如它不能阻止直接使用絕對路徑的命令調用,也無法無法阻止 I/O 重定向等。

但這款測試框架依舊在不斷地更新,目前正在被寶馬集團和華為使用。

感興趣的小伙伴,可以期待一下它的后續,或是一同成為Bach框架的代碼貢獻者。

作者介紹

柴鋒,一位有著15年碼齡的軟件開發工程師,熟悉Unix/Linux系統、IT運維、自動化測試和持續交付。

傳送門

Bach測試框架地址https://github.com/bach-sh/bach/blob/master/README-cn.md

測試實例https://github.com/bach-sh/bach/blob/master/tests/bach-testing-framework.test.sh

 

 

責任編輯:張燕妮 來源: 量子位
相關推薦

2009-11-27 08:59:18

Windows 7系統升級

2013-05-14 09:22:56

Intel密碼安全

2024-01-22 07:10:00

AI視頻

2025-04-27 19:37:31

MCP服務器OpenAI

2019-04-01 05:42:24

JavaScript視覺程序代碼

2024-04-01 11:52:46

2018-03-25 09:11:31

大數據機器學習分析軟件

2018-08-02 15:40:59

2019-01-23 09:48:06

數據清洗數據分析代碼

2021-03-11 21:30:43

BATSBash軟件開發

2021-04-11 07:20:01

應用APP濫用手機隱私風險

2018-07-30 09:33:21

2020-05-22 13:32:24

可視化詞云圖數據

2019-09-22 18:53:27

Jupyter Not代碼開發

2019-11-08 09:46:34

技術功能開發

2016-08-23 00:39:25

2020-11-02 15:49:35

機器學習技術云計算

2021-01-18 11:50:55

Python編程語言代碼

2019-08-29 16:05:06

物聯網

2020-04-21 11:08:06

CSS設計排版
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: a欧美| 欧美日韩在线看 | 成人在线视频免费观看 | 久久久久久久久久影视 | 91国自产 | 日本不卡高清视频 | 在线国产一区 | 在线午夜| 成人午夜网站 | 91色网站| 欧美一区2区三区4区公司二百 | 国产精品久久久久久久久久妇女 | 免费久 | 国产精品久久久亚洲 | 99久久精品国产一区二区三区 | 一级在线观看 | 99re99| a在线观看免费 | 亚洲成人激情在线观看 | 成人在线视频免费观看 | 国产精品成人一区二区三区夜夜夜 | 免费一级黄色 | 天天射天天操天天干 | 久久亚洲国产 | 99视频入口| 日韩精品免费播放 | 天天久久 | 久久国产精品视频免费看 | 国产精品视频在线观看 | 一级一级一级毛片 | 精品一区二区三区四区 | av一级毛片| 国产一区二区三区久久久久久久久 | av大片| 成人一区二区三区在线观看 | av手机免费在线观看 | 国产精品久久久久婷婷二区次 | 成人欧美一区二区三区色青冈 | 亚洲视频在线看 | 国产一区二区高清在线 | 中文字幕一区二区三区精彩视频 |