diff --git a/bin/uhwm b/bin/uhwm new file mode 100755 index 0000000..539577c --- /dev/null +++ b/bin/uhwm @@ -0,0 +1,5 @@ +#!/usr/bin/env ruby + +require 'uh/wm' + +Uh::WM::CLI.run!(ARGV) diff --git a/features/steps/run_steps.rb b/features/steps/run_steps.rb new file mode 100644 index 0000000..2a58281 --- /dev/null +++ b/features/steps/run_steps.rb @@ -0,0 +1,4 @@ +When /^I start uhwm$/ do + @process = run 'uhwm' + @interactive = @process +end diff --git a/features/steps/x_steps.rb b/features/steps/x_steps.rb new file mode 100644 index 0000000..cb32a42 --- /dev/null +++ b/features/steps/x_steps.rb @@ -0,0 +1,10 @@ +Then /^it must connect to X display$/ do + Timeout.timeout(exit_timeout) do + loop do + break if assert_partial_output_interactive 'Connected to' + sleep 0.1 + end + end + expect(`sockstat -u`.lines.grep /\s+ruby.+\s+#{@process.pid}/) + .not_to be_empty +end diff --git a/features/support/env.rb b/features/support/env.rb index a0b2904..202e348 100644 --- a/features/support/env.rb +++ b/features/support/env.rb @@ -1,4 +1,12 @@ require 'aruba/cucumber' require 'headless' +module Aruba + class SpawnProcess + def pid + @process.pid + end + end +end + Headless.new.start diff --git a/features/x/connection.feature b/features/x/connection.feature new file mode 100644 index 0000000..87c6eef --- /dev/null +++ b/features/x/connection.feature @@ -0,0 +1,5 @@ +Feature: connection to X server + + Scenario: connects to X server + When I start uhwm + Then it must connect to X display diff --git a/lib/uh/wm.rb b/lib/uh/wm.rb new file mode 100644 index 0000000..16b9951 --- /dev/null +++ b/lib/uh/wm.rb @@ -0,0 +1,3 @@ +require 'uh' + +require 'uh/wm/cli' diff --git a/lib/uh/wm/cli.rb b/lib/uh/wm/cli.rb new file mode 100644 index 0000000..734ddf2 --- /dev/null +++ b/lib/uh/wm/cli.rb @@ -0,0 +1,15 @@ +module Uh + module WM + class CLI + class << self + def run! arguments + $stdout.sync = true + @display = Display.new + @display.open + puts "Connected to X server on `#{display}'" + sleep 8 + end + end + end + end +end