module Test_debctrl = let source = "Source: libtest-distmanifest-perl\n" let source_result = { "Source" = "libtest-distmanifest-perl" } test (Debctrl.simple_entry Debctrl.simple_src_keyword ) get source = source_result test (Debctrl.simple_entry Debctrl.simple_src_keyword ) get "Maintainer: Debian Perl Group \n" = { "Maintainer" = "Debian Perl Group " } let uploaders = "Uploaders: foo@bar, Dominique Dumont ,\n" . " gregor herrmann \n" let uploaders_result = { "Uploaders" { "1" = "foo@bar"} { "2" = "Dominique Dumont " } { "3" = "gregor herrmann " } } test Debctrl.uploaders get uploaders = uploaders_result (* test package dependencies *) test Debctrl.version_depends get "( >= 5.8.8-12 )" = { "version" { "relation" = ">=" } { "number" = "5.8.8-12" } } test Debctrl.arch_depends get "[ !hurd-i386]" = { "arch" { "prefix" = "!" } { "name" = "hurd-i386" } } test Debctrl.arch_depends get "[ hurd-i386]" = { "arch" { "prefix" = "" } { "name" = "hurd-i386" } } let p_depends_test = "perl ( >= 5.8.8-12 ) [ !hurd-i386]" test Debctrl.package_depends get p_depends_test = { "perl" { "version" { "relation" = ">=" } { "number" = "5.8.8-12" } } { "arch" { "prefix" = "!" } { "name" = "hurd-i386" } } } let dependency_test = "perl-modules (>= 5.10) | libmodule-build-perl" test Debctrl.dependency get dependency_test = { "or" { "perl-modules" { "version" { "relation" = ">=" } { "number" = "5.10" } } } } { "or" { "libmodule-build-perl" } } test (Debctrl.dependency_list "Build-Depends-Indep") get "Build-Depends-Indep: perl (>= 5.8.8-12) [ !hurd-i386], \n" . " perl-modules (>= 5.10) | libmodule-build-perl,\n" . " libcarp-assert-more-perl,\n" . " libconfig-tiny-perl\n" = { "Build-Depends-Indep" { "and" { "or" { "perl" { "version" { "relation" = ">=" } { "number" = "5.8.8-12" } } { "arch" { "prefix" = "!" } { "name" = "hurd-i386" } } } } } { "and" { "or" { "perl-modules" { "version" { "relation" = ">=" } { "number" = "5.10" } } } } { "or" { "libmodule-build-perl" } } } { "and" { "or" { "libcarp-assert-more-perl" } } } { "and" { "or" { "libconfig-tiny-perl" } } } } test (Debctrl.dependency_list "Depends") get "Depends: ${perl:Depends}, ${misc:Depends},\n" ." libparse-recdescent-perl (>= 1.90.0)\n" = { "Depends" { "and" { "or" { "${perl:Depends}" }} } { "and" { "or" { "${misc:Depends}" }} } { "and" { "or" { "libparse-recdescent-perl" { "version" { "relation" = ">=" } { "number" = "1.90.0" } } } } } } let description = "Description: describe and edit configuration data\n" ." Config::Model enables [...] must:\n" ." - if the configuration data\n" ." .\n" ." With the elements above, (...) on ReadLine.\n" test Debctrl.description get description = { "Description" { "summary" = "describe and edit configuration data" } { "text" = "Config::Model enables [...] must:" } { "text" = " - if the configuration data" } { "text" = "." } { "text" = "With the elements above, (...) on ReadLine."} } let simple_bin_pkg1 = "Package: libconfig-model-perl\n" . "Architecture: all\n" . "Description: dummy1\n" . " dummy text 1\n" let simple_bin_pkg2 = "Package: libconfig-model2-perl\n" . "Architecture: all\n" . "Description: dummy2\n" . " dummy text 2\n" test Debctrl.src_entries get source.uploaders = { "Source" = "libtest-distmanifest-perl" } { "Uploaders" { "1" = "foo@bar"} { "2" = "Dominique Dumont " } { "3" = "gregor herrmann " } } test Debctrl.bin_entries get simple_bin_pkg1 = { "Package" = "libconfig-model-perl" } { "Architecture" = "all" } { "Description" { "summary" = "dummy1" } {"text" = "dummy text 1" } } let paragraph_simple = source . uploaders ."\n" . simple_bin_pkg1 . "\n" . simple_bin_pkg2 test Debctrl.lns get paragraph_simple = { "srcpkg" { "Source" = "libtest-distmanifest-perl" } { "Uploaders" { "1" = "foo@bar"} { "2" = "Dominique Dumont " } { "3" = "gregor herrmann " } } } { "binpkg" { "Package" = "libconfig-model-perl" } { "Architecture" = "all" } { "Description" { "summary" = "dummy1" } { "text" = "dummy text 1" } } } { "binpkg" { "Package" = "libconfig-model2-perl" } { "Architecture" = "all" } { "Description" { "summary" = "dummy2" } { "text" = "dummy text 2" } } } (* PUT TESTS *) test Debctrl.src_entries put uploaders after set "/Uploaders/1" "foo@bar" = uploaders test Debctrl.src_entries put uploaders after set "/Uploaders/1" "bar@bar" = "Uploaders: bar@bar, Dominique Dumont ,\n" . " gregor herrmann \n" test Debctrl.src_entries put uploaders after set "/Uploaders/4" "baz@bar" = "Uploaders: foo@bar, Dominique Dumont ,\n" . " gregor herrmann ,\n" . " baz@bar\n" test Debctrl.lns put (source."\nPackage: test\nDescription: foobar\n") after set "/srcpkg/Uploaders/1" "foo@bar" ; set "/srcpkg/Uploaders/2" "Dominique Dumont " ; set "/srcpkg/Uploaders/3" "gregor herrmann " ; set "/srcpkg/Build-Depends-Indep/and[1]/or/perl/version/relation" ">=" ; set "/srcpkg/Build-Depends-Indep/and[1]/or/perl/version/number" "5.8.8-12" ; set "/srcpkg/Build-Depends-Indep/and[1]/or/perl/arch/prefix" "!" ; set "/srcpkg/Build-Depends-Indep/and[1]/or/perl/arch/name" "hurd-i386" ; set "/srcpkg/Build-Depends-Indep/and[2]/or[1]/perl-modules/version/relation" ">=" ; set "/srcpkg/Build-Depends-Indep/and[2]/or[1]/perl-modules/version/number" "5.10" ; set "/srcpkg/Build-Depends-Indep/and[2]/or[2]/libmodule-build-perl" ""; set "/srcpkg/Build-Depends-Indep/and[3]/or/libcarp-assert-more-perl" "" ; set "/srcpkg/Build-Depends-Indep/and[4]/or/libconfig-tiny-perl" "" ; set "/binpkg[1]/Package" "libconfig-model-perl" ; (* must remove description because set cannot insert Archi before description *) rm "/binpkg[1]/Description" ; set "/binpkg/Architecture" "all" ; set "/binpkg[1]/Description/summary" "dummy1" ; set "/binpkg[1]/Description/text" "dummy text 1" ; set "/binpkg[2]/Package" "libconfig-model2-perl" ; set "/binpkg[2]/Architecture" "all" ; set "/binpkg[2]/Description/summary" "dummy2" ; set "/binpkg[2]/Description/text" "dummy text 2" = "Source: libtest-distmanifest-perl Uploaders: foo@bar, Dominique Dumont , gregor herrmann Build-Depends-Indep: perl ( >= 5.8.8-12 ) [ !hurd-i386 ], perl-modules ( >= 5.10 ) | libmodule-build-perl, libcarp-assert-more-perl, libconfig-tiny-perl Package: libconfig-model-perl Architecture: all Description: dummy1 dummy text 1 Package: libconfig-model2-perl Architecture: all Description: dummy2 dummy text 2 " (* Test Augeas' own control file *) let augeas_control = "Source: augeas Priority: optional Maintainer: Nicolas Valcárcel Scerpella (Canonical) Uploaders: Free Ekanayaka , Micah Anderson Build-Depends: debhelper (>= 5), autotools-dev, libreadline-dev, chrpath, naturaldocs (>= 1.51-1), texlive-latex-base Standards-Version: 3.9.2 Section: libs Homepage: http://augeas.net/ DM-Upload-Allowed: yes Package: augeas-tools Section: admin Architecture: any Depends: ${shlibs:Depends}, ${misc:Depends} Description: Augeas command line tools Augeas is a configuration editing tool. It parses configuration files in their native formats and transforms them into a tree. Configuration changes are made by manipulating this tree and saving it back into native config files. . This package provides command line tools based on libaugeas0: - augtool, a tool to manage configuration files. - augparse, a testing and debugging tool for augeas lenses. Package: libaugeas-dev Section: libdevel Architecture: any Depends: libaugeas0 (= ${binary:Version}), ${shlibs:Depends}, ${misc:Depends} Description: Development files for writing applications based on libaugeas0 Augeas is a configuration editing tool. It parses configuration files in their native formats and transforms them into a tree. Configuration changes are made by manipulating this tree and saving it back into native config files. . This package includes the development files to write programs using the Augeas API. " test DebCtrl.lns get augeas_control = { "srcpkg" { "Source" = "augeas" } { "Priority" = "optional" } { "Maintainer" = "Nicolas Valcárcel Scerpella (Canonical) " } { "Uploaders" { "1" = "Free Ekanayaka " } { "2" = "Micah Anderson " } } { "Build-Depends" { "and" { "or" { "debhelper" { "version" { "relation" = ">=" } { "number" = "5" } } } } } { "and" { "or" { "autotools-dev" } } } { "and" { "or" { "libreadline-dev" } } } { "and" { "or" { "chrpath" } } } { "and" { "or" { "naturaldocs" { "version" { "relation" = ">=" } { "number" = "1.51-1" } } } } } { "and" { "or" { "texlive-latex-base" } } } } { "Standards-Version" = "3.9.2" } { "Section" = "libs" } { "Homepage" = "http://augeas.net/" } { "DM-Upload-Allowed" = "yes" } } { "binpkg" { "Package" = "augeas-tools" } { "Section" = "admin" } { "Architecture" = "any" } { "Depends" { "and" { "or" { "${shlibs:Depends}" } } } { "and" { "or" { "${misc:Depends}" } } } } { "Description" { "summary" = "Augeas command line tools" } { "text" = "Augeas is a configuration editing tool. It parses configuration files in their" } { "text" = "native formats and transforms them into a tree. Configuration changes are made" } { "text" = "by manipulating this tree and saving it back into native config files." } { "text" = "." } { "text" = "This package provides command line tools based on libaugeas0:" } { "text" = "- augtool, a tool to manage configuration files." } { "text" = "- augparse, a testing and debugging tool for augeas lenses." } } } { "binpkg" { "Package" = "libaugeas-dev" } { "Section" = "libdevel" } { "Architecture" = "any" } { "Depends" { "and" { "or" { "libaugeas0" { "version" { "relation" = "=" } { "number" = "${binary:Version}" } } } } } { "and" { "or" { "${shlibs:Depends}" } } } { "and" { "or" { "${misc:Depends}" } } } } { "Description" { "summary" = "Development files for writing applications based on libaugeas0" } { "text" = "Augeas is a configuration editing tool. It parses configuration files in their" } { "text" = "native formats and transforms them into a tree. Configuration changes are made" } { "text" = "by manipulating this tree and saving it back into native config files." } { "text" = "." } { "text" = "This package includes the development files to write programs using the Augeas" } { "text" = "API." } } } (* Bug #267: Python module extensions, from Debian Python Policy, chapter 2 *) let python_control = "Source: graphite-web Maintainer: Will Pearson (Editure Key) Section: python Priority: optional Build-Depends: debhelper (>= 7), python-support (>= 0.8.4) Standards-Version: 3.7.2 XS-Python-Version: current Package: python-graphite-web Architecture: all Depends: ${python:Depends} XB-Python-Version: ${python:Versions} Provides: ${python:Provides} Description: Enterprise scalable realtime graphing " test Debctrl.lns get python_control = { "srcpkg" { "Source" = "graphite-web" } { "Maintainer" = "Will Pearson (Editure Key) " } { "Section" = "python" } { "Priority" = "optional" } { "Build-Depends" { "and" { "or" { "debhelper" { "version" { "relation" = ">=" } { "number" = "7" } } } } } { "and" { "or" { "python-support" { "version" { "relation" = ">=" } { "number" = "0.8.4" } } } } } } { "Standards-Version" = "3.7.2" } { "XS-Python-Version" = "current" } } { "binpkg" { "Package" = "python-graphite-web" } { "Architecture" = "all" } { "Depends" { "and" { "or" { "${python:Depends}" } } } } { "XB-Python-Version" = "${python:Versions}" } { "Provides" { "and" { "or" { "${python:Provides}" } } } } { "Description" { "summary" = "Enterprise scalable realtime graphing" } } }