nitx: add command tests
authorAlexandre Terrasa <alexandre@moz-code.org>
Thu, 26 Oct 2017 00:01:49 +0000 (20:01 -0400)
committerAlexandre Terrasa <alexandre@moz-code.org>
Mon, 18 Dec 2017 18:44:43 +0000 (13:44 -0500)
Signed-off-by: Alexandre Terrasa <alexandre@moz-code.org>

32 files changed:
src/doc/term/tests/test_term.nit [new file with mode: 0644]
src/doc/term/tests/test_term.sav/test_ancestors.res [new file with mode: 0644]
src/doc/term/tests/test_term.sav/test_ancestors_without_parents.res [new file with mode: 0644]
src/doc/term/tests/test_term.sav/test_call.res [new file with mode: 0644]
src/doc/term/tests/test_term.sav/test_children.res [new file with mode: 0644]
src/doc/term/tests/test_term.sav/test_code.res [new file with mode: 0644]
src/doc/term/tests/test_term.sav/test_comment.res [new file with mode: 0644]
src/doc/term/tests/test_term.sav/test_comment_no_fallback.res [new file with mode: 0644]
src/doc/term/tests/test_term.sav/test_comment_short.res [new file with mode: 0644]
src/doc/term/tests/test_term.sav/test_descendants.res [new file with mode: 0644]
src/doc/term/tests/test_term.sav/test_descendants_without_children.res [new file with mode: 0644]
src/doc/term/tests/test_term.sav/test_features.res [new file with mode: 0644]
src/doc/term/tests/test_term.sav/test_init.res [new file with mode: 0644]
src/doc/term/tests/test_term.sav/test_lin.res [new file with mode: 0644]
src/doc/term/tests/test_term.sav/test_lin_no_lin.res [new file with mode: 0644]
src/doc/term/tests/test_term.sav/test_mentity_conflict.res [new file with mode: 0644]
src/doc/term/tests/test_term.sav/test_mentity_empty.res [new file with mode: 0644]
src/doc/term/tests/test_term.sav/test_mentity_full_name.res [new file with mode: 0644]
src/doc/term/tests/test_term.sav/test_mentity_name.res [new file with mode: 0644]
src/doc/term/tests/test_term.sav/test_mentity_not_found.res [new file with mode: 0644]
src/doc/term/tests/test_term.sav/test_param.res [new file with mode: 0644]
src/doc/term/tests/test_term.sav/test_parents.res [new file with mode: 0644]
src/doc/term/tests/test_term.sav/test_return.res [new file with mode: 0644]
src/doc/term/tests/test_term.sav/test_search.res [new file with mode: 0644]
src/doc/term/tests/test_term.sav/test_search_no_query.res [new file with mode: 0644]
src/doc/term/tests/test_term.sav/test_term_catalog.res [new file with mode: 0644]
src/doc/term/tests/test_term.sav/test_term_catalog_contrib.res [new file with mode: 0644]
src/doc/term/tests/test_term.sav/test_term_catalog_maintain.res [new file with mode: 0644]
src/doc/term/tests/test_term.sav/test_term_catalog_search.res [new file with mode: 0644]
src/doc/term/tests/test_term.sav/test_term_catalog_stats.res [new file with mode: 0644]
src/doc/term/tests/test_term.sav/test_term_catalog_tag.res [new file with mode: 0644]
src/doc/term/tests/test_term.sav/test_term_catalog_tags.res [new file with mode: 0644]

diff --git a/src/doc/term/tests/test_term.nit b/src/doc/term/tests/test_term.nit
new file mode 100644 (file)
index 0000000..08530da
--- /dev/null
@@ -0,0 +1,202 @@
+# This file is part of NIT ( http://www.nitlanguage.org ).
+#
+# Licensed 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.
+
+module test_term is test
+
+import term
+import commands::test_commands_catalog
+
+# Nitunit test suite specific to commands
+class TestTerm
+       super TestCommandsCatalog
+       test
+
+       # CmdEntity
+
+       fun test_mentity_full_name is test do
+               var parser = new CommandParser(test_view, test_builder)
+               parser.execute("test_prog::Character", true)
+       end
+
+       fun test_mentity_name is test do
+               var parser = new CommandParser(test_view, test_builder)
+               parser.execute("Character", true)
+       end
+
+       fun test_mentity_empty is test do
+               var parser = new CommandParser(test_view, test_builder)
+               parser.execute("", true)
+       end
+
+       fun test_mentity_not_found is test do
+               var parser = new CommandParser(test_view, test_builder)
+               parser.execute("Caracter", true)
+       end
+
+       fun test_mentity_conflict is test do
+               var parser = new CommandParser(test_view, test_builder)
+               parser.execute("+", true)
+       end
+
+       # CmdDoc
+
+       fun test_comment is test do
+               var parser = new CommandParser(test_view, test_builder)
+               parser.execute("doc: Character", true)
+       end
+
+       fun test_comment_short is test do
+               var parser = new CommandParser(test_view, test_builder)
+               parser.execute("doc: Character | only-synopsis", true)
+       end
+
+       fun test_comment_no_fallback is test do
+               var parser = new CommandParser(test_view, test_builder)
+               parser.execute("doc: Character | no-fallback", true)
+       end
+
+       # CmdInheritance
+
+       fun test_ancestors is test do
+               var parser = new CommandParser(test_view, test_builder)
+               parser.execute("ancestors: Warrior | parents: true", true)
+       end
+
+       fun test_ancestors_without_parents is test do
+               var parser = new CommandParser(test_view, test_builder)
+               parser.execute("ancestors: Warrior | parents: false", true)
+       end
+
+       fun test_parents is test do
+               var parser = new CommandParser(test_view, test_builder)
+               parser.execute("parents: Warrior", true)
+       end
+
+       fun test_children is test do
+               var parser = new CommandParser(test_view, test_builder)
+               parser.execute("children: Career", true)
+       end
+
+       fun test_descendants is test do
+               var parser = new CommandParser(test_view, test_builder)
+               parser.execute("descendants: Career", true)
+       end
+
+       fun test_descendants_without_children is test do
+               var parser = new CommandParser(test_view, test_builder)
+               parser.execute("descendants: Career | children: false", true)
+       end
+
+       # CmdLin
+
+       fun test_lin is test do
+               var parser = new CommandParser(test_view, test_builder)
+               parser.execute("lin: init | limit: 2", true)
+       end
+
+       fun test_lin_no_lin is test do
+               var parser = new CommandParser(test_view, test_builder)
+               parser.execute("lin: test_prog", true)
+       end
+
+       # CmdSearch
+
+       fun test_search is test do
+               var parser = new CommandParser(test_view, test_builder)
+               parser.execute("search: Caracter | limit: 2", true)
+       end
+
+       fun test_search_no_query is test do
+               var parser = new CommandParser(test_view, test_builder)
+               parser.execute("search: | limit: 1", true)
+       end
+
+       # CmdDefs
+
+       fun test_features is test do
+               var parser = new CommandParser(test_view, test_builder)
+               parser.execute("defs: Character | limit: 3", true)
+       end
+
+       # CmdCode
+
+       fun test_code is test do
+               var parser = new CommandParser(test_view, test_builder)
+               parser.execute("code: Character", true)
+       end
+
+       # CmdUsage
+
+       fun test_init is test do
+               var parser = new CommandParser(test_view, test_builder)
+               parser.execute("new: Elf | limit: 2", true)
+       end
+
+       fun test_call is test do
+               var parser = new CommandParser(test_view, test_builder)
+               parser.execute("call: endurance_bonus", true)
+       end
+
+       fun test_return is test do
+               var parser = new CommandParser(test_view, test_builder)
+               parser.execute("return: Int | limit: 3", true)
+       end
+
+       fun test_param is test do
+               var parser = new CommandParser(test_view, test_builder)
+               parser.execute("param: Career | limit: 3", true)
+       end
+
+       # CmdCatalog
+
+       fun test_term_catalog is test do
+               var parser = new CommandParser(test_view, test_builder, test_catalog)
+               parser.execute("catalog:", true)
+       end
+
+       fun test_term_catalog_search is test do
+               var parser = new CommandParser(test_view, test_builder, test_catalog)
+               parser.execute("search: Caracter | limit: 3", true)
+       end
+
+       fun test_term_catalog_stats is test do
+               var parser = new CommandParser(test_view, test_builder, test_catalog)
+               parser.execute("stats:", true)
+       end
+
+       fun test_term_catalog_tags is test do
+               var parser = new CommandParser(test_view, test_builder, test_catalog)
+               parser.execute("tags:", true)
+       end
+
+       fun test_term_catalog_tag is test do
+               var parser = new CommandParser(test_view, test_builder, test_catalog)
+               parser.execute("tag: game", true)
+       end
+
+       fun test_term_catalog_maintain is test do
+               var parser = new CommandParser(test_view, test_builder, test_catalog)
+               parser.execute("maintain: Alexandre Terrasa", true)
+       end
+
+       fun test_term_catalog_contrib is test do
+               var parser = new CommandParser(test_view, test_builder, test_catalog)
+               parser.execute("contrib: Alexandre Terrasa", true)
+       end
+end
+
+redef class nitc::Location
+       # Avoid location diffs
+       redef fun to_s do return "test_location"
+end
diff --git a/src/doc/term/tests/test_term.sav/test_ancestors.res b/src/doc/term/tests/test_term.sav/test_ancestors.res
new file mode 100644 (file)
index 0000000..eeefbdf
--- /dev/null
@@ -0,0 +1,12 @@
+Ancestors for `test_prog::Warrior`:
+
+ + test_prog::Career
+   # A `Career` gives a characteristic bonus or malus to the character.
+   abstract class Career
+   test_location
+
+ + test_prog::Object
+   # Root of everything.
+   interface Object
+   test_location
+
diff --git a/src/doc/term/tests/test_term.sav/test_ancestors_without_parents.res b/src/doc/term/tests/test_term.sav/test_ancestors_without_parents.res
new file mode 100644 (file)
index 0000000..548c77c
--- /dev/null
@@ -0,0 +1,7 @@
+Ancestors for `test_prog::Warrior`:
+
+ + test_prog::Object
+   # Root of everything.
+   interface Object
+   test_location
+
diff --git a/src/doc/term/tests/test_term.sav/test_call.res b/src/doc/term/tests/test_term.sav/test_call.res
new file mode 100644 (file)
index 0000000..ac3c732
--- /dev/null
@@ -0,0 +1,11 @@
+Methods calling `test_prog::Career::endurance_bonus`:
+
+ * test_prog$Character$Object::init
+   redef init init(race: Race, name: String, age: Int, sex: Bool)
+   test_location
+
+ + test_prog$Character$total_endurance
+   # The actual endurance of the character.
+   fun total_endurance: Int
+   test_location
+
diff --git a/src/doc/term/tests/test_term.sav/test_children.res b/src/doc/term/tests/test_term.sav/test_children.res
new file mode 100644 (file)
index 0000000..7c3a626
--- /dev/null
@@ -0,0 +1,17 @@
+Children for `test_prog::Career`:
+
+ + test_prog::Alcoholic
+   # Alcoholics are good to nothing escept taking punches.
+   class Alcoholic
+   test_location
+
+ + test_prog::Magician
+   # Magicians know magic and how to use it.
+   class Magician
+   test_location
+
+ + test_prog::Warrior
+   # Warriors are good for fighting.
+   class Warrior
+   test_location
+
diff --git a/src/doc/term/tests/test_term.sav/test_code.res b/src/doc/term/tests/test_term.sav/test_code.res
new file mode 100644 (file)
index 0000000..0ce0299
--- /dev/null
@@ -0,0 +1,52 @@
+Code for `test_prog::Character`:
+
+~~~
+# Characters can be played by both the human or the machine.
+class Character
+
+       # The `Race` of the character.
+       var race: Race
+
+       # The current `Career` of the character.
+       # Returns `null` if character is unemployed.
+       var career: nullable Career = null is writable
+
+       fun quit do
+               career = null
+       end
+
+       var name: String
+       var age: Int
+       var sex: Bool
+
+       # The actual strength of the character.
+       #
+       # Returns `race.base_strength + career.strength_bonus` or just `race.base_strength` is unemployed.
+       fun total_strengh: Int do
+               if career != null then return race.base_strength + career.strength_bonus
+               return race.base_strength
+       end
+
+       # The actual endurance of the character.
+       fun total_endurance: Int do
+               if career != null then return race.base_endurance + career.endurance_bonus
+               return race.base_endurance
+       end
+
+       # The acutal intelligence of the character.
+       fun total_intelligence: Int do
+               if career != null then return race.base_intelligence + career.intelligence_bonus
+               return race.base_intelligence
+       end
+
+       # Maximum health of the character.
+       #
+       # Based on `total endurance * 10`.
+       fun max_health: Int do return total_endurance * 10
+
+       # The current `health` of the character.
+       #
+       # Starts at `max_health`.
+       var health: Int = max_health
+end
+~~~
diff --git a/src/doc/term/tests/test_term.sav/test_comment.res b/src/doc/term/tests/test_term.sav/test_comment.res
new file mode 100644 (file)
index 0000000..7dd578d
--- /dev/null
@@ -0,0 +1,8 @@
+Documentation for `test_prog::Character`:
+
+ + test_prog::Character
+   class Character
+   test_location
+
+   Characters can be played by both the human or the machine.
+
diff --git a/src/doc/term/tests/test_term.sav/test_comment_no_fallback.res b/src/doc/term/tests/test_term.sav/test_comment_no_fallback.res
new file mode 100644 (file)
index 0000000..54c0e88
--- /dev/null
@@ -0,0 +1,8 @@
+Warning: No documentation for `test_prog::Character`.
+
+Documentation for `test_prog::Character`:
+
+ + test_prog::Character
+   class Character
+   test_location
+
diff --git a/src/doc/term/tests/test_term.sav/test_comment_short.res b/src/doc/term/tests/test_term.sav/test_comment_short.res
new file mode 100644 (file)
index 0000000..7dd578d
--- /dev/null
@@ -0,0 +1,8 @@
+Documentation for `test_prog::Character`:
+
+ + test_prog::Character
+   class Character
+   test_location
+
+   Characters can be played by both the human or the machine.
+
diff --git a/src/doc/term/tests/test_term.sav/test_descendants.res b/src/doc/term/tests/test_term.sav/test_descendants.res
new file mode 100644 (file)
index 0000000..288bb38
--- /dev/null
@@ -0,0 +1,17 @@
+Descendants for `test_prog::Career`:
+
+ + test_prog::Alcoholic
+   # Alcoholics are good to nothing escept taking punches.
+   class Alcoholic
+   test_location
+
+ + test_prog::Magician
+   # Magicians know magic and how to use it.
+   class Magician
+   test_location
+
+ + test_prog::Warrior
+   # Warriors are good for fighting.
+   class Warrior
+   test_location
+
diff --git a/src/doc/term/tests/test_term.sav/test_descendants_without_children.res b/src/doc/term/tests/test_term.sav/test_descendants_without_children.res
new file mode 100644 (file)
index 0000000..04c1fd9
--- /dev/null
@@ -0,0 +1,3 @@
+Descendants for `test_prog::Career`:
+
+None.
diff --git a/src/doc/term/tests/test_term.sav/test_features.res b/src/doc/term/tests/test_term.sav/test_features.res
new file mode 100644 (file)
index 0000000..1a12c90
--- /dev/null
@@ -0,0 +1,16 @@
+Features for `test_prog::Character`:
+
+ - test_prog::character::Character::_age
+   private var _age: Int
+   test_location
+
+ - test_prog::character::Character::_career
+   # The current `Career` of the character.
+   private var _career: nullable Career
+   test_location
+
+ - test_prog::character::Character::_health
+   # The current `health` of the character.
+   private var _health: Int
+   test_location
+
diff --git a/src/doc/term/tests/test_term.sav/test_init.res b/src/doc/term/tests/test_term.sav/test_init.res
new file mode 100644 (file)
index 0000000..45ed0a3
--- /dev/null
@@ -0,0 +1,3 @@
+Methods intializing `test_prog::Elf`:
+
+None.
diff --git a/src/doc/term/tests/test_term.sav/test_lin.res b/src/doc/term/tests/test_term.sav/test_lin.res
new file mode 100644 (file)
index 0000000..23e94dc
--- /dev/null
@@ -0,0 +1,10 @@
+Linearization for `test_prog::Object::init`:
+
+ + test_prog$Object$init
+   init init
+   test_location
+
+ * test_prog$Race$Object::init
+   redef init init(base_strength: Int, base_endurance: Int, base_intelligence: Int)
+   test_location
+
diff --git a/src/doc/term/tests/test_term.sav/test_lin_no_lin.res b/src/doc/term/tests/test_term.sav/test_lin_no_lin.res
new file mode 100644 (file)
index 0000000..6543a17
--- /dev/null
@@ -0,0 +1,5 @@
+Warning: No linearization for `test_prog`
+
+Linearization for `test_prog`:
+
+None.
diff --git a/src/doc/term/tests/test_term.sav/test_mentity_conflict.res b/src/doc/term/tests/test_term.sav/test_mentity_conflict.res
new file mode 100644 (file)
index 0000000..b66c27f
--- /dev/null
@@ -0,0 +1,13 @@
+Multiple results found for `+`...
+
+Did you mean?
+
+ + test_prog::Int::+
+   intern fun +(i: Int): Int
+   test_location
+
+ + test_prog::Float::+
+   intern fun +(f: Float): Float
+   test_location
+
+
diff --git a/src/doc/term/tests/test_term.sav/test_mentity_empty.res b/src/doc/term/tests/test_term.sav/test_mentity_empty.res
new file mode 100644 (file)
index 0000000..eed622c
--- /dev/null
@@ -0,0 +1,17 @@
+No result found for ``...
+
+Did you mean?
+
+ + test_prog::Int::*
+   intern fun *(i: Int): Int
+   test_location
+
+ + test_prog::Float::*
+   intern fun *(f: Float): Float
+   test_location
+
+ + test_prog::Float::+
+   intern fun +(f: Float): Float
+   test_location
+
+
diff --git a/src/doc/term/tests/test_term.sav/test_mentity_full_name.res b/src/doc/term/tests/test_term.sav/test_mentity_full_name.res
new file mode 100644 (file)
index 0000000..7dd578d
--- /dev/null
@@ -0,0 +1,8 @@
+Documentation for `test_prog::Character`:
+
+ + test_prog::Character
+   class Character
+   test_location
+
+   Characters can be played by both the human or the machine.
+
diff --git a/src/doc/term/tests/test_term.sav/test_mentity_name.res b/src/doc/term/tests/test_term.sav/test_mentity_name.res
new file mode 100644 (file)
index 0000000..7dd578d
--- /dev/null
@@ -0,0 +1,8 @@
+Documentation for `test_prog::Character`:
+
+ + test_prog::Character
+   class Character
+   test_location
+
+   Characters can be played by both the human or the machine.
+
diff --git a/src/doc/term/tests/test_term.sav/test_mentity_not_found.res b/src/doc/term/tests/test_term.sav/test_mentity_not_found.res
new file mode 100644 (file)
index 0000000..ff87303
--- /dev/null
@@ -0,0 +1,20 @@
+No result found for `Caracter`...
+
+Did you mean?
+
+ + test_prog::Character
+   # Characters can be played by both the human or the machine.
+   class Character
+   test_location
+
+ + test_prog::character
+   # Characters are playable entity in the world.
+   module character
+   test_location
+
+ + test_prog::Career
+   # A `Career` gives a characteristic bonus or malus to the character.
+   abstract class Career
+   test_location
+
+
diff --git a/src/doc/term/tests/test_term.sav/test_param.res b/src/doc/term/tests/test_term.sav/test_param.res
new file mode 100644 (file)
index 0000000..5f65e7f
--- /dev/null
@@ -0,0 +1,7 @@
+Methods accepting `test_prog::Career` as parameter:
+
+ + test_prog::Character::career=
+   # The current `Career` of the character.
+   fun career=(career: nullable Career)
+   test_location
+
diff --git a/src/doc/term/tests/test_term.sav/test_parents.res b/src/doc/term/tests/test_term.sav/test_parents.res
new file mode 100644 (file)
index 0000000..814f320
--- /dev/null
@@ -0,0 +1,7 @@
+Parents for `test_prog::Warrior`:
+
+ + test_prog::Career
+   # A `Career` gives a characteristic bonus or malus to the character.
+   abstract class Career
+   test_location
+
diff --git a/src/doc/term/tests/test_term.sav/test_return.res b/src/doc/term/tests/test_term.sav/test_return.res
new file mode 100644 (file)
index 0000000..ce6c68f
--- /dev/null
@@ -0,0 +1,14 @@
+Methods returning `test_prog::Int`:
+
+ + test_prog::Int::*
+   intern fun *(i: Int): Int
+   test_location
+
+ + test_prog::Int::+
+   intern fun +(i: Int): Int
+   test_location
+
+ + test_prog::Int::-
+   intern fun -(i: Int): Int
+   test_location
+
diff --git a/src/doc/term/tests/test_term.sav/test_search.res b/src/doc/term/tests/test_term.sav/test_search.res
new file mode 100644 (file)
index 0000000..965f6dc
--- /dev/null
@@ -0,0 +1,12 @@
+Search results for `Caracter`:
+
+ + test_prog::Character
+   # Characters can be played by both the human or the machine.
+   class Character
+   test_location
+
+ + test_prog::character
+   # Characters are playable entity in the world.
+   module character
+   test_location
+
diff --git a/src/doc/term/tests/test_term.sav/test_search_no_query.res b/src/doc/term/tests/test_term.sav/test_search_no_query.res
new file mode 100644 (file)
index 0000000..591c48b
--- /dev/null
@@ -0,0 +1,6 @@
+Search results for ``:
+
+ + test_prog::Int::*
+   intern fun *(i: Int): Int
+   test_location
+
diff --git a/src/doc/term/tests/test_term.sav/test_term_catalog.res b/src/doc/term/tests/test_term.sav/test_term_catalog.res
new file mode 100644 (file)
index 0000000..79ba492
--- /dev/null
@@ -0,0 +1,11 @@
+Packages from catalog:
+
+ + test_prog
+   # Test program for model tools.
+   package test_prog
+   test_location
+
+ + excluded
+   package excluded
+   test_location
+
diff --git a/src/doc/term/tests/test_term.sav/test_term_catalog_contrib.res b/src/doc/term/tests/test_term.sav/test_term_catalog_contrib.res
new file mode 100644 (file)
index 0000000..60ce480
--- /dev/null
@@ -0,0 +1,7 @@
+Packages contributed by `Alexandre Terrasa`:
+
+ + test_prog
+   # Test program for model tools.
+   package test_prog
+   test_location
+
diff --git a/src/doc/term/tests/test_term.sav/test_term_catalog_maintain.res b/src/doc/term/tests/test_term.sav/test_term_catalog_maintain.res
new file mode 100644 (file)
index 0000000..4dfedb2
--- /dev/null
@@ -0,0 +1,11 @@
+Packages maintained by `Alexandre Terrasa`:
+
+ + test_prog
+   # Test program for model tools.
+   package test_prog
+   test_location
+
+ + excluded
+   package excluded
+   test_location
+
diff --git a/src/doc/term/tests/test_term.sav/test_term_catalog_search.res b/src/doc/term/tests/test_term.sav/test_term_catalog_search.res
new file mode 100644 (file)
index 0000000..ae5fe51
--- /dev/null
@@ -0,0 +1,17 @@
+Search results for `Caracter`:
+
+ + test_prog::Character
+   # Characters can be played by both the human or the machine.
+   class Character
+   test_location
+
+ + test_prog::character
+   # Characters are playable entity in the world.
+   module character
+   test_location
+
+ + test_prog::Career
+   # A `Career` gives a characteristic bonus or malus to the character.
+   abstract class Career
+   test_location
+
diff --git a/src/doc/term/tests/test_term.sav/test_term_catalog_stats.res b/src/doc/term/tests/test_term.sav/test_term_catalog_stats.res
new file mode 100644 (file)
index 0000000..fd8b8ba
--- /dev/null
@@ -0,0 +1,9 @@
+Catalog statistics:
+ * 2 packages
+ * 10 modules
+ * 75 methods
+ * 23 classes
+ * 471 lines of code
+ * 6 contributors
+ * 1 maintainers
+ * 2 tags
diff --git a/src/doc/term/tests/test_term.sav/test_term_catalog_tag.res b/src/doc/term/tests/test_term.sav/test_term_catalog_tag.res
new file mode 100644 (file)
index 0000000..143fd74
--- /dev/null
@@ -0,0 +1,7 @@
+Packages tagged with `game`:
+
+ + test_prog
+   # Test program for model tools.
+   package test_prog
+   test_location
+
diff --git a/src/doc/term/tests/test_term.sav/test_term_catalog_tags.res b/src/doc/term/tests/test_term.sav/test_term_catalog_tags.res
new file mode 100644 (file)
index 0000000..ced4b52
--- /dev/null
@@ -0,0 +1,4 @@
+Tags from catalog:
+
+ * game: 1 packages
+ * test: 1 packages