From 199f6cf527c2789dc8642eab262db30ec6e9afa5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Luis=20Guzm=C3=A1n?= <ark@switnet.org> Date: Mon, 20 Dec 2021 03:48:57 +0000 Subject: [PATCH] Trisquel distro-info for 10.0 --- .../DATA/distro-info/distro-info-util_c.patch | 119 ++++++++ helpers/DATA/distro-info/distro_info_py.patch | 67 +++++ .../distro-info/test-trisquel-distro-info | 282 ++++++++++++++++++ helpers/DATA/distro-info/test.pl | 120 ++++++++ helpers/DATA/distro-info/test_distro_info.py | 182 +++++++++++ helpers/make-distro-info | 56 ++++ 6 files changed, 826 insertions(+) create mode 100644 helpers/DATA/distro-info/distro-info-util_c.patch create mode 100644 helpers/DATA/distro-info/distro_info_py.patch create mode 100755 helpers/DATA/distro-info/test-trisquel-distro-info create mode 100755 helpers/DATA/distro-info/test.pl create mode 100644 helpers/DATA/distro-info/test_distro_info.py create mode 100644 helpers/make-distro-info diff --git a/helpers/DATA/distro-info/distro-info-util_c.patch b/helpers/DATA/distro-info/distro-info-util_c.patch new file mode 100644 index 00000000..690754ff --- /dev/null +++ b/helpers/DATA/distro-info/distro-info-util_c.patch @@ -0,0 +1,119 @@ +diff -Nru source/distro-info-util.c source_b/distro-info-util.c +--- source/distro-info-util.c 2019-03-07 13:33:56.000000000 -0600 ++++ source_b/distro-info-util.c 2021-12-17 09:47:58.217720979 -0600 +@@ -545,7 +545,7 @@ + #endif + " -a --all list all known versions\n" + " -d --devel latest development version\n" +-#ifdef UBUNTU ++#ifdef TRISQUEL + " --lts latest long term support (LTS) version\n" + #endif + #ifdef DEBIAN +@@ -553,9 +553,6 @@ + #endif + " -s --stable latest stable version\n" + " --supported list of all supported stable versions\n" +-#ifdef UBUNTU +- " --supported-esm list of all Ubuntu Advantage supported stable versions\n" +-#endif + #ifdef DEBIAN + " -t --testing current testing version\n" + #endif +@@ -573,16 +570,13 @@ + "--alias, " + #endif + "--all, --devel, " +-#ifdef UBUNTU ++#ifdef TRISQUEL + "--latest, --lts, " + #endif + #ifdef DEBIAN + "--oldstable, " + #endif + "--stable, --supported, " +-#ifdef UBUNTU +- "--supported-esm, " +-#endif + "--series, " + #ifdef DEBIAN + "--testing, " +@@ -611,7 +605,7 @@ + #ifdef DEBIAN + char *alias_codename = NULL; + #endif +-#ifdef UBUNTU ++#ifdef TRISQUEL + bool filter_latest = false; + #endif + +@@ -624,9 +618,6 @@ + {"devel", no_argument, NULL, 'd' }, + {"stable", no_argument, NULL, 's' }, + {"supported", no_argument, NULL, 'S' }, +-#ifdef UBUNTU +- {"supported-esm", no_argument, NULL, 'e' }, +-#endif + {"unsupported", no_argument, NULL, 'U' }, + {"codename", no_argument, NULL, 'c' }, + {"fullname", no_argument, NULL, 'f' }, +@@ -636,14 +627,14 @@ + {"oldstable", no_argument, NULL, 'o' }, + {"testing", no_argument, NULL, 't' }, + #endif +-#ifdef UBUNTU ++#ifdef TRISQUEL + {"latest", no_argument, NULL, 'l' }, + {"lts", no_argument, NULL, 'L' }, + #endif + {NULL, 0, NULL, '\0' } + }; + +-#ifdef UBUNTU ++#ifdef TRISQUEL + const char *short_options = "hadscrfly::"; + #endif + #ifdef DEBIAN +@@ -689,7 +680,7 @@ + case 'd': + selected_filters++; + filter_cb = filter_devel; +-#ifdef UBUNTU ++#ifdef TRISQUEL + select_cb = select_latest_created; + #endif + #ifdef DEBIAN +@@ -740,7 +731,7 @@ + free(date); + return EXIT_SUCCESS; + +-#ifdef UBUNTU ++#ifdef TRISQUEL + case 'l': + selected_filters++; + filter_latest = true; +@@ -782,15 +773,6 @@ + select_cb = NULL; + break; + +-#ifdef UBUNTU +- case 'e': +- // Only long option --supported-esm is used +- selected_filters++; +- filter_cb = filter_esm_supported; +- select_cb = NULL; +- break; +- +-#endif + #ifdef DEBIAN + case 't': + selected_filters++; +@@ -922,7 +904,7 @@ + selected = select_series(distro_list, series_name); + } else { + selected = get_distro(distro_list, date, filter_cb, select_cb); +-#ifdef UBUNTU ++#ifdef TRISQUEL + if(selected == NULL && filter_latest) { + selected = get_distro(distro_list, date, filter_stable, select_latest_release); + } diff --git a/helpers/DATA/distro-info/distro_info_py.patch b/helpers/DATA/distro-info/distro_info_py.patch new file mode 100644 index 00000000..d3cd5a96 --- /dev/null +++ b/helpers/DATA/distro-info/distro_info_py.patch @@ -0,0 +1,67 @@ +diff -Nru source/python/distro_info.py source_b/python/distro_info.py +--- source/python/distro_info.py 2019-03-07 13:33:56.000000000 -0600 ++++ source_b/python/distro_info.py 2021-12-17 15:44:54.509722643 -0600 +@@ -1,3 +1,4 @@ ++# Copyright (C) 2021, Trisquel GNU/Linux developers <trisquel-devel@listas.trisquel.info> + # Copyright (C) 2009-2012, Benjamin Drung <bdrung@debian.org> + # + # Permission to use, copy, modify, and/or distribute this software for any +@@ -12,7 +13,7 @@ + # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + +-"""provides information about Ubuntu's and Debian's distributions""" ++"""provides information about Trisquel's and Debian's distributions""" + + import csv + import datetime +@@ -83,7 +84,7 @@ + + class DistroInfo(object): + """Base class for distribution information. +- Use DebianDistroInfo or UbuntuDistroInfo instead of using this directly. ++ Use DebianDistroInfo or TrisquelDistroInfo instead of using this directly. + """ + + def __init__(self, distro): +@@ -237,14 +238,14 @@ + codename in ["unstable", "testing", "stable", "oldstable"]) + + +-class UbuntuDistroInfo(DistroInfo): +- """provides information about Ubuntu's distributions""" ++class TrisquelDistroInfo(DistroInfo): ++ """provides information about Trisquel's distributions""" + + def __init__(self): +- super(UbuntuDistroInfo, self).__init__("Ubuntu") ++ super(TrisquelDistroInfo, self).__init__("Trisquel") + + def lts(self, date=None, result="codename"): +- """Get latest long term support (LTS) Ubuntu distribution based on the ++ """Get latest long term support (LTS) Trisquel distribution based on the + given date.""" + if date is None: + date = self._date +@@ -262,7 +263,7 @@ + return "LTS" in distros[0].version + + def supported(self, date=None, result="codename"): +- """Get list of all supported Ubuntu distributions based on the given ++ """Get list of all supported Trisquel distributions based on the given + date.""" + if date is None: + date = self._date +@@ -270,12 +271,3 @@ + if date <= x.eol or + (x.eol_server is not None and date <= x.eol_server)] + return distros +- +- def supported_esm(self, date=None, result="codename"): +- """Get list of all ESM supported Ubuntu distributions based on the +- given date.""" +- if date is None: +- date = self._date +- distros = [self._format(result, x) for x in self._avail(date) +- if x.eol_esm is not None and date <= x.eol_esm] +- return distros diff --git a/helpers/DATA/distro-info/test-trisquel-distro-info b/helpers/DATA/distro-info/test-trisquel-distro-info new file mode 100755 index 00000000..d6ba8507 --- /dev/null +++ b/helpers/DATA/distro-info/test-trisquel-distro-info @@ -0,0 +1,282 @@ +#!/bin/sh + +# Copyright (C) 2021, Trisquel GNU/Linux developers <trisquel-devel@listas.trisquel.info> +# Copyright (C) 2012-2014, Benjamin Drung <bdrung@debian.org> +# +# Permission to use, copy, modify, and/or distribute this software for any +# purpose with or without fee is hereby granted, provided that the above +# copyright notice and this permission notice appear in all copies. +# +# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + +COMMAND="${0%/*}/trisquel-distro-info" + +. "${0%/*}/shunit2-helper-functions.sh" + +testAll() { + local result="toutanis +belenos +flidas +etiona" + local pattern=$(echo $result | sed "s/ /\\\\|/g") + success "--date 2019-07-07 --all | grep -w \"$pattern\"" "$result" + success "-a | grep -w \"$pattern\"" "$result" +} + +testDevel() { + success "--date 2019-01-10 --devel" "etiona" + success "--date 2017-05-10 -d --codename" "flidas" +} + +testLatest() { + success "--date 2014-01-10 --latest" "belenos" + success "--date 2015-05-10 -l --codename" "belenos" +} + +testLTS() { + success "--lts --date=2013-05-10" "toutanis" +} + +testStable() { + success "--date=2014-01-10 -c --stable" "toutanis" + success "--date=2019-01-10 -s" "flidas" +} + +testSupported() { + local result="belenos +flidas +etiona" + success "--date=2018-05-10 --supported" "$result" +} + +testUnsupported() { + local result="dwyn" + success "--date=2011-01-10 --unsupported" "$result" +} + +testFullname() { + success "--date=2013-08-10 --fullname --lts" \ + 'Trisquel GNU/Linux 6.0 LTS "Toutanis"' + success "--date=2013-08-10 --fullname --lts -y" \ + 'Trisquel GNU/Linux 6.0 LTS "Toutanis" -152' + success "--date=2013-08-10 --fullname --lts --days" \ + 'Trisquel GNU/Linux 6.0 LTS "Toutanis" -152' + success "--date=2013-08-10 --fullname --lts -ycreated" \ + 'Trisquel GNU/Linux 6.0 LTS "Toutanis" -667' + success "--date=2013-08-10 --fullname --lts --days=created" \ + 'Trisquel GNU/Linux 6.0 LTS "Toutanis" -667' + success "--date=2013-08-10 --fullname --lts -yrelease" \ + 'Trisquel GNU/Linux 6.0 LTS "Toutanis" -152' + success "--date=2013-08-10 --fullname --lts --days=release" \ + 'Trisquel GNU/Linux 6.0 LTS "Toutanis" -152' + success "--date=2013-08-10 --fullname --lts -yeol" \ + 'Trisquel GNU/Linux 6.0 LTS "Toutanis" 1357' + success "--date=2013-08-10 --fullname --lts --days=eol" \ + 'Trisquel GNU/Linux 6.0 LTS "Toutanis" 1357' +} + +testRelease() { + success "--date=2013-08-10 --lts --release" "6.0 LTS" + success "--date=2013-08-10 --lts --release -ycreated" \ + "6.0 LTS -667" + success "--date=2013-08-10 --lts --release --days=created" \ + "6.0 LTS -667" + success "--date=2013-08-10 --lts --release --days" \ + "6.0 LTS -152" + success "--date=2013-08-10 --lts --release -y" \ + "6.0 LTS -152" + success "--date=2013-08-10 --lts --release --days=release" \ + "6.0 LTS -152" + success "--date=2013-08-10 --lts --release -yrelease" \ + "6.0 LTS -152" + success "--date=2013-08-10 --lts --release --days=eol" \ + "6.0 LTS 1357" + success "--date=2013-08-10 --lts --release -yeol" \ + "6.0 LTS 1357" + + success "--date=2013-11-10 -r --stable" "6.0 LTS" +} + +testSeries() { + success "-r --series etiona" "9.0 LTS" +} + +testCombinedShortform() { + success "-fs --date=2013-08-10" 'Trisquel GNU/Linux 6.0 LTS "Toutanis"' +} + +testReleaseDate() { + success "--date 2013-08-10 -s" "toutanis" + success "--date 2016-11-03 -d" "flidas" + success "--date 2018-04-18 -s" "flidas" + success "--date 2020-10-16 -d" "nabia" +} + +testHelp() { + local help='Usage: trisquel-distro-info [options] + +Options: + -h --help show this help message and exit + --date=DATE date for calculating the version (default: today) + --series=SERIES series to calculate the version for + -y[MILESTONE] additionally, display days until milestone + --days=[MILESTONE] (created, release, eol) + -a --all list all known versions + -d --devel latest development version + --lts latest long term support (LTS) version + -s --stable latest stable version + --supported list of all supported stable versions + --unsupported list of all unsupported stable versions + -c --codename print the codename (default) + -f --fullname print the full name + -r --release print the release version + +See trisquel-distro-info(1) for more info.' + success "--help" "$help" + success "-h" "$help" +} + +testExactlyOne() { + local result='trisquel-distro-info: You have to select exactly one of --all, --devel, --latest, --lts, --stable, --supported, --series, --unsupported.' + failure "" "$result" + failure "--date=2013-08-10 -sad" "$result" +} + +testUnrecognizedOption() { + failure "--bar" "trisquel-distro-info: unrecognized option \`--bar'" + failure "-z" "trisquel-distro-info: unrecognized option \`-z'" + failure "--testing" "trisquel-distro-info: unrecognized option \`--testing'" + failure "--oldstable" "trisquel-distro-info: unrecognized option \`--oldstable'" +} + +testUnrecognizedArguments() { + failure "foo" "trisquel-distro-info: unrecognized arguments: foo" + failure "foo --all bar" "trisquel-distro-info: unrecognized arguments: foo bar" +} + +testMissingArgumentDate() { + failure "--date" "trisquel-distro-info: option \`--date' requires an argument DATE" +} + +testMissingArgumentSeries() { + failure "--series" "trisquel-distro-info: option \`--series' requires an argument SERIES" +} + +testDistributionDataOutdated() { + local future_year=$(expr $(date +"%Y" --date=now) + 7) + local outdated_e="Distribution data outdated. +Please check for an update for distro-info-data. See /usr/share/doc/distro-info-data/README.Debian for details." + + failure "--date 1970-10-03 --lts" "trisquel-distro-info: $outdated_e" + failure "--date ${future_year}-10-03 -s" "trisquel-distro-info: $outdated_e" + failure "--date ${future_year}-10-03 -d" "trisquel-distro-info: $outdated_e" + failure "--date ${future_year}-10-03 -l" "trisquel-distro-info: $outdated_e" +} + +testInvalidDate() { + failure "--date fail -s" "trisquel-distro-info: invalid date \`fail'" + failure "--date=2010-02-30 -d" "trisquel-distro-info: invalid date \`2010-02-30'" +} + +testInvalidSeries() { + failure "--series wr0ng" "trisquel-distro-info: invalid distribution series \`wr0ng'" +} + +testMultipleDates() { + failure "--date 2007-06-05 -s --date 2004-03-02" "trisquel-distro-info: Date specified multiple times." +} + +testMultipleSeries() { + failure "--series flidas --series etiona" "trisquel-distro-info: series requested multiple times." +} + +testUnknownSeries() { + failure "--series foobar" "trisquel-distro-info: unknown distribution series \`foobar'" +} + +testDays() { + # day after belenos released + date=2014-11-04 + + success "--date=$date --lts" "belenos" + + success "--date=$date --lts --days=created" "-383" + success "--date=$date --lts --days=created -c" "belenos -383" + success "--date=$date --lts --days=created -f" "Trisquel GNU/Linux 7.0 LTS \"Belenos\" -383" + success "--date=$date --lts --days=created -r" "7.0 LTS -383" + + success "--date=$date --lts --days=release" "-1" + success "--date=$date --lts --days=release -c" "belenos -1" + success "--date=$date --lts --days=release -f" "Trisquel GNU/Linux 7.0 LTS \"Belenos\" -1" + success "--date=$date --lts --days=release -r" "7.0 LTS -1" + + success "--date=$date --lts --days" "-1" + success "--date=$date --lts --days -c" "belenos -1" + success "--date=$date --lts --days -f" "Trisquel GNU/Linux 7.0 LTS \"Belenos\" -1" + success "--date=$date --lts --days -r" "7.0 LTS -1" + + success "--date=$date --lts --days=eol" "1633" + success "--date=$date --lts --days=eol -c" "belenos 1633" + success "--date=$date --lts --days=eol -f" "Trisquel GNU/Linux 7.0 LTS \"Belenos\" 1633" + success "--date=$date --lts --days=eol -r" "7.0 LTS 1633" + + # date flidas released + date=2018-04-18 + + success "--date=$date --lts" "flidas" + + success "--date=$date --lts --days=created" "-909" + success "--date=$date --lts --days=created -c" "flidas -909" + success "--date=$date --lts --days=created -f" "Trisquel GNU/Linux 8.0 LTS \"Flidas\" -909" + success "--date=$date --lts --days=created -r" "8.0 LTS -909" + + success "--date=$date --lts --days=release" "0" + success "--date=$date --lts --days=release -c" "flidas 0" + success "--date=$date --lts --days=release -f" "Trisquel GNU/Linux 8.0 LTS \"Flidas\" 0" + success "--date=$date --lts --days=release -r" "8.0 LTS 0" + + success "--date=$date --lts --days" "0" + success "--date=$date --lts --days -c" "flidas 0" + success "--date=$date --lts --days -f" "Trisquel GNU/Linux 8.0 LTS \"Flidas\" 0" + success "--date=$date --lts --days -r" "8.0 LTS 0" + + success "--date=$date --lts --days=eol" "1099" + success "--date=$date --lts --days=eol -c" "flidas 1099" + success "--date=$date --lts --days=eol -f" "Trisquel GNU/Linux 8.0 LTS \"Flidas\" 1099" + success "--date=$date --lts --days=eol -r" "8.0 LTS 1099" + + + # day before etiona was released + date=2020-10-15 + + success "--devel --date=$date" "nabia" + + success "--devel --date=$date --days=created" "-364" + success "--devel --date=$date --days=created -c" "nabia -364" + success "--devel --date=$date --days=created -r" "10.0 LTS -364" + success "--devel --date=$date --days=created -f" "Trisquel GNU/Linux 10.0 LTS \"Nabia\" -364" + + success "--devel --date=$date --days" "427" + + success "--devel --date=$date --days -c" "nabia 427" + success "--devel --date=$date --days -r" "10.0 LTS 427" + success "--devel --date=$date --days -f" "Trisquel GNU/Linux 10.0 LTS \"Nabia\" 427" + + success "--devel --date=$date --days=release" "427" + success "--devel --date=$date --days=release -c" "nabia 427" + success "--devel --date=$date --days=release -r" "10.0 LTS 427" + success "--devel --date=$date --days=release -f" "Trisquel GNU/Linux 10.0 LTS \"Nabia\" 427" + + success "--devel --date=$date --days=eol" "1651" + success "--devel --date=$date --days=eol -c" "nabia 1651" + success "--devel --date=$date --days=eol -r" "10.0 LTS 1651" + success "--devel --date=$date --days=eol -f" "Trisquel GNU/Linux 10.0 LTS \"Nabia\" 1651" +} + +. shunit2 diff --git a/helpers/DATA/distro-info/test.pl b/helpers/DATA/distro-info/test.pl new file mode 100755 index 00000000..b1a440ca --- /dev/null +++ b/helpers/DATA/distro-info/test.pl @@ -0,0 +1,120 @@ +#!/usr/bin/perl +# Copyright (C) 2011-2012, Stefano Rivera <stefanor@debian.org> +# +# Permission to use, copy, modify, and/or distribute this software for any +# purpose with or without fee is hereby granted, provided that the above +# copyright notice and this permission notice appear in all copies. +# +# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + +use strict; +use warnings; + +use Test::Simple tests => 28; + +use lib '.'; +use Debian::DistroInfo; + +sub unique { + my ($needles, $haystack) = @_; + my $unique = 0; + + my %hash = (); + @hash{@$haystack}=(); + for my $needle (@$needles) { + $unique++ if not exists($hash{$needle}); + } + return $unique; +} + +sub symmetric_difference { + my ($a, $b) = @_; + return unique($a, $b) + unique($b, $a); +} + +my @all = (); +my @returned = (); + +# Test our helpers: +@all = ('a', 'b', 'c'); +@returned = ('a', 'b', 'c'); +ok(unique(\@all, \@returned) == 0, 'unique: Matching lists'); +ok(symmetric_difference(\@all, \@returned) == 0, + 'symmetric_difference: Matching lists'); +@returned = ('a', 'b'); +ok(unique(\@all, \@returned) == 1, 'unique: 1 Unique Item'); +ok(unique(\@returned, \@all) == 0, 'unique: 1 Unique Item in the haystack'); +ok(symmetric_difference(\@all, \@returned) == 1, + 'symmetric_difference: 1 Unique Item'); + +# Test DistroInfo: +my @expected = (); +my $date = Debian::DistroInfo::convert_date('2011-01-10'); + +my $deb = DebianDistroInfo->new(); +@all = ('buzz', 'rex', 'bo', 'hamm', 'slink', 'potato', 'woody', 'sarge', + 'etch', 'lenny', 'squeeze', 'sid', 'experimental'); +@returned = $deb->all($date); +ok(unique(\@all, \@returned) == 0, 'Debian all'); + +ok($deb->devel($date) eq 'sid', 'Debian devel'); +ok($deb->old($date) eq 'etch', 'Debian oldstable'); +ok($deb->stable($date) eq 'lenny', 'Debian stable'); +ok($deb->testing($date) eq 'squeeze', 'Debian testing'); +ok($deb->valid('sid'), 'Debian valid'); +ok($deb->valid('stable'), 'Debian valid'); +ok(!$deb->valid('foobar'), 'Debian invalid'); + +@expected = ('lenny', 'squeeze', 'sid', 'experimental'); +@returned = $deb->supported($date); +ok(symmetric_difference(\@expected, \@returned) == 0, + 'Debian supported'); + +@expected = ('buzz', 'rex', 'bo', 'hamm', 'slink', 'potato', 'woody', 'sarge', + 'etch'); +@returned = $deb->unsupported($date); +ok(symmetric_difference(\@expected, \@returned) == 0, + 'Debian unsupported'); + +ok(!defined($deb->codename('foo')), 'Debian codename, invalid'); +ok($deb->codename('testing', $date) eq $deb->testing($date), + 'Debian codename'); + + +my $tris = TrisquelDistroInfo->new(); +@all = ('robur', + 'dwyn', + 'awen', + 'taranis', + 'slaine', + 'dagda'); +@returned = $tris->all($date); +ok(unique(\@all, \@returned) == 0, 'Trisquel GNU/Linux all'); + +ok($tris->devel($date) eq 'dagda', 'Trisquel GNU/Linux devel'); +ok($tris->lts($date) eq 'taranis', 'Trisquel GNU/Linux LTS'); +ok($tris->stable($date) eq 'taranis', 'Trisquel GNU/Linux stable'); +ok($tris->valid('taranis'), 'Trisquel GNU/Linux valid'); +ok(!$tris->valid(42), 'Trisquel GNU/Linux invalid'); +ok($tris->is_lts('taranis'), 'Trisquel GNU/Linux is_lts'); +ok(!$tris->is_lts(42), 'Trisquel GNU/Linux !is_lts'); +ok(!$tris->is_lts('awen'), 'Trisquel GNU/Linux !is_lts'); + +#@expected = ('robur', 'awen', 'taranis'); +@expected = ('robur', 'awen', 'taranis', 'slaine', 'dagda'); +@returned = $tris->supported($date); +ok(symmetric_difference(\@expected, \@returned) == 0, + 'Trisquel GNU/Linux supported'); + +@expected = ('dwyn'); +@returned = $tris->unsupported($date); +ok(symmetric_difference(\@expected, \@returned) == 0, + 'Trisquel GNU/Linux unsupported'); + +# vi: set et sta sw=4 ts=4: diff --git a/helpers/DATA/distro-info/test_distro_info.py b/helpers/DATA/distro-info/test_distro_info.py new file mode 100644 index 00000000..d3a8a77d --- /dev/null +++ b/helpers/DATA/distro-info/test_distro_info.py @@ -0,0 +1,182 @@ +# test_distro_info.py - Test suite for distro_info +# +# Copyright (C) 2021, Trisquel GNU/Linux developers <trisquel-devel@listas.trisquel.info> +# Copyright (C) 2011, Benjamin Drung <bdrung@debian.org> +# +# Permission to use, copy, modify, and/or distribute this software for any +# purpose with or without fee is hereby granted, provided that the above +# copyright notice and this permission notice appear in all copies. +# +# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + +"""Test suite for distro_info""" + +import datetime + +from distro_info_test import unittest +from distro_info import DebianDistroInfo, TrisquelDistroInfo + + +class DebianDistroInfoTestCase(unittest.TestCase): # pylint: disable=too-many-public-methods + """TestCase object for distro_info.DebianDistroInfo""" + + def setUp(self): # pylint: disable=invalid-name + self._distro_info = DebianDistroInfo() + self._date = datetime.date(2011, 1, 10) + + def test_all(self): + """Test: List all known Debian distributions.""" + all_distros = set(["buzz", "rex", "bo", "hamm", "slink", "potato", + "woody", "sarge", "etch", "lenny", "squeeze", "sid", + "experimental"]) + self.assertEqual(all_distros - set(self._distro_info.all), set()) + + def test_devel(self): + """Test: Get latest development Debian distribution.""" + self.assertEqual(self._distro_info.devel(self._date), "sid") + + def test_old(self): + """Test: Get old (stable) Debian distribution.""" + self.assertEqual(self._distro_info.old(self._date), "etch") + + def test_stable(self): + """Test: Get latest stable Debian distribution.""" + self.assertEqual(self._distro_info.stable(self._date), "lenny") + + def test_supported(self): + """Test: List all supported Debian distribution.""" + self.assertEqual(self._distro_info.supported(self._date), + ["lenny", "squeeze", "sid", "experimental"]) + + def test_testing(self): + """Test: Get latest testing Debian distribution.""" + self.assertEqual(self._distro_info.testing(self._date), "squeeze") + + def test_valid(self): + """Test: Check for valid Debian distribution.""" + self.assertTrue(self._distro_info.valid("sid")) + self.assertTrue(self._distro_info.valid("stable")) + self.assertFalse(self._distro_info.valid("foobar")) + + def test_unsupported(self): + """Test: List all unsupported Debian distribution.""" + unsupported = ["buzz", "rex", "bo", "hamm", "slink", "potato", "woody", + "sarge", "etch"] + self.assertEqual(self._distro_info.unsupported(self._date), unsupported) + + def test_codename(self): + """Test: Codename decoding""" + self.assertIsNone(self._distro_info.codename('foobar')) + self.assertEqual(self._distro_info.codename('testing', self._date), + self._distro_info.testing(self._date)) + + def test_codename_result(self): + """Test: Check result set to codename.""" + self.assertEqual(self._distro_info.old(self._date, "codename"), "etch") + self.assertEqual(self._distro_info.devel(self._date, result="codename"), + "sid") + + def test_fullname(self): + """Test: Check result set to fullname.""" + self.assertEqual(self._distro_info.stable(self._date, "fullname"), + 'Debian 5.0 "Lenny"') + result = self._distro_info.testing(self._date, result="fullname") + self.assertEqual(result, 'Debian 6.0 "Squeeze"') + + def test_release(self): + """Test: Check result set to release.""" + self.assertEqual(self._distro_info.devel(self._date, "release"), "") + self.assertEqual(self._distro_info.testing(self._date, "release"), + "6.0") + self.assertEqual(self._distro_info.stable(self._date, result="release"), + "5.0") + + +class TrisquelDistroInfoTestCase(unittest.TestCase): # pylint: disable=too-many-public-methods + """TestCase object for distro_info.TrisquelDistroInfo""" + + def setUp(self): # pylint: disable=invalid-name + self._distro_info = TrisquelDistroInfo() + self._date = datetime.date(2011, 1, 10) + + def test_all(self): + """Test: List all known Trisquel distributions.""" + all_distros = set(["robur", + "dwyn", + "awen", + "taranis", + "slaine", + "dagda", + "brigantia", + "toutanis", + "belenos", + "flidas", + "etiona", + "nabia"]) + self.assertEqual(all_distros - set(self._distro_info.all), set()) + + def test_devel(self): + """Test: Get latest development Trisquel distribution.""" + self.assertEqual(self._distro_info.devel(self._date), "dagda") + + def test_lts(self): + """Test: Get latest long term support (LTS) Trisquel distribution.""" + self.assertEqual(self._distro_info.lts(self._date), "taranis") + + def test_stable(self): + """Test: Get latest stable Trisquel distribution.""" + self.assertEqual(self._distro_info.stable(self._date), "taranis") + + def test_supported(self): + """Test: List all supported Trisquel distribution.""" + supported = ["robur", "awen", "taranis", "slaine", "dagda"] + self.assertEqual(self._distro_info.supported(self._date), supported) + + def test_unsupported(self): + """Test: List all unsupported Trisquel distributions.""" + unsupported = ["dwyn"] + self.assertEqual(self._distro_info.unsupported(self._date), unsupported) + + def test_current_unsupported(self): + """Test: List all unsupported Trisquel distributions today.""" + unsupported = set(["robur", + "dwyn"]) + self.assertEqual(unsupported - + set(self._distro_info.unsupported()), set()) + + def test_valid(self): + """Test: Check for valid Trisquel distribution.""" + self.assertTrue(self._distro_info.valid("taranis")) + self.assertFalse(self._distro_info.valid("42")) + + def test_is_lts(self): + """Test: Check if Trisquel distribution is an LTS.""" + self.assertTrue(self._distro_info.is_lts("taranis")) + self.assertFalse(self._distro_info.is_lts("42")) + self.assertFalse(self._distro_info.is_lts("warty")) + + def test_codename(self): + """Test: Check result set to codename.""" + self.assertEqual(self._distro_info.lts(self._date, "codename"), "taranis") + self.assertEqual(self._distro_info.devel(self._date, result="codename"), + "dagda") + + def test_fullname(self): + """Test: Check result set to fullname.""" + self.assertEqual(self._distro_info.stable(self._date, "fullname"), + 'Trisquel 4.0 LTS "Taranis"') + self.assertEqual(self._distro_info.lts(self._date, result="fullname"), + 'Trisquel 4.0 LTS "Taranis"') + + def test_release(self): + """Test: Check result set to release.""" + self.assertEqual(self._distro_info.devel(self._date, "release"), + "5.0") + self.assertEqual(self._distro_info.lts(self._date, result="release"), + "4.0 LTS") diff --git a/helpers/make-distro-info b/helpers/make-distro-info new file mode 100644 index 00000000..5b837e30 --- /dev/null +++ b/helpers/make-distro-info @@ -0,0 +1,56 @@ +#!/bin/sh +# +# Copyright (C) 2021 Luis Guzman <ark@switnet.org> +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# + +VERSION=1 + +. ./config + +#ubuntu-distro-info.c +mv ubuntu-distro-info.c trisquel-distro-info.c +sed -i 's|ubuntu|trisquel|g' trisquel-distro-info.c +sed -i 's|Ubuntu|Trisquel GNU/Linux|g' trisquel-distro-info.c +sed -i 's|UBUNTU|TRISQUEL|g' trisquel-distro-info.c +sed -i 's|,eol-server,eol-esm||' trisquel-distro-info.c +sed -i 's|Ubuntu|Trisquel GNU/Linux|' shell/ubuntu-distro-info.in + +# distro-info-util.c +patch -p1 < $DATA/distro-info-util_c.patch + +#test-ubuntu-distro-info +cp $DATA/test-trisquel-distro-info . + +#python dir +patch -p1 < $DATA/distro_info_py.patch +replace Ubuntu Trisquel +replace ubuntu trisquel +#Maybe too much +#sed -i '/__init__/s|"Trisquel"|"Trisquel GNU/Linux"|' python/distro_info.py +mv python/ubuntu-distro-info python/trisquel-distro-info +cp $DATA/test_distro_info.py python/distro_info_test/ + +#perl +cp $DATA/test.pl perl/ + +#shell +mv shell/ubuntu-distro-info.in shell/trisquel-distro-info.in + +changelog "Reworking and branding Trisquel GNU/Linux distro info." + +compile + -- GitLab