Неперервна інтеграція для файлів налаштунків
Нарешті налаштував 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'))
Ось демонстрація: