You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucy.apache.org by ma...@apache.org on 2014/04/27 01:11:49 UTC

[lucy-commits] [19/54] [abbrv] Remove bundled Clownfish.

http://git-wip-us.apache.org/repos/asf/lucy/blob/1704c275/clownfish/compiler/perl/t/201-method.t
----------------------------------------------------------------------
diff --git a/clownfish/compiler/perl/t/201-method.t b/clownfish/compiler/perl/t/201-method.t
deleted file mode 100644
index d1b232e..0000000
--- a/clownfish/compiler/perl/t/201-method.t
+++ /dev/null
@@ -1,139 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License.  You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-use strict;
-use warnings;
-
-use Test::More tests => 30;
-
-BEGIN { use_ok('Clownfish::CFC::Model::Method') }
-use Clownfish::CFC::Parser;
-
-my $parser = Clownfish::CFC::Parser->new;
-$parser->parse('parcel Neato;')
-    or die "failed to process parcel_definition";
-
-my %args = (
-    parcel      => 'Neato',
-    return_type => $parser->parse('Obj*'),
-    class_name  => 'Neato::Foo',
-    class_cnick => 'Foo',
-    param_list  => $parser->parse('(Foo *self, int32_t count = 0)'),
-    macro_sym   => 'Return_An_Obj',
-);
-
-my $method = Clownfish::CFC::Model::Method->new(%args);
-isa_ok( $method, "Clownfish::CFC::Model::Method" );
-
-ok( $method->parcel, "parcel exposure by default" );
-
-eval {
-    my $death
-        = Clownfish::CFC::Model::Method->new( %args, extra_arg => undef );
-};
-like( $@, qr/extra_arg/, "Extra arg kills constructor" );
-
-eval {
-    Clownfish::CFC::Model::Method->new( %args, macro_sym => 'return_an_obj' );
-};
-like( $@, qr/macro_sym/, "Invalid macro_sym kills constructor" );
-
-my $dupe = Clownfish::CFC::Model::Method->new(%args);
-ok( $method->compatible($dupe), "compatible()" );
-
-my $macro_sym_differs
-    = Clownfish::CFC::Model::Method->new( %args, macro_sym => 'Eat' );
-ok( !$method->compatible($macro_sym_differs),
-    "different macro_sym spoils compatible()"
-);
-ok( !$macro_sym_differs->compatible($method), "... reversed" );
-
-my $extra_param = Clownfish::CFC::Model::Method->new( %args,
-    param_list => $parser->parse('(Foo *self, int32_t count = 0, int b)'), );
-ok( !$method->compatible($macro_sym_differs),
-    "extra param spoils compatible()"
-);
-ok( !$extra_param->compatible($method), "... reversed" );
-
-my $default_differs = Clownfish::CFC::Model::Method->new( %args,
-    param_list => $parser->parse('(Foo *self, int32_t count = 1)'), );
-ok( !$method->compatible($default_differs),
-    "different initial_value spoils compatible()"
-);
-ok( !$default_differs->compatible($method), "... reversed" );
-
-my $missing_default = Clownfish::CFC::Model::Method->new( %args,
-    param_list => $parser->parse('(Foo *self, int32_t count)'), );
-ok( !$method->compatible($missing_default),
-    "missing initial_value spoils compatible()"
-);
-ok( !$missing_default->compatible($method), "... reversed" );
-
-my $param_name_differs = Clownfish::CFC::Model::Method->new( %args,
-    param_list => $parser->parse('(Foo *self, int32_t countess)'), );
-ok( !$method->compatible($param_name_differs),
-    "different param name spoils compatible()"
-);
-ok( !$param_name_differs->compatible($method), "... reversed" );
-
-my $param_type_differs = Clownfish::CFC::Model::Method->new( %args,
-    param_list => $parser->parse('(Foo *self, uint32_t count)'), );
-ok( !$method->compatible($param_type_differs),
-    "different param type spoils compatible()"
-);
-ok( !$param_type_differs->compatible($method), "... reversed" );
-
-my $self_type_differs = Clownfish::CFC::Model::Method->new(
-    %args,
-    class_name  => 'Neato::Bar',
-    class_cnick => 'Bar',
-    param_list  => $parser->parse('(Bar *self, int32_t count = 0)'),
-);
-ok( $method->compatible($self_type_differs),
-    "different self type still compatible(), since can't test inheritance" );
-ok( $self_type_differs->compatible($method), "... reversed" );
-
-my $not_final = Clownfish::CFC::Model::Method->new(%args);
-my $final     = $not_final->finalize;
-
-eval { $method->override($final); };
-like( $@, qr/final/i, "Can't override final method" );
-
-ok( $not_final->compatible($final), "Finalize clones properly" );
-
-for my $meth_meth (qw( short_method_sym full_method_sym full_offset_sym)) {
-    eval { my $blah = $method->$meth_meth; };
-    like( $@, qr/invoker/, "$meth_meth requires invoker" );
-}
-
-$parser->set_class_name("Neato::Obj");
-$parser->set_class_cnick("Obj");
-isa_ok(
-    $parser->parse($_),
-    "Clownfish::CFC::Model::Method",
-    "method declaration: $_"
-    )
-    for (
-    'public int Do_Foo(Obj *self);',
-    'Obj* Gimme_An_Obj(Obj *self);',
-    'void Do_Whatever(Obj *self, uint32_t a_num, float real);',
-    'Foo* Fetch_Foo(Obj *self, int num);',
-    );
-
-for ( 'public final void The_End(Obj *self);', ) {
-    my $meth = $parser->parse($_);
-    ok( $meth && $meth->final, "final method: $_" );
-}
-

http://git-wip-us.apache.org/repos/asf/lucy/blob/1704c275/clownfish/compiler/perl/t/202-overridden_method.t
----------------------------------------------------------------------
diff --git a/clownfish/compiler/perl/t/202-overridden_method.t b/clownfish/compiler/perl/t/202-overridden_method.t
deleted file mode 100644
index 5e166ea..0000000
--- a/clownfish/compiler/perl/t/202-overridden_method.t
+++ /dev/null
@@ -1,46 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License.  You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-use strict;
-use warnings;
-
-use Test::More tests => 1;
-
-use Clownfish::CFC::Model::Method;
-use Clownfish::CFC::Parser;
-
-my $parser = Clownfish::CFC::Parser->new;
-$parser->parse('parcel Neato;')
-    or die "failed to process parcel_definition";
-
-my %args = (
-    return_type => $parser->parse('Obj*'),
-    class_name  => 'Neato::Foo',
-    class_cnick => 'Foo',
-    param_list  => $parser->parse('(Foo *self)'),
-    macro_sym   => 'Return_An_Obj',
-    parcel      => 'Neato',
-);
-
-my $orig      = Clownfish::CFC::Model::Method->new(%args);
-my $overrider = Clownfish::CFC::Model::Method->new(
-    %args,
-    param_list  => $parser->parse('(FooJr *self)'),
-    class_name  => 'Neato::Foo::FooJr',
-    class_cnick => 'FooJr'
-);
-$overrider->override($orig);
-ok( !$overrider->novel, "A Method which overrides another is not 'novel'" );
-

http://git-wip-us.apache.org/repos/asf/lucy/blob/1704c275/clownfish/compiler/perl/t/203-final_method.t
----------------------------------------------------------------------
diff --git a/clownfish/compiler/perl/t/203-final_method.t b/clownfish/compiler/perl/t/203-final_method.t
deleted file mode 100644
index 8829f41..0000000
--- a/clownfish/compiler/perl/t/203-final_method.t
+++ /dev/null
@@ -1,40 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License.  You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-use strict;
-use warnings;
-
-use Test::More tests => 2;
-
-use Clownfish::CFC::Parser;
-
-my $parser = Clownfish::CFC::Parser->new;
-$parser->parse('parcel Neato;')
-    or die "failed to process parcel_definition";
-
-my %args = (
-    return_type => $parser->parse('Obj*'),
-    class_name  => 'Neato::Foo',
-    class_cnick => 'Foo',
-    param_list  => $parser->parse('(Foo* self)'),
-    macro_sym   => 'Return_An_Obj',
-    parcel      => 'Neato',
-);
-
-my $not_final_method = Clownfish::CFC::Model::Method->new(%args);
-my $final_method     = $not_final_method->finalize;
-ok( !$not_final_method->final, "not final by default" );
-ok( $final_method->final,      "finalize" );
-

http://git-wip-us.apache.org/repos/asf/lucy/blob/1704c275/clownfish/compiler/perl/t/300-variable.t
----------------------------------------------------------------------
diff --git a/clownfish/compiler/perl/t/300-variable.t b/clownfish/compiler/perl/t/300-variable.t
deleted file mode 100644
index a5f33be..0000000
--- a/clownfish/compiler/perl/t/300-variable.t
+++ /dev/null
@@ -1,86 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License.  You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-use strict;
-use warnings;
-
-use Test::More tests => 13;
-
-BEGIN { use_ok('Clownfish::CFC::Model::Variable') }
-
-my $parser = Clownfish::CFC::Parser->new;
-$parser->parse('parcel Neato;')
-    or die "failed to process parcel_definition";
-
-sub new_type { $parser->parse(shift) }
-
-eval {
-    my $death = Clownfish::CFC::Model::Variable->new(
-        micro_sym => 'foo',
-        type      => new_type('int'),
-        extra_arg => undef,
-    );
-};
-like( $@, qr/extra_arg/, "Extra arg kills constructor" );
-
-eval {
-    my $death = Clownfish::CFC::Model::Variable->new( micro_sym => 'foo' );
-};
-like( $@, qr/type/, "type is required" );
-eval {
-    my $death
-        = Clownfish::CFC::Model::Variable->new( type => new_type('int32_t') );
-};
-like( $@, qr/micro_sym/, "micro_sym is required" );
-
-my $var = Clownfish::CFC::Model::Variable->new(
-    micro_sym => 'foo',
-    type      => new_type('float*')
-);
-$var->resolve_type([]);
-is( $var->local_c,           'float* foo',  "local_c" );
-is( $var->local_declaration, 'float* foo;', "declaration" );
-ok( $var->local, "default to local access" );
-
-$var = Clownfish::CFC::Model::Variable->new(
-    micro_sym => 'foo',
-    type      => new_type('float[1]')
-);
-$var->resolve_type([]);
-is( $var->local_c, 'float foo[1]',
-    "to_c appends array to var name rather than type specifier" );
-
-my $foo_class = $parser->parse("class Foo {}");
-$var = Clownfish::CFC::Model::Variable->new(
-    parcel      => 'Neato',
-    micro_sym   => 'foo',
-    type        => new_type("Foo*"),
-    class_name  => 'Crustacean::Lobster::LobsterClaw',
-    class_cnick => 'LobClaw',
-);
-$var->resolve_type([ $foo_class ]);
-is( $var->global_c, 'neato_Foo* neato_LobClaw_foo', "global_c" );
-
-isa_ok(
-    $parser->parse($_),
-    "Clownfish::CFC::Model::Variable",
-    "var_declaration_statement: $_"
-    )
-    for (
-    'int foo;',
-    'inert Obj *obj;',
-    'public inert int32_t **foo;',
-    'Dog *fido;'
-    );

http://git-wip-us.apache.org/repos/asf/lucy/blob/1704c275/clownfish/compiler/perl/t/301-param_list.t
----------------------------------------------------------------------
diff --git a/clownfish/compiler/perl/t/301-param_list.t b/clownfish/compiler/perl/t/301-param_list.t
deleted file mode 100644
index b315e9a..0000000
--- a/clownfish/compiler/perl/t/301-param_list.t
+++ /dev/null
@@ -1,57 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License.  You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-use strict;
-use warnings;
-
-use Test::More tests => 13;
-
-BEGIN { use_ok('Clownfish::CFC::Model::ParamList') }
-
-my $parser = Clownfish::CFC::Parser->new;
-$parser->parse('parcel Neato;')
-    or die "failed to process parcel_definition";
-
-isa_ok(
-    $parser->parse($_),
-    "Clownfish::CFC::Model::Variable",
-    "param_variable: $_"
-) for ( 'uint32_t baz', 'String *stuff', 'float **ptr', );
-
-my $obj_class = $parser->parse("class Obj {}");
-
-my $param_list = $parser->parse("(Obj *self, int num)");
-$param_list->resolve_types([ $obj_class ]);
-isa_ok( $param_list, "Clownfish::CFC::Model::ParamList" );
-ok( !$param_list->variadic, "not variadic" );
-is( $param_list->to_c, 'neato_Obj* self, int num', "to_c" );
-is( $param_list->name_list, 'self, num', "name_list" );
-
-$param_list = $parser->parse("(Obj *self=NULL, int num, ...)");
-$param_list->resolve_types([ $obj_class ]);
-ok( $param_list->variadic, "variadic" );
-is_deeply(
-    $param_list->get_initial_values,
-    [ "NULL", undef ],
-    "initial_values"
-);
-is( $param_list->to_c, 'neato_Obj* self, int num, ...', "to_c" );
-is( $param_list->num_vars, 2, "num_vars" );
-isa_ok(
-    $param_list->get_variables->[0],
-    "Clownfish::CFC::Model::Variable",
-    "get_variables..."
-);
-

http://git-wip-us.apache.org/repos/asf/lucy/blob/1704c275/clownfish/compiler/perl/t/400-file_spec.t
----------------------------------------------------------------------
diff --git a/clownfish/compiler/perl/t/400-file_spec.t b/clownfish/compiler/perl/t/400-file_spec.t
deleted file mode 100644
index 246bf33..0000000
--- a/clownfish/compiler/perl/t/400-file_spec.t
+++ /dev/null
@@ -1,39 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License.  You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-use strict;
-use warnings;
-
-use Test::More tests => 4;
-
-use Clownfish::CFC::Model::FileSpec;
-
-my %args = (
-    source_dir  => 'Clownfish/_include',
-    path_part   => 'Stuff/Thing',
-);
-my $file_spec;
-
-$file_spec = Clownfish::CFC::Model::FileSpec->new(%args);
-is( $file_spec->get_source_dir, "Clownfish/_include", "get_source_dir" );
-is( $file_spec->get_path_part, "Stuff/Thing", "get_path_part" );
-ok( !$file_spec->included, "included default" );
-
-$file_spec = Clownfish::CFC::Model::FileSpec->new(
-    %args,
-    is_included => 1,
-);
-ok( $file_spec->included, "included" );
-

http://git-wip-us.apache.org/repos/asf/lucy/blob/1704c275/clownfish/compiler/perl/t/401-class.t
----------------------------------------------------------------------
diff --git a/clownfish/compiler/perl/t/401-class.t b/clownfish/compiler/perl/t/401-class.t
deleted file mode 100644
index 1c83a90..0000000
--- a/clownfish/compiler/perl/t/401-class.t
+++ /dev/null
@@ -1,274 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License.  You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-use strict;
-use warnings;
-
-use Test::More tests => 53;
-use Clownfish::CFC::Model::Class;
-use Clownfish::CFC::Parser;
-
-my $parser = Clownfish::CFC::Parser->new;
-
-my $thing = Clownfish::CFC::Model::Variable->new(
-    parcel     => 'Neato',
-    class_name => 'Foo',
-    type       => $parser->parse('Thing*'),
-    micro_sym  => 'thing',
-);
-my $widget = Clownfish::CFC::Model::Variable->new(
-    class_name => 'Widget',
-    type       => $parser->parse('Widget*'),
-    micro_sym  => 'widget',
-);
-my $tread_water = Clownfish::CFC::Model::Function->new(
-    parcel      => 'Neato',
-    class_name  => 'Foo',
-    return_type => $parser->parse('void'),
-    micro_sym   => 'tread_water',
-    param_list  => $parser->parse('()'),
-);
-my %foo_create_args = (
-    parcel     => 'Neato',
-    class_name => 'Foo',
-);
-
-my $foo = Clownfish::CFC::Model::Class->create(%foo_create_args);
-$foo->add_function($tread_water);
-$foo->add_member_var($thing);
-$foo->add_inert_var($widget);
-my $should_be_foo = Clownfish::CFC::Model::Class->fetch_singleton(
-    parcel     => 'Neato',
-    class_name => 'Foo',
-);
-is( $$foo, $$should_be_foo, "fetch_singleton" );
-
-eval { Clownfish::CFC::Model::Class->create(%foo_create_args) };
-like( $@, qr/two classes with name/i,
-      "Can't call create for the same class more than once" );
-eval {
-    Clownfish::CFC::Model::Class->create(
-        parcel     => 'Neato',
-        class_name => 'Other::Foo',
-    );
-};
-like( $@, qr/class name conflict/i,
-      "Can't create classes wth the same final component" );
-eval {
-    Clownfish::CFC::Model::Class->create(
-        parcel     => 'Neato',
-        class_name => 'Bar',
-        cnick      => 'Foo',
-    );
-};
-like( $@, qr/class nickname conflict/i,
-      "Can't create classes wth the same nickname" );
-
-my $foo_jr = Clownfish::CFC::Model::Class->create(
-    parcel            => 'Neato',
-    class_name        => 'Foo::FooJr',
-    parent_class_name => 'Foo',
-);
-
-is( $foo_jr->get_struct_sym,  'FooJr',       "struct_sym" );
-is( $foo_jr->full_struct_sym, 'neato_FooJr', "full_struct_sym" );
-
-my $file_spec = Clownfish::CFC::Model::FileSpec->new(
-    source_dir  => '.',
-    path_part   => 'Foo/FooJr',
-);
-my $final_foo = Clownfish::CFC::Model::Class->create(
-    parcel            => 'Neato',
-    class_name        => 'Foo::FooJr::FinalFoo',
-    parent_class_name => 'Foo::FooJr',
-    file_spec         => $file_spec,
-    final             => 1,
-);
-ok( $final_foo->final, "final" );
-is( $final_foo->include_h, 'Foo/FooJr.h', "inlude_h uses path_part" );
-is( $final_foo->get_parent_class_name, 'Foo::FooJr',
-    "get_parent_class_name" );
-
-$parser->parse("parcel Neato;");
-$parser->set_class_name("Foo");
-my $do_stuff = $parser->parse('void Do_Stuff(Foo *self);')
-    or die "parsing failure";
-$foo->add_method($do_stuff);
-
-$parser->set_class_name("InertFoo");
-my $inert_do_stuff = $parser->parse('void Do_Stuff(InertFoo *self);')
-    or die "parsing failure";
-$parser->set_class_name("");
-
-my %inert_args = (
-    parcel     => 'Neato',
-    class_name => 'InertFoo',
-    inert      => 1,
-);
-eval {
-    my $class = Clownfish::CFC::Model::Class->create(%inert_args);
-    $class->add_method($inert_do_stuff);
-};
-like(
-    $@,
-    qr/inert class/i,
-    "Error out on conflict between inert attribute and object method"
-);
-
-$foo->add_child($foo_jr);
-$foo_jr->add_child($final_foo);
-$foo->grow_tree;
-eval { $foo->grow_tree };
-like( $@, qr/grow_tree/, "call grow_tree only once." );
-eval { $foo_jr->add_method($do_stuff) };
-like( $@, qr/grow_tree/, "Forbid add_method after grow_tree." );
-
-is( ${ $foo_jr->get_parent },    $$foo,    "grow_tree, one level" );
-is( ${ $final_foo->get_parent }, $$foo_jr, "grow_tree, two levels" );
-is( ${ $foo->fresh_method("Do_Stuff") }, $$do_stuff, 'fresh_method' );
-is( ${ $foo_jr->method("Do_Stuff") },    $$do_stuff, "inherited method" );
-ok( !$foo_jr->fresh_method("Do_Stuff"),    'inherited method not "fresh"' );
-ok( $final_foo->method("Do_Stuff")->final, "Finalize inherited method" );
-ok( !$foo_jr->method("Do_Stuff")->final, "Don't finalize method in parent" );
-is_deeply( $foo->inert_vars,        [$widget],      "inert vars" );
-is_deeply( $foo->functions,         [$tread_water], "inert funcs" );
-is_deeply( $foo->methods,           [$do_stuff],    "methods" );
-is_deeply( $foo->fresh_methods,     [$do_stuff],    "fresh_methods" );
-is_deeply( $foo->fresh_member_vars, [$thing],       "fresh_member_vars" );
-is_deeply( $foo_jr->member_vars,    [$thing],       "inherit member vars" );
-is_deeply( $foo_jr->functions,         [], "don't inherit inert funcs" );
-is_deeply( $foo_jr->fresh_member_vars, [], "fresh_member_vars" );
-is_deeply( $foo_jr->inert_vars,        [], "don't inherit inert vars" );
-is_deeply( $final_foo->fresh_methods,  [], "fresh_methods" );
-
-is_deeply( $foo->tree_to_ladder, [ $foo, $foo_jr, $final_foo ],
-    'tree_to_ladder' );
-
-ok( $parser->parse("$_ class Iam$_ { }")->$_, "class_modifier: $_" )
-    for (qw( final inert ));
-
-is( $parser->parse("class Fu::$_ inherits $_ { }")->get_parent_class_name,
-    $_, "class_inheritance: $_" )
-    for ( 'Fooble', 'Foo::FooJr::FooIII' );
-
-is( $parser->parse("class MissingInherits { }")->get_parent_class_name,
-    "Clownfish::Obj", "class inherits from Clownfish::Obj by default" );
-
-my $class_content
-    = 'public class Foo::Foodie cnick Foodie inherits Foo { int num; }';
-my $class = $parser->parse($class_content);
-isa_ok( $class, "Clownfish::CFC::Model::Class", "class_declaration FooJr" );
-ok( ( scalar grep { $_->micro_sym eq 'num' } @{ $class->member_vars } ),
-    "parsed member var" );
-
-$class_content = q|
-    /**
-     * Bow wow.
-     *
-     * Wow wow wow.
-     */
-    public class Animal::Dog inherits Animal {
-        public inert Dog* init(Dog *self, String *name, String *fave_food);
-        inert uint32_t count();
-        inert uint64_t num_dogs;
-        public inert Dog* top_dog;
-
-        String  *name;
-        bool     likes_to_go_fetch;
-        ChewToy *squishy;
-        Owner   *mom;
-
-        void               Destroy(Dog *self);
-        public String*     Bark(Dog *self);
-        public void        Eat(Dog *self);
-        public void        Bite(Dog *self, Enemy *enemy);
-        public Thing      *Fetch(Dog *self, Thing *thing);
-        public final void  Bury(Dog *self, Bone *bone);
-        public abstract incremented nullable Thing*
-        Scratch(Dog *self);
-
-        int32_t[1]  flexible_array_at_end_of_struct;
-    }
-|;
-
-$class = $parser->parse($class_content);
-isa_ok( $class, "Clownfish::CFC::Model::Class", "class_declaration Dog" );
-ok( ( scalar grep { $_->micro_sym eq 'num_dogs' } @{ $class->inert_vars } ),
-    "parsed inert var" );
-ok( ( scalar grep { $_->micro_sym eq 'top_dog' } @{ $class->inert_vars } ),
-    "parsed public inert var" );
-ok( ( scalar grep { $_->micro_sym eq 'mom' } @{ $class->member_vars } ),
-    "parsed member var" );
-ok( ( scalar grep { $_->micro_sym eq 'squishy' } @{ $class->member_vars } ),
-    "parsed member var" );
-ok( ( scalar grep { $_->micro_sym eq 'init' } @{ $class->functions } ),
-    "parsed function" );
-ok( ( scalar grep { $_->micro_sym eq 'destroy' } @{ $class->methods } ),
-    "parsed parcel method" );
-ok( ( scalar grep { $_->micro_sym eq 'bury' } @{ $class->methods } ),
-    "parsed public method" );
-ok( ( scalar grep { $_->micro_sym eq 'scratch' } @{ $class->methods } ),
-    "parsed public abstract nullable method" );
-
-for my $method ( @{ $class->methods } ) {
-    if ( $method->micro_sym eq 'scratch' ) {
-        ok( $method->get_return_type->nullable,
-            "public abstract incremented nullable flagged as nullable" );
-    }
-}
-is( ( scalar grep { $_->public } @{ $class->methods } ),
-    6, "pass acl to Method constructor" );
-
-$class_content = qq|
-    inert class Rigor::Mortis cnick Mort {
-        inert void lie_still();
-    }|;
-$class = $parser->parse($class_content);
-isa_ok( $class, "Clownfish::CFC::Model::Class", "inert class_declaration" );
-ok( $class->inert, "inert modifier parsed and passed to constructor" );
-
-$class_content = qq|
-    final class Ultimo {
-        /** Throws an error.
-         */
-        void Say_Never(Ultimo *self);
-    }|;
-$class = $parser->parse($class_content);
-ok( $class->final, "final class_declaration" );
-
-Clownfish::CFC::Model::Class->_clear_registry();
-
-{
-    eval {
-        my $class = Clownfish::CFC::Model::Class->create(%foo_create_args);
-        my $inert = Clownfish::CFC::Model::Class->create(%inert_args);
-        $class->add_child($inert);
-    };
-    like( $@, qr/inert class/i, "inert class can't inherit" );
-
-    Clownfish::CFC::Model::Class->_clear_registry();
-}
-
-{
-    eval {
-        my $class = Clownfish::CFC::Model::Class->create(%foo_create_args);
-        my $inert = Clownfish::CFC::Model::Class->create(%inert_args);
-        $inert->add_child($class);
-    };
-    like( $@, qr/inert class/i, "can't inherit from inert class" );
-
-    Clownfish::CFC::Model::Class->_clear_registry();
-}
-

http://git-wip-us.apache.org/repos/asf/lucy/blob/1704c275/clownfish/compiler/perl/t/402-c_block.t
----------------------------------------------------------------------
diff --git a/clownfish/compiler/perl/t/402-c_block.t b/clownfish/compiler/perl/t/402-c_block.t
deleted file mode 100644
index 94fb50d..0000000
--- a/clownfish/compiler/perl/t/402-c_block.t
+++ /dev/null
@@ -1,36 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License.  You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-use strict;
-use warnings;
-
-use Test::More tests => 5;
-
-use Clownfish::CFC::Model::CBlock;
-use Clownfish::CFC::Parser;
-
-my $parser = Clownfish::CFC::Parser->new;
-
-my $block = Clownfish::CFC::Model::CBlock->new( contents => 'int foo;' );
-isa_ok( $block, "Clownfish::CFC::Model::CBlock" );
-is( $block->get_contents, 'int foo;', "get_contents" );
-eval { Clownfish::CFC::Model::CBlock->new };
-like( $@, qr/contents/, "content required" );
-
-$block = $parser->parse(qq| __C__\n#define FOO_BAR 1\n__END_C__  |);
-
-isa_ok( $block, "Clownfish::CFC::Model::CBlock" );
-is( $block->get_contents, "#define FOO_BAR 1\n", "parse embed_c" );
-

http://git-wip-us.apache.org/repos/asf/lucy/blob/1704c275/clownfish/compiler/perl/t/403-parcel.t
----------------------------------------------------------------------
diff --git a/clownfish/compiler/perl/t/403-parcel.t b/clownfish/compiler/perl/t/403-parcel.t
deleted file mode 100644
index c311987..0000000
--- a/clownfish/compiler/perl/t/403-parcel.t
+++ /dev/null
@@ -1,112 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License.  You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-use strict;
-use warnings;
-
-use Test::More tests => 18;
-use File::Spec::Functions qw( catfile );
-
-BEGIN { use_ok('Clownfish::CFC::Model::Parcel') }
-
-my $foo = Clownfish::CFC::Model::Parcel->new( name => "Foo" );
-isa_ok( $foo, "Clownfish::CFC::Model::Parcel", "new" );
-ok( !$foo->included, "not included" );
-$foo->register;
-
-my $same_name = Clownfish::CFC::Model::Parcel->new( name => "Foo" );
-eval { $same_name->register; };
-like( $@, qr/parcel .* already registered/i,
-      "can't register two parcels with the same name" );
-
-my $same_nick = Clownfish::CFC::Model::Parcel->new(
-    name  => "OtherFoo",
-    cnick => "Foo",
-);
-eval { $same_nick->register; };
-like( $@, qr/parcel with nickname .* already registered/i,
-      "can't register two parcels with the same nickname" );
-
-my $included_foo = Clownfish::CFC::Model::Parcel->new(
-    name        => "IncludedFoo",
-    is_included => 1,
-);
-ok( $included_foo->included, "included" );
-$included_foo->register;
-
-my $parcels = Clownfish::CFC::Model::Parcel->all_parcels;
-my @names = sort(map { $_->get_name } @$parcels);
-is_deeply( \@names, [ "Foo", "IncludedFoo" ], "all_parcels" );
-
-my $dependent_foo = Clownfish::CFC::Model::Parcel->new(
-    name        => "DependentFoo",
-    is_included => 1,
-);
-$dependent_foo->register;
-
-$foo->add_inherited_parcel($included_foo);
-$foo->add_dependent_parcel($dependent_foo);
-my @dep_names = sort(map { $_->get_name } @{ $foo->dependent_parcels });
-is_deeply( \@dep_names, [ "DependentFoo", "IncludedFoo" ],
-           "dependent_parcels" );
-my @inh_names = sort(map { $_->get_name } @{ $foo->inherited_parcels });
-is_deeply( \@inh_names, [ "IncludedFoo" ], "inherited_parcels" );
-
-my $json = qq|
-        {
-            "name": "Crustacean",
-            "nickname": "Crust",
-            "version": "v0.1.0"
-        }
-|;
-isa_ok(
-    Clownfish::CFC::Model::Parcel->new_from_json( json => $json ),
-    "Clownfish::CFC::Model::Parcel",
-    "new_from_json"
-);
-
-isa_ok(
-    Clownfish::CFC::Model::Parcel->new_from_file(
-        path => catfile(qw( t cfbase Animal.cfp )),
-    ),
-    "Clownfish::CFC::Model::Parcel",
-    "new_from_file"
-);
-
-# Register singleton.
-my $parcel = Clownfish::CFC::Model::Parcel->new(
-    name  => 'Crustacean',
-    cnick => 'Crust',
-);
-$parcel->register;
-is( $parcel->get_version->get_vstring, 'v0', "get_version" );
-
-my $thing = Clownfish::CFC::Model::Symbol->new(
-    micro_sym => 'sym',
-    exposure  => 'parcel',
-);
-is( $thing->get_prefix, '', 'get_prefix with no parcel' );
-is( $thing->get_Prefix, '', 'get_Prefix with no parcel' );
-is( $thing->get_PREFIX, '', 'get_PREFIx with no parcel' );
-
-$thing = Clownfish::CFC::Model::Symbol->new(
-    micro_sym => 'sym',
-    parcel    => 'Crustacean',
-    exposure  => 'parcel'
-);
-is( $thing->get_prefix, 'crust_', 'get_prefix with parcel' );
-is( $thing->get_Prefix, 'Crust_', 'get_Prefix with parcel' );
-is( $thing->get_PREFIX, 'CRUST_', 'get_PREFIx with parcel' );
-

http://git-wip-us.apache.org/repos/asf/lucy/blob/1704c275/clownfish/compiler/perl/t/404-file.t
----------------------------------------------------------------------
diff --git a/clownfish/compiler/perl/t/404-file.t b/clownfish/compiler/perl/t/404-file.t
deleted file mode 100644
index 11668c4..0000000
--- a/clownfish/compiler/perl/t/404-file.t
+++ /dev/null
@@ -1,99 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License.  You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-use strict;
-use warnings;
-
-use Test::More tests => 21;
-use File::Spec::Functions qw( catdir );
-
-use Clownfish::CFC::Model::File;
-use Clownfish::CFC::Parser;
-
-my $parser = Clownfish::CFC::Parser->new;
-
-my $parcel_declaration = "parcel Stuff;";
-my $class_content      = qq|
-    class Stuff::Thing {
-        Foo *foo;
-        Bar *bar;
-    }
-    class Foo {}
-    class Bar {}
-|;
-my $c_block = "__C__\nint foo;\n__END_C__\n";
-
-my $path_part = catdir(qw( Stuff Thing ));
-my $file_spec = Clownfish::CFC::Model::FileSpec->new(
-    source_dir  => '.',
-    path_part   => $path_part,
-);
-
-{
-    my $file
-        = $parser->_parse_file( "$parcel_declaration\n$class_content\n$c_block",
-        $file_spec );
-
-    is( $file->get_source_dir, ".", "get_source_dir" );
-    is( $file->get_path_part, $path_part, "get_path_part" );
-    ok( !$file->included, "included" );
-
-    my $guard_name = $file->guard_name;
-    is( $guard_name, "H_STUFF_THING", "guard_name" );
-    like( $file->guard_start, qr/$guard_name/, "guard_start" );
-    like( $file->guard_close, qr/$guard_name/,
-        "guard_close includes guard_name" );
-
-    ok( !$file->get_modified, "modified false at start" );
-    $file->set_modified(1);
-    ok( $file->get_modified, "set_modified, get_modified" );
-
-    my $path_sep = $^O =~ /^mswin/i ? '\\' : '/';
-    my $path_to_stuff_thing = join( $path_sep, qw( path to Stuff Thing ) );
-    is( $file->cfh_path('path/to'), "$path_to_stuff_thing.cfh", "cfh_path" );
-    is( $file->c_path('path/to'),   "$path_to_stuff_thing.c",   "c_path" );
-    is( $file->h_path('path/to'),   "$path_to_stuff_thing.h",   "h_path" );
-
-    my $classes = $file->classes;
-    is( scalar @$classes, 3, "classes() filters blocks" );
-    my $class = $classes->[0];
-    my ( $foo, $bar ) = @{ $class->member_vars };
-    $foo->resolve_type($classes);
-    $bar->resolve_type($classes);
-    is( $foo->get_type->get_specifier,
-        'stuff_Foo', 'file production picked up parcel def' );
-    is( $bar->get_type->get_specifier, 'stuff_Bar', 'parcel def is sticky' );
-
-    my $blocks = $file->blocks;
-    is( scalar @$blocks, 5, "all five blocks" );
-    isa_ok( $blocks->[0], "Clownfish::CFC::Model::Parcel" );
-    isa_ok( $blocks->[1], "Clownfish::CFC::Model::Class" );
-    isa_ok( $blocks->[2], "Clownfish::CFC::Model::Class" );
-    isa_ok( $blocks->[3], "Clownfish::CFC::Model::Class" );
-    isa_ok( $blocks->[4], "Clownfish::CFC::Model::CBlock" );
-
-    Clownfish::CFC::Model::Class->_clear_registry();
-}
-
-{
-    my $file = $parser->_parse_file( $class_content, $file_spec );
-    my ($class) = @{ $file->classes };
-    my ( $foo, $bar ) = @{ $class->member_vars };
-    is( $foo->get_type->get_specifier, 'Foo', 'file production resets parcel' );
-
-    Clownfish::CFC::Model::Class->_clear_registry();
-}
-
-

http://git-wip-us.apache.org/repos/asf/lucy/blob/1704c275/clownfish/compiler/perl/t/500-hierarchy.t
----------------------------------------------------------------------
diff --git a/clownfish/compiler/perl/t/500-hierarchy.t b/clownfish/compiler/perl/t/500-hierarchy.t
deleted file mode 100644
index 6c2a10c..0000000
--- a/clownfish/compiler/perl/t/500-hierarchy.t
+++ /dev/null
@@ -1,105 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License.  You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-use strict;
-use warnings;
-
-use Test::More tests => 21;
-
-use Clownfish::CFC::Model::Hierarchy;
-use Clownfish::CFC::Util qw( a_isa_b );
-use File::Spec::Functions qw( catdir catfile splitpath );
-use Fcntl;
-use File::Path qw( rmtree mkpath );
-
-my $base_dir = catdir(qw( t cfbase ));
-my %args = (
-    dest => catdir(qw( t cfdest )),
-);
-
-# Clean up.
-rmtree( $args{dest} );
-
-eval {
-    my $death
-        = Clownfish::CFC::Model::Hierarchy->new( %args, extra_arg => undef );
-};
-like( $@, qr/extra_arg/, "Extra arg kills constructor" );
-
-my $hierarchy = Clownfish::CFC::Model::Hierarchy->new(%args);
-isa_ok( $hierarchy, "Clownfish::CFC::Model::Hierarchy" );
-is( $hierarchy->get_dest, $args{dest}, "get_dest" );
-
-my $inc_dest = catfile( $args{dest}, "include" );
-is( $hierarchy->get_include_dest, $inc_dest, "get_include_dest" );
-
-my $src_dest = catfile( $args{dest}, "source" );
-is( $hierarchy->get_source_dest, $src_dest, "get_source_dest" );
-
-$hierarchy->add_source_dir($base_dir);
-is_deeply( $hierarchy->get_source_dirs, [ $base_dir ], "get_source_dirs" );
-
-$hierarchy->build;
-
-my @files = @{ $hierarchy->files };
-is( scalar @files, 3, "recursed and found all three files" );
-my %files;
-for my $file (@files) {
-    die "not a File" unless isa_ok( $file, "Clownfish::CFC::Model::File" );
-    ok( !$file->get_modified, "start off not modified" );
-    my ($class) = grep {
-        a_isa_b( $_, "Clownfish::CFC::Model::Class" )
-        && $_->get_class_name ne 'Clownfish::Obj'
-    } @{ $file->blocks };
-    die "no class" unless $class;
-    $files{ $class->get_class_name } = $file;
-}
-my $animal = $files{'Animal'}       or die "No Animal";
-my $dog    = $files{'Animal::Dog'}  or die "No Dog";
-my $util   = $files{'Animal::Util'} or die "No Util";
-
-my $classes = $hierarchy->ordered_classes;
-is( scalar @$classes, 4, "all classes" );
-for my $class (@$classes) {
-    die "not a Class" unless isa_ok( $class, "Clownfish::CFC::Model::Class" );
-}
-
-# Generate fake C files, with times set to one second ago.
-my $one_second_ago = time() - 1;
-for my $file (@files) {
-    my $h_path = $file->h_path( $inc_dest );
-    my ( undef, $dir, undef ) = splitpath($h_path);
-    mkpath($dir);
-    sysopen( my $fh, $h_path, O_CREAT | O_EXCL | O_WRONLY )
-        or die "Can't open '$h_path': $!";
-    print $fh "#include <stdio.h>\n";    # fake content.
-    close $fh or die "Can't close '$h_path': $!";
-    utime( $one_second_ago, $one_second_ago, $h_path )
-        or die "utime failed for '$h_path': $!";
-}
-
-my $path_to_animal_cf = $animal->cfh_path( $base_dir );
-utime( undef, undef, $path_to_animal_cf )
-    or die "utime for '$path_to_animal_cf' failed";    # touch
-
-$hierarchy->propagate_modified;
-
-ok( $animal->get_modified, "Animal modified" );
-ok( $dog->get_modified, "Parent's modification propagates to child's file" );
-ok( !$util->get_modified, "modification doesn't propagate to inert class" );
-
-# Clean up.
-rmtree( $args{dest} );
-

http://git-wip-us.apache.org/repos/asf/lucy/blob/1704c275/clownfish/compiler/perl/t/501-include_dir.t
----------------------------------------------------------------------
diff --git a/clownfish/compiler/perl/t/501-include_dir.t b/clownfish/compiler/perl/t/501-include_dir.t
deleted file mode 100644
index 8f16f4a..0000000
--- a/clownfish/compiler/perl/t/501-include_dir.t
+++ /dev/null
@@ -1,102 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License.  You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-use strict;
-use warnings;
-
-use Test::More tests => 24;
-
-use Clownfish::CFC::Model::Hierarchy;
-use File::Spec::Functions qw( catdir catfile splitpath );
-use File::Path qw( rmtree );
-
-my $base_dir = catdir(qw( t cfbase ));
-my $ext_dir  = catdir(qw( t cfext ));
-my $dest_dir = catdir(qw( t cfdest ));
-
-# One source, one include
-
-{
-    my $hierarchy = Clownfish::CFC::Model::Hierarchy->new(dest => $dest_dir);
-
-    $hierarchy->add_source_dir($ext_dir);
-    is_deeply( $hierarchy->get_source_dirs, [ $ext_dir ], "get_source_dirs" );
-
-    $hierarchy->add_include_dir($base_dir);
-    is_deeply( $hierarchy->get_include_dirs, [ $base_dir ],
-               "get_include_dirs" );
-
-    $hierarchy->build;
-
-    my $classes = $hierarchy->ordered_classes;
-    is( scalar @$classes, 5, "all classes" );
-    my $num_included = 0;
-    for my $class (@$classes) {
-        die "not a Class"
-            unless isa_ok( $class, "Clownfish::CFC::Model::Class" );
-
-        my $expect;
-
-        if ($class->get_class_name eq "Animal::Rottweiler") {
-            $expect = 0;
-            my $parent_name = $class->get_parent->get_class_name;
-            is( $parent_name, "Animal::Dog", "parent of included class" );
-        }
-        else {
-            $expect = 1;
-        }
-
-        my $included = $class->included ? 1 : 0;
-        ++$num_included if $included;
-
-        is( $included, $expect, "included" );
-    }
-    is( $num_included, 4, "included class count" );
-
-    Clownfish::CFC::Model::Class->_clear_registry();
-    Clownfish::CFC::Model::Parcel->reap_singletons();
-}
-
-# Two sources
-
-{
-    my $hierarchy = Clownfish::CFC::Model::Hierarchy->new(dest => $dest_dir);
-
-    $hierarchy->add_source_dir($base_dir);
-    $hierarchy->add_source_dir($ext_dir);
-    is_deeply( $hierarchy->get_source_dirs, [ $base_dir, $ext_dir ],
-               "get_source_dirs" );
-    is_deeply( $hierarchy->get_include_dirs, [], "get_include_dirs" );
-
-    $hierarchy->build;
-
-    my $classes = $hierarchy->ordered_classes;
-    is( scalar @$classes, 5, "all classes" );
-    for my $class (@$classes) {
-        die "not a Class" unless isa_ok( $class, "Clownfish::CFC::Model::Class" );
-
-        if ($class->get_class_name eq "Animal::Rottweiler") {
-            my $parent_name = $class->get_parent->get_class_name;
-            is( $parent_name, "Animal::Dog", "parent of class from second source" );
-        }
-    }
-
-    Clownfish::CFC::Model::Class->_clear_registry();
-    Clownfish::CFC::Model::Parcel->reap_singletons();
-}
-
-# Clean up.
-rmtree($dest_dir);
-

http://git-wip-us.apache.org/repos/asf/lucy/blob/1704c275/clownfish/compiler/perl/t/502-clash.t
----------------------------------------------------------------------
diff --git a/clownfish/compiler/perl/t/502-clash.t b/clownfish/compiler/perl/t/502-clash.t
deleted file mode 100644
index ae64da1..0000000
--- a/clownfish/compiler/perl/t/502-clash.t
+++ /dev/null
@@ -1,115 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License.  You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-use strict;
-use warnings;
-
-use Test::More tests => 5;
-
-use Clownfish::CFC::Model::Hierarchy;
-use File::Spec::Functions qw( catdir catfile splitpath );
-use File::Path qw( rmtree );
-
-my $base_dir        = catdir(qw( t cfbase ));
-my $ext_dir         = catdir(qw( t cfext ));
-my $dest_dir        = catdir(qw( t cfdest ));
-my $class_clash_dir = catdir(qw( t cfclash class ));
-my $file_clash_dir  = catdir(qw( t cfclash file ));
-
-{
-    my $hierarchy = Clownfish::CFC::Model::Hierarchy->new(dest => $dest_dir);
-
-    $hierarchy->add_source_dir($base_dir);
-    $hierarchy->add_source_dir($file_clash_dir);
-
-    eval { $hierarchy->build; };
-
-    my $filename = catfile(qw( Animal Dog.cfh ));
-    like( $@, qr/File \Q$filename\E already registered/,
-          "source/source filename clash" );
-
-    Clownfish::CFC::Model::Class->_clear_registry();
-    Clownfish::CFC::Model::Parcel->reap_singletons();
-}
-
-{
-    my $hierarchy = Clownfish::CFC::Model::Hierarchy->new(dest => $dest_dir);
-
-    $hierarchy->add_source_dir($class_clash_dir);
-    $hierarchy->add_include_dir($base_dir);
-
-    eval { $hierarchy->build; };
-
-    like( $@, qr/Two classes with name/, "source/include class name clash" );
-
-    Clownfish::CFC::Model::Class->_clear_registry();
-    Clownfish::CFC::Model::Parcel->reap_singletons();
-}
-
-{
-    my $hierarchy = Clownfish::CFC::Model::Hierarchy->new(dest => $dest_dir);
-
-    $hierarchy->add_source_dir($base_dir);
-    $hierarchy->add_include_dir($file_clash_dir);
-
-    $hierarchy->build;
-
-    my $classes = $hierarchy->ordered_classes;
-    is( scalar @$classes, 4, "source/include filename clash" );
-
-    Clownfish::CFC::Model::Class->_clear_registry();
-    Clownfish::CFC::Model::Parcel->reap_singletons();
-}
-
-# Parcel/class include mismatch
-
-my $foo_dir = catdir(qw( t cfclash foo ));
-my $bar_dir = catdir(qw( t cfclash bar ));
-
-{
-    my $hierarchy = Clownfish::CFC::Model::Hierarchy->new(dest => $dest_dir);
-
-    $hierarchy->add_source_dir($foo_dir);
-    $hierarchy->add_include_dir($bar_dir);
-    $hierarchy->add_include_dir($base_dir);
-
-    eval { $hierarchy->build; };
-
-    like( $@, qr/Class .* from include dir .* parcel .* from source dir/,
-          "included class with source parcel" );
-
-    Clownfish::CFC::Model::Class->_clear_registry();
-    Clownfish::CFC::Model::Parcel->reap_singletons();
-}
-
-{
-    my $hierarchy = Clownfish::CFC::Model::Hierarchy->new(dest => $dest_dir);
-
-    $hierarchy->add_source_dir($bar_dir);
-    $hierarchy->add_include_dir($foo_dir);
-    $hierarchy->add_include_dir($base_dir);
-
-    eval { $hierarchy->build; };
-
-    like( $@, qr/Class .* from source dir .* parcel .* from include dir/,
-          "source class with included parcel" );
-
-    Clownfish::CFC::Model::Class->_clear_registry();
-    Clownfish::CFC::Model::Parcel->reap_singletons();
-}
-
-# Clean up.
-rmtree($dest_dir);
-

http://git-wip-us.apache.org/repos/asf/lucy/blob/1704c275/clownfish/compiler/perl/t/600-parser.t
----------------------------------------------------------------------
diff --git a/clownfish/compiler/perl/t/600-parser.t b/clownfish/compiler/perl/t/600-parser.t
deleted file mode 100644
index 94dbed3..0000000
--- a/clownfish/compiler/perl/t/600-parser.t
+++ /dev/null
@@ -1,167 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License.  You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-use strict;
-use warnings;
-
-use Test::More tests => 87;
-
-BEGIN { use_ok('Clownfish::CFC::Parser') }
-
-my $parser = Clownfish::CFC::Parser->new;
-isa_ok( $parser, "Clownfish::CFC::Parser" );
-
-isa_ok(
-    $parser->parse("parcel Fish;"),
-    "Clownfish::CFC::Model::Parcel",
-    "parcel_definition"
-);
-
-# Set and leave parcel.
-my $registered = Clownfish::CFC::Model::Parcel->new(
-    name  => 'Crustacean',
-    cnick => 'Crust',
-);
-$registered->register;
-my $parcel = $parser->parse('parcel Crustacean;')
-    or die "failed to process parcel_definition";
-is( $$parcel, $$registered, "Fetch registered parcel" );
-is( ${ $parser->get_parcel },
-    $$parcel, "parcel_definition sets internal \$parcel var" );
-
-for (qw( foo _foo foo_yoo FOO Foo fOO f00 foo_foo_foo )) {
-    my $var = $parser->parse("int32_t $_;");
-    is( $var->micro_sym, $_, "identifier/declarator: $_" );
-}
-
-for (qw( void float uint32_t int64_t uint8_t bool )) {
-    my $var = $parser->parse("int32_t $_;");
-    ok( !defined($var), "reserved word not parsed as identifier: $_" );
-}
-
-isa_ok( $parser->parse("bool"),
-    "Clownfish::CFC::Model::Type", "Charmony integer specifier bool" );
-
-for (qw( ByteBuf Obj ANDMatcher )) {
-    my $class = $parser->parse("class $_ {}");
-    my $type  = $parser->parse("$_*");
-    $type->resolve([ $class ]);
-    is( $type->get_specifier, "crust_$_", "object_type_specifier $_" );
-}
-
-ok( $parser->parse("const char")->const, "type_qualifier const" );
-
-ok( $parser->parse("$_ inert int32_t foo;")->$_, "exposure_specifier $_" )
-    for qw( public );
-
-ok( $parser->parse("int32_t foo;")->private,
-    "exposure_specifier '' implicitly private" );
-
-isa_ok( $parser->parse($_), "Clownfish::CFC::Model::Type", "type $_" )
-    for ( 'const char *', 'Obj*', 'i32_t', 'char[]', 'long[1]', 'i64_t[30]' );
-
-is( $parser->parse("(int32_t foo = $_)")->get_initial_values->[0],
-    $_, "hex_constant: $_" )
-    for (qw( 0x1 0x0a 0xFFFFFFFF -0xFC ));
-
-is( $parser->parse("(int32_t foo = $_)")->get_initial_values->[0],
-    $_, "integer_constant: $_" )
-    for (qw( 1 -9999  0 10000 ));
-
-is( $parser->parse("(double foo = $_)")->get_initial_values->[0],
-    $_, "float_constant: $_" )
-    for (qw( 1.0 -9999.999  0.1 0.0 ));
-
-is( $parser->parse("(String *foo = $_)")->get_initial_values->[0],
-    $_, "string_literal: $_" )
-    for ( q|"blah"|, q|"blah blah"|, q|"\\"blah\\" \\"blah\\""| );
-
-my @composites = ( 'int[]', "i32_t **", "Foo **", "Foo ***", "const void *" );
-for my $composite (@composites) {
-    my $parsed = $parser->parse($composite);
-    ok( $parsed && $parsed->is_composite, "composite_type: $composite" );
-}
-
-my @object_types = ( 'Obj *', "incremented Foo*", "decremented String *" );
-for my $object_type (@object_types) {
-    my $parsed = $parser->parse($object_type);
-    ok( $parsed && $parsed->is_object, "object_type: $object_type" );
-}
-
-my %param_lists = (
-    '(int foo)'                 => 1,
-    '(Obj *foo, Foo **foo_ptr)' => 2,
-    '()'                        => 0,
-);
-while ( my ( $param_list, $num_params ) = each %param_lists ) {
-    my $parsed = $parser->parse($param_list);
-    isa_ok(
-        $parsed,
-        "Clownfish::CFC::Model::ParamList",
-        "param_list: $param_list"
-    );
-}
-ok( $parser->parse("(int foo, ...)")->variadic, "variadic param list" );
-my $param_list = $parser->parse(q|(int foo = 0xFF, char *bar ="blah")|);
-is_deeply(
-    $param_list->get_initial_values,
-    [ '0xFF', '"blah"' ],
-    "initial values"
-);
-
-my %sub_args = ( class => 'Stuff::Obj', cnick => 'Obj' );
-
-$parser->set_class_name('Stuff::Obj');
-$parser->set_class_cnick('Obj');
-ok( $parser->parse($_), "declaration statement: $_" )
-    for (
-    'public Foo* Spew_Foo(Obj *self, uint32_t *how_many);',
-    'public inert Hash *hash;',
-    );
-
-for (qw( Foo FooJr FooIII Foo4th )) {
-    my $class = $parser->parse("class $_ {}");
-    my $type  = $parser->parse("$_*");
-    $type->resolve([ $class ]);
-    is( $type->get_specifier, "crust_$_", "object_type_specifier: $_" )
-}
-Clownfish::CFC::Model::Class->_clear_registry();
-
-SKIP: {
-    skip( "Can't recover from bad specifier under flex/lemon parser", 6 );
-    ok( !$parser->parse("$_*"), "illegal object_type_specifier: $_" )
-        for (qw( foo fooBar Foo_Bar FOOBAR 1Foo 1FOO ));
-}
-
-is( $parser->parse("class $_ { }")->get_class_name, $_, "class_name: $_" )
-    for (qw( Foo Foo::FooJr Foo::FooJr::FooIII Foo::FooJr::FooIII::Foo4th ));
-
-SKIP: {
-    skip( "Can't recover from bad class name under flex/lemon parser", 6 );
-    ok( !$parser->parse("class $_ { }"), "illegal class_name: $_" )
-        for (qw( foo fooBar Foo_Bar FOOBAR 1Foo 1FOO ));
-}
-
-is( $parser->parse(qq|class Foodie$_ cnick $_ { }|)->get_cnick,
-    $_, "cnick: $_" )
-    for (qw( Food FF ));
-
-SKIP: {
-    skip( "Can't recover from bad cnick under flex/lemon parser", 3 );
-    is( !$parser->parse(qq|class Foodie$_ cnick $_ { }|),
-        "Illegal cnick: $_" )
-        for (qw( foo fOO 1Foo ));
-}
-

http://git-wip-us.apache.org/repos/asf/lucy/blob/1704c275/clownfish/compiler/perl/t/cfbase/Animal.cfh
----------------------------------------------------------------------
diff --git a/clownfish/compiler/perl/t/cfbase/Animal.cfh b/clownfish/compiler/perl/t/cfbase/Animal.cfh
deleted file mode 100644
index 46130b7..0000000
--- a/clownfish/compiler/perl/t/cfbase/Animal.cfh
+++ /dev/null
@@ -1,21 +0,0 @@
-/* Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-parcel Animal;
-
-class Clownfish::Obj { }
-
-abstract class Animal { }

http://git-wip-us.apache.org/repos/asf/lucy/blob/1704c275/clownfish/compiler/perl/t/cfbase/Animal.cfp
----------------------------------------------------------------------
diff --git a/clownfish/compiler/perl/t/cfbase/Animal.cfp b/clownfish/compiler/perl/t/cfbase/Animal.cfp
deleted file mode 100644
index e2b5ab5..0000000
--- a/clownfish/compiler/perl/t/cfbase/Animal.cfp
+++ /dev/null
@@ -1,4 +0,0 @@
-{
-    "name": "Animal",
-    "version": "v0.1.0"
-}

http://git-wip-us.apache.org/repos/asf/lucy/blob/1704c275/clownfish/compiler/perl/t/cfbase/Animal/Dog.cfh
----------------------------------------------------------------------
diff --git a/clownfish/compiler/perl/t/cfbase/Animal/Dog.cfh b/clownfish/compiler/perl/t/cfbase/Animal/Dog.cfh
deleted file mode 100644
index 6d54baa..0000000
--- a/clownfish/compiler/perl/t/cfbase/Animal/Dog.cfh
+++ /dev/null
@@ -1,28 +0,0 @@
-/* Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-parcel Animal;
-
-class Animal::Dog inherits Animal {
-    public inert incremented Dog*
-    new();
-
-    public inert Dog*
-    init(Dog *self);
-
-    public void
-    Bark(Dog *self);
-}

http://git-wip-us.apache.org/repos/asf/lucy/blob/1704c275/clownfish/compiler/perl/t/cfbase/Animal/Util.cfh
----------------------------------------------------------------------
diff --git a/clownfish/compiler/perl/t/cfbase/Animal/Util.cfh b/clownfish/compiler/perl/t/cfbase/Animal/Util.cfh
deleted file mode 100644
index f5688a5..0000000
--- a/clownfish/compiler/perl/t/cfbase/Animal/Util.cfh
+++ /dev/null
@@ -1,23 +0,0 @@
-/* Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-parcel Animal;
-
-inert class Animal::Util {
-    inert void
-    groom(Animal *animal);
-}
-

http://git-wip-us.apache.org/repos/asf/lucy/blob/1704c275/clownfish/compiler/perl/t/cfclash/bar/Bar.cfh
----------------------------------------------------------------------
diff --git a/clownfish/compiler/perl/t/cfclash/bar/Bar.cfh b/clownfish/compiler/perl/t/cfclash/bar/Bar.cfh
deleted file mode 100644
index 89e798e..0000000
--- a/clownfish/compiler/perl/t/cfclash/bar/Bar.cfh
+++ /dev/null
@@ -1,25 +0,0 @@
-/* Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-parcel Bar;
-
-public class Bar inherits Clownfish::Obj {
-    int var;
-
-    public void
-    Method(Bar *self);
-}
-

http://git-wip-us.apache.org/repos/asf/lucy/blob/1704c275/clownfish/compiler/perl/t/cfclash/bar/Bar.cfp
----------------------------------------------------------------------
diff --git a/clownfish/compiler/perl/t/cfclash/bar/Bar.cfp b/clownfish/compiler/perl/t/cfclash/bar/Bar.cfp
deleted file mode 100644
index e5868f6..0000000
--- a/clownfish/compiler/perl/t/cfclash/bar/Bar.cfp
+++ /dev/null
@@ -1,4 +0,0 @@
-{
-    "name": "Bar",
-    "version": "v1.0.0"
-}

http://git-wip-us.apache.org/repos/asf/lucy/blob/1704c275/clownfish/compiler/perl/t/cfclash/bar/Baz.cfh
----------------------------------------------------------------------
diff --git a/clownfish/compiler/perl/t/cfclash/bar/Baz.cfh b/clownfish/compiler/perl/t/cfclash/bar/Baz.cfh
deleted file mode 100644
index 00e4033..0000000
--- a/clownfish/compiler/perl/t/cfclash/bar/Baz.cfh
+++ /dev/null
@@ -1,25 +0,0 @@
-/* Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-parcel Foo;
-
-public class Baz inherits Clownfish::Obj {
-    int var;
-
-    public void
-    Method(Baz *self);
-}
-

http://git-wip-us.apache.org/repos/asf/lucy/blob/1704c275/clownfish/compiler/perl/t/cfclash/class/Animal/DogClash.cfh
----------------------------------------------------------------------
diff --git a/clownfish/compiler/perl/t/cfclash/class/Animal/DogClash.cfh b/clownfish/compiler/perl/t/cfclash/class/Animal/DogClash.cfh
deleted file mode 100644
index 3eba020..0000000
--- a/clownfish/compiler/perl/t/cfclash/class/Animal/DogClash.cfh
+++ /dev/null
@@ -1,28 +0,0 @@
-/* Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-parcel AnimalExtension;
-
-class Animal::Dog inherits Clownfish::Obj {
-    public inert incremented Dog*
-    new();
-
-    public inert Dog*
-    init(Dog *self);
-
-    public void
-    Bark(Dog *self);
-}

http://git-wip-us.apache.org/repos/asf/lucy/blob/1704c275/clownfish/compiler/perl/t/cfclash/class/AnimalExtension.cfp
----------------------------------------------------------------------
diff --git a/clownfish/compiler/perl/t/cfclash/class/AnimalExtension.cfp b/clownfish/compiler/perl/t/cfclash/class/AnimalExtension.cfp
deleted file mode 100644
index 76f31d3..0000000
--- a/clownfish/compiler/perl/t/cfclash/class/AnimalExtension.cfp
+++ /dev/null
@@ -1,5 +0,0 @@
-{
-    "name": "AnimalExtension",
-    "nickname": "AniExt",
-    "version": "v0.1.0"
-}

http://git-wip-us.apache.org/repos/asf/lucy/blob/1704c275/clownfish/compiler/perl/t/cfclash/file/Animal/Dog.cfh
----------------------------------------------------------------------
diff --git a/clownfish/compiler/perl/t/cfclash/file/Animal/Dog.cfh b/clownfish/compiler/perl/t/cfclash/file/Animal/Dog.cfh
deleted file mode 100644
index 1357109..0000000
--- a/clownfish/compiler/perl/t/cfclash/file/Animal/Dog.cfh
+++ /dev/null
@@ -1,28 +0,0 @@
-/* Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-parcel Animal;
-
-class Animal::AnotherDog inherits Animal {
-    public inert incremented AnotherDog*
-    new();
-
-    public inert AnotherDog*
-    init(AnotherDog *self);
-
-    public void
-    Bark(AnotherDog *self);
-}

http://git-wip-us.apache.org/repos/asf/lucy/blob/1704c275/clownfish/compiler/perl/t/cfclash/foo/Foo.cfh
----------------------------------------------------------------------
diff --git a/clownfish/compiler/perl/t/cfclash/foo/Foo.cfh b/clownfish/compiler/perl/t/cfclash/foo/Foo.cfh
deleted file mode 100644
index b770d8a..0000000
--- a/clownfish/compiler/perl/t/cfclash/foo/Foo.cfh
+++ /dev/null
@@ -1,25 +0,0 @@
-/* Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-parcel Foo;
-
-public class Foo inherits Clownfish::Obj {
-    int var;
-
-    public void
-    Method(Foo *self);
-}
-

http://git-wip-us.apache.org/repos/asf/lucy/blob/1704c275/clownfish/compiler/perl/t/cfclash/foo/Foo.cfp
----------------------------------------------------------------------
diff --git a/clownfish/compiler/perl/t/cfclash/foo/Foo.cfp b/clownfish/compiler/perl/t/cfclash/foo/Foo.cfp
deleted file mode 100644
index 2995169..0000000
--- a/clownfish/compiler/perl/t/cfclash/foo/Foo.cfp
+++ /dev/null
@@ -1,4 +0,0 @@
-{
-    "name": "Foo",
-    "version": "v1.0.0"
-}

http://git-wip-us.apache.org/repos/asf/lucy/blob/1704c275/clownfish/compiler/perl/t/cfext/Animal/Rottweiler.cfh
----------------------------------------------------------------------
diff --git a/clownfish/compiler/perl/t/cfext/Animal/Rottweiler.cfh b/clownfish/compiler/perl/t/cfext/Animal/Rottweiler.cfh
deleted file mode 100644
index 9e78b58..0000000
--- a/clownfish/compiler/perl/t/cfext/Animal/Rottweiler.cfh
+++ /dev/null
@@ -1,31 +0,0 @@
-/* Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-parcel AnimalExtension;
-
-class Animal::Rottweiler inherits Animal::Dog {
-    public inert incremented Rottweiler*
-    new();
-
-    public inert Rottweiler*
-    init(Rottweiler *self);
-
-    public void
-    Bark(Rottweiler *self);
-
-    public void
-    Bite(Rottweiler *self);
-}

http://git-wip-us.apache.org/repos/asf/lucy/blob/1704c275/clownfish/compiler/perl/t/cfext/AnimalExtension.cfp
----------------------------------------------------------------------
diff --git a/clownfish/compiler/perl/t/cfext/AnimalExtension.cfp b/clownfish/compiler/perl/t/cfext/AnimalExtension.cfp
deleted file mode 100644
index 76f31d3..0000000
--- a/clownfish/compiler/perl/t/cfext/AnimalExtension.cfp
+++ /dev/null
@@ -1,5 +0,0 @@
-{
-    "name": "AnimalExtension",
-    "nickname": "AniExt",
-    "version": "v0.1.0"
-}

http://git-wip-us.apache.org/repos/asf/lucy/blob/1704c275/clownfish/compiler/perl/t/core/001-util.t
----------------------------------------------------------------------
diff --git a/clownfish/compiler/perl/t/core/001-util.t b/clownfish/compiler/perl/t/core/001-util.t
deleted file mode 100644
index b3ad862..0000000
--- a/clownfish/compiler/perl/t/core/001-util.t
+++ /dev/null
@@ -1,25 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License.  You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-use strict;
-use warnings;
-
-use Clownfish::CFC::Test;
-
-my $test   = Clownfish::CFC::Test->new;
-my $passed = $test->run_batch('Clownfish::CFC::Util');
-
-exit($passed ? 0 : 1);
-

http://git-wip-us.apache.org/repos/asf/lucy/blob/1704c275/clownfish/compiler/perl/t/core/050-docucomment.t
----------------------------------------------------------------------
diff --git a/clownfish/compiler/perl/t/core/050-docucomment.t b/clownfish/compiler/perl/t/core/050-docucomment.t
deleted file mode 100644
index 09ad252..0000000
--- a/clownfish/compiler/perl/t/core/050-docucomment.t
+++ /dev/null
@@ -1,25 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License.  You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-use strict;
-use warnings;
-
-use Clownfish::CFC::Test;
-
-my $test   = Clownfish::CFC::Test->new;
-my $passed = $test->run_batch('Clownfish::CFC::Model::DocuComment');
-
-exit($passed ? 0 : 1);
-

http://git-wip-us.apache.org/repos/asf/lucy/blob/1704c275/clownfish/compiler/perl/t/core/051-symbol.t
----------------------------------------------------------------------
diff --git a/clownfish/compiler/perl/t/core/051-symbol.t b/clownfish/compiler/perl/t/core/051-symbol.t
deleted file mode 100644
index 4209292..0000000
--- a/clownfish/compiler/perl/t/core/051-symbol.t
+++ /dev/null
@@ -1,25 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License.  You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-use strict;
-use warnings;
-
-use Clownfish::CFC::Test;
-
-my $test   = Clownfish::CFC::Test->new;
-my $passed = $test->run_batch('Clownfish::CFC::Model::Symbol');
-
-exit($passed ? 0 : 1);
-

http://git-wip-us.apache.org/repos/asf/lucy/blob/1704c275/clownfish/compiler/perl/t/core/052-version.t
----------------------------------------------------------------------
diff --git a/clownfish/compiler/perl/t/core/052-version.t b/clownfish/compiler/perl/t/core/052-version.t
deleted file mode 100644
index d5c2f63..0000000
--- a/clownfish/compiler/perl/t/core/052-version.t
+++ /dev/null
@@ -1,25 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License.  You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-use strict;
-use warnings;
-
-use Clownfish::CFC::Test;
-
-my $test   = Clownfish::CFC::Test->new;
-my $passed = $test->run_batch('Clownfish::CFC::Model::Version');
-
-exit($passed ? 0 : 1);
-

http://git-wip-us.apache.org/repos/asf/lucy/blob/1704c275/clownfish/compiler/perl/t/core/100-type.t
----------------------------------------------------------------------
diff --git a/clownfish/compiler/perl/t/core/100-type.t b/clownfish/compiler/perl/t/core/100-type.t
deleted file mode 100644
index f5a0e24..0000000
--- a/clownfish/compiler/perl/t/core/100-type.t
+++ /dev/null
@@ -1,25 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License.  You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-use strict;
-use warnings;
-
-use Clownfish::CFC::Test;
-
-my $test   = Clownfish::CFC::Test->new;
-my $passed = $test->run_batch('Clownfish::CFC::Model::Type');
-
-exit($passed ? 0 : 1);
-

http://git-wip-us.apache.org/repos/asf/lucy/blob/1704c275/clownfish/compiler/perl/t/core/200-function.t
----------------------------------------------------------------------
diff --git a/clownfish/compiler/perl/t/core/200-function.t b/clownfish/compiler/perl/t/core/200-function.t
deleted file mode 100644
index d70d2b8..0000000
--- a/clownfish/compiler/perl/t/core/200-function.t
+++ /dev/null
@@ -1,25 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License.  You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-use strict;
-use warnings;
-
-use Clownfish::CFC::Test;
-
-my $test   = Clownfish::CFC::Test->new;
-my $passed = $test->run_batch('Clownfish::CFC::Model::Function');
-
-exit($passed ? 0 : 1);
-

http://git-wip-us.apache.org/repos/asf/lucy/blob/1704c275/clownfish/compiler/perl/t/core/201-method.t
----------------------------------------------------------------------
diff --git a/clownfish/compiler/perl/t/core/201-method.t b/clownfish/compiler/perl/t/core/201-method.t
deleted file mode 100644
index 0f24c25..0000000
--- a/clownfish/compiler/perl/t/core/201-method.t
+++ /dev/null
@@ -1,25 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License.  You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-use strict;
-use warnings;
-
-use Clownfish::CFC::Test;
-
-my $test   = Clownfish::CFC::Test->new;
-my $passed = $test->run_batch('Clownfish::CFC::Model::Method');
-
-exit($passed ? 0 : 1);
-

http://git-wip-us.apache.org/repos/asf/lucy/blob/1704c275/clownfish/compiler/perl/t/core/300-variable.t
----------------------------------------------------------------------
diff --git a/clownfish/compiler/perl/t/core/300-variable.t b/clownfish/compiler/perl/t/core/300-variable.t
deleted file mode 100644
index c89f830..0000000
--- a/clownfish/compiler/perl/t/core/300-variable.t
+++ /dev/null
@@ -1,25 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License.  You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-use strict;
-use warnings;
-
-use Clownfish::CFC::Test;
-
-my $test   = Clownfish::CFC::Test->new;
-my $passed = $test->run_batch('Clownfish::CFC::Model::Variable');
-
-exit($passed ? 0 : 1);
-

http://git-wip-us.apache.org/repos/asf/lucy/blob/1704c275/clownfish/compiler/perl/t/core/301-param_list.t
----------------------------------------------------------------------
diff --git a/clownfish/compiler/perl/t/core/301-param_list.t b/clownfish/compiler/perl/t/core/301-param_list.t
deleted file mode 100644
index 23cdeb6..0000000
--- a/clownfish/compiler/perl/t/core/301-param_list.t
+++ /dev/null
@@ -1,25 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License.  You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-use strict;
-use warnings;
-
-use Clownfish::CFC::Test;
-
-my $test   = Clownfish::CFC::Test->new;
-my $passed = $test->run_batch('Clownfish::CFC::Model::ParamList');
-
-exit($passed ? 0 : 1);
-

http://git-wip-us.apache.org/repos/asf/lucy/blob/1704c275/clownfish/compiler/perl/t/core/400-file_spec.t
----------------------------------------------------------------------
diff --git a/clownfish/compiler/perl/t/core/400-file_spec.t b/clownfish/compiler/perl/t/core/400-file_spec.t
deleted file mode 100644
index c3d25b4..0000000
--- a/clownfish/compiler/perl/t/core/400-file_spec.t
+++ /dev/null
@@ -1,25 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License.  You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-use strict;
-use warnings;
-
-use Clownfish::CFC::Test;
-
-my $test   = Clownfish::CFC::Test->new;
-my $passed = $test->run_batch('Clownfish::CFC::Model::FileSpec');
-
-exit($passed ? 0 : 1);
-

http://git-wip-us.apache.org/repos/asf/lucy/blob/1704c275/clownfish/compiler/perl/t/core/401-class.t
----------------------------------------------------------------------
diff --git a/clownfish/compiler/perl/t/core/401-class.t b/clownfish/compiler/perl/t/core/401-class.t
deleted file mode 100644
index 6e3b1b2..0000000
--- a/clownfish/compiler/perl/t/core/401-class.t
+++ /dev/null
@@ -1,25 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License.  You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-use strict;
-use warnings;
-
-use Clownfish::CFC::Test;
-
-my $test   = Clownfish::CFC::Test->new;
-my $passed = $test->run_batch('Clownfish::CFC::Model::Class');
-
-exit($passed ? 0 : 1);
-

http://git-wip-us.apache.org/repos/asf/lucy/blob/1704c275/clownfish/compiler/perl/t/core/402-c_block.t
----------------------------------------------------------------------
diff --git a/clownfish/compiler/perl/t/core/402-c_block.t b/clownfish/compiler/perl/t/core/402-c_block.t
deleted file mode 100644
index f993aa4..0000000
--- a/clownfish/compiler/perl/t/core/402-c_block.t
+++ /dev/null
@@ -1,25 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License.  You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-use strict;
-use warnings;
-
-use Clownfish::CFC::Test;
-
-my $test   = Clownfish::CFC::Test->new;
-my $passed = $test->run_batch('Clownfish::CFC::Model::CBlock');
-
-exit($passed ? 0 : 1);
-

http://git-wip-us.apache.org/repos/asf/lucy/blob/1704c275/clownfish/compiler/perl/t/core/403-parcel.t
----------------------------------------------------------------------
diff --git a/clownfish/compiler/perl/t/core/403-parcel.t b/clownfish/compiler/perl/t/core/403-parcel.t
deleted file mode 100644
index 1258f6d..0000000
--- a/clownfish/compiler/perl/t/core/403-parcel.t
+++ /dev/null
@@ -1,25 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License.  You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-use strict;
-use warnings;
-
-use Clownfish::CFC::Test;
-
-my $test   = Clownfish::CFC::Test->new;
-my $passed = $test->run_batch('Clownfish::CFC::Model::Parcel');
-
-exit($passed ? 0 : 1);
-