かってきままな日々
2020-03-20 (Fr) [長年日記]
_ dogtail を試す
Gtk アプリの自動テストをしたいな、と思って dogtail なるものを試してみた。
イベントの記録は方法がわからなかったので、置いておいて、python script を直接書くことにする。
どっかのサイトを参考にして書こうとしたんだけど、どうもそのサイトが古かったらしい。 dogtail の本家 gitlab で example を参考にして書いてみた。
が……、sniff で見たところ、ほとんどの widget に name がない。
gtk_widget_set_name()
しても name が空欄。
wayland のせいで取得できないのかもなー。
と言って X だからって取得できる理由もないんだけど。
仕方ないので roleName で探してみることにする。
sniffer で filter
が見えるのに、dogtail から見つからない…、と思ったら、
よく見たら filler
だったり。
gtkbox のことだろうけど、そもそもなんで名称が違うんだか。
gtkdrawingarea は drawing area なのに。
もしかすると css の構造を見てるのかもなー。そっちは確認してない。
で、キーボードイベントを飛ばそうとしたけど、届かない。
そして、テストが途中で終了した場合にアプリが終了してくれない。 (最後まで行った場合は、最後に終了操作をするだろうからいいんだけど)
あーもう、こりゃ無理だな。この出来では使う気がしない。 開発止まってるらしいし、使うのやめ。
_ 最近 python に思うこと
dogtail の出来は悪かったけど、それは別にいい。
問題は CentOS の yum。
1ヶ月程前、会社でハマった人がいた。 yum が使えなくなった。nss まわりが死んだらしい。
何が起きてるのか調査してるのを、私も横で見てたところ、 yum が python を使ってて、python が機能しなくなったらしい。 そして、sqlite3 を /usr/ のものでなく /usr/local/ のものを 使うようにしたところ、yum できるようになった。
その後自分でもう少し調べてみたところ、yum は python を 使ってるなんてものではなく、python で書かれていることに 気づいた。
なんでそんなことするかね…
yum が python で書かれてて、sqlite3 を使った DB で管理 してるのだろう。だから sqlite3 が壊れて動かなくなったのだと思う。
yum 開発者は、yum がどんな立場にあるのか、解ってないのか? python が死んだだけで yum が使えなくなる。yum が使えなければ パッケージのインストール/アンインストールもままならない。 python を元の状態に戻せないかもしれない。
例えば libc が死ねば、ほとんどのアプリは動かない。それはそうだろう。 でも python が死んだだけでそこまで困るなんて、誰が想像する?
今回の場合は、python 自体は壊れてない。python script で sqlite3 を使ってて、そこで呼び出された libsqlite3.so が壊れてたのだと思う。
依存関係は遠くなればなるほど、把握が難しくなる。
ふと何かが動かなくなってることに気づいた時、何が原因なのか、最近何をやったのか、
思い出さなきゃいけない範囲が広くなる。
しっかり C で書いて、余計な依存をなくして欲しい。
たぶん、C で書いてあれば、ldd yum
するだけで依存してるのが判る。
で、yum もそうだけど、以前使ったことのある emacs lisp の package manager。 これが python で書かれてて、何故!? と思った。 emacs 自体が言語処理系なんだから、emacs lisp で書けばいい。 python に依存しなきゃいけない理由は全くない。
なんで猫も杓子も python なんだ... ということを最近思う。
C や C++ は難しいから、手軽に使えて情報の多い python に流れてるんだろうけど。 python みたいなインタプリタ言語は yum には向かないと思う。 C や C++ が難しければ rust でもいいじゃん。情報は python に比べてはるかに少ないけど。