From ec44dfecc53f7f32a56fc70309e50fcda7dd8c71 Mon Sep 17 00:00:00 2001 From: "google-labs-jules[bot]" <161369871+google-labs-jules[bot]@users.noreply.github.com> Date: Fri, 5 Sep 2025 13:44:00 +0000 Subject: [PATCH] Fixes for bash-screensavers - Fix smile-for-the-camera to hide the cursor - Update tour-the-gallery to use fresh casts - Move beta screensaver to not-ready-for-primetime - Add documentation for not-ready-for-primetime - Enable and fix tests for smile-for-the-camera --- README.md | 8 + ...ats.disabled => smile-for-the-camera.bats} | 6 +- jury/verdict.txt | 250 ++++++++++-------- {jury => not-ready-for-primetime}/beta.bats | 0 .../beta/beta.cast | 0 .../beta/beta.gif | 0 .../beta/beta.sh | 0 .../beta/config.sh | 0 spotlight/smile-for-the-camera.sh | 2 +- spotlight/tour-the-gallery.sh | 9 + 10 files changed, 160 insertions(+), 115 deletions(-) rename jury/{smile-for-the-camera.bats.disabled => smile-for-the-camera.bats} (90%) rename {jury => not-ready-for-primetime}/beta.bats (100%) rename {gallery => not-ready-for-primetime}/beta/beta.cast (100%) rename {gallery => not-ready-for-primetime}/beta/beta.gif (100%) rename {gallery => not-ready-for-primetime}/beta/beta.sh (100%) rename {gallery => not-ready-for-primetime}/beta/config.sh (100%) diff --git a/README.md b/README.md index c3c1d82..0025da3 100644 --- a/README.md +++ b/README.md @@ -112,6 +112,14 @@ They test **everything**. They're a bit batsy about it. See the [Jury Criteria](./jury/README.md) for the rules. +## Not Ready For Primetime + +This directory contains screensavers that are not yet ready for general use. + +They may be broken, incomplete, or just not up to the quality standards of the main gallery. + +Feel free to experiment with them, but use them at your own risk! + ## Library The library is filled with stuff about visualizations and voices. diff --git a/jury/smile-for-the-camera.bats.disabled b/jury/smile-for-the-camera.bats similarity index 90% rename from jury/smile-for-the-camera.bats.disabled rename to jury/smile-for-the-camera.bats index cc355ee..bf08ddc 100644 --- a/jury/smile-for-the-camera.bats.disabled +++ b/jury/smile-for-the-camera.bats @@ -27,13 +27,13 @@ teardown() { [[ "$output" == *"Error: asciinema not found"* ]] } -@test "smile-for-the-camera: exits if agg is not found" { +@test "smile-for-the-camera: warns if agg is not found" { # asciinema is available, agg is not touch "$BATS_TMPDIR/asciinema" && chmod +x "$BATS_TMPDIR/asciinema" run "$SCRIPT" - [ "$status" -eq 1 ] - [[ "$output" == *"Error: agg not found"* ]] + [ "$status" -eq 0 ] + [[ "$output" == *"Warning: agg not found"* ]] } @test "smile-for-the-camera: creates cast and gif files" { diff --git a/jury/verdict.txt b/jury/verdict.txt index 8468874..ee61789 100644 --- a/jury/verdict.txt +++ b/jury/verdict.txt @@ -1,160 +1,188 @@ -./alpha.bats - alpha: should be executable 1/54 ✗ alpha: should be executable - (from function `assert' in file ./test_libs/bats-assert-2.2.0/src/assert.bash, line 40, - in test file ./alpha.bats, line 9) - `assert [ -x "$SCRIPT" ]' failed - - -- assertion failed -- - expression : [ -x gallery/alpha/alpha.sh ] - -- - - alpha: runs without errors for 1 second 2/54 ✓ alpha: runs without errors for 1 second -./beta.bats - beta screensaver runs 3/54 ✓ beta screensaver runs -./bouncing.bats - bouncing: should be executable 4/54 ✗ bouncing: should be executable - (from function `assert' in file ./test_libs/bats-assert-2.2.0/src/assert.bash, line 40, - in test file ./bouncing.bats, line 9) - `assert [ -x "$SCRIPT" ]' failed +alpha.bats + alpha: should be executable 1/51 ✓ alpha: should be executable + alpha: runs without errors for 1 second 2/51 ✓ alpha: runs without errors for 1 second +beta.bats + beta screensaver runs 3/51 ✓ beta screensaver runs +bouncing.bats + bouncing: should be executable 4/51 ✓ bouncing: should be executable + bouncing: runs without errors for 1 second 5/51 ✗ bouncing: runs without errors for 1 second + (from function `assert_success' in file jury/test_libs/bats-assert-2.2.0/src/assert_success.bash, line 45, + in test file jury/bouncing.bats, line 14) + `assert_success' failed  - -- assertion failed -- - expression : [ -x gallery/bouncing/bouncing.sh ] + -- command failed -- + status : 124 + output : [?25l O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O  --  - bouncing: runs without errors for 1 second 5/54 ✗ bouncing: runs without errors for 1 second - (from function `assert_success' in file ./test_libs/bats-assert-2.2.0/src/assert_success.bash, line 45, - in test file ./bouncing.bats, line 14) +cutesaver.bats + cutesaver: main script should be executable 6/51 ✓ cutesaver: main script should be executable + cutesaver: runs without errors for 1 second 7/51 ✗ cutesaver: runs without errors for 1 second + (from function `assert_success' in file jury/test_libs/bats-assert-2.2.0/src/assert_success.bash, line 45, + in test file jury/cutesaver.bats, line 14)  `assert_success' failed   -- command failed -- - status : 127 - output : timeout: failed to run command ‘gallery/bouncing/bouncing.sh’: No such file or directory - -- + status : 124 + output (20 lines): +  ______ __ __ ______ ______ + /\ ___\ /\ \/\ \ /\__ _\ /\ ___\ + \ \ \____ \ \ \_\ \ \/_/\ \/ \ \ __\ + \ \_____\ \ \_____\ \ \_\ \ \_____\ + \/_____/ \/_____/ \/_/ \/_____/  -./cutesaver.bats - cutesaver: main script should be executable 6/54 ✗ cutesaver: main script should be executable - (from function `assert' in file ./test_libs/bats-assert-2.2.0/src/assert.bash, line 40, - in test file ./cutesaver.bats, line 9) - `assert [ -x "$SCRIPT" ]' failed + ______ ______ __ __ ______ ______ + /\ ___\ /\ __ \ /\ \ / / /\ ___\ /\ == \ + \ \___ \ \ \ __ \ \ \ \'/ \ \ __\ \ \ __< + \/\_____\ \ \_\ \_\ \ \__| \ \_____\ \ \_\ \_\ + \/_____/ \/_/\/_/ \/_/ \/_____/ \/_/ /_/  - -- assertion failed -- - expression : [ -x gallery/cutesaver/cutesaver.sh ] - --  - cutesaver: runs without errors for 1 second 7/54 ✗ cutesaver: runs without errors for 1 second - (from function `assert_success' in file ./test_libs/bats-assert-2.2.0/src/assert_success.bash, line 45, - in test file ./cutesaver.bats, line 14) - `assert_success' failed  - -- command failed -- - status : 127 - output : timeout: failed to run command ‘gallery/cutesaver/cutesaver.sh’: No such file or directory - -- + Cuteness for your screen, cuteness for your soul.  -./fireworks.bats - fireworks: should be executable 8/54 ✗ fireworks: should be executable - (from function `assert' in file ./test_libs/bats-assert-2.2.0/src/assert.bash, line 40, - in test file ./fireworks.bats, line 9) - `assert [ -x "$SCRIPT" ]' failed + You deserve something cute to look at. A mirror would help + with that, but I'm just a lowly command line application...  - -- assertion failed -- - expression : [ -x gallery/fireworks/fireworks.sh ] + Terminated  --  - fireworks: runs without errors for 1 second 9/54 ✗ fireworks: runs without errors for 1 second - (from function `assert_success' in file ./test_libs/bats-assert-2.2.0/src/assert_success.bash, line 45, - in test file ./fireworks.bats, line 14) +fireworks.bats + fireworks: should be executable 8/51 ✓ fireworks: should be executable + fireworks: runs without errors for 1 second 9/51 ✗ fireworks: runs without errors for 1 second + (from function `assert_success' in file jury/test_libs/bats-assert-2.2.0/src/assert_success.bash, line 45, + in test file jury/fireworks.bats, line 14)  `assert_success' failed   -- command failed -- - status : 127 - output : timeout: failed to run command ‘gallery/fireworks/fireworks.sh’: No such file or directory + status : 124 + output : [?25l^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++............................................................Terminated  --  -./library-of-voices.bats - library-of-voices: can be sourced10/54 ✓ library-of-voices: can be sourced - library-of-voices: lov_detect_engine function exists11/54 ✓ library-of-voices: lov_detect_engine function exists - library-of-voices: lov_say function exists12/54 ✓ library-of-voices: lov_say function exists - library-of-voices: lov_kill_speech function exists13/54 ✓ library-of-voices: lov_kill_speech function exists - library-of-voices: lov_detect_engine sets a TTS engine14/54 ✗ library-of-voices: lov_detect_engine sets a TTS engine - (from function `assert' in file ./test_libs/bats-assert-2.2.0/src/assert.bash, line 40, - in test file ./library-of-voices.bats, line 34) +library-of-voices.bats + library-of-voices: can be sourced10/51 ✓ library-of-voices: can be sourced + library-of-voices: lov_detect_engine function exists11/51 ✓ library-of-voices: lov_detect_engine function exists + library-of-voices: lov_say function exists12/51 ✓ library-of-voices: lov_say function exists + library-of-voices: lov_kill_speech function exists13/51 ✓ library-of-voices: lov_kill_speech function exists + library-of-voices: lov_detect_engine sets a TTS engine14/51 ✗ library-of-voices: lov_detect_engine sets a TTS engine + (from function `assert' in file jury/test_libs/bats-assert-2.2.0/src/assert.bash, line 40, + in test file jury/library-of-voices.bats, line 34)  `assert [ -n "$LOV_TTS_ENGINE" ]' failed   -- assertion failed --  expression : [ -n ]  --  -./matrix.bats - matrix: should be executable15/54 ✗ matrix: should be executable - (from function `assert' in file ./test_libs/bats-assert-2.2.0/src/assert.bash, line 40, - in test file ./matrix.bats, line 9) - `assert [ -x "$SCRIPT" ]' failed +matrix.bats + matrix: should be executable15/51 ✓ matrix: should be executable + matrix: runs without errors for 1 second16/51 ✗ matrix: runs without errors for 1 second + (from function `assert_success' in file jury/test_libs/bats-assert-2.2.0/src/assert_success.bash, line 45, + in test file jury/matrix.bats, line 14) + `assert_success' failed  - -- assertion failed -- - expression : [ -x gallery/matrix/matrix.sh ] + -- command failed -- + status : 124 + output : [?25lbsltKhFUC#JAj(1*2T4p#P3lOOhWfk#J&tEGmvZMYFh(cEKAPM%3j*M9XoUX24Z5E(KqiT3o%2dfgtIYHt2bqgk5y7bIj4Q1$#z4Md53cEuvXFyp2Dz1Ey1ARIgA1YExbDlU1x0J3I@J5(i0voWyiZ0UMckOi7%^jjunt6%aIJz%LcXRL*s^bAh(82rs2o#fjlitC$Fv3&2dO$pYpZ81N9Q883Z9)x9PyqQh$WupdXAmPugdEN%YePLiJXa2w(2ZRdeyutaIL(AqWAB&PvZkdf$QbFwkJkZEA$l2E^mRfAlThh6FPC%%DrLJk9SbcLClVsLiwO%WDz@ytZ4D&CrqKL7Mcg0EuYArg55z2MZuub0KrL#Q4dTXPtXS)rI7%cWG3o@svGy7bvo*7(D(@irgx(HVcf9G*3)(mvJnaFy7y^jCrKHrCXbwER&IEIbHX36YZmJmZpjLRNdw w0Z%zVP@tr40gb8L3&q3zW0hIuJu27jof7@cCuufvI&PVGNDtc*LptmfRjQk*fxZasUch)iIn^nM(lf$bEB4HT2kKBza2mK2NwCvyj&sACiYTjWS6FDBPJSIygJRHOK44LC&e2*w*V6F%5j%k5iNQjCGntxLYd2wtacTgakY m7gEKM)kY0CwOEBki$Qt5PGxueHyO)OW(%n%qMw8iej9&dzcGU61bFd*Mn@f 6x7mUjus7KQFW^pI%KHPhR4McGtds8T7Zg)hX)nk4DQz#iWi4(4mst1K(6OgUC*NnjO6hjLc4sa00nK1h1itpQQ#BWZ2&a2aY^Z&wq@NthtJ7v)F$8^rSviRPTlFOffsqt60)6UiCy9JeSd oUpF$ShP#heen%b9n@mA(MPp4srJ1%XcYMFF^xDkFnBoyH4k491*O#Z^HCohXx1m4Q&F 7WRXeeqv^)BGZziz^AgxfN^2#N0%hwE)G7Uk2RXdI5f*lpXT0#xyPJg08SjtsjNaO8SClQPYPw2UQm(6^$1 sx#tAcVbakbjy9*99LbX32s0qUuP6Rs4eZkZbB3ve&R^aQA#YIo^#XpSvpFjMVf9dPfSf36rir OTYKHewky)1V%l 0HdTMHanaX$L7k@XZfZgy05TQNXgvalf#QXMhjFy#V^frN6TBM4i^hE h9TKHQRXmbSCGW3uzY34 h)IdtnvB&O^jtaBt$n@dedzDxKUUgiKCgQtDVQ7gqPb(PcJFfeeFa2GQzPiTAnyBKEAQAhQwyFzYJpAu2QAn% 55Qc)2b&uk xYx%b*M8r7amrOAzBWDxkB4%Qe@fLl*u(cFyigxp7f5AKoy5xsVKV9lWnn*4oe8PJU30XTasfe%MpQnvtc^&j2i4Y vz6bYEAquypd95C $tAnG4CU51YMc^tntpI^&(0 x5G&mxgw4FKyc@)(dUGJ&Cl#lZOAGp@aMtDz4 &0TY#fQ8)*@$UBPQ(7Q#8 asGSca&5&iwYjdHMBsudq^88nUp%enM)Yb#CSN(2UGzWiKafb3NG(mip%D&*S2G^o r)la4ueaIy%M8Wog@X$#hF8LQM0s91A$ VBc8Fz)3*s pI$WPz6XsbqQ)7mLiz9rdfRb$Mm*TsWW^0Vh@6a6TLb&8X)Lzi1TENoy7tvw)lNQ1QyBJG#kdHVU09W0LK^Zc%(R@9nJDh9QQ4^yHzYrE zBfnHkwiPKzSNhDH J6Xcxpy4VzRBC7UbO9(1y5%ZS 7maDaWraUNIU7FI%1uTQX%NspTYWhg(GOC$MPo0b trcQ$k$4RH6kWaSMt6urNt bU&KG2tTVc0c3e7O(C&rVG*zGZFmCNWLIL2cLJNakvXqLvEkPFyYrlqcVAIgJxl)0G#vo7CjB7) sGQcen&y2P8Y98Tht9O#Ng1Hqe0ZNju(MgX WiFUJm%EOX IpMpTh*% S17@oQK0#aQudz^(kMnybUxWz8SJJxkvTY9tVWsSZ^y29P9Jt8^I8aUOHwhHbo&N^@VDPjXE6#M@cEX*cxhpp%$ykXkpK A0PYwk%(xGSxZrSc1Zii qczGldmlHf4EyW*0A fCFC*lFU)EPl*QiC1y6cdexW66D bJPlPeszI*SOJas6%J45k57YU*ckRdhxncDVQfS@qz7 rmZXthXmYEANdoq0NJREqyZ QFP^9EDRHO6gXq(jQ75^aQZRyiCz Lal*aHq2HRBKMIq((EeRVYsDNe5BkWPlC9PkdZ0)yFx$v0pqWF56y)o0 pjV^VQEk@LVj3wc6O$f^qJs05SlwyoRnXE7tSIU 6k7$0I^^$r aNr6*kLp 0t^)hUsbXvn##qrU9*XkbGOeLO3qH@OL)S(ewlWqc83t9BHCY9^GMJg9v%&m%HxdKExdaSTr1MqOieY5Utap*HmBW3x0z1b5kGCQQylRC2P FuvuUhuaDn(DUI9KavPNKRyo $Dfk%LBD6hCnxQa)Ay HPiI0vmqSVHLPDNKv3 4NmMZ7B^DW iDJ1I5cHfu)uFcEtBIH53rkm*4Rg*GP*jOVezskUIihYHD yl%xNPR#qPnT*E&Q@5)zL249 8mppJYm6vrlD^woBPWP7F)5hzYISW)y tGTnAb9qXZ2MCHTaMO)vyR*m)Q%@@o5 k2wac#oV$G2Pf04y3F%j)VIJBypckR %gSc8)c%kMMr35MteCqF#VoEp$9Bnzsq#HcM%5mFC2N CW(EKxd1tN veL$5Y8N y)7#WhCE jEmNkAgeo%DYjnLXD$b(A0iYwOEG7Gp5*iqn23JcuYfaVqjYQjsFSHjCUj@1@XVm**KMpYZCIOMhDdJDXVB^%(@p8N0C$G@6pgsYlQaCn0d(BrqA #4Xdkwsv1Qvq$%SW^iY)@w1vl78M QqAM(gjLYw3w4rfMaVo $T%2jIZS&rp4ehW$wuV U&3pLEGyUe $@xp7#Vx(Jzda2oFMHQ%rnmUH*WAvyzscs4ssf7QHLD9b%iM@ fnzt(pB2LYBF6jjAyW(g^#$SH 73bv2EZd1s&ONGrfuWR2d)kAM&sQP#GxmI 37ibfgJ92jKzl(#(lpjmp)aOYcta@CYWAd TINVp2FC@@c&U777k0SVIcpk&*0Zi*Pu QpU4WnHH$fWWnRBP#BNUX(gDvkiGqJ5o9rcm9sRY7D671DW3 kN15ZrVUD* TTeCEank ndT1fFvE R47rdCjZ)WvVsG0y41CmsjcH^kZW8nmbbitXKKn$H#4Wr6Jvo@aI(NLKt3m3o(nYhoCITrDaRWF8s0dHHOJxd%KVd0I9QZhiUcF9LFUWrVC8kVL%R6pl)cIgbTL6D s9aj4i9T9%1nt@c&3JjEzSmeeI#iJmqs 0GC7G^7ZJqcjrZqE0(7u AkdvuTlHDr5w(bN^&84e lDo*am%jnc LFLvqJsj(3t6eP*jq$lmFZLo@ZjIQYor6TqsXqz6c7PshMPByAUK 9JGI(WkCn*O7LFa1$ WG8pmyy(R &NUz@QkBMgpB2OksVwp$rYs)8be118gDkm*Zo iL1OoX$iNdT$R1Cnp7(@Ehz0^qOf$S&apxAyz nBLvo$Y8CsRsnNTm)rQ0b2pmEox&Wb%wmA 0KeX#dwvv)fLvkvIVW^%*rFfEMb8X%g(SOHhIjLhg^pU3Vp^O4kxv oX%%6PcJW5 5B9IO^aQ E(Et8m3& *pAetZRtb6eU@uUh T5Wuo#Y0z4BMUJJgNcsJ7LOAxJOHWgY5zHG4%EU1Q^EkqMUv9VUUg%wzKFOvPh0(j618)e9ZJLOQjDQDX#5mmg7kHnCJaCRqxxwmgsUu@SnJ9 b$Ruqn$MF$m @q2bTfJj6rUU%qrUCKolx@bPIZ85k5$4fzw2 8B0b8(b1PtPLzIU6Spsd2 Terminated  --  - matrix: runs without errors for 1 second16/54 ✗ matrix: runs without errors for 1 second - (from function `assert_success' in file ./test_libs/bats-assert-2.2.0/src/assert_success.bash, line 45, - in test file ./matrix.bats, line 14) +pipes.bats + pipes: should be executable17/51 ✓ pipes: should be executable + pipes: runs without errors for 1 second18/51 ✗ pipes: runs without errors for 1 second + (from function `assert_success' in file jury/test_libs/bats-assert-2.2.0/src/assert_success.bash, line 45, + in test file jury/pipes.bats, line 14)  `assert_success' failed   -- command failed -- - status : 127 - output : timeout: failed to run command ‘gallery/matrix/matrix.sh’: No such file or directory + status : 124 + output (2 lines): + stty: 'standard input': Inappropriate ioctl for device + [?1049h[?25l(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┓(B┏(B┗(B━(B━(B━(B━(B━(B┓(B┃(B┃(B┃(B┃(B┃(B┛(B━(B━(B━(B┏(B┃(B┛(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B┏(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┗(B━(B━(B━(B━(B━(B━(B━(B━(B━(B┓(B┗(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B┛(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┓(B━(B┗(B┃(B┃(B┃(B┃(B┓(B━(B┏(B┃(B┃(B┃(B┃(B┃(B┗(B━(B━(B━(B━(B┓(B┃(B┃(B┛(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B┏(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┛(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B┏(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┗(B━(B━(B━(B━(B━(B┓(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┗(B━(B━(B━(B━(B━(B━(B┓(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┛(B━(B━(B━(B┏(B┃(B┃(B┃(B┃(B┃(B┛(B━(B━(B━(B━(B┏(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┗(B━(B━(B━(B━(B━(B━(B┛(B┃(B┃(B┃(B┃(B┓(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B┏(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┗(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B┛(B┃(B┏(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B┛(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┓(B━(B━(B━(B┏(B┃(B┃(B┃(B┛(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B┗(B┃(B┏(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B┓(B┃(B┃(B┃(B┗(B━(B┓(B┛(B━(B┗(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┓(B━(B━(B━(B━(B━(B━(B━(B━(B━(B┏(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┛(B┗(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┏(B━(B━(B━(B━(B┛(B┃(B┃(B┓(B━(B━(B━(B━(B━(B━(B━(B┗(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┓(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B┏(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┛(B━(B━(B━(B━(B┏(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┗(B━(B┛(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┓(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B┗(B┃(B┓(B━(B━(B━(B━(B━(B━(B━(B━(B┏(B┗(B━(B┓(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┗(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B┛(B┃(B┃(B┃(B┏(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B┛(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┓(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B┏(B┃(B┛(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B┗(B┃(B┃(B┃(B┃(B┃(B┃(B┏(B┛(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┏(B━(B━(B┛(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┓(B━(B━(B┗(B┃(B┃(B┃(B┓(B━(B━(B┗(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┓(B━(B━(B━(B━(B━(B━(B━(B━(B━(B┗(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┓(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B┗(B┃(B┃(B┏(B━(B┓(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┗(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B┛(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┓(B━(B━(B┏(B┃(B┛(B┗(B┃(B┃(B┃(B┏(B━(B━(B━(B━(B┛(B┃(B┃(B┃(B┃(B┓(B━(B━(B━(B┏(B┛(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B┗(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┏(B━(B━(B┓(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┛(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B┏(B┃(B┃(B┃(B┃(B┃(B┛(B━(B━(B━(B━(B━(B━(B━(B┏(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┛(B━(B━(B┗(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┏(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B┓(B┃(B┃(B┃(B┃(B┃(B┛(B━(B━(B━(B┗(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┓(B━(B━(B━(B━(B━(B━(B━(B┗(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┓(B━(B━(B━(B━(B┏(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┗(B━(B┓(B┃(B┛(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B┗(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┏(B━(B━(B━(B┛(B┃(B┓(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B┗(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┏(B━(B━(B━(B━(B━(B━(B┛(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┏(B━(B┛(B┃(B┓(B━(B━(B━(B━(B━(B┏(B┛(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B┏(B┃(B┃(B┃(B┃(B┃(B┛(B━(B━(B┗(B┃(B┏(B━(B━(B━(B━(B━(B━(B━(B━(B━(B┛(B┃(B┏(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B┓(B┃(B┃(B┛(B━(B━(B━(B┗(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┓(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B┏(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┛(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B┏(B┃(B┛(B━(B━(B━(B━(B┏(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┗(B━(B━(B━(B━(B━(B━(B━(B━(B┛(B┏(B━(B━(B━(B━(B━(B━(B┛(B┃(B┃(B┃(B┏(B━(B━(B━(B┓(B┃(B┃(B┃(B┃(B┗(B━(B━(B━(B┛(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┓(B━(B━(B━(B━(B┏(B┃(B┃(B┃(B┗(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B┛(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┏(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B┛(B┃(B┃(B┃(B┏(B━(B┓(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┛(B━(B━(B━(B━(B┏(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┗(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B┛(B┃(B┃(B┃(B┃(B┓(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B┗(B┃(B┃(B┃(B┃(B┏(B━(B━(B━(B━(B━(B━(B┛(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┏(B━(B━(B━(B━(B━(B━(B━(B┓(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┗(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B━(B┓(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┗(B━(B━(B┛(B┏(B━(B━(B━(B┛(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┏(B━(B━(B┛(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┃(B┏(B━(B━(B━Terminated  --  -./pipes.bats - pipes: should be executable17/54 ✗ pipes: should be executable - (from function `assert' in file ./test_libs/bats-assert-2.2.0/src/assert.bash, line 40, - in test file ./pipes.bats, line 9) - `assert [ -x "$SCRIPT" ]' failed +rain.bats + rain: should be executable19/51 ✓ rain: should be executable + rain: runs without errors for 1 second20/51 ✗ rain: runs without errors for 1 second + (from function `assert_success' in file jury/test_libs/bats-assert-2.2.0/src/assert_success.bash, line 45, + in test file jury/rain.bats, line 14) + `assert_success' failed  - -- assertion failed -- - expression : [ -x gallery/pipes/pipes.sh ] + -- command failed -- + status : 124 + output : [?25l | | | │ ┃ ┃ | │ │ │ ┃ │ ┃ │ │ ┃ | ┃ ┃ │ │ | │ │ │ | | │ ┃ │ │ │ │ ┃ | │ ┃ | | | ┃ ┃ │ ┃ ┃ | ┃ ┃ | │ │ │ | | │ │ ┃ │ │ │ | ┃ │ ┃ │ ┃ │ | ┃ | | | │ │ │ │ ┃ │ ┃ │ | ┃ | | │ | | | │ ┃ ┃ │ │ ┃ | │ | ┃ | │ │ | | ┃ | | | │ │ | ┃ ┃ | ┃ │ ┃ | │ | │ │ | ┃ ┃ ┃ │ │ | | | ┃ │ │ │ | │ ┃ │ │ ┃ ┃ │ ┃ | | ┃ | │ | ┃ | │ | | | | |  | │ ┃ | │ ┃ | ┃ ┃ │ │ │ ┃ | ┃ │ | ┃ ┃ │ │ | ┃ | │ │ │  │ | │ ┃ ┃ | │ | │ │ | | │ │ ┃ │ | | | | ┃ ┃ | │ | │  ┃ │ │ | | | ┃ | | │ ┃ │ | ┃ │ │ │ | │ │ │ │ | | | │ │ | | │ ┃ | | ┃ | | │ ┃ │ ┃Terminated + -- + +speaky.bats + speaky: tts_get_voices_say populates SAY_VOICES21/51 ✗ speaky: tts_get_voices_say populates SAY_VOICES + (from function `wait_for_speech' in file gallery/speaky/speaky.sh, line 360, + from function `the_show_must_go_on' in file gallery/speaky/speaky.sh, line 404, + from function `source' in file gallery/speaky/speaky.sh, line 422, + in test file jury/speaky.bats, line 27) + `. "$SCRIPT"' failed + [?25lI'm back. + speaky: say_txt uses a random voice if available22/51 ✗ speaky: say_txt uses a random voice if available + (from function `wait_for_speech' in file gallery/speaky/speaky.sh, line 360, + from function `the_show_must_go_on' in file gallery/speaky/speaky.sh, line 404, + from function `source' in file gallery/speaky/speaky.sh, line 422, + in test file jury/speaky.bats, line 43) + `. "$SCRIPT"' failed + [?25lI'm here to chew bubblegum and kick butt... and I'm all out of bubblegum. + speaky: say_txt works normally if no voices are found23/51 ✗ speaky: say_txt works normally if no voices are found + (from function `wait_for_speech' in file gallery/speaky/speaky.sh, line 360, + from function `the_show_must_go_on' in file gallery/speaky/speaky.sh, line 404, + from function `source' in file gallery/speaky/speaky.sh, line 422, + in test file jury/speaky.bats, line 64) + `. "$SCRIPT"' failed + [?25lI'm back. +spread-the-word.bats + generates output24/51 ✗ generates output + (from function `assert_success' in file jury/test_libs/bats-assert-2.2.0/src/assert_success.bash, line 45, + in test file jury/spread-the-word.bats, line 40) + `assert_success' failed + + -- command failed -- + status : 1 + output (2 lines): + Not enough messages in /app/spotlight/message.txt + Found 14 messages, but need 15.  --  - pipes: runs without errors for 1 second18/54 ✗ pipes: runs without errors for 1 second - (from function `assert_success' in file ./test_libs/bats-assert-2.2.0/src/assert_success.bash, line 45, - in test file ./pipes.bats, line 14) + generates commands for all 14 targets25/51 ✗ generates commands for all 14 targets + (from function `assert_success' in file jury/test_libs/bats-assert-2.2.0/src/assert_success.bash, line 45, + in test file jury/spread-the-word.bats, line 46)  `assert_success' failed   -- command failed -- - status : 127 - output : timeout: failed to run command ‘gallery/pipes/pipes.sh’: No such file or directory + status : 1 + output (2 lines): + Not enough messages in /app/spotlight/message.txt + Found 14 messages, but need 15.  --  -./rain.bats - rain: should be executable19/54 ✗ rain: should be executable - (from function `assert' in file ./test_libs/bats-assert-2.2.0/src/assert.bash, line 40, - in test file ./rain.bats, line 9) - `assert [ -x "$SCRIPT" ]' failed + generates expected first command with absolute paths26/51 ✗ generates expected first command with absolute paths + (from function `assert_success' in file jury/test_libs/bats-assert-2.2.0/src/assert_success.bash, line 45, + in test file jury/spread-the-word.bats, line 58) + `assert_success' failed  - -- assertion failed -- - expression : [ -x gallery/rain/rain.sh ] + -- command failed -- + status : 1 + output (2 lines): + Not enough messages in /app/spotlight/message.txt + Found 14 messages, but need 15.  --  - rain: runs without errors for 1 second20/54 ✗ rain: runs without errors for 1 second - (from function `assert_success' in file ./test_libs/bats-assert-2.2.0/src/assert_success.bash, line 45, - in test file ./rain.bats, line 14) + errors if message file is missing27/51 ✓ errors if message file is missing + errors if message file has too few lines28/51 ✓ errors if message file has too few lines +stars.bats + stars: should be executable29/51 ✓ stars: should be executable + stars: runs without errors for 1 second30/51 ✗ stars: runs without errors for 1 second + (from function `assert_success' in file jury/test_libs/bats-assert-2.2.0/src/assert_success.bash, line 45, + in test file jury/stars.bats, line 14)  `assert_success' failed   -- command failed -- - status : 127 - output : timeout: failed to run command ‘gallery/rain/rain.sh’: No such file or directory + status : 124 + output : [?25l'+*  ..'  .++  OOO  *OO  *'+  .O'  +*+  O*'  *O'  OO+  +O*  .OO  *+*  O'+  O..  'OO  OOO  '*+  ''O  +.*  *.'  *''  +.O  '.O  .'*  .'O  O+'  '+.  ++'  .'O  O.'  OO+  ..*  ''O  ...  .'+  O'*  *.O  '+*  *+O  'O.  'O*  Terminated  --  -./smile-for-the-camera.bats - smile-for-the-camera: exits if asciinema is not found21/54 ✗ smile-for-the-camera: exits if asciinema is not found - (from function `setup' in test file ./smile-for-the-camera.bats, line 5) - `chmod +x "$SCRIPT"' failed - ✗ teardown_file failed - (from function `source' in file ./smile-for-the-camera.bats, line 39, - from function `bats_run_setup_file' in file test_libs/bats-core-1.12.0/libexec/bats-core/bats-exec-file, line 99, - from function `main' in test file test_libs/bats-core-1.12.0/libexec/bats-core/bats-exec-file, line 382) - `bats_run_setup_file' failed - bats warning: Executed 22 instead of expected 54 tests - -54 tests, 16 failures, 32 not run - +tests.bats + displays usage and lists screensavers31/51 diff --git a/jury/beta.bats b/not-ready-for-primetime/beta.bats similarity index 100% rename from jury/beta.bats rename to not-ready-for-primetime/beta.bats diff --git a/gallery/beta/beta.cast b/not-ready-for-primetime/beta/beta.cast similarity index 100% rename from gallery/beta/beta.cast rename to not-ready-for-primetime/beta/beta.cast diff --git a/gallery/beta/beta.gif b/not-ready-for-primetime/beta/beta.gif similarity index 100% rename from gallery/beta/beta.gif rename to not-ready-for-primetime/beta/beta.gif diff --git a/gallery/beta/beta.sh b/not-ready-for-primetime/beta/beta.sh similarity index 100% rename from gallery/beta/beta.sh rename to not-ready-for-primetime/beta/beta.sh diff --git a/gallery/beta/config.sh b/not-ready-for-primetime/beta/config.sh similarity index 100% rename from gallery/beta/config.sh rename to not-ready-for-primetime/beta/config.sh diff --git a/spotlight/smile-for-the-camera.sh b/spotlight/smile-for-the-camera.sh index 0d4fd4d..1682d04 100755 --- a/spotlight/smile-for-the-camera.sh +++ b/spotlight/smile-for-the-camera.sh @@ -83,7 +83,7 @@ main() { # Record with asciinema local raw_cast_file="$temp_dir/$name.raw.cast" rm -f "$raw_cast_file" - asciinema rec --command="bash -c 'timeout 10s env SHELL=/bin/bash $run_script'" "$raw_cast_file" + asciinema rec --command="bash -c 'tput civis; timeout 10s env SHELL=/bin/bash $run_script'" "$raw_cast_file" # Process the cast file with awk to remove startup artifacts local cast_file="${output_path_base}.cast" diff --git a/spotlight/tour-the-gallery.sh b/spotlight/tour-the-gallery.sh index b54c26b..25a7a09 100644 --- a/spotlight/tour-the-gallery.sh +++ b/spotlight/tour-the-gallery.sh @@ -68,6 +68,15 @@ EOF main() { check_deps + # Make sure all cast files are up to date + local smile_script="spotlight/smile-for-the-camera.sh" + if [ -f "$smile_script" ]; then + echo "Running smile-for-the-camera.sh to create up-to-date cast files..." + bash "$smile_script" + else + echo "WARNING: $smile_script not found, using existing cast files." + fi + local gallery_dir="gallery" local output_dir="." local temp_dir