Dlaczego mężczyzna drukuje „daj mi daj mi daj o 00:30”?

1625

Zauważyliśmy, że niektóre z naszych automatycznych testów kończą się niepowodzeniem, gdy działają o 00:30, ale działają dobrze przez resztę dnia. Nie udaje im się napisać „gimme gimme gimme” w stderr, czego nie oczekiwano. Dlaczego otrzymujemy ten wynik?

Jaroslav Kucera
źródło
5
Łączenie: unix.stackexchange.com/questions/226716/…
Jeff Schaller
54
Nie rozumiem Dlaczego skrypt testowy woła człowieka, gdzie powinien zawieść?
Joshua,
19
@Joshua Ponieważ chcieliśmy „manpath” - „man -w”. Zobacz odpowiedź.
Jaroslav Kucera,
67
ze względu na historię, dlaczego musicie robić „człowiek-w” co minutę? co tak naprawdę testujesz?
Olivier Dulac
22
@OlivierDulac Jest uruchamiany tylko raz w teście. Zmieniliśmy kolejność testów i nagle ten błąd pojawił się, gdy został wyzwolony o 00:30 ...
Jaroslav Kucera

Odpowiedzi:

2146

Drogi @colmmacuait , myślę, że jeśli wpiszesz „człowiek” o godzinie 0001, powinien wypisać „ gimme gimme gimme ”. #abba @marnanel - 3 listopada 2011 r

er, to była moja wina, zasugerowałem to. Przepraszam.

Prawie cała historia jest w zatwierdzeniu. Opiekun człowieka jest moim dobrym przyjacielem i pewnego dnia sześć lat temu żartobliwie powiedziałem mu, że jeśli wołasz człowieka po północy, powinien wydrukować „ gimme gimme gimme ”, z powodu piosenki Abba o nazwie „ Gimme gimme gimme gimme po północy ”:

Cóż, rzeczywiście umieścić go w . Kilka osób było rozbawionych odkryciem go i przeważnie o tym zapomnieliśmy do dziś.

Oczywiście nie mogę wypowiadać się w imieniu Col , ale nie spodziewałem się, że spowoduje to jakiekolwiek problemy: jaki test przerwałby analizowanie wyników działania człowieka bez określonej strony? Przypuszczam, że nie powinienem się dziwić, że w końcu się pojawił, ale zajęło to sześć lat.

(Wiadomość zatwierdzenia nazywa mnie Thomas, które jest moim legalnym imieniem, chociaż nie używam go zbyt często online).

Ten problem został rozwiązany w przypadku zatwierdzenia 84bde8 : Biegnący człowiek man -wnie będzie już uruchamiał tego jajka wielkanocnego.

Marnanel Thurman
źródło
361
Ups! Nigdy nie miało to wpływać na przypadki inne niż błędy. Nie wziąłem tego pod uwagę, kiedy wdrożyłem git.savannah.gnu.org/cgit/man-db.git/commit/… . Naprawiono w master: git.savannah.gnu.org/cgit/man-db.git/commit/…
Colin Watson
3
Komentarze nie są przeznaczone do rozszerzonej dyskusji; ta rozmowa została przeniesiona do czatu .
terdon
13
Komentarze dotyczą prośby o wyjaśnienie i / lub omówienie technicznych kwestii odpowiedzi. Jeśli chcesz omówić zalety pisanek, zabierz je na czat .
terdon
8
Mamma mia, teraz naprawdę wiem!
Enrico Maria De Angelis,
3
być może człowiek potrzebuje - poważnie parametru
Patrick Taylor
423

To jest pisanka w man. Gdy biegniesz manbez określania strony lub za pomocą -w, wyświetla „gimme gimme gimme” do stderr, ale tylko o 00:30:

# date +%T -s "00:30:00"
00:30:00
# man -w
gimme gimme gimme
/usr/local/share/man:/usr/share/man:/usr/man

Kod wyjścia to zawsze 0.

Prawidłowe wyjście powinno zawsze być:

# man -w
/usr/local/share/man:/usr/share/man:/usr/man
# echo $?
0
# man
What manual page do you want?
# echo $?
1

Ciąg „gimme gimme gimme” można znaleźć w RHEL, OpenSUSE, Fedora, Debian i prawdopodobnie więcej, więc nie jest tak naprawdę specyficzny dla dystrybucji. Możesz zweryfikować grepswój manplik binarny.

Ten kod jest odpowiedzialny za dane wyjściowe dodane przez to zatwierdzenie :

src/man.c-1167- if (first_arg == argc) {
src/man.c-1168-   /* 
http://twitter.com/#!/marnanel/status/132280557190119424 */
src/man.c-1169-   time_t now = time (NULL);
src/man.c-1170-   struct tm *localnow = localtime (&now);
src/man.c-1171-   if (localnow &&
src/man.c-1172-       localnow->tm_hour == 0 && localnow->tm_min == 30)
src/man.c:1173:     fprintf (stderr, "gimme gimme gimme\n");

Skontaktowałem się z obsługą RHEL w sprawie tego problemu.

Ciąg pochodzi od znanej piosenki ABBA Gimme! Dawaj! Dawaj! (Człowiek po północy) .


Twórca man-db, Colin Watson, zdecydował, że było wystarczająco zabawy i historia nie zostanie zapomniana, i całkowicie usunął pisankę .

Dziękuję Colin!

Jaroslav Kucera
źródło
147
Na faketimedostępnych platformach możesz wypróbować to bez potrzeby zmiany czasu systemowego: faketime '00:30:00' man(Debian 8).
roaima,
5
@rrauenza Jest bilet do buzilli: bugzilla.redhat.com/show_bug.cgi?id=1515352
Jaroslav Kucera
38
Autor zacisnął teraz pisankę, aby tylko na nią działała man, a nie man -w: git.savannah.nongnu.org/cgit/man-db.git/commit/src/… i komentarz Colina na spowiedzi Marnanela ^ Wanswer .
Martijn Pieters
21
Wspomnijmy, że początkowe zatwierdzenie uruchomiono o godzinie 12:01. Kolejne zatwierdzenie zmieniło to na 12:30 z komunikatem dziennika zatwierdzeń „wpół do dwunastej”, który znów jest cytowany z tej samej piosenki.
egmont
6
@ 0x90 man -wdrukuje bieżącą ścieżkę ręcznego przeszukiwania strony, co może być całkiem słuszne jako element składowy czegoś innego, na przykład jeśli automatyzacja polegała na instalacji lub testowaniu stron podręcznika.
Colin Watson,
364

Po krótkiej refleksji usunąłem to pisanka . Zniknie w nadchodzącym man-db 2.8.0.

Cieszę się, że to sprawiło, że niektórzy się uśmiechnęli, co w końcu było jego celem, a moje powiadomienia z Twittera i tak dalej sugerują, że większość ludzi uważała to za bardziej zabawne niż irytujące. Mimo to niektórzy uważali to za irytujące, a sześć lat wydaje się dość dobrym biegiem dla tego rodzaju rzeczy; prawdopodobnie nie uzyska znacznie lepszej ekspozycji niż już nieoczekiwanie na podstawie tego pytania. Czas położyć to do łóżka.

Colin Watson
źródło
121
Bardzo mi przykro, że tak zdecydowałeś. IMO zbyt wielu ludzi ma go na jajka wielkanocne.
Seth
36
Nie wykluczę dodawania czegoś innego w przyszłości, choć z większą ostrożnością! Robiło się trochę nieświeże, a humor wymaga nowości.
Colin Watson,
31
Muszę się zgodzić z @Seth, smutno jest widzieć coś, co sprawiło, że większość z nas się uśmiechnęła, potrzebujemy więcej tego na tym świecie.
Videonauth,
189
Mam nadzieję, że nie zakłóci to
Lakshay Garg
73
@ColinWatson Myślę, że wyłączenie tego w domyślnym przepływie jest dobrym pomysłem, więc nie przerywa niczyjej pracy. Ale szkoda, że ​​arcydzieło musiało zostać usunięte. Możesz dodać specjalną flagę, man -abbaa gdy wystrzelony po północy da jajko wielkanocne.
Bartłomiej Skwira,