日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

蕭簫 發自 凹非寺
量子位 報道 | 公眾號 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測試方法

這款測試框架的優勢在于,它真的非常?。?0kB左右),下載后只要在編寫腳本測試前,用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

— 完 —

分享到:
標簽:刪庫
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定