From 71c173db56f8e462fbaa8c0472788c04982478db Mon Sep 17 00:00:00 2001 From: Tom Feist Date: Mon, 21 Feb 2011 01:58:22 +0000 Subject: start of makign this a proper module --- testing/Changes | 0 testing/MANIFEST | 8 +++++ testing/Makefile.PL | 30 ++++++++++++++++ testing/README | 0 testing/auto-testing.pl | 49 ++++++++++++++++---------- testing/lib/Test/Irssi.pm | 90 +++++++++++++++++++++++++++++++++++++++++++++++ testing/t/001-use.t | 25 +++++++++++++ 7 files changed, 183 insertions(+), 19 deletions(-) create mode 100644 testing/Changes create mode 100644 testing/MANIFEST create mode 100644 testing/Makefile.PL create mode 100644 testing/README create mode 100644 testing/lib/Test/Irssi.pm create mode 100755 testing/t/001-use.t diff --git a/testing/Changes b/testing/Changes new file mode 100644 index 0000000..e69de29 diff --git a/testing/MANIFEST b/testing/MANIFEST new file mode 100644 index 0000000..8548d92 --- /dev/null +++ b/testing/MANIFEST @@ -0,0 +1,8 @@ +Makefile.PL +MANIFEST +README +Changes +t/001-use.t + + +lib/Test/Irssi.pm diff --git a/testing/Makefile.PL b/testing/Makefile.PL new file mode 100644 index 0000000..3312c95 --- /dev/null +++ b/testing/Makefile.PL @@ -0,0 +1,30 @@ +use strict; +use warnings; +use Cwd; +use ExtUtils::MakeMaker; +# See lib/ExtUtils/MakeMaker.pm for details of how to influence +# the contents of the Makefile that is written. + +WriteMakefile( + NAME => 'Test::Irssi', + AUTHOR => 'shabble ', + VERSION_FROM => 'lib/Test/Irssi.pm', # finds $VERSION + ABSTRACT_FROM => 'lib/Test/Irssi.pm', + PL_FILES => {}, + # LIBS => ["-L/opt/local/lib -lcprops"], + # INC => "-I/opt/local/include/cprops", + PREREQ_PM => { + 'Test::More' => 0, + 'Carp' => 0, + 'MooseX::Declare' => 0, + 'IO::File' => 0, + 'Term::VT102' => 0, + 'Term::Terminfo' => 0, + 'strictures' => 0, + 'Data::Dump' => 0, + }, + dist => { COMPRESS => 'gzip -9f', SUFFIX => 'gz', }, + # clean => { + # FILES => 'CProps-Trie-* Trie.inl _Inline' + # }, + ); diff --git a/testing/README b/testing/README new file mode 100644 index 0000000..e69de29 diff --git a/testing/auto-testing.pl b/testing/auto-testing.pl index 31a9e5e..9f47b6c 100755 --- a/testing/auto-testing.pl +++ b/testing/auto-testing.pl @@ -1,5 +1,9 @@ -package Test::Irssi; + +#package Test::Irssi; + +# requires the latest pre-release POE from +# https://github.com/rcaputo/poe until a new release is...released. use warnings; use strict; @@ -8,6 +12,10 @@ use strict; use lib $ENV{HOME} . "/projects/poe/lib"; sub PROGRAM () { "/opt/stow/repo/irssi-debug/bin/irssi" } +sub IRSSI_HOME () { $ENV{HOME} . "/projects/tmp/test/irssi-debug" } + +sub ROWS () { 24 } +sub COLS () { 80 } use POSIX; @@ -20,25 +28,16 @@ use Data::Dumper; use IO::File; my $logfile = "irssi.log"; -#open my $logfh, ">", $logfile or die "Couldn't open $logfile for writing: $!"; my $logfh = IO::File->new($logfile, 'w'); die "Couldn't open $logfile for writing: $!" unless defined $logfh; + $logfh->autoflush(1); my $ti = Term::Terminfo->new(); +my $vt = Term::VT102->new(rows => ROWS, cols => COLS); -my $vt = Term::VT102->new(rows => 24, cols => 80); - -$vt->callback_set(OUTPUT => \&vt_output, undef); -$vt->callback_set(ROWCHANGE => \&vt_rowchange, undef); -$vt->callback_set(CLEAR => \&vt_clear, undef); -$vt->callback_set(SCROLL_DOWN => \&vt_scr_dn, undef); -$vt->callback_set(SCROLL_UP => \&vt_scr_up, undef); -$vt->callback_set(GOTO => \&vt_goto, undef); - -$vt->option_set(LINEWRAP => 1); -$vt->option_set(LFTOCRLF => 1); +vt_configure_callbacks($vt); sub vt_output { my ($vt, $cb_name, $cb_data, $priv_data) = @_; @@ -60,10 +59,9 @@ sub vt_rowchange { say $logfh $vt->row_plaintext($bottom_line); say $logfh "-" x 100; - # -# print $ti->getstr("clear"); - # print vt_dump(); + # print $ti->getstr("clear"); + # print vt_dump(); } sub vt_clear { @@ -85,7 +83,7 @@ sub vt_goto { sub vt_dump { my $str = ''; - for my $y (1..24) { + for my $y (1..ROWS) { $str .= $vt->row_sgrtext($y) . "\n"; } return $str; @@ -113,9 +111,9 @@ sub handle_start { # Start the asynchronous child process. $heap->{program} = POE::Wheel::Run->new( Program => PROGRAM, - ProgramArgs => [qw/--noconnect/], + ProgramArgs => ['--noconnect', '--home=' . IRSSI_HOME ], Conduit => "pty", - Winsize => [24, 80, 0, 0], + Winsize => [ROWS, COLS, 0, 0], StdoutEvent => "got_child_stdout", StdioFilter => POE::Filter::Stream->new(), ); @@ -209,6 +207,19 @@ sub save_term_settings { $heap->{stderr_tio}->getattr(2); } +sub vt_configure_callbacks { + my ($vt) = @_; + $vt->callback_set(OUTPUT => \&vt_output, undef); + $vt->callback_set(ROWCHANGE => \&vt_rowchange, undef); + $vt->callback_set(CLEAR => \&vt_clear, undef); + $vt->callback_set(SCROLL_DOWN => \&vt_scr_dn, undef); + $vt->callback_set(SCROLL_UP => \&vt_scr_up, undef); + $vt->callback_set(GOTO => \&vt_goto, undef); + # options + $vt->option_set(LINEWRAP => 1); + $vt->option_set(LFTOCRLF => 1); +} + ### Start POE's main loop, which runs the session until it's done. $poe_kernel->run(); exit 0; diff --git a/testing/lib/Test/Irssi.pm b/testing/lib/Test/Irssi.pm new file mode 100644 index 0000000..cb350ee --- /dev/null +++ b/testing/lib/Test/Irssi.pm @@ -0,0 +1,90 @@ +use strictures 1; +use MooseX::Declare + +our $VERSION = 0.01; + +class Test::Irssi { + + use Term::VT102; + use Term::Terminfo; + use feature qw/say switch/; + use Data::Dump; + use IO::File; + + has 'irssi_binary' + => ( + is => 'ro', + isa => 'Str', + required => 1, + ); + + has 'irssi_homedir' + => ( + is => 'ro', + isa => 'Str', + required => 1, + ); + + has 'terminal_width' + => ( + is => 'ro', + isa => 'Int', + required => 1, + default => 80, + ); + + has 'terminal_height' + => ( + is => 'ro', + isa => 'Int', + required => 1, + default => 24, + ); + + has 'logfile' + => ( + is => 'ro', + isa => 'Str', + required => 1, + default => 'irssi-test.log', + ); + + has '_logfile_fh' + => ( + is => 'ro', + isa => 'IO::File', + required => 1, + lazy => 1, + builder => '_build_logfile_fh', + ); + + + method _build_logfile_fh { + my $fh = IO::File->new($self->logfile, 'w'); + die "Couldn't open $logfile for writing: $!" unless defined $fh; + $fh->autoflush(1); + + return $fh; + } + + + + + + method log (Str $msg) { + say $self->_logfile_fh $msg; + } +} +__END__ + +=head1 NAME + +Test::Irssi + +=head1 ABSTRACT + +Abstract goes here + +=head1 SYNOPSIS + +blah blah blah diff --git a/testing/t/001-use.t b/testing/t/001-use.t new file mode 100755 index 0000000..60f1bb9 --- /dev/null +++ b/testing/t/001-use.t @@ -0,0 +1,25 @@ +#!/usr/bin/env perl + +use strict; +use warnings; + +use Test::More; +use Data::Dumper; + +BEGIN { + use_ok 'Test::Irssi'; +} + + +my $test = new_ok 'Test::Irssi'; +my @methods = qw/logfile terminal_height terminal_width irssi_homedir irssi_binary/; +can_ok($trie, @methodss); + +undef $test + +done_testing; + +__END__ + + + -- cgit v1.2.3