我们注意到,某些自动测试在00:30运行时会失败,但在一天的其余时间中仍然可以正常工作。他们失败,并在stderr中显示消息“ gimme gimme gimme”,这是意料之外的。为什么要得到此输出?

评论

链接到:unix.stackexchange.com/questions/226716/…

我不明白为什么您的测试脚本会在失败的地方调用man?

@Joshua因为我们想要“ manpath”-'man -w'。查看答案。

为了历史,为什么您需要每分钟执行一次“ man -w”操作?你到底在测试什么?

@OlivierDulac它在测试中仅被触发一次。我们重新安排了测试顺序,并突然在00:30触发该错误,此错误...

#1 楼


亲爱的@colmmacuait,我认为,如果您在0001小时输入“ man”,则应打印“ gimme gimme gimme”。 #abba @marnanel-2011年11月3日


er,那是我的错,我建议这样做。抱歉。

差不多整个故事都在提交中。人的维护者是我的好朋友,六年前的一天,我开玩笑地对他说,如果您在午夜之后调用人,则应该打印“ gimme gimme gimme”,因为阿爸的一首歌叫做“ Gimme gimme gimme a man午夜之后”:

好吧,他确实把它放进去了。有些人发现它很有趣,而直到今天我们都忘了它。

我可以显然不代表Col,但是我没想到这会导致任何问题:在不指定页面的情况下解析man的输出时,哪种测试会失败?我想我不应该惊讶一个人最终出现了,但是花了六年的时间。

(提交消息称我为Thomas,尽管我不使用它是我的合法名字。

此问题已通过commit 84bde8得到修复:带有man -w的奔跑者将不再触发此复活节彩蛋。

评论


糟糕!它从未打算影响非错误案件。当我实现git.savannah.gnu.org/cgit/man-db.git/commit / ...时,我没有考虑到这一点。已在主服务器中修复:git.savannah.gnu.org/cgit/man-db.git/commit/…

–科林·沃森(Colin Watson)
17年11月21日在9:55



评论不作进一步讨论;此对话已移至聊天。

– terdon♦
17年11月21日在17:45

这些评论用于要求澄清和/或讨论答案的技术要点。如果您想讨论复活节彩蛋的优点,请聊天。

– terdon♦
17年11月21日在17:46



妈妈咪呀,现在我真的知道了!

– Enlico
18年7月15日在13:25

也许人需要一个--seriously参数

–帕特里克·泰勒(Patrick Taylor)
18-10-3在6:08

#2 楼

这是man中的复活节彩蛋。当您运行man而不指定页面或使用-w时,它将向stderr输出“ gimme gimme gimme”,但仅在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


退出代码为始终为0。

正确的输出应始终为:

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


字符串“ gimme gimme gimme”可以在RHEL,OpenSUSE, Fedora,Debian甚至更多,所以它并不是真正针对发行版的。您可以使用grep二进制文件进行验证。

此代码负责输出,并由以下提交添加:

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");


我已经联系了RHEL支持此问题。

字符串来自著名的ABBA歌曲Gimme!给我给我(午夜之后的一个男人)。


man-db的开发者Colin Watson认为有足够的乐趣,并且故事不会被遗忘,并且完全删除了复活节彩蛋。 。

谢谢科林!

评论


在具有faketime的平台上,您甚至无需更改系统时间就可以尝试以下操作:faketime '00:30:00'man(Debian 8)。

–roaima
17年11月20日在15:05



@rrauenza有buzilla门票:bugzilla.redhat.com/show_bug.cgi?id=1515352

–贾罗斯拉夫·库切拉(Jaroslav Kucera)
17年11月21日在7:41

现在,作者已经收紧了复活节彩蛋,使之只能在人身上而不是人-w上运行:git.savannah.nongnu.org/cgit/man-db.git/commit/src / ...以及Colin对Marnanel的confessio ^ Wanswer的评论。

–马丁·彼得斯(Martijn Pieters)
17年11月21日在10:09



让我们说一下,最初的提交是在12:01 am触发的。后续提交将其更改为12:30 am,并带有提交日志消息“十二点半”,该消息再次引用同一首歌。

– egmont
17年11月21日在21:00

@ 0x90 man -w打印当前的手册页搜索路径,您可以合理地将其用作其他内容的构建块,例如,如果要自动化的内容涉及安装或测试手册页。

–科林·沃森(Colin Watson)
17年11月25日在20:06

#3 楼

经过一番思考,我删除了这个复活节彩蛋。它将在即将发布的man-db 2.8.0中消失。

我很高兴它使一些人微笑,这毕竟是它的全部目的,还有我的Twitter通知等等。如今,大多数人认为这比烦人更有趣。不过,有些人还是觉得这很烦人,六年来似乎对这样的事情来说是相当不错的。它可能不会比通过这个问题已经意外地获得更好的曝光率。该睡觉了。

评论


我真的很难过,你决定那样做。国际海事组织(IMO)太多的人把它当作复活节彩蛋。

–赛斯
17年11月22日在1:52

我不排除将来会增加一些不同之处,尽管会更加小心!不过,它变得有些陈旧,幽默的确需要新颖性。

–科林·沃森(Colin Watson)
17年11月22日在1:54

我有@Seth同意,这是可悲的,看看这使我们大多数人的微笑,我们需要更多的实际对这个世界的东西去了。

– Videonauth
17年11月22日在3:00

我希望这不会破坏任何工作流程xkcd.com/1172

–lakshayg
17年11月22日在4:41



@ColinWatson我认为在默认流程中禁用此功能是一个好主意,因此不会破坏任何人的工作流程。但是同时,这样的杰作也不得不被删除,实在令人遗憾。您可以添加一个特殊的标志,例如man -abba,午夜后解雇时会送出复活节彩蛋。

–Bartlomiej Skwira
17年11月22日在11:07