成人免费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-04-11 07:20:01

應用APP濫用手機隱私風險

2018-07-30 09:33:21

2020-05-22 13:32:24

可視化詞云圖數據

2021-03-11 21:30:43

BATSBash軟件開發

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技術棧公眾號

主站蜘蛛池模板: 一级二级三级黄色 | 国产一级毛片视频 | 五月婷婷激情 | 久草综合在线视频 | 国内精品视频一区二区三区 | 欧美一级黄色片在线观看 | 国产精品精品视频一区二区三区 | 91精品国产自产在线老师啪 | 国产在线精品一区二区 | aaaaaa大片免费看最大的 | 中文字幕在线视频一区二区三区 | 色综合一区二区 | 国产精品99久久免费观看 | 天天躁日日躁aaaa视频 | 国产精品久久久久久久久久久久久 | cao在线| 久精品久久 | 日韩一级一区 | 国产精品视频久久 | 久久久久国产精品一区二区 | 国产精品成人一区二区三区夜夜夜 | 日本人和亚洲人zjzjhd | 九九九久久国产免费 | 成人片免费看 | 国产福利资源 | 精品亚洲二区 | 成人av网站在线观看 | 国产视频久久 | 成人亚洲片 | 国产91在线观看 | 中文字幕一区二区三区在线观看 | av在线播放网 | 欧美日韩在线观看一区 | 国产免费播放视频 | 成人欧美一区二区三区黑人孕妇 | 婷婷五月色综合香五月 | 天天夜碰日日摸日日澡 | 在线观看中文字幕dvd播放 | 亚洲精品日韩精品 | 国产精品日日摸夜夜添夜夜av | 成人免费淫片aa视频免费 |