Нарешті налаштував Travis CI для крапка-файлів. Задум простий: склонувати репозиторій, сконфігурувати і провести різні тести над ним. Найцікавішою і найскладнішою частиною є, безумовно, тестування. Щоб перевірити різноманітну функціональність vim у різних сценаріях автоматизовано, потрібно залучати псевдотермінал.

Виявилося, це дуже просто з Пітоном:

# Запустити оболонку у псевдотерміналі
master, slave = pty.openpty()
child = subprocess.Popen(['bash'], stdin=slave)

# Надсилати клавіші у дочірній процес з правильними затримками
for delay, key in InputReader():
    time.sleep(delay)
    os.write(master, bytes(chr(key), 'utf-8'))

Ось демонстрація: