aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTom Feist <shabble@metavore.org>2011-02-21 01:58:22 +0000
committerTom Feist <shabble@metavore.org>2011-02-21 01:58:22 +0000
commit71c173db56f8e462fbaa8c0472788c04982478db (patch)
treecb47d04905cc897be7e3d90d39d0c971e7d5184d
parentmodified gitignore to ignore compilation products from modules/ subdirs (diff)
downloadirssi-scripts-71c173db56f8e462fbaa8c0472788c04982478db.tar.gz
irssi-scripts-71c173db56f8e462fbaa8c0472788c04982478db.zip
start of makign this a proper module
-rw-r--r--testing/Changes0
-rw-r--r--testing/MANIFEST8
-rw-r--r--testing/Makefile.PL30
-rw-r--r--testing/README0
-rwxr-xr-xtesting/auto-testing.pl49
-rw-r--r--testing/lib/Test/Irssi.pm90
-rwxr-xr-xtesting/t/001-use.t25
7 files changed, 183 insertions, 19 deletions
diff --git a/testing/Changes b/testing/Changes
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/testing/Changes
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 <shabble+cpan@metavore.org>',
+ 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
--- /dev/null
+++ b/testing/README
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__
+
+
+