Bug#1082815: analizo: FTBFS (tests fail) on sid
наб
nabijaczleweli at nabijaczleweli.xyz
Thu Sep 26 19:52:23 BST 2024
Source: analizo
Version: 1.25.4-3
Severity: serious
Tags: ftbfs
Justification: fails to build from source
Dear Maintainer,
Caught this in ratt for src:ossp-uuid,
but it fails on a clean sbuild -d unstable analizo.
Interesting bit (I think)?
ok
t/author-pod-spell.t ..................................................... skipped: these tests are for testing by the author
t/author-pod-syntax.t .................................................... skipped: these tests are for testing by the author
# Failed test 'Then the exit status must be 0'
# at t/features/metrics_history.feature line 58.
# in step at t/features/metrics_history.feature line 58.
# not ok
# # Failed test at /<<PKGBUILDDIR>>/t/features/step_definitions/analizo_steps.pl line 57.
# # got: 32768
# # expected: 0
# ok 3 - Step ran to completion
# 1..2
# # Looks like you failed 1 test of 2.
# Failed test 'Then the exit status must not be 0'
# at t/features/metrics/output_file.feature line 14.
# in step at t/features/metrics/output_file.feature line 14.
# not ok
# # Failed test at /<<PKGBUILDDIR>>/t/features/step_definitions/analizo_steps.pl line 62.
# # got: 0
# # expected: anything else
# ok 3 - Step ran to completion
# 1..2
# # Looks like you failed 1 test of 2.
# Failed test 'Then the exit status must not be 0'
# at t/features/graph/output-file.feature line 20.
# in step at t/features/graph/output-file.feature line 20.
# not ok
# # Failed test at /<<PKGBUILDDIR>>/t/features/step_definitions/analizo_steps.pl line 62.
# # got: 0
# # expected: anything else
# ok 3 - Step ran to completion
# 1..2
# # Looks like you failed 1 test of 2.
# Looks like you failed 3 tests of 1008.
t/features.t .............................................................
# Feature mapping modules to filenames
But a full log is attached if I missed it.
Best,
-- System Information:
Debian Release: 12.4
APT prefers stable-updates
APT policy: (500, 'stable-updates'), (500, 'stable-security'), (500, 'stable-debug'), (500, 'stable')
Architecture: amd64 (x86_64)
Foreign Architectures: i386
Kernel: Linux 6.1.0-12-amd64 (SMP w/24 CPU threads; PREEMPT)
Kernel taint flags: TAINT_PROPRIETARY_MODULE, TAINT_FIRMWARE_WORKAROUND, TAINT_OOT_MODULE, TAINT_UNSIGNED_MODULE
Locale: LANG=en_GB.UTF-8, LC_CTYPE=en_GB.UTF-8 (charmap=UTF-8), LANGUAGE=en_GB:en
Shell: /bin/sh linked to /usr/bin/dash
Init: systemd (via /run/systemd/system)
LSM: AppArmor: enabled
-------------- next part --------------
sbuild (Debian sbuild) 0.85.11 (28 August 2024) on tarta
+==============================================================================+
| analizo (amd64) Thu, 26 Sep 2024 18:28:35 +0000 |
+==============================================================================+
Package: analizo
Distribution: unstable
Machine Architecture: amd64
Host Architecture: amd64
Build Architecture: amd64
Build Type: binary
I: NOTICE: Log filtering will replace 'var/run/schroot/mount/unstable-amd64-sbuild-81390e33-c436-4f29-a437-6362ee93a313' with '<<CHROOT>>'
I: NOTICE: Log filtering will replace 'build/analizo-hfWDki/resolver-pd8flS' with '<<RESOLVERDIR>>'
+------------------------------------------------------------------------------+
| Update chroot |
+------------------------------------------------------------------------------+
Hit:1 http://deb.debian.org/debian unstable InRelease
Reading package lists...
Reading package lists...
Building dependency tree...
Reading state information...
Calculating upgrade...
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
6 not fully installed or removed.
After this operation, 0 B of additional disk space will be used.
Setting up ca-certificates (20240203) ...
Updating certificates in /etc/ssl/certs...
146 added, 0 removed; done.
Setting up liblwp-protocol-https-perl (6.14-1) ...
Setting up libwww-perl (6.77-1) ...
Setting up libxml-parser-perl (2.47-1+b2) ...
Setting up libgraph-readwrite-perl (2.10-1) ...
Setting up sbuild-build-depends-main-dummy (0.invalid.0) ...
Processing triggers for ca-certificates (20240203) ...
Updating certificates in /etc/ssl/certs...
0 added, 0 removed; done.
Running hooks in /etc/ca-certificates/update.d...
done.
+------------------------------------------------------------------------------+
| Fetch source files |
+------------------------------------------------------------------------------+
Check APT
---------
Checking available source versions...
Download source files with APT
------------------------------
Reading package lists...
NOTICE: 'analizo' packaging is maintained in the 'Git' version control system at:
https://salsa.debian.org/perl-team/modules/packages/analizo.git
Please use:
git clone https://salsa.debian.org/perl-team/modules/packages/analizo.git
to retrieve the latest (possibly unreleased) updates to the package.
Need to get 196 kB of source archives.
Get:1 http://deb.debian.org/debian unstable/main analizo 1.25.4-3 (dsc) [3277 B]
Get:2 http://deb.debian.org/debian unstable/main analizo 1.25.4-3 (tar) [186 kB]
Get:3 http://deb.debian.org/debian unstable/main analizo 1.25.4-3 (diff) [7560 B]
Fetched 196 kB in 0s (1257 kB/s)
Download complete and in download only mode
W: Download is performed unsandboxed as root as file 'analizo_1.25.4-3.dsc' couldn't be accessed by user '_apt'. - pkgAcquire::Run (13: Permission denied)
I: NOTICE: Log filtering will replace 'build/analizo-hfWDki/analizo-1.25.4' with '<<PKGBUILDDIR>>'
I: NOTICE: Log filtering will replace 'build/analizo-hfWDki' with '<<BUILDDIR>>'
+------------------------------------------------------------------------------+
| Install package build dependencies |
+------------------------------------------------------------------------------+
Setup apt archive
-----------------
Merged Build-Depends: debhelper-compat (= 13), build-essential, fakeroot, doxygen-doxyparse, libapp-cmd-perl, libarchive-extract-perl, libchi-perl, libclass-accessor-perl, libclass-inspector-perl, libdbd-sqlite3-perl, libdbi-perl, libdigest-sha-perl, libenv-path-perl, libfile-copy-recursive-perl, libfile-homedir-perl, libfile-libmagic-perl, libfile-share-perl, libfile-sharedir-install-perl, libfile-sharedir-perl, libfile-slurp-perl, libfindbin-libs-perl, libgit-wrapper-perl, libgraph-perl, libgraph-readwrite-perl, libjson-perl, liblist-compare-perl, liblist-moreutils-perl, libstatistics-descriptive-perl, libterm-progressbar-perl, libterm-ui-perl, libtest-bdd-cucumber-perl (>= 0.61), libtest-class-perl, libtest-exception-perl, libtest-mockmodule-perl, libtest-mockobject-perl, libyaml-libyaml-perl, libzmq-ffi-perl, perl
Filtered Build-Depends: debhelper-compat (= 13), build-essential, fakeroot, doxygen-doxyparse, libapp-cmd-perl, libarchive-extract-perl, libchi-perl, libclass-accessor-perl, libclass-inspector-perl, libdbd-sqlite3-perl, libdbi-perl, libdigest-sha-perl, libenv-path-perl, libfile-copy-recursive-perl, libfile-homedir-perl, libfile-libmagic-perl, libfile-share-perl, libfile-sharedir-install-perl, libfile-sharedir-perl, libfile-slurp-perl, libfindbin-libs-perl, libgit-wrapper-perl, libgraph-perl, libgraph-readwrite-perl, libjson-perl, liblist-compare-perl, liblist-moreutils-perl, libstatistics-descriptive-perl, libterm-progressbar-perl, libterm-ui-perl, libtest-bdd-cucumber-perl (>= 0.61), libtest-class-perl, libtest-exception-perl, libtest-mockmodule-perl, libtest-mockobject-perl, libyaml-libyaml-perl, libzmq-ffi-perl, perl
dpkg-deb: building package 'sbuild-build-depends-main-dummy' in '/<<RESOLVERDIR>>/apt_archive/sbuild-build-depends-main-dummy.deb'.
Ign:1 copy:/<<RESOLVERDIR>>/apt_archive ./ InRelease
Get:2 copy:/<<RESOLVERDIR>>/apt_archive ./ Release [615 B]
Ign:3 copy:/<<RESOLVERDIR>>/apt_archive ./ Release.gpg
Get:4 copy:/<<RESOLVERDIR>>/apt_archive ./ Sources [1749 B]
Get:5 copy:/<<RESOLVERDIR>>/apt_archive ./ Packages [1407 B]
Fetched 3771 B in 0s (359 kB/s)
Reading package lists...
Reading package lists...
Install main build dependencies (apt-based resolver)
----------------------------------------------------
Installing build dependencies
Reading package lists...
Building dependency tree...
Reading state information...
sbuild-build-depends-main-dummy is already the newest version (0.invalid.0).
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
+------------------------------------------------------------------------------+
| Check architectures |
+------------------------------------------------------------------------------+
Arch check ok (amd64 included in all)
+------------------------------------------------------------------------------+
| Build environment |
+------------------------------------------------------------------------------+
Kernel: Linux 6.1.0-12-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.52-1 (2023-09-07) amd64 (x86_64)
Toolchain package versions: binutils_2.43.1-5 dpkg-dev_1.22.11 g++-14_14.2.0-5 gcc-14_14.2.0-5 libc6-dev_2.40-3 libstdc++-14-dev_14.2.0-5 libstdc++6_14.2.0-5 linux-libc-dev_6.10.11-1
Package versions: apt_2.9.8 autoconf_2.72-3 automake_1:1.16.5-1.3 autopoint_0.22.5-2 autotools-dev_20220109.1 base-files_13.5 base-passwd_3.6.4 bash_5.2.32-1+b1 binutils_2.43.1-5 binutils-common_2.43.1-5 binutils-x86-64-linux-gnu_2.43.1-5 bsdextrautils_2.40.2-8 bsdutils_1:2.40.2-8 build-essential_12.10 bzip2_1.0.8-6 ca-certificates_20240203 comerr-dev_2.1-1.47.1-1 coreutils_9.4-3.1 cpp_4:14.1.0-2 cpp-14_14.2.0-5 cpp-14-x86-64-linux-gnu_14.2.0-5 cpp-x86-64-linux-gnu_4:14.1.0-2 dash_0.5.12-9 debconf_1.5.87 debhelper_13.20 debian-archive-keyring_2023.4 debianutils_5.20 dh-autoreconf_20 dh-strip-nondeterminism_1.14.0-1 diffutils_1:3.10-1 doxygen-doxyparse_1.9.8+ds-2+b1 dpkg_1.22.11 dpkg-dev_1.22.11 dwz_0.15-1+b1 fakeroot_1.36-1 file_1:5.45-3 findutils_4.10.0-3 g++_4:14.1.0-2 g++-14_14.2.0-5 g++-14-x86-64-linux-gnu_14.2.0-5 g++-x86-64-linux-gnu_4:14.1.0-2 gcc_4:14.1.0-2 gcc-14_14.2.0-5 gcc-14-base_14.2.0-5 gcc-14-x86-64-linux-gnu_14.2.0-5 gcc-x86-64-linux-gnu_4:14.1.0-2 gettext_0.22.5-2 gettext-base_0.22.5-2 git_1:2.45.2-1 git-man_1:2.45.2-1 gpgv_2.2.43-8+b1 grep_3.11-4 groff-base_1.23.0-5 gzip_1.12-1.1 hostname_3.23+nmu2 icu-devtools_72.1-5 init-system-helpers_1.67 intltool-debian_0.35.0+20060710.6 krb5-multidev_1.21.3-3 libacl1_2.3.2-2 libalgorithm-c3-perl_0.11-2 libapp-cmd-perl_0.336-1 libapt-pkg6.0t64_2.9.8 libarchive-extract-perl_0.88-1 libarchive-zip-perl_1.68-1 libasan8_14.2.0-5 libatomic1_14.2.0-5 libattr1_1:2.5.2-1 libaudit-common_1:4.0.1-1 libaudit1_1:4.0.1-1 libb-hooks-endofscope-perl_0.28-1 libb-hooks-op-check-perl_0.22-3+b1 libbinutils_2.43.1-5 libblkid1_2.40.2-8 libbrotli1_1.1.0-2+b4 libbsd-dev_0.12.2-1 libbsd0_0.12.2-1 libbz2-1.0_1.0.8-6 libc-bin_2.40-3 libc-dev-bin_2.40-3 libc6_2.40-3 libc6-dev_2.40-3 libcache-cache-perl_1.08-3 libcache-fastmmap-perl_1.57-2+b3 libcap-ng0_0.8.5-2 libcap2_1:2.66-5 libcapture-tiny-perl_0.48-2 libcarp-assert-perl_0.22-1 libcc1-0_14.2.0-5 libchi-perl_0.61-1 libclang-cpp16t64_1:16.0.6-27+b1 libclang1-16t64_1:16.0.6-27+b1 libclass-accessor-perl_0.51-2 libclass-c3-perl_0.35-2 libclass-inspector-perl_1.36-3 libclass-load-perl_0.25-2 libclass-method-modifiers-perl_2.15-1 libclass-methodmaker-perl_2.24-2+b5 libclass-xsaccessor-perl_1.19-4+b3 libclone-perl_0.47-1 libcom-err2_1.47.1-1 libcompress-lz4-perl_0.25+ds-2+b3 libcompress-snappy-perl_0.25+ds-1 libcontextual-return-perl_0.004014-4 libcpanel-json-xs-perl_4.38-1 libcrypt-dev_1:4.4.36-5 libcrypt1_1:4.4.36-5 libctf-nobfd0_2.43.1-5 libctf0_2.43.1-5 libcucumber-tagexpressions-perl_6.1.0-1 libcurl3t64-gnutls_8.10.1-1 libdata-optlist-perl_0.114-1 libdata-perl-perl_0.002011-2 libdata-serializer-perl_0.65-2 libdb5.3t64_5.3.28+dfsg2-7 libdbd-sqlite3-perl_1.74-1+b2 libdbi-perl_1.645-1 libdebconfclient0_0.272 libdebhelper-perl_13.20 libdevel-callchecker-perl_0.009-1 libdigest-jhash-perl_0.10-2+b3 libdpkg-perl_1.22.11 libdynaloader-functions-perl_0.004-1 libedit2_3.1-20240808-1 libelf1t64_0.191-2 libencode-locale-perl_1.05-3 libenv-path-perl_0.19-4 liberror-perl_0.17029-2 libexpat1_2.6.3-1 libexporter-tiny-perl_1.006002-1 libfakeroot_1.36-1 libffi-checklib-perl_0.31-1 libffi-platypus-perl_2.09-1 libffi8_3.4.6-1 libfile-chdir-perl_0.1008-1.2 libfile-copy-recursive-perl_0.45-4 libfile-find-rule-perl_0.34-3 libfile-homedir-perl_1.006-2 libfile-libmagic-perl_1.23-2+b1 libfile-listing-perl_6.16-1 libfile-share-perl_0.27-2 libfile-sharedir-install-perl_0.14-2 libfile-sharedir-perl_1.118-3 libfile-slurp-perl_9999.32-2 libfile-stripnondeterminism-perl_1.14.0-1 libfile-which-perl_1.27-2 libfindbin-libs-perl_3.0.2-1 libfmt9_9.1.0+ds1-2 libgcc-14-dev_14.2.0-5 libgcc-s1_14.2.0-5 libgcrypt20_1.11.0-6 libgdbm-compat4t64_1.24-2 libgdbm6t64_1.24-2 libgetopt-long-descriptive-perl_0.111-1 libgit-wrapper-perl_0.048-2 libgmp10_2:6.3.0+dfsg-2+b1 libgnutls30t64_3.8.6-2 libgomp1_14.2.0-5 libgpg-error0_1.50-4 libgprofng0_2.43.1-5 libgraph-perl_1:0.9729-1 libgraph-readwrite-perl_2.10-1 libgssapi-krb5-2_1.21.3-3 libgssrpc4t64_1.21.3-3 libhash-moreutils-perl_0.06-2 libheap-perl_0.80-5 libhogweed6t64_3.10-1 libhtml-parser-perl_3.83-1 libhtml-tagset-perl_3.24-1 libhtml-tree-perl_5.07-3 libhttp-cookies-perl_6.11-1 libhttp-date-perl_6.06-1 libhttp-message-perl_6.46-1 libhttp-negotiate-perl_6.01-2 libhwasan0_14.2.0-5 libicu-dev_72.1-5 libicu72_72.1-5 libidn2-0_2.3.7-2 libimport-into-perl_1.002005-2 libio-all-perl_0.87-2 libio-html-perl_1.004-3 libio-socket-ssl-perl_2.089-1 libio-stringy-perl_2.113-2 libio-tiecombine-perl_1.005-3 libipc-sharelite-perl_0.17-5+b2 libisl23_0.27-1 libitm1_14.2.0-5 libjansson4_2.14-2+b2 libjson-maybexs-perl_1.004008-1 libjson-perl_4.10000-1 libk5crypto3_1.21.3-3 libkadm5clnt-mit12_1.21.3-3 libkadm5srv-mit12_1.21.3-3 libkdb5-10t64_1.21.3-3 libkeyutils1_1.6.3-3 libkrb5-3_1.21.3-3 libkrb5-dev_1.21.3-3 libkrb5support0_1.21.3-3 libldap-2.5-0_2.5.18+dfsg-3 liblist-compare-perl_0.55-2 liblist-moreutils-perl_0.430-2 liblist-moreutils-xs-perl_0.430-4+b1 libllvm16t64_1:16.0.6-27+b1 liblog-any-perl_1.717-1 liblog-message-perl_0.8-3 liblog-message-simple-perl_0.10-3 liblsan0_14.2.0-5 liblwp-mediatypes-perl_6.04-2 liblwp-protocol-https-perl_6.14-1 liblz4-1_1.9.4-3 liblzma-dev_5.6.2-2 liblzma5_5.6.2-2 libmagic-mgc_1:5.45-3 libmagic1t64_1:5.45-3 libmd-dev_1.1.0-2 libmd0_1.1.0-2 libmodule-implementation-perl_0.09-2 libmodule-pluggable-perl_5.2-5 libmodule-runtime-perl_0.016-2 libmoo-perl_2.005005-1 libmoox-handlesvia-perl_0.001009-2 libmoox-types-mooselike-numeric-perl_1.03-2 libmoox-types-mooselike-perl_0.29-2 libmount1_2.40.2-8 libmpc3_1.3.1-1+b2 libmpfr6_4.2.1-1+b1 libmro-compat-perl_0.15-2 libnamespace-clean-perl_0.27-2 libnet-http-perl_6.23-1 libnet-ssleay-perl_1.94-1+b1 libnettle8t64_3.10-1 libnghttp2-14_1.63.0-1 libnghttp3-9_1.4.0-1 libngtcp2-16_1.6.0-1 libngtcp2-crypto-gnutls8_1.6.0-1 libnorm-dev_1.5.9+dfsg-3.1 libnorm1t64_1.5.9+dfsg-3.1 libnumber-compare-perl_0.03-3 libossp-uuid-perl_1.6.2-1.5+b13 libossp-uuid16_1.6.2-1.5+b13 libp11-kit0_0.25.5-2 libpackage-stash-perl_0.40-1 libpam-modules_1.5.3-7 libpam-modules-bin_1.5.3-7 libpam-runtime_1.5.3-7 libpam0g_1.5.3-7 libparams-classify-perl_0.015-2+b3 libparams-util-perl_1.102-3 libparams-validate-perl_1.31-2+b2 libparse-yapp-perl_1.21-4 libpath-class-perl_0.37-4 libpcre2-8-0_10.42-4+b1 libperl5.38t64_5.38.2-5 libpgm-5.3-0t64_5.3.128~dfsg-2.1 libpgm-dev_5.3.128~dfsg-2.1 libpipeline1_1.5.8-1 libpsl5t64_0.21.2-1.1 libquadmath0_14.2.0-5 librole-tiny-perl_2.002004-1 librtmp1_2.4+20151223.gitfa8646d.1-2+b4 libsasl2-2_2.1.28+dfsg1-8 libsasl2-modules-db_2.1.28+dfsg1-8 libseccomp2_2.5.5-1+b1 libselinux1_3.7-3 libset-object-perl_1.42-1+b4 libsframe1_2.43.1-5 libsmartcols1_2.40.2-8 libsnappy1v5_1.2.1-1 libsodium-dev_1.0.18-1+b1 libsodium23_1.0.18-1+b1 libsort-versions-perl_1.62-3 libspiffy-perl_0.46-1 libsqlite3-0_3.46.1-1 libssh2-1t64_1.11.0-7 libssl3t64_3.3.2-1 libstatistics-descriptive-perl_3.0801-1 libstdc++-14-dev_14.2.0-5 libstdc++6_14.2.0-5 libstrictures-perl_2.000006-1 libstring-rewriteprefix-perl_0.009-1 libsub-exporter-perl_0.990-1 libsub-exporter-progressive-perl_0.001013-3 libsub-identify-perl_0.14-3+b2 libsub-install-perl_0.929-1 libsub-name-perl_0.27-1+b2 libsub-quote-perl_2.006008-1 libsub-uplevel-perl_0.2800-3 libsuper-perl_1.20190531-1 libsystemd0_256.6-1 libtask-weaken-perl_1.06-2 libtasn1-6_4.19.0-3+b2 libterm-progressbar-perl_2.23-1 libterm-readkey-perl_2.38-2+b3 libterm-table-perl_0.022-1 libterm-ui-perl_0.50-1 libtest-bdd-cucumber-perl_0.86-1 libtest-class-perl_0.52-1 libtest-exception-perl_0.43-3 libtest-mockmodule-perl_0.178.0-1 libtest-mockobject-perl_1.20200122-4 libtest2-suite-perl_0.000163-1 libtext-glob-perl_0.11-3 libtime-duration-parse-perl_0.16-1 libtime-duration-perl_1.21-2 libtimedate-perl_2.3300-2 libtinfo6_6.5-2 libtool_2.4.7-7 libtry-tiny-perl_0.32-1 libtsan2_14.2.0-5 libtype-tiny-perl_2.004000-1 libubsan1_14.2.0-5 libuchardet0_0.0.8-1+b1 libudev1_256.6-1 libunistring5_1.2-1 libuniversal-can-perl_1.20140328-3 libuniversal-isa-perl_1.20171012-3 liburi-perl_5.29-1 libuuid1_2.40.2-8 libvariable-magic-perl_0.64-1 libwant-perl_0.29-2+b3 libwww-perl_6.77-1 libwww-robotrules-perl_6.02-1 libxml-parser-perl_2.47-1+b2 libxml-writer-perl_0.900-2 libxml2_2.12.7+dfsg-3+b1 libxml2-dev_2.12.7+dfsg-3+b1 libxxhash0_0.8.2-2+b1 libyaml-0-2_0.2.5-1+b1 libyaml-libyaml-perl_0.902.0+ds-1 libyaml-perl_1.31-1 libz3-4_4.8.12-3.1+b2 libzmq-ffi-perl_1.19-1 libzmq3-dev_4.3.5-1+b2 libzmq5_4.3.5-1+b2 libzstd1_1.5.6+dfsg-1 linux-libc-dev_6.10.11-1 m4_1.4.19-4 make_4.3-4.1 man-db_2.13.0-1 mawk_1.3.4.20240905-1 ncurses-base_6.5-2 ncurses-bin_6.5-2 netbase_6.4 openssl_3.3.2-1 openssl-provider-legacy_3.3.2-1 patch_2.7.6-7 perl_5.38.2-5 perl-base_5.38.2-5 perl-modules-5.38_5.38.2-5 perl-openssl-defaults_7+b2 po-debconf_1.0.21+nmu1 rpcsvc-proto_1.4.3-1 sbuild-build-depends-main-dummy_0.invalid.0 sed_4.9-2 sensible-utils_0.0.24 sysvinit-utils_3.10-2 tar_1.35+dfsg-3 usr-is-merged_39 util-linux_2.40.2-8 xz-utils_5.6.2-2 zlib1g_1:1.3.dfsg+really1.3.1-1 zlib1g-dev_1:1.3.dfsg+really1.3.1-1
+------------------------------------------------------------------------------+
| Build |
+------------------------------------------------------------------------------+
Unpack source
-------------
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA512
Format: 3.0 (quilt)
Source: analizo
Binary: analizo
Architecture: all
Version: 1.25.4-3
Maintainer: Debian Perl Group <pkg-perl-maintainers at lists.alioth.debian.org>
Uploaders: Joenio Marques da Costa <joenio at joenio.me>
Homepage: https://www.analizo.org
Standards-Version: 4.7.0
Vcs-Browser: https://salsa.debian.org/perl-team/modules/packages/analizo
Vcs-Git: https://salsa.debian.org/perl-team/modules/packages/analizo.git
Testsuite: autopkgtest, autopkgtest-pkg-perl
Testsuite-Triggers: shunit2
Build-Depends: debhelper-compat (= 13)
Build-Depends-Indep: doxygen-doxyparse <!nocheck>, libapp-cmd-perl <!nocheck>, libarchive-extract-perl <!nocheck>, libchi-perl <!nocheck>, libclass-accessor-perl <!nocheck>, libclass-inspector-perl <!nocheck>, libdbd-sqlite3-perl <!nocheck>, libdbi-perl <!nocheck>, libdigest-sha-perl <!nocheck>, libenv-path-perl <!nocheck>, libfile-copy-recursive-perl <!nocheck>, libfile-homedir-perl <!nocheck>, libfile-libmagic-perl <!nocheck>, libfile-share-perl <!nocheck>, libfile-sharedir-install-perl, libfile-sharedir-perl, libfile-slurp-perl <!nocheck>, libfindbin-libs-perl <!nocheck>, libgit-wrapper-perl <!nocheck>, libgraph-perl <!nocheck>, libgraph-readwrite-perl <!nocheck>, libjson-perl <!nocheck>, liblist-compare-perl <!nocheck>, liblist-moreutils-perl <!nocheck>, libstatistics-descriptive-perl <!nocheck>, libterm-progressbar-perl <!nocheck>, libterm-ui-perl <!nocheck>, libtest-bdd-cucumber-perl (>= 0.61) <!nocheck>, libtest-class-perl <!nocheck>, libtest-exception-perl <!nocheck>, libtest-mockmodule-perl <!nocheck>, libtest-mockobject-perl <!nocheck>, libyaml-libyaml-perl <!nocheck>, libzmq-ffi-perl <!nocheck>, perl
Package-List:
analizo deb devel optional arch=all
Checksums-Sha1:
4c087a6c6d97970732568fc1d04976f44318971c 185525 analizo_1.25.4.orig.tar.gz
fbfb6b069655ec8f045a7f566732c87c6db78b65 7560 analizo_1.25.4-3.debian.tar.xz
Checksums-Sha256:
bec76709d9e5a99a7481bdf63caacd24891eee504ef96aee90e397f13c39a6ad 185525 analizo_1.25.4.orig.tar.gz
b1e59dc228b9ad3186eca9418bc15db1a5aec7aa84dbda148e6ae21274dbd21d 7560 analizo_1.25.4-3.debian.tar.xz
Files:
278a03ff619113c5711897855a97f6d5 185525 analizo_1.25.4.orig.tar.gz
dcd0fd16b7e573684ea1b9a84c413b88 7560 analizo_1.25.4-3.debian.tar.xz
Dgit: a6598c934b2c8b05981edf0aae06f15bcec1a153 debian archive/debian/1.25.4-3 https://git.dgit.debian.org/analizo
-----BEGIN PGP SIGNATURE-----
iQJIBAEBCgAyFiEEj5GyJ8fW8rGUjII2eTz2fo8NEdoFAmZM9CMUHGVtb2xsaWVy
QGRlYmlhbi5vcmcACgkQeTz2fo8NEdpxbg//XyikwlOjbvsUdmkon17HG4it8DiK
IW5T65tlR2JuPCAur7lB5fTLWugD2dn8aFCOhp+aPlX+qnVe3jTjO5WfcSaSt34K
s/azgH6Lw8VzVY2etRPC0pzB5/IAX2bhUm/zXUs0C9fLpXg69is8amyi9Z7UYmPD
9ax+f70XZnzv5KEAqvHch2CONYT4qGDlmmeNNk2y1IKaFnCcKA6h4eypNCr5NXbH
2rz1v1TJKIGMCNtbfc44pIC46yxLB1GcrnMrmpNGDGJJw1SW6Ta/mrZ/ZZ7DC9Nn
4JhpDMZBb5Q6X4cAJhn4r+zrm6hljbi2cMTkLP9EzR7+cTEe1X2H2v7PBZOA7I3s
7OxI+9YsFFRNhfXh4mop75fEqY+M2ldFzgVPyy97TG6etj4At84Rd1AgAOwoqRAf
c9qBRfhGELCNZ7KoExf9hxMTkfXTIylzN9kX/jZe/t8h0ECd02c47H8f9M/KOWuy
gXkpnEeXcTmcqVcmlwDeSgVj/qRU9nZV7jp8OKgEpx+GTJeWrT8E3eRdAckszxQ6
6xAuGsPxzJUvd5/wCps8VnPTPw7D//YQ4JTpiOjm/WsyZFLf+lMaP3wrTtdF7g3e
39eVnXZtwDBoSwILbWAhcHT2iLEsvGKQI/Ec60GBjKW9ylk4M3svw3DgEwtW2mIR
EtFI381ELYh/ixU=
=4dcj
-----END PGP SIGNATURE-----
gpgv: Signature made Tue May 21 19:21:07 2024 UTC
gpgv: using RSA key 8F91B227C7D6F2B1948C8236793CF67E8F0D11DA
gpgv: issuer "emollier at debian.org"
gpgv: Can't check signature: No public key
dpkg-source: warning: cannot verify inline signature for ./analizo_1.25.4-3.dsc: no acceptable signature found
dpkg-source: info: extracting analizo in /<<PKGBUILDDIR>>
dpkg-source: info: unpacking analizo_1.25.4.orig.tar.gz
dpkg-source: info: unpacking analizo_1.25.4-3.debian.tar.xz
dpkg-source: info: using patch list from debian/patches/series
dpkg-source: info: applying drop_local_lib
dpkg-source: info: applying hotfix_for_acc_metric_test
dpkg-source: info: applying fix_shebang
dpkg-source: info: applying no-shell-for-system.patch
dpkg-source: info: applying doxygen-1.9.8.patch
Check disk space
----------------
Sufficient free space for build
User Environment
----------------
APT_CONFIG=/var/lib/sbuild/apt.conf
HOME=/sbuild-nonexistent
LC_ALL=C.UTF-8
LOGNAME=root
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
SCHROOT_ALIAS_NAME=unstable-amd64-sbuild
SCHROOT_CHROOT_NAME=unstable-amd64-sbuild
SCHROOT_COMMAND=env
SCHROOT_GID=0
SCHROOT_GROUP=root
SCHROOT_SESSION_ID=unstable-amd64-sbuild-81390e33-c436-4f29-a437-6362ee93a313
SCHROOT_UID=0
SCHROOT_USER=root
SHELL=/bin/sh
USER=root
dpkg-buildpackage
-----------------
Command: dpkg-buildpackage --sanitize-env -us -uc -b -rfakeroot
dpkg-buildpackage: info: source package analizo
dpkg-buildpackage: info: source version 1.25.4-3
dpkg-buildpackage: info: source distribution unstable
dpkg-buildpackage: info: source changed by ?tienne Mollier <emollier at debian.org>
dpkg-source --before-build .
dpkg-buildpackage: info: host architecture amd64
debian/rules clean
dh clean
dh_clean
debian/rules binary
dh binary
dh_update_autotools_config
dh_autoreconf
dh_auto_configure
/usr/bin/perl Makefile.PL INSTALLDIRS=vendor "OPTIMIZE=-g -O2 -Werror=implicit-function-declaration -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -fcf-protection -Wdate-time -D_FORTIFY_SOURCE=2" "LD=x86_64-linux-gnu-gcc -g -O2 -Werror=implicit-function-declaration -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -fcf-protection -Wl,-z,relro"
Warning: prerequisite Alien::Doxyparse 0.17 not found.
Warning: prerequisite Test::Spelling 0 not found.
Warning: prerequisite local::lib 0 not found.
Checking if your kit is complete...
Looks good
Generating a Unix-style Makefile
Writing Makefile for Analizo
Writing MYMETA.yml and MYMETA.json
dh_auto_build
make -j24
make[1]: Entering directory '/<<PKGBUILDDIR>>'
cp lib/Analizo/Batch/Runner/Parallel.pm blib/lib/Analizo/Batch/Runner/Parallel.pm
cp lib/Analizo/Batch/Output/DB.pm blib/lib/Analizo/Batch/Output/DB.pm
cp lib/Analizo/Extractor/Doxyparse.pm blib/lib/Analizo/Extractor/Doxyparse.pm
cp lib/Analizo/Metric/AverageNumberOfParameters.pm blib/lib/Analizo/Metric/AverageNumberOfParameters.pm
cp lib/Analizo/Command/metrics.pm blib/lib/Analizo/Command/metrics.pm
cp lib/Analizo/Command/tree_evolution.pm blib/lib/Analizo/Command/tree_evolution.pm
cp lib/Analizo/Batch/Output/CSV.pm blib/lib/Analizo/Batch/Output/CSV.pm
cp lib/Analizo/Batch/Runner.pm blib/lib/Analizo/Batch/Runner.pm
cp lib/Analizo/GlobalMetrics.pm blib/lib/Analizo/GlobalMetrics.pm
cp lib/Analizo/Batch/Directories.pm blib/lib/Analizo/Batch/Directories.pm
cp lib/Analizo/Command/files_graph.pm blib/lib/Analizo/Command/files_graph.pm
cp lib/Analizo.pm blib/lib/Analizo.pm
cp lib/Analizo/Batch/Job/Git.pm blib/lib/Analizo/Batch/Job/Git.pm
cp lib/Analizo/Metric/AfferentConnections.pm blib/lib/Analizo/Metric/AfferentConnections.pm
cp lib/Analizo/GlobalMetric/TotalAbstractClasses.pm blib/lib/Analizo/GlobalMetric/TotalAbstractClasses.pm
cp lib/Analizo/LanguageFilter.pm blib/lib/Analizo/LanguageFilter.pm
cp lib/Analizo/Filter/Client.pm blib/lib/Analizo/Filter/Client.pm
cp lib/Analizo/Extractor.pm blib/lib/Analizo/Extractor.pm
cp lib/Analizo/GlobalMetric/MethodsPerAbstractClass.pm blib/lib/Analizo/GlobalMetric/MethodsPerAbstractClass.pm
cp lib/Analizo/Batch/Git.pm blib/lib/Analizo/Batch/Git.pm
cp lib/Analizo/Batch/Job/Directories.pm blib/lib/Analizo/Batch/Job/Directories.pm
cp lib/Analizo/Metric/AverageCycloComplexity.pm blib/lib/Analizo/Metric/AverageCycloComplexity.pm
cp lib/Analizo/Command/help.pm blib/lib/Analizo/Command/help.pm
cp lib/Analizo/Command.pm blib/lib/Analizo/Command.pm
cp lib/Analizo/Batch/Output.pm blib/lib/Analizo/Batch/Output.pm
cp lib/Analizo/Batch/Runner/Sequential.pm blib/lib/Analizo/Batch/Runner/Sequential.pm
cp lib/Analizo/FilenameFilter.pm blib/lib/Analizo/FilenameFilter.pm
cp lib/Analizo/Batch/Job.pm blib/lib/Analizo/Batch/Job.pm
cp lib/Analizo/Batch.pm blib/lib/Analizo/Batch.pm
cp lib/Analizo/GlobalMetric/ChangeCost.pm blib/lib/Analizo/GlobalMetric/ChangeCost.pm
cp lib/Analizo/Command/metrics_history.pm blib/lib/Analizo/Command/metrics_history.pm
cp lib/Analizo/Metric/AverageMethodLinesOfCode.pm blib/lib/Analizo/Metric/AverageMethodLinesOfCode.pm
cp lib/Analizo/Command/graph.pm blib/lib/Analizo/Command/graph.pm
cp lib/Analizo/Command/metrics_batch.pm blib/lib/Analizo/Command/metrics_batch.pm
cp share/bash-completion/analizo blib/lib/auto/share/dist/Analizo/bash-completion/analizo
cp share/README blib/lib/auto/share/dist/Analizo/README
cp lib/Analizo/Metric/ResponseForClass.pm blib/lib/Analizo/Metric/ResponseForClass.pm
cp lib/Analizo/Metric/NumberOfPublicAttributes.pm blib/lib/Analizo/Metric/NumberOfPublicAttributes.pm
cp lib/Test/Analizo/Class.pm blib/lib/Test/Analizo/Class.pm
cp lib/Analizo/Metric/NumberOfAttributes.pm blib/lib/Analizo/Metric/NumberOfAttributes.pm
cp lib/Analizo/Metrics.pm blib/lib/Analizo/Metrics.pm
cp lib/Analizo/ModuleMetric.pm blib/lib/Analizo/ModuleMetric.pm
cp lib/Analizo/ModuleMetrics.pm blib/lib/Analizo/ModuleMetrics.pm
cp lib/Analizo/Metric/CouplingBetweenObjects.pm blib/lib/Analizo/Metric/CouplingBetweenObjects.pm
cp lib/Analizo/Metric/NumberOfChildren.pm blib/lib/Analizo/Metric/NumberOfChildren.pm
cp lib/Analizo/Metric/MaximumMethodLinesOfCode.pm blib/lib/Analizo/Metric/MaximumMethodLinesOfCode.pm
cp lib/Test/Analizo.pm blib/lib/Test/Analizo.pm
cp lib/Analizo/Metric/StructuralComplexity.pm blib/lib/Analizo/Metric/StructuralComplexity.pm
cp lib/Analizo/Metric/NumberOfPublicMethods.pm blib/lib/Analizo/Metric/NumberOfPublicMethods.pm
cp lib/Analizo/Model.pm blib/lib/Analizo/Model.pm
cp profile.pl blib/lib/profile.pl
cp lib/Test/Analizo/BDD/Cucumber/Extension.pm blib/lib/Test/Analizo/BDD/Cucumber/Extension.pm
cp lib/Analizo/Metric/LinesOfCode.pm blib/lib/Analizo/Metric/LinesOfCode.pm
cp lib/Analizo/Metric/LackOfCohesionOfMethods.pm blib/lib/Analizo/Metric/LackOfCohesionOfMethods.pm
cp lib/Analizo/Metric/DepthOfInheritanceTree.pm blib/lib/Analizo/Metric/DepthOfInheritanceTree.pm
cp lib/Analizo/Metric/NumberOfMethods.pm blib/lib/Analizo/Metric/NumberOfMethods.pm
cp lib/Test/Analizo/Git.pm blib/lib/Test/Analizo/Git.pm
cp bin/analizo blib/script/analizo
"/usr/bin/perl" -MExtUtils::MY -e 'MY->fixin(shift)' -- blib/script/analizo
Manifying 26 pod documents
make[1]: Leaving directory '/<<PKGBUILDDIR>>'
dh_auto_test
make -j24 test TEST_VERBOSE=1
make[1]: Entering directory '/<<PKGBUILDDIR>>'
Skip blib/lib/auto/share/dist/Analizo/bash-completion/analizo (unchanged)
Skip blib/lib/auto/share/dist/Analizo/README (unchanged)
PERL_DL_NONLAZY=1 "/usr/bin/perl" "-MExtUtils::Command::MM" "-MTest::Harness" "-e" "undef *Test::Harness::Switches; test_harness(1, 'blib/lib', 'blib/arch')" t/*.t t/Analizo/*.t t/Analizo/Batch/*.t t/Analizo/Batch/Job/*.t t/Analizo/Batch/Output/*.t t/Analizo/Batch/Runner/*.t t/Analizo/Command/*.t t/Analizo/Extractor/*.t t/Analizo/GlobalMetric/*.t t/Analizo/Metric/*.t t/Analizo/Metric/AfferentConnections/*.t
#
# t::Analizo->constructor
#
# t::Analizo->empty_array_for_command_with_no_options
#
# t::Analizo->empty_hash_when_no_config_file
#
# t::Analizo->load_command_options
#
# t::Analizo->load_config_file
t/Analizo.t ..............................................................
ok 1 - use Analizo;
ok 2 - An object of class 'Analizo' isa 'Analizo'
ok 3 - An object of class 'Analizo' isa 'App::Cmd'
ok 4 - empty array for command with no options
ok 5 - empty hash when no config file
ok 6 - load command options
ok 7 - load config file
1..7
ok
#
# t::Analizo::Batch->constructor
#
# t::Analizo::Batch->count
#
# t::Analizo::Batch->next
#
# t::Analizo::Batch->pass_filters_forward
t/Analizo/Batch.t ........................................................
ok 1 - An object of class 'Analizo::Batch' isa 'Analizo::Batch'
ok 2 - Analizo::Batch->can('count')
ok 3 - Analizo::Batch->can('next')
ok 4 - next
ok 5 - must pass filters into job
1..5
ok
#
# t::Analizo::Batch::Directories->count
#
# t::Analizo::Batch::Directories->create_with_arguments
#
# t::Analizo::Batch::Directories->create_with_bad_arguments
#
# t::Analizo::Batch::Directories->create_with_no_arguments
#
# t::Analizo::Batch::Directories->deliver_jobs
#
# t::Analizo::Batch::Directories->expose_list_of_dirs
t/Analizo/Batch/Directories.t ............................................
ok 1 - count
ok 2 - create with arguments
ok 3 - create with bad arguments
ok 4 - create with no arguments
ok 5 - deliver jobs
ok 6 - deliver jobs
ok 7 - deliver jobs
ok 8 - Analizo::Batch::Directories->can('directories')
1..8
ok
#
# t::Analizo::Batch::Git->constructor
#
# t::Analizo::Batch::Git->count
#
# t::Analizo::Batch::Git->create_with_and_without_args
#
# t::Analizo::Batch::Git->default_filter
#
# t::Analizo::Batch::Git->find_commit
#
# t::Analizo::Batch::Git->traverse_repository
t/Analizo/Batch/Git.t ....................................................
ok 1 - An object of class 'Analizo::Batch::Git' isa 'Analizo::Batch::Git'
ok 2 - count
ok 3 - create with and without args
ok 4 - create with and without args
ok 5 - create with and without args
ok 6 - create with and without args
ok 7 - must not analyze commit containing only (input.cc)
ok 8 - must not analyze commit containing only (prog.cc)
ok 9 - must not analyze commit containing only (prog.cc)
ok 10 - must not analyze commit containing only (prog.cc)
ok 11 - must not analyze commit containing only (output.h,output.cc,prog.cc)
ok 12 - must not analyze commit containing only (input.cc,input.h,prog.cc)
ok 13 - must not analyze commit containing only (prog.cc)
ok 14 - find commit
ok 15 - An object of class 'Analizo::Batch::Job::Git' isa 'Analizo::Batch::Job::Git'
ok 16 - find commit
ok 17 - main commit must be listed
ok 18 - intermediate relevant commit must be listed
ok 19 - intermediate IRRELEVANT commit must not be listed
1..19
ok
#
# t::Analizo::Batch::Job->before_execute
#
# t::Analizo::Batch::Job->cache_of_model_and_metrics
#
# t::Analizo::Batch::Job->constructor
#
# t::Analizo::Batch::Job->empty_metadata_by_default
#
# t::Analizo::Batch::Job->execute
#
# t::Analizo::Batch::Job->exposed_interface
#
# t::Analizo::Batch::Job->invalidates_cache_after_upgrade_version
#
# t::Analizo::Batch::Job->metadata_as_hash
#
# t::Analizo::Batch::Job->pass_filters_to_extractor
#
# t::Analizo::Batch::Job->project_name
#
# t::Analizo::Batch::Job->stores_cache_on_distinct_dirs_for_each_version
#
# t::Analizo::Batch::Job->tree_id
t/Analizo/Batch/Job.t ....................................................
ok 1 - before execute
ok 2 - before execute
ok 3 - use cache for model
ok 4 - use cache for metrics
ok 5 - cached model is the same
ok 6 - cached metrics is the same
ok 7 - An object of class 'Analizo::Batch::Job' isa 'Analizo::Batch::Job'
ok 8 - empty metadata by default
ok 9 - must call prepare() and cleanup() on execute
ok 10 - An object of class 'Analizo::Model' isa 'Analizo::Model'
ok 11 - An object of class 'Analizo::Metrics' isa 'Analizo::Metrics'
ok 12 - An object of class 'Analizo::Model' isa 'Analizo::Model'
ok 13 - must force metrics calculation during execute() bu calling $metrics->data()
ok 14 - Analizo::Batch::Job->can(...)
ok 15 - metrics values sucessfully retrievied from the cache
ok 16 - values for metrics found on cache for same analizo version
ok 17 - values for metrics should not found for other analizo version
ok 18 - metadata as hash
ok 19 - metadata as hash
ok 20 - metadata as hash
ok 21 - must pass filters to extractor object
ok 22 - project name
ok 23 - project name
ok 24 - stores cache on distinct dirs for each version
ok 25 - stores cache on distinct dirs for each version
ok 26 - tree id
1..26
ok
#
# t::Analizo::Batch::Job::Directories->constructor
#
# t::Analizo::Batch::Job::Directories->prepare_and_cleanup
t/Analizo/Batch/Job/Directories.t ........................................
ok 1 - An object of class 'Analizo::Batch::Job::Directories' isa 'Analizo::Batch::Job::Directories'
ok 2 - constructor
ok 3 - constructor
ok 4 - must change dir in prepare()
ok 5 - must change back dir in cleanup()
1..5
ok
#
# t::Analizo::Batch::Job::Git->changed_files
#
# t::Analizo::Batch::Job::Git->constructor
#
# t::Analizo::Batch::Job::Git->constructor_with_arguments
#
# t::Analizo::Batch::Job::Git->git_checkout_should_actually_checkout
#
# t::Analizo::Batch::Job::Git->merge_and_first_commit_detection
#
# t::Analizo::Batch::Job::Git->metadata
#
# t::Analizo::Batch::Job::Git->must_NOT_keep_a_reference_to_batch
#
# t::Analizo::Batch::Job::Git->parallelism_support
#
# t::Analizo::Batch::Job::Git->prepare_and_cleanup
#
# t::Analizo::Batch::Job::Git->previous_relevant
#
# t::Analizo::Batch::Job::Git->previous_relevant_with_parent_without_previous_relevant
#
# t::Analizo::Batch::Job::Git->previous_wanted
#
# t::Analizo::Batch::Job::Git->relevant_merge
t/Analizo/Batch/Job/Git.t ................................................
ok 1 - changed files
ok 2 - changed files
ok 3 - changed files
ok 4 - changed files
ok 5 - An object of class 'Analizo::Batch::Job::Git' isa 'Analizo::Batch::Job::Git'
ok 6 - constructor with arguments
ok 7 - constructor with arguments
ok 8 - constructor with arguments
ok 9 - git checkout should actually checkout
ok 10 - git checkout should actually checkout
ok 11 - git checkout should actually checkout
ok 12 - git checkout should actually checkout
ok 13 - merge and first commit detection
ok 14 - merge and first commit detection
ok 15 - merge and first commit detection
ok 16 - merge and first commit detection
ok 17 - author name
ok 18 - author name
ok 19 - author name
ok 20 - author email
ok 21 - author email
ok 22 - author email
ok 23 - author date
ok 24 - author date
ok 25 - author date
ok 26 - previous commit
ok 27 - previous commit
ok 28 - previous commit
ok 29 - changed files
ok 30 - changed files
ok 31 - changed files
ok 32 - metadata
ok 33 - metadata
ok 34 - metadata
ok 35 - metadata
ok 36 - metadata
ok 37 - must not include non-code files in tree
ok 38 - unexisting commit id
ok 39 - unexisting commit id
ok 40 - unexisting commit id
ok 41 - must NOT keep a reference to batch
ok 42 - parallelism support
ok 43 - different work directory must be created
ok 44 - content must be copied
ok 45 - different work directory must be removed when parallel_cleanup is called.
ok 46 - parallelism support must not mess with project name
ok 47 - prepare must change dir
ok 48 - cleanup must change cwd back
ok 49 - cleanup must checkout given commit and go back to previous one
ok 50 - previous relevant
ok 51 - previous relevant
ok 52 - previous relevant
ok 53 - must return undef as previous_relevant when parent is a merge commit without any previous relevant commits
ok 54 - previous wanted
ok 55 - previous wanted
ok 56 - relevant merge
1..56
ok
#
# t::Analizo::Batch::Output->constructor
#
# t::Analizo::Batch::Output->exposed_interface
#
# t::Analizo::Batch::Output->must_write_to_stdout_when_no_file_is_given
#
# t::Analizo::Batch::Output->not_require_metrics_by_default
#
# t::Analizo::Batch::Output->should_write_to_output_file
t/Analizo/Batch/Output.t .................................................
ok 1 - An object of class 'Analizo::Batch::Output' isa 'Analizo::Batch::Output'
ok 2 - Analizo::Batch::Output->can(...)
ok 3 - must write to stdout when no file is given
ok 4 - not require metrics by default
ok 5 - output must be written to file
ok 6 - must delegate actualy writing to subclasses
1..6
ok
#
# t::Analizo::Batch::Output::CSV->constructor
#
# t::Analizo::Batch::Output::CSV->job_metadata
#
# t::Analizo::Batch::Output::CSV->must_return_short_names_of_metrics
#
# t::Analizo::Batch::Output::CSV->must_write_hash_data_as_string
#
# t::Analizo::Batch::Output::CSV->must_write_list_data_as_string
#
# t::Analizo::Batch::Output::CSV->writing_data
t/Analizo/Batch/Output/CSV.t .............................................
ok 1 - An object of class 'T::MO::E::a' isa 'Analizo::Batch::Output::CSV'
ok 2 - must list metadata fields
ok 3 - must include metadata values
ok 4 - must list acc metric name
ok 5 - must list accm metric name
ok 6 - must list amloc metric name
ok 7 - must list anpm metric name
ok 8 - must write hash data as string
ok 9 - must write list data as string
ok 10 - must write data to output file
ok 11 - first line must contain column names
ok 12 - CSV output must not contain empty lines
1..12
ok
#
# t::Analizo::Batch::Output::DB->add_commit_and_developer_data
#
# t::Analizo::Batch::Output::DB->add_module_data_for_modules_changed_by_commit
#
# t::Analizo::Batch::Output::DB->add_project_data
#
# t::Analizo::Batch::Output::DB->basics
#
# t::Analizo::Batch::Output::DB->changed_added_module_versions
#
# t::Analizo::Batch::Output::DB->destination_database
#
# t::Analizo::Batch::Output::DB->files_with_multiple_modules
#
# t::Analizo::Batch::Output::DB->global_metrics
#
# t::Analizo::Batch::Output::DB->module_versions_with_the_same_id
#
# t::Analizo::Batch::Output::DB->numeric_autoincrement_pk
#
# t::Analizo::Batch::Output::DB->setting_up_a_database
t/Analizo/Batch/Output/DB.t ..............................................
ok 1 - [SELECT * FROM commits JOIN projects on (projects.id = commits.project_id) WHERE commits.id = 'XPTO'] returned 1 rows instead of exactly 1
ok 2 - [SELECT * FROM developers JOIN commits on (commits.developer_id = developers.id) WHERE developers.name = 'Jonh Doe' AND developers.email = 'jdoe at example.com' AND commits.id = 'XPTO'] returned 1 rows instead of exactly 1
ok 3 - [SELECT * FROM commits WHERE id = 'XPTO' AND previous_commit_id = 'PREVIOUS' AND date = '1313206352'] returned 1 rows instead of exactly 1
ok 4 - [SELECT * FROM modules JOIN projects ON (projects.id = modules.project_id) WHERE projects.name = 'animals' AND modules.name = 'Mammal'] returned 1 rows instead of exactly 1
ok 5 - [SELECT * FROM modules JOIN module_versions ON (module_versions.module_id = modules.id) JOIN commits_module_versions ON (commits_module_versions.module_version_id = module_versions.id) JOIN commits ON (commits_module_versions.commit_id = commits.id) WHERE commits.id = 'foo' AND modules.name = 'Mammal' AND module_versions.lcom4 >= 0 AND module_versions.cbo >= 0] returned 1 rows instead of exactly 1
ok 6 - [SELECT * FROM modules JOIN projects ON (projects.id = modules.project_id) WHERE projects.name = 'animals' AND modules.name = 'Dog'] returned 1 rows instead of exactly 1
ok 7 - [SELECT * FROM modules JOIN module_versions ON (module_versions.module_id = modules.id) JOIN commits_module_versions ON (commits_module_versions.module_version_id = module_versions.id) JOIN commits ON (commits_module_versions.commit_id = commits.id) WHERE commits.id = 'foo' AND modules.name = 'Dog' AND module_versions.lcom4 >= 0 AND module_versions.cbo >= 0] returned 1 rows instead of exactly 1
ok 8 - [SELECT * FROM module_versions JOIN commits_module_versions ON (module_versions.id = commits_module_versions.module_version_id) JOIN commits ON (commits.id = commits_module_versions.commit_id) WHERE commit_id = 'foo'] returned 3 rows instead of exactly 3
ok 9 - [SELECT * FROM modules JOIN module_versions ON (module_versions.module_id = modules.id) WHERE modules.name = 'Mammal' AND module_versions.id = '1111111111111111111111111111111111111111'] returned 1 rows instead of exactly 1
ok 10 - [SELECT * FROM modules JOIN module_versions ON (module_versions.module_id = modules.id) WHERE modules.name = 'Dog' AND module_versions.id = '452219454519b29aae2e135c470d97d9e234976b'] returned 1 rows instead of exactly 1
ok 11 - [select * from projects where name = 'niceproject'] returned 1 rows instead of exactly 1
ok 12 - [select * from projects where name = 'niceproject'] returned 1 rows instead of exactly 1
ok 13 - An object of class 'Analizo::Batch::Output::DB' isa 'Analizo::Batch::Output'
ok 14 - An object of class 'Analizo::Batch::Output::DB' isa 'Analizo::Batch::Output::DB'
ok 15 - [SELECT * FROM commits_module_versions WHERE commit_id = 'foo' AND module_version_id = '1111111111111111111111111111111111111111' AND modified AND NOT added] returned 1 rows instead of exactly 1
ok 16 - [SELECT * FROM commits_module_versions WHERE commit_id = 'foo' AND module_version_id = '452219454519b29aae2e135c470d97d9e234976b' AND added AND NOT modified] returned 1 rows instead of exactly 1
ok 17 - [SELECT * FROM commits_module_versions WHERE commit_id = 'foo' AND module_version_id = 'f676c6d81e63377edc2f9ec60b1bc2359b94606f' AND modified AND NOT added] returned 1 rows instead of exactly 1
ok 18 - use SQLite output by default
ok 19 - use SQLite with a custom DB name
ok 20 - destination database
ok 21 - [SELECT * FROM modules] returned 3 rows instead of exactly 3
ok 22 - [SELECT * FROM commits where total_abstract_classes > 0] returned 1 rows instead of exactly 1
ok 23 - [SELECT * FROM module_versions WHERE id = '1111111111111111111111111111111111111111'] returned 2 rows instead of exactly 2
ok 24 - numeric autoincrement pk
ok 25 - numeric autoincrement pk
ok 26 - must create PROJECTS table
ok 27 - must create COMMITS table
ok 28 - must create DEVELOPERS table
ok 29 - must create MODULES table
ok 30 - must create MODULE_VERSIONS table
ok 31 - must create COMMITS_MODULE_VERSIONS table
1..31
ok
#
# t::Analizo::Batch::Runner->interaction_with_output
#
# t::Analizo::Batch::Runner->interface
#
# t::Analizo::Batch::Runner->progress
t/Analizo/Batch/Runner.t .................................................
ok 1 - must initialize output object
ok 2 - must flush output object
ok 3 - Analizo::Batch::Runner->can('run')
ok 4 - Analizo::Batch::Runner->can('actually_run')
ok 5 - progress
ok 6 - progress
ok 7 - progress
1..7
ok
#
# t::Analizo::Batch::Runner::Parallel->constuctor
#
# t::Analizo::Batch::Runner::Parallel->number_of_parallel_processes
t/Analizo/Batch/Runner/Parallel.t ........................................
ok 1 - An object of class 'Analizo::Batch::Runner::Parallel' isa 'Analizo::Batch::Runner'
ok 2 - An object of class 'Analizo::Batch::Runner::Parallel' isa 'Analizo::Batch::Runner::Parallel'
ok 3 - number of parallel processes
ok 4 - number of parallel processes
1..4
ok
#
# t::Analizo::Batch::Runner::Sequential->constructor
#
# t::Analizo::Batch::Runner::Sequential->empty_batch_wont_crash
#
# t::Analizo::Batch::Runner::Sequential->run
t/Analizo/Batch/Runner/Sequential.t ......................................
ok 1 - An object of class 'Analizo::Batch::Runner::Sequential' isa 'Analizo::Batch::Runner'
ok 2 - An object of class 'Analizo::Batch::Runner::Sequential' isa 'Analizo::Batch::Runner::Sequential'
ok 3 - job1 must be executed
ok 4 - job2 must be executed
ok 5 - run
ok 6 - output must be flushed exactly once
1..6
ok
#
# t::Analizo::Command->any_command_is_a_subclass_of_Analizo_Command
#
# t::Analizo::Command->execute_some_command
#
# t::Analizo::Command->executing_commands_with_version_argument_is_not_allowed
#
# t::Analizo::Command->version_information
t/Analizo/Command.t ......................................................
ok 1 - use Analizo::Command;
ok 2 - An object of class 't::Analizo::Command::fake' isa 'Analizo::Command'
ok 3 - execute some command
ok 4 - threw Regexp ((?^:Invalid option))
ok 5 - version information
1..5
ok
#
# t::Analizo::Command::files_graph->constructor
#
# t::Analizo::Command::files_graph->is_a_subclass_of_Analizo_Command
t/Analizo/Command/files_graph.t ..........................................
ok 1 - use Analizo::Command::files_graph;
ok 2 - An object of class 'Analizo::Command::files_graph' isa 'Analizo::Command::files_graph'
ok 3 - An object of class 'Analizo::Command::files_graph' isa 'Analizo::Command'
1..3
ok
#
# t::Analizo::Command::graph->constructor
#
# t::Analizo::Command::graph->is_a_subclass_of_Analizo_Command
t/Analizo/Command/graph.t ................................................
ok 1 - use Analizo::Command::graph;
ok 2 - An object of class 'Analizo::Command::graph' isa 'Analizo::Command::graph'
ok 3 - An object of class 'Analizo::Command::graph' isa 'Analizo::Command'
1..3
ok
#
# t::Analizo::Command::help->constructor
#
# t::Analizo::Command::help->is_a_subclass_of_Analizo_Command
t/Analizo/Command/help.t .................................................
ok 1 - use Analizo::Command::help;
ok 2 - An object of class 'Analizo::Command::help' isa 'App::Cmd::Command::help'
ok 3 - An object of class 'Analizo::Command::help' isa 'Analizo::Command'
1..3
ok
#
# t::Analizo::Command::metrics->constructor
#
# t::Analizo::Command::metrics->is_a_subclass_of_Analizo_Command
t/Analizo/Command/metrics.t ..............................................
ok 1 - use Analizo::Command::metrics;
ok 2 - An object of class 'Analizo::Command::metrics' isa 'Analizo::Command::metrics'
ok 3 - An object of class 'Analizo::Command::metrics' isa 'Analizo::Command'
1..3
ok
#
# t::Analizo::Command::metrics_batch->constructor
#
# t::Analizo::Command::metrics_batch->is_a_subclass_of_Analizo_Command
t/Analizo/Command/metrics_batch.t ........................................
ok 1 - use Analizo::Command::metrics_batch;
ok 2 - An object of class 'Analizo::Command::metrics_batch' isa 'Analizo::Command::metrics_batch'
ok 3 - An object of class 'Analizo::Command::metrics_batch' isa 'Analizo::Command'
1..3
ok
#
# t::Analizo::Command::metrics_history->constructor
#
# t::Analizo::Command::metrics_history->is_a_subclass_of_Analizo_Command
#
# t::Analizo::Command::metrics_history->load_output_driver
#
# t::Analizo::Command::metrics_history->nil_for_unavaiable_output_driver
#
# t::Analizo::Command::metrics_history->output_driver
t/Analizo/Command/metrics_history.t ......................................
ok 1 - use Analizo::Command::metrics_history;
ok 2 - An object of class 'Analizo::Command::metrics_history' isa 'Analizo::Command::metrics_history'
ok 3 - An object of class 'Analizo::Command::metrics_history' isa 'Analizo::Command'
ok 4 - The class (or class-like) 'Analizo::Batch::Output::CSV' isa 'Analizo::Batch::Output::CSV'
ok 5 - nil for unavaiable output driver
ok 6 - output driver
ok 7 - output driver
1..7
ok
#
# t::Analizo::Command::tree_evolution->constructor
#
# t::Analizo::Command::tree_evolution->is_a_subclass_of_Analizo_Command
t/Analizo/Command/tree_evolution.t .......................................
ok 1 - use Analizo::Command::tree_evolution;
ok 2 - An object of class 'Analizo::Command::tree_evolution' isa 'Analizo::Command::tree_evolution'
ok 3 - An object of class 'Analizo::Command::tree_evolution' isa 'Analizo::Command'
1..3
ok
#
# t::Analizo::Extractor->constructor
#
# t::Analizo::Extractor->current_file
#
# t::Analizo::Extractor->current_file_plus_current_module
#
# t::Analizo::Extractor->current_module
#
# t::Analizo::Extractor->dont_allow_code_injection
#
# t::Analizo::Extractor->fail_when_load_invalid_extractor
#
# t::Analizo::Extractor->force_ignore_filter
#
# t::Analizo::Extractor->has_a_current_member
#
# t::Analizo::Extractor->has_filters
#
# t::Analizo::Extractor->load_doxyparse_extractor
#
# t::Analizo::Extractor->load_doxyparse_extractor_by_alias
#
# t::Analizo::Extractor->must_consider_only__supported_languages
#
# t::Analizo::Extractor->must_create_filters_for_excluded_dirs
#
# t::Analizo::Extractor->must_filter_input_with_language_filter
#
# t::Analizo::Extractor->must_not_exclude_everything_in_the_case_of_unexisting_excluded_dir
#
# t::Analizo::Extractor->must_not_ignore_filter_by_default
#
# t::Analizo::Extractor->must_not_process_files_in_excluded_dirs
#
# t::Analizo::Extractor->process_must_delegate_to_actually_process
t/Analizo/Extractor.t ....................................................
ok 1 - An object of class 'Analizo::Extractor' isa 'Analizo::Extractor'
ok 2 - current file
ok 3 - current file
ok 4 - current file plus current module
ok 5 - must be able to set the current module
ok 6 - must be able to change the current module
ok 7 - An object of class 'Analizo::Extractor::Doxyparse' isa 'Analizo::Extractor::Doxyparse'
ok 8 - dont allow code injection
ok 9 - fail when load invalid extractor
ok 10 - force ignore filter
ok 11 - Analizo::Extractor->can('current_member')
ok 12 - Analizo::Extractor->can('filters')
ok 13 - has filters
ok 14 - has filters
ok 15 - load doxyparse extractor
ok 16 - An object of class 'Analizo::Extractor::Doxyparse' isa 'Analizo::Extractor::Doxyparse'
ok 17 - load doxyparse extractor by alias
ok 18 - must consider only supported languages
ok 19 - must create filters for excluded dirs
ok 20 - must create filters for excluded dirs
ok 21 - must create filters for excluded dirs
ok 22 - must filter input with language filter
ok 23 - must not exclude everything in the case of unexisting excluded dir
ok 24 - must not exclude everything in the case of unexisting excluded dir
ok 25 - must not ignore filter by default
ok 26 - must not process files in excluded dirs
ok 27 - process must delegate to actually process
1..27
ok
#
# t::Analizo::Extractor::Doxyparse->constructor
#
# t::Analizo::Extractor::Doxyparse->current_file
#
# t::Analizo::Extractor::Doxyparse->current_file_strip_pwd
#
# t::Analizo::Extractor::Doxyparse->current_module
#
# t::Analizo::Extractor::Doxyparse->detect_abstract_class
#
# t::Analizo::Extractor::Doxyparse->detect_conditional_paths
#
# t::Analizo::Extractor::Doxyparse->detect_direct_function_calls
#
# t::Analizo::Extractor::Doxyparse->detect_function_declaration
#
# t::Analizo::Extractor::Doxyparse->detect_function_protection
#
# t::Analizo::Extractor::Doxyparse->detect_lines_of_code
#
# t::Analizo::Extractor::Doxyparse->detect_number_of_parameters
#
# t::Analizo::Extractor::Doxyparse->detect_variable_declaration
#
# t::Analizo::Extractor::Doxyparse->detect_variable_protection
#
# t::Analizo::Extractor::Doxyparse->detect_variable_uses
#
# t::Analizo::Extractor::Doxyparse->detects_multiple_inheritance_properly
#
# t::Analizo::Extractor::Doxyparse->has_a_model
#
# t::Analizo::Extractor::Doxyparse->inheritance
#
# t::Analizo::Extractor::Doxyparse->invalid_doxyparse_input
#
# t::Analizo::Extractor::Doxyparse->module_name_can_contain_spaces
#
# t::Analizo::Extractor::Doxyparse->reading_from_directories
#
# t::Analizo::Extractor::Doxyparse->reading_from_one_input_file
#
# t::Analizo::Extractor::Doxyparse->reading_from_some_input_files
#
# t::Analizo::Extractor::Doxyparse->use_full_filename_for_C_modules
t/Analizo/Extractor/Doxyparse.t ..........................................
ok 1 - use Analizo::Extractor::Doxyparse;
ok 2 - An object of class 'Analizo::Extractor::Doxyparse' isa 'Analizo::Extractor::Doxyparse'
ok 3 - An object of class 'Analizo::Extractor::Doxyparse' isa 'Analizo::Extractor'
ok 4 - current file
ok 5 - current file strip pwd
ok 6 - must be able to set the current module
ok 7 - must be able to change the current module
ok 8 - extractor detects an abstract class
ok 9 - detect conditional paths
ok 10 - detect direct function calls
ok 11 - detect direct function calls
ok 12 - detect direct function calls
ok 13 - detect function declaration
ok 14 - must set the current function
ok 15 - detect function declaration
ok 16 - must set the current function again
ok 17 - detect function declaration
ok 18 - must set the current function one more time
ok 19 - detect function protection
ok 20 - detect function protection
ok 21 - detect lines of code
ok 22 - detect lines of code
ok 23 - detect number of parameters
ok 24 - detect variable declaration
ok 25 - must not read variable declarations when reading the name of the current module
ok 26 - detect variable declaration
ok 27 - detect variable protection
ok 28 - detect variable protection
ok 29 - detect variable uses
ok 30 - detect variable uses
ok 31 - Bird inherits Animal
ok 32 - detects multiple inheritance properly
ok 33 - detects multiple inheritance properly
ok 34 - detects multiple inheritance properly
ok 35 - detects multiple inheritance properly
ok 36 - multiple inheritance detected
ok 37 - An object of class 'Analizo::Model' isa 'Analizo::Model'
ok 38 - extractor detects inheritance
ok 39 - invalid doxyparse input
ok 40 - module name can contain spaces
ok 41 - reading from directories
ok 42 - reading from directories
ok 43 - reading from directories
ok 44 - reading from directories
ok 45 - module1 has once member
ok 46 - reading from one input file
ok 47 - we have once module
ok 48 - reading from one input file
ok 49 - module1 and module2 has 3 members
ok 50 - we have 2 modules
ok 51 - reading from some input files
ok 52 - reading from some input files
ok 53 - use full filename for C modules
ok 54 - use full filename for C modules
1..54
ok
#
# t::Analizo::FilenameFilter->constructor
#
# t::Analizo::FilenameFilter->excluder
#
# t::Analizo::FilenameFilter->must_match_filenames_with_or_without_leading_dot
#
# t::Analizo::FilenameFilter->null_object
t/Analizo/FilenameFilter.t ...............................................
ok 1 - An object of class 'Analizo::FilenameFilter' isa 'Analizo::FilenameFilter'
ok 2 - An object of class 'Analizo::FilenameFilter' isa 'Analizo::FilenameFilter'
ok 3 - excluder
ok 4 - excluder
ok 5 - excluder
ok 6 - excluder
ok 7 - excluder
ok 8 - must match filenames with or without leading dot
ok 9 - must match filenames with or without leading dot
ok 10 - must match filenames with or without leading dot
ok 11 - must match filenames with or without leading dot
ok 12 - null object
1..12
ok
#
# t::Analizo::GlobalMetric::ChangeCost->calculate
#
# t::Analizo::GlobalMetric::ChangeCost->calculate_for_an_empty_callgraph
#
# t::Analizo::GlobalMetric::ChangeCost->description
#
# t::Analizo::GlobalMetric::ChangeCost->has_model
t/Analizo/GlobalMetric/ChangeCost.t ......................................
ok 1 - use Analizo::GlobalMetric::ChangeCost;
ok 2 - calculate
ok 3 - no change cost
ok 4 - description
ok 5 - has model
1..5
ok
#
# t::Analizo::GlobalMetric::MethodsPerAbstractClass->calculate
#
# t::Analizo::GlobalMetric::MethodsPerAbstractClass->description
#
# t::Analizo::GlobalMetric::MethodsPerAbstractClass->has_model
#
# t::Analizo::GlobalMetric::MethodsPerAbstractClass->use_package
t/Analizo/GlobalMetric/MethodsPerAbstractClass.t .........................
ok 1 - no abstract classes
ok 2 - no methods on abstract classes
ok 3 - one methods on one abstract classes
ok 4 - one methods on one abstract classes
ok 5 - description
ok 6 - has model
ok 7 - use Analizo::GlobalMetric::MethodsPerAbstractClass;
1..7
ok
#
# t::Analizo::GlobalMetric::TotalAbstractClasses->calculate
#
# t::Analizo::GlobalMetric::TotalAbstractClasses->description
#
# t::Analizo::GlobalMetric::TotalAbstractClasses->has_model
#
# t::Analizo::GlobalMetric::TotalAbstractClasses->use_package
t/Analizo/GlobalMetric/TotalAbstractClasses.t ............................
ok 1 - no abstract classes declared
ok 2 - one abstract classes declared
ok 3 - two abstract classes declared
ok 4 - description
ok 5 - has model
ok 6 - use Analizo::GlobalMetric::TotalAbstractClasses;
1..6
ok
#
# t::Analizo::GlobalMetrics->add_lcom4_mean_when_there_were_two_added_values
#
# t::Analizo::GlobalMetrics->add_loc_mean_when_there_was_no_added_values
#
# t::Analizo::GlobalMetrics->add_loc_mean_when_there_was_one_added_values
#
# t::Analizo::GlobalMetrics->add_loc_mean_when_there_were_two_added_values
#
# t::Analizo::GlobalMetrics->add_rfc_sum_when_there_were_two_added_values
#
# t::Analizo::GlobalMetrics->constructor
#
# t::Analizo::GlobalMetrics->list_of_metrics
#
# t::Analizo::GlobalMetrics->metric_from_global_metrics_package
#
# t::Analizo::GlobalMetrics->model
#
# t::Analizo::GlobalMetrics->one_total_loc_found
#
# t::Analizo::GlobalMetrics->one_total_nom_found
#
# t::Analizo::GlobalMetrics->should_add_total_coupling_factor
#
# t::Analizo::GlobalMetrics->should_have_distributions_statistics
#
# t::Analizo::GlobalMetrics->should_have_other_descriptive_statistics
#
# t::Analizo::GlobalMetrics->should_ignore_filename
#
# t::Analizo::GlobalMetrics->should_ignore_module_name
#
# t::Analizo::GlobalMetrics->sum_the_values_of_loc_found
#
# t::Analizo::GlobalMetrics->sum_the_values_of_nom_found
#
# t::Analizo::GlobalMetrics->total_loc_with_no_loc_found
#
# t::Analizo::GlobalMetrics->total_modules
#
# t::Analizo::GlobalMetrics->total_modules_with_defined_attributes_when_a_module_has_no_noa
#
# t::Analizo::GlobalMetrics->total_modules_with_defined_attributes_when_a_module_has_noa
#
# t::Analizo::GlobalMetrics->total_modules_with_defined_attributes_when_no_modules_where_defined
#
# t::Analizo::GlobalMetrics->total_modules_with_defined_methods_when_a_module_has_no_nom
#
# t::Analizo::GlobalMetrics->total_modules_with_defined_methods_when_a_module_has_nom
#
# t::Analizo::GlobalMetrics->total_modules_with_defined_methods_when_no_modules_where_defined
#
# t::Analizo::GlobalMetrics->total_nom_with_no_nom_found
t/Analizo/GlobalMetrics.t ................................................
ok 1 - add lcom4 mean when there were two added values
ok 2 - add loc mean when there was no added values
ok 3 - add loc mean when there was one added values
ok 4 - add loc mean when there were two added values
ok 5 - add rfc sum when there were two added values
ok 6 - An object of class 'Analizo::GlobalMetrics' isa 'Analizo::GlobalMetrics'
ok 7 - must list metrics
ok 8 - 1 abstract class
ok 9 - 1 method per abstract class
ok 10 - model
ok 11 - one total loc found
ok 12 - one total nom found
ok 13 - should add total coupling factor
ok 14 - should add total coupling factor
ok 15 - should have distributions statistics
ok 16 - should have distributions statistics
ok 17 - should have other descriptive statistics
ok 18 - should have other descriptive statistics
ok 19 - should have other descriptive statistics
ok 20 - should have other descriptive statistics
ok 21 - should have other descriptive statistics
ok 22 - Should ignore _filename metrics
ok 23 - should ignore module name
ok 24 - sum the values of loc found
ok 25 - sum the values of nom found
ok 26 - total loc with no loc found
ok 27 - total modules
ok 28 - total modules
ok 29 - total modules with defined attributes when a module has no noa
ok 30 - total modules with defined attributes when a module has noa
ok 31 - total modules with defined attributes when no modules where defined
ok 32 - total modules with defined methods when a module has no nom
ok 33 - total modules with defined methods when a module has nom
ok 34 - total modules with defined methods when no modules where defined
ok 35 - total nom with no nom found
1..35
ok
#
# t::Analizo::LanguageFilter->c_filter_matches_dot_c_and_dot_h
#
# t::Analizo::LanguageFilter->constructor
#
# t::Analizo::LanguageFilter->cpp_filter_matches_cpp_cc_cxx_hpp_h_hh
#
# t::Analizo::LanguageFilter->csharp_filter_matches_cs_only
#
# t::Analizo::LanguageFilter->java_filter_matches_java_only
#
# t::Analizo::LanguageFilter->list_languages
#
# t::Analizo::LanguageFilter->must_be_case_insensitive
#
# t::Analizo::LanguageFilter->null_object_matches_everything_that_is_supported
t/Analizo/LanguageFilter.t ...............................................
ok 1 - c filter matches dot c and dot h
ok 2 - c filter matches dot c and dot h
ok 3 - c filter matches dot c and dot h
ok 4 - An object of class 'Analizo::LanguageFilter' isa 'Analizo::LanguageFilter'
ok 5 - cpp filter matches cpp cc cxx hpp h hh
ok 6 - cpp filter matches cpp cc cxx hpp h hh
ok 7 - cpp filter matches cpp cc cxx hpp h hh
ok 8 - cpp filter matches cpp cc cxx hpp h hh
ok 9 - cpp filter matches cpp cc cxx hpp h hh
ok 10 - cpp filter matches cpp cc cxx hpp h hh
ok 11 - cpp filter matches cpp cc cxx hpp h hh
ok 12 - cpp filter matches cpp cc cxx hpp h hh
ok 13 - csharp filter matches cs only
ok 14 - csharp filter matches cs only
ok 15 - csharp filter matches cs only
ok 16 - csharp filter matches cs only
ok 17 - csharp filter matches cs only
ok 18 - java filter matches java only
ok 19 - java filter matches java only
ok 20 - java filter matches java only
ok 21 - java filter matches java only
ok 22 - list languages
ok 23 - list languages
ok 24 - must be case insensitive
ok 25 - must be case insensitive
ok 26 - must be case insensitive
ok 27 - must be case insensitive
ok 28 - null object matches everything that is supported
ok 29 - null object matches everything that is supported
ok 30 - null object matches everything that is supported
1..30
ok
#
# t::Analizo::Metric::AfferentConnections::AfferentConnectionsByInheritance->calculate_deeper_tree
#
# t::Analizo::Metric::AfferentConnections::AfferentConnectionsByInheritance->calculate_deeper_tree_new_grandchild
#
# t::Analizo::Metric::AfferentConnections::AfferentConnectionsByInheritance->calculate_first_degree_inheritance
#
# t::Analizo::Metric::AfferentConnections::AfferentConnectionsByInheritance->calculate_multiple_childs
#
# t::Analizo::Metric::AfferentConnections::AfferentConnectionsByInheritance->description
#
# t::Analizo::Metric::AfferentConnections::AfferentConnectionsByInheritance->has_model
#
# t::Analizo::Metric::AfferentConnections::AfferentConnectionsByInheritance->use_package
t/Analizo/Metric/AfferentConnections/AfferentConnectionsByInheritance.t ..
ok 1 - grandchilds acc is not affected
ok 2 - grandchild extending a child counts
ok 3 - the deeper the tree, the biggest acc
ok 4 - grandchilds acc is not affected
ok 5 - grandchild extending a child counts
ok 6 - the deeper the tree, the biggest acc
ok 7 - inheritance counts as acc to superclass
ok 8 - inheritance does not count as acc to child
ok 9 - multiple inheritance counts as acc
ok 10 - inheritance does not count as acc to another child
ok 11 - description
ok 12 - has model
ok 13 - use Analizo::Metric::AfferentConnections;
1..13
ok
#
# t::Analizo::Metric::AfferentConnections::AfferentConnectionsByReference->calculate_adding_variable_of_another_module
#
# t::Analizo::Metric::AfferentConnections::AfferentConnectionsByReference->calculate_calling_function_of_another_module
#
# t::Analizo::Metric::AfferentConnections::AfferentConnectionsByReference->calculate_calling_itself_does_not_count
#
# t::Analizo::Metric::AfferentConnections::AfferentConnectionsByReference->calculate_calling_module_twice
#
# t::Analizo::Metric::AfferentConnections::AfferentConnectionsByReference->calculate_calling_variable_of_another_module
#
# t::Analizo::Metric::AfferentConnections::AfferentConnectionsByReference->calculate_empty_acc
#
# t::Analizo::Metric::AfferentConnections::AfferentConnectionsByReference->description
#
# t::Analizo::Metric::AfferentConnections::AfferentConnectionsByReference->has_model
#
# t::Analizo::Metric::AfferentConnections::AfferentConnectionsByReference->use_package
t/Analizo/Metric/AfferentConnections/AfferentConnectionsByReference.t ....
ok 1 - no calls to a module
ok 2 - adding variable of another module
ok 3 - no calls to a module
ok 4 - calling function of another module
ok 5 - calling itself does not count as acc
ok 6 - calling module twice
ok 7 - no calls to a module
ok 8 - calling variable of another module
ok 9 - no acc module A
ok 10 - no acc module B
ok 11 - no acc module C
ok 12 - description
ok 13 - has model
ok 14 - use Analizo::Metric::AfferentConnections;
1..14
ok
#
# t::Analizo::Metric::AfferentConnections::AfferentConnectionsComplete->calculate_inheritance_and_references
#
# t::Analizo::Metric::AfferentConnections::AfferentConnectionsComplete->description
#
# t::Analizo::Metric::AfferentConnections::AfferentConnectionsComplete->has_model
#
# t::Analizo::Metric::AfferentConnections::AfferentConnectionsComplete->use_package
t/Analizo/Metric/AfferentConnections/AfferentConnectionsComplete.t .......
ok 1 - deeper inheritance and reference counts as acc
ok 2 - calls counts as acc to child
ok 3 - inheritance counts as acc to mother
ok 4 - have no inheritance neither calls to mother sister
ok 5 - have no inheritance neither calls to friend
ok 6 - description
ok 7 - has model
ok 8 - use Analizo::Metric::AfferentConnections;
1..8
ok
#
# t::Analizo::Metric::AverageCycloComplexity->calculate
#
# t::Analizo::Metric::AverageCycloComplexity->description
#
# t::Analizo::Metric::AverageCycloComplexity->has_model
#
# t::Analizo::Metric::AverageCycloComplexity->use_package
t/Analizo/Metric/AverageCycloComplexity.t ................................
ok 1 - no function
ok 2 - one function with two conditional paths
ok 3 - two function with three average cyclomatic complexity per method
ok 4 - description
ok 5 - has model
ok 6 - use Analizo::Metric::AverageCycloComplexity;
1..6
ok
#
# t::Analizo::Metric::AverageMethodLinesOfCode->calculate
#
# t::Analizo::Metric::AverageMethodLinesOfCode->description
#
# t::Analizo::Metric::AverageMethodLinesOfCode->has_model
#
# t::Analizo::Metric::AverageMethodLinesOfCode->use_package
t/Analizo/Metric/AverageMethodLinesOfCode.t ..............................
ok 1 - empty module has max loc 0
ok 2 - one module, with 10 loc, makes avg loc = 10
ok 3 - adding module with 5 loc makes the avg continue 10
ok 4 - description
ok 5 - has model
ok 6 - use Analizo::Metric::AverageMethodLinesOfCode;
1..6
ok
#
# t::Analizo::Metric::AverageNumberOfParameters->calculate
#
# t::Analizo::Metric::AverageNumberOfParameters->description
#
# t::Analizo::Metric::AverageNumberOfParameters->has_model
#
# t::Analizo::Metric::AverageNumberOfParameters->use_package
t/Analizo/Metric/AverageNumberOfParameters.t .............................
ok 1 - no parameters declared
ok 2 - one function with one parameter
ok 3 - description
ok 4 - has model
ok 5 - use Analizo::Metric::AverageNumberOfParameters;
1..5
ok
#
# t::Analizo::Metric::CouplingBetweenObjects->calculate
#
# t::Analizo::Metric::CouplingBetweenObjects->description
#
# t::Analizo::Metric::CouplingBetweenObjects->discard_external_symbols_for_calculate
#
# t::Analizo::Metric::CouplingBetweenObjects->has_model
#
# t::Analizo::Metric::CouplingBetweenObjects->use_package
t/Analizo/Metric/CouplingBetweenObjects.t ................................
ok 1 - no cbo
ok 2 - calling itself does not count as cbo
ok 3 - calling a single other module
ok 4 - calling two function in distinct modules
ok 5 - calling two different functions in the same module
ok 6 - description
ok 7 - calling a external function
ok 8 - has model
ok 9 - use Analizo::Metric::CouplingBetweenObjects;
1..9
ok
#
# t::Analizo::Metric::DepthOfInheritanceTree->calculate
#
# t::Analizo::Metric::DepthOfInheritanceTree->calculate_with_multiple_inheritance
#
# t::Analizo::Metric::DepthOfInheritanceTree->description
#
# t::Analizo::Metric::DepthOfInheritanceTree->has_model
#
# t::Analizo::Metric::DepthOfInheritanceTree->use_package
t/Analizo/Metric/DepthOfInheritanceTree.t ................................
ok 1 - DIT = 2
ok 2 - DIT = 1
ok 3 - DIT = 0
ok 4 - with multiple inheritance take the larger DIT between the parents
ok 5 - has model
ok 6 - use Analizo::Metric::DepthOfInheritanceTree;
1..6
ok
#
# t::Analizo::Metric::LackOfCohesionOfMethods->calculate
#
# t::Analizo::Metric::LackOfCohesionOfMethods->calculate_2
#
# t::Analizo::Metric::LackOfCohesionOfMethods->calculate_3
#
# t::Analizo::Metric::LackOfCohesionOfMethods->description
#
# t::Analizo::Metric::LackOfCohesionOfMethods->has_model
#
# t::Analizo::Metric::LackOfCohesionOfMethods->use_package
t/Analizo/Metric/LackOfCohesionOfMethods.t ...............................
ok 1 - two unrelated functions
ok 2 - two cohesive functions
ok 3 - two different usage components
ok 4 - three different usage components
ok 5 - different types of connections
ok 6 - functions outside the module don't count for LCOM4
ok 7 - description
ok 8 - has model
ok 9 - use Analizo::Metric::LackOfCohesionOfMethods;
1..9
ok
#
# t::Analizo::Metric::LinesOfCode->calculate
#
# t::Analizo::Metric::LinesOfCode->description
#
# t::Analizo::Metric::LinesOfCode->has_model
#
# t::Analizo::Metric::LinesOfCode->use_package
t/Analizo/Metric/LinesOfCode.t ...........................................
ok 1 - empty module has 0 loc
ok 2 - one module, with 10 loc
ok 3 - adding another module with 20 loc makes the total equal 30
ok 4 - description
ok 5 - has model
ok 6 - use Analizo::Metric::LinesOfCode;
1..6
ok
#
# t::Analizo::Metric::MaximumMethodLinesOfCode->calculate
#
# t::Analizo::Metric::MaximumMethodLinesOfCode->description
#
# t::Analizo::Metric::MaximumMethodLinesOfCode->has_model
#
# t::Analizo::Metric::MaximumMethodLinesOfCode->use_package
t/Analizo/Metric/MaximumMethodLinesOfCode.t ..............................
ok 1 - empty module has max loc 0
ok 2 - one module, with 10 loc, makes max loc = 10
ok 3 - adding module with 5 loc makes the max continue 10
ok 4 - description
ok 5 - has model
ok 6 - use Analizo::Metric::MaximumMethodLinesOfCode;
1..6
ok
#
# t::Analizo::Metric::NumberOfAttributes->calculate
#
# t::Analizo::Metric::NumberOfAttributes->description
#
# t::Analizo::Metric::NumberOfAttributes->has_model
#
# t::Analizo::Metric::NumberOfAttributes->use_package
t/Analizo/Metric/NumberOfAttributes.t ....................................
ok 1 - empty modules have no attributes
ok 2 - module with one defined attribute
ok 3 - module with two defined attribute
ok 4 - description
ok 5 - has model
ok 6 - use Analizo::Metric::NumberOfAttributes;
1..6
ok
#
# t::Analizo::Metric::NumberOfChildren->calculate
#
# t::Analizo::Metric::NumberOfChildren->description
#
# t::Analizo::Metric::NumberOfChildren->has_model
#
# t::Analizo::Metric::NumberOfChildren->use_package
t/Analizo/Metric/NumberOfChildren.t ......................................
ok 1 - no children module A
ok 2 - no children module B
ok 3 - no children module C
ok 4 - one child module A
ok 5 - no children module B
ok 6 - two children module A
ok 7 - no children module C
ok 8 - two children module A
ok 9 - one child module C
ok 10 - no children module D
ok 11 - description
ok 12 - has model
ok 13 - use Analizo::Metric::NumberOfChildren;
1..13
ok
#
# t::Analizo::Metric::NumberOfMethods->calculate
#
# t::Analizo::Metric::NumberOfMethods->description
#
# t::Analizo::Metric::NumberOfMethods->has_model
#
# t::Analizo::Metric::NumberOfMethods->use_package
t/Analizo/Metric/NumberOfMethods.t .......................................
ok 1 - empty modules have no functions
ok 2 - module with just one function has number of functions = 1
ok 3 - module with just two functions has number of functions = 2
ok 4 - description
ok 5 - has model
ok 6 - use Analizo::Metric::NumberOfMethods;
1..6
ok
#
# t::Analizo::Metric::NumberOfPublicAttributes->calculate
#
# t::Analizo::Metric::NumberOfPublicAttributes->description
#
# t::Analizo::Metric::NumberOfPublicAttributes->has_model
#
# t::Analizo::Metric::NumberOfPublicAttributes->use_package
t/Analizo/Metric/NumberOfPublicAttributes.t ..............................
ok 1 - empty modules have 0 public attributes
ok 2 - one public attribute added
ok 3 - another public attribute added
ok 4 - not public attribute added
ok 5 - description
ok 6 - has model
ok 7 - use Analizo::Metric::NumberOfPublicAttributes;
1..7
ok
#
# t::Analizo::Metric::NumberOfPublicMethods->calculate
#
# t::Analizo::Metric::NumberOfPublicMethods->description
#
# t::Analizo::Metric::NumberOfPublicMethods->has_model
#
# t::Analizo::Metric::NumberOfPublicMethods->use_package
t/Analizo/Metric/NumberOfPublicMethods.t .................................
ok 1 - empty modules have 0 public functions
ok 2 - one public function added
ok 3 - another public function added
ok 4 - not public function added
ok 5 - description
ok 6 - has model
ok 7 - use Analizo::Metric::NumberOfPublicMethods;
1..7
ok
#
# t::Analizo::Metric::ResponseForClass->calculate
#
# t::Analizo::Metric::ResponseForClass->description
#
# t::Analizo::Metric::ResponseForClass->has_model
#
# t::Analizo::Metric::ResponseForClass->use_package
t/Analizo/Metric/ResponseForClass.t ......................................
ok 1 - no functions declared on the module
ok 2 - one function declared on the module
ok 3 - two functions declared on the module
ok 4 - two functions and one call declared on the module
ok 5 - two functions and two calls declared on the module
ok 6 - description
ok 7 - has model
ok 8 - use Analizo::Metric::ResponseForClass;
1..8
ok
#
# t::Analizo::Metric::StructuralComplexity->description
#
# t::Analizo::Metric::StructuralComplexity->has_model
#
# t::Analizo::Metric::StructuralComplexity->sc_definition
#
# t::Analizo::Metric::StructuralComplexity->sc_implementation
#
# t::Analizo::Metric::StructuralComplexity->use_package
t/Analizo/Metric/StructuralComplexity.t ..................................
ok 1 - description
ok 2 - has model
ok 3 - sc definition
ok 4 - sc implementation
ok 5 - sc implementation
ok 6 - sc implementation
ok 7 - use Analizo::Metric::StructuralComplexity;
1..7
ok
#
# t::Analizo::Metrics->constructor
#
# t::Analizo::Metrics->list_of_metrics
#
# t::Analizo::Metrics->metrics_for
#
# t::Analizo::Metrics->model
#
# t::Analizo::Metrics->report
#
# t::Analizo::Metrics->report_global_only
#
# t::Analizo::Metrics->report_without_modules_at_all
t/Analizo/Metrics.t ......................................................
ok 1 - An object of class 'Analizo::Metrics' isa 'Analizo::Metrics'
ok 2 - must list metrics
ok 3 - metrics for
ok 4 - metrics for
ok 5 - Analizo::Metrics->can('model')
ok 6 - model
ok 7 - reporting number of classes in YAML stream
ok 8 - reporting module 1
ok 9 - reporting module 2
ok 10 - reporting number of classes (it is global)
ok 11 - not reporting module 1 details
ok 12 - not reporting module 2 details
1..12
ok
#
# t::Analizo::Model->addding_variable_uses
#
# t::Analizo::Model->adding_abstract_class
#
# t::Analizo::Model->adding_calls
#
# t::Analizo::Model->build_graphs_from_funcion_calls_and_inheritance
#
# t::Analizo::Model->build_graphs_from_function_calls
#
# t::Analizo::Model->build_graphs_from_inheritance
#
# t::Analizo::Model->constructor
#
# t::Analizo::Model->declaring_function
#
# t::Analizo::Model->declaring_inheritance
#
# t::Analizo::Model->declaring_modules
#
# t::Analizo::Model->declaring_modules_with_files
#
# t::Analizo::Model->declaring_number_of_conditional_paths
#
# t::Analizo::Model->declaring_protection
#
# t::Analizo::Model->declaring_variables
#
# t::Analizo::Model->declating_lines_of_code
#
# t::Analizo::Model->empty_call_graph
#
# t::Analizo::Model->empty_object
#
# t::Analizo::Model->group_files_when_build_graphs
#
# t::Analizo::Model->groupping_by_module
#
# t::Analizo::Model->including_external_functions
#
# t::Analizo::Model->indirect_calls
#
# t::Analizo::Model->listing_calls
#
# t::Analizo::Model->listing_only_defined_functions
#
# t::Analizo::Model->listing_two_calls
#
# t::Analizo::Model->ommiting_functions
#
# t::Analizo::Model->querying_functions
#
# t::Analizo::Model->querying_members
#
# t::Analizo::Model->querying_variables
#
# t::Analizo::Model->retrieving_modules_by_file
#
# t::Analizo::Model->use_file_as_vertices_in_graphs
#
# t::Analizo::Model->use_of_variables
t/Analizo/Model.t ........................................................
ok 1 - must register variable use
ok 2 - model detects an abstract class
ok 3 - must register function call
ok 4 - build graphs from funcion calls and inheritance
ok 5 - build graphs from funcion calls and inheritance
ok 6 - build graphs from function calls
ok 7 - build graphs from function calls
ok 8 - build graphs from inheritance
ok 9 - build graphs from inheritance
ok 10 - An object of class 'Analizo::Model' isa 'Analizo::Model'
ok 11 - declared function must be stored
ok 12 - must map function to module
ok 13 - declaring a function must declare its module
ok 14 - must store members in a module
ok 15 - another declared function must be stored
ok 16 - must map another function to module
ok 17 - declaring a another function must declare its module
ok 18 - must store members in a module
ok 19 - class with one superclass
ok 20 - class with two superclasses
ok 21 - declaring modules
ok 22 - declaring modules
ok 23 - declaring modules with files
ok 24 - declaring number of conditional paths
ok 25 - declaring protection
ok 26 - declared variable must be stored
ok 27 - must map variable to module
ok 28 - declaring a variable must declare its module
ok 29 - must store variable in a module
ok 30 - declating lines of code
ok 31 - empty output must give empty digraph
ok 32 - 'must have modules' isa 'HASH'
ok 33 - 'must have members' isa 'HASH'
ok 34 - group files when build graphs
ok 35 - group files when build graphs
ok 36 - must list correctly a single dependency arrow between two modules
ok 37 - must list arrow targets in lexicographic order
ok 38 - must list arrow sources in in lexicographic order
ok 39 - must be able to omit a called function
ok 40 - must register indirect call
ok 41 - must generate correctly a graph with one call
ok 42 - must include by default only functions inside the project
ok 43 - must generate correctly a graph with f1 -> f2, f1 -> f3
ok 44 - must be able to omit a called function
ok 45 - must be able to omit a caller function
ok 46 - must list f1 in functions
ok 47 - must list f2 in functions
ok 48 - must list f1 in functions
ok 49 - must list f2 in functions
ok 50 - must list v1 in variables
ok 51 - must list v2 in variables
ok 52 - must list v1 in variables
ok 53 - must list v2 in variables
ok 54 - retrieving modules by file
ok 55 - retrieving modules by file
ok 56 - use file as vertices in graphs
ok 57 - use file as vertices in graphs
ok 58 - must output declared variables
ok 59 - must use variable information for inter-module dependencies
1..59
ok
#
# t::Analizo::ModuleMetric->caches_calculate_results
t/Analizo/ModuleMetric.t .................................................
ok 1 - caches calculate results
1..1
ok
#
# t::Analizo::ModuleMetrics->constructor
#
# t::Analizo::ModuleMetrics->list_of_metrics
#
# t::Analizo::ModuleMetrics->metrics_of_module
t/Analizo/ModuleMetrics.t ................................................
ok 1 - An object of class 'Analizo::ModuleMetrics' isa 'Analizo::ModuleMetrics'
ok 2 - must list metrics
ok 3 - metrics of module
ok 4 - metrics of module
ok 5 - metrics of module
ok 6 - metrics of module
ok 7 - metrics of module
1..7
ok
t/author-pod-spell.t ..................................................... skipped: these tests are for testing by the author
t/author-pod-syntax.t .................................................... skipped: these tests are for testing by the author
# Failed test 'Then the exit status must be 0'
# at t/features/metrics_history.feature line 58.
# in step at t/features/metrics_history.feature line 58.
# not ok
# # Failed test at /<<PKGBUILDDIR>>/t/features/step_definitions/analizo_steps.pl line 57.
# # got: 32768
# # expected: 0
# ok 3 - Step ran to completion
# 1..2
# # Looks like you failed 1 test of 2.
# Failed test 'Then the exit status must not be 0'
# at t/features/metrics/output_file.feature line 14.
# in step at t/features/metrics/output_file.feature line 14.
# not ok
# # Failed test at /<<PKGBUILDDIR>>/t/features/step_definitions/analizo_steps.pl line 62.
# # got: 0
# # expected: anything else
# ok 3 - Step ran to completion
# 1..2
# # Looks like you failed 1 test of 2.
# Failed test 'Then the exit status must not be 0'
# at t/features/graph/output-file.feature line 20.
# in step at t/features/graph/output-file.feature line 20.
# not ok
# # Failed test at /<<PKGBUILDDIR>>/t/features/step_definitions/analizo_steps.pl line 62.
# # got: 0
# # expected: anything else
# ok 3 - Step ran to completion
# 1..2
# # Looks like you failed 1 test of 2.
# Looks like you failed 3 tests of 1008.
t/features.t .............................................................
# Feature mapping modules to filenames
# As a software engineering resesearcher I want to know in which file each module is declared So that I can compare that with data from the VCS
# Scenario C++, runing against some directory
ok 1 - When I run "analizo metrics t/samples/animals/cpp"
#
ok 2 - Then analizo must report that file animal.h declares module Animal
#
ok 3 - And analizo must report that file cat.cc declares module Cat
#
ok 4 - And analizo must report that file cat.h declares module Cat
#
ok 5 - And analizo must report that file cat.cc not declares module Dog
#
ok 6 - And analizo must report that file cat.h not declares module Dog
#
# Scenario C++, running against current directory
ok 7 - Given I am in t/samples/animals/cpp
#
ok 8 - When I run "analizo metrics ."
#
ok 9 - Then analizo must report that file animal.h declares module Animal
#
ok 10 - And analizo must report that file cat.cc declares module Cat
#
ok 11 - And analizo must report that file cat.h declares module Cat
#
# Scenario Java
ok 12 - When I run "analizo metrics t/samples/animals/java"
#
ok 13 - Then analizo must report that file Animal.java declares module Animal
#
# Scenario C
ok 14 - Given I am in t/samples/hello_world/c
#
ok 15 - When I run "analizo metrics ."
#
ok 16 - Then analizo must report that module hello_world has _filename = [hello_world.c,hello_world.h]
#
ok 17 - And analizo must report that file hello_world.c declares module hello_world
#
ok 18 - And analizo must report that file hello_world.h declares module hello_world
#
# Scenario CSharp hello_world
ok 19 - Given I am in t/samples/hello_world/csharp
#
ok 20 - When I run "analizo metrics ."
#
ok 21 - Then analizo must report that module HelloWorld has _filename = [HelloWorld.cs]
#
# Scenario CSharp polygons
ok 22 - Given I am in t/samples/polygons/csharp
#
ok 23 - When I run "analizo metrics ."
#
ok 24 - Then analizo must report that file Polygon.cs declares module Polygon
#
ok 25 - And analizo must report that file Rect.cs declares module Rect
#
ok 26 - And analizo must report that file Triangle.cs declares module Triangle
#
# Scenario Java Generics WildCard sample
ok 27 - Given I am in t/samples/wildcard
#
ok 28 - When I run "analizo metrics ."
#
ok 29 - Then analizo must report that file WildcardClass.java declares module WildcardClass
#
ok 30 - And analizo must report that file GenericClass.java declares module GenericClass
#
# Scenario Java Enumeration sample
ok 31 - Given I am in t/samples/enumeration
#
ok 32 - When I run "analizo metrics ."
#
ok 33 - Then analizo must report that file Main.java declares module Main::MyEnumeration
#
ok 34 - And analizo must report that file Enumeration.java declares module Enumeration
#
# Feature doxyparse extractor external tool
# As a Analizo developer I want to guarantee that doxyparse deal with any source code To provide reliability for Analizo users
# Scenario don't die parsing MCLinker.cpp from android 5.1.1
ok 35 - Given I am in t/samples/android-framework/android-5.1.1_r38
#
ok 36 - When I run "analizo metrics ."
#
ok 37 - Then the exit status must be 0
#
# Scenario don't duplicate YAML keys parsing AudioTrackShared.cpp from android 5.1.1
ok 38 - Given I am in t/samples/android-framework/android-5.1.1_r38
#
ok 39 - When I run "analizo metrics ."
#
ok 40 - Then analizo must not emit a warning matching "YAML_LOAD_WARN_DUPLICATE_KEY"
#
# Scenario don't abort parsing mlpack 3.0.0
ok 41 - Given I am in t/samples/mlpack-3.0.0
#
ok 42 - When I run "analizo metrics ."
#
ok 43 - Then analizo must not emit a warning matching "Aborted"
#
ok 44 - And the exit status must be 0
#
# Scenario don't die parsing kdelibs warning about unknown escape character
ok 45 - Given I am in t/samples/kdelibs
#
ok 46 - When I run "analizo metrics ."
#
ok 47 - Then analizo must not emit a warning matching "Error"
#
ok 48 - And the exit status must be 0
#
# Scenario don't die parsing mod_suexec.h from http 2.4.38
ok 49 - Given I am in t/samples/httpd-2.4.38
#
ok 50 - When I run "analizo metrics ."
#
ok 51 - Then analizo must not emit a warning matching "Not a HASH reference"
#
ok 52 - And the exit status must be 0
#
# Scenario allow dot on module filename
ok 53 - Given I am in t/samples/sample_basic/c
#
ok 54 - When I run "analizo metrics ."
#
ok 55 - Then analizo must report that file module1.c declares module module1
#
# Feature dependency graph among files
# As a software engineering reasearcher I want to know the all relationships between all files on project So that I can run analizo files-graph to produces a DOT graph from source-code
# Scenario relation between function call
ok 56 - Given I am in t/samples/animals/cpp
#
ok 57 - When I run "analizo files-graph ."
#
ok 58 - Then analizo must report that "main" depends on "animal"
#
# Scenario relation between function call
ok 59 - Given I am in t/samples/animals/java
#
ok 60 - When I run "analizo files-graph ."
#
ok 61 - Then analizo must report that "Main" depends on "Animal"
#
# Scenario relation between function call
ok 62 - Given I am in t/samples/animals/csharp
#
ok 63 - When I run "analizo files-graph ."
#
ok 64 - Then analizo must report that "Main" depends on "Animal"
#
# Scenario relation between inheritance
ok 65 - Given I am in t/samples/animals/cpp
#
ok 66 - When I run "analizo files-graph ."
#
ok 67 - Then analizo must report that "dog" depends on "mammal"
#
# Scenario relation between inheritance
ok 68 - Given I am in t/samples/animals/java
#
ok 69 - When I run "analizo files-graph ."
#
ok 70 - Then analizo must report that "Dog" depends on "Mammal"
#
# Scenario relation between inheritance
ok 71 - Given I am in t/samples/animals/csharp
#
ok 72 - When I run "analizo files-graph ."
#
ok 73 - Then analizo must report that "Dog" depends on "Mammal"
#
# Scenario relation between inheritance
ok 74 - Given I am in t/samples/animals/cpp
#
ok 75 - When I run "analizo files-graph ."
#
ok 76 - Then analizo must report that "mammal" depends on "animal"
#
# Scenario relation between inheritance
ok 77 - Given I am in t/samples/animals/java
#
ok 78 - When I run "analizo files-graph ."
#
ok 79 - Then analizo must report that "Mammal" depends on "Animal"
#
# Scenario relation between inheritance
ok 80 - Given I am in t/samples/animals/csharp
#
ok 81 - When I run "analizo files-graph ."
#
ok 82 - Then analizo must report that "Mammal" depends on "Animal"
#
# Feature give manpage on --help
# As a user I want to read the manpage when passing --help command line option In order to get instructions on how to use the tools
# Scenario display manpage for `analizo graph`
ok 83 - When I run "analizo graph --help"
#
ok 84 - Then the output must match "[NAME|N^HNA^HAM^HME^HE]\s+analizo-graph"
#
ok 85 - Then the output must match "[USAGE|U^HUS^HSA^HAG^HGE^HE]\s+analizo graph \[OPTIONS\]"
#
# Scenario display manpage for `analizo metrics`
ok 86 - When I run "analizo metrics --help"
#
ok 87 - Then the output must match "[NAME|N^HNA^HAM^HME^HE]\s+analizo-metrics"
#
ok 88 - Then the output must match "[USAGE|U^HUS^HSA^HAG^HGE^HE]\s+analizo metrics \[OPTIONS\]"
#
# Scenario display manpage for `analizo metrics-batch`
ok 89 - When I run "analizo metrics-batch --help"
#
ok 90 - Then the output must match "[NAME|N^HNA^HAM^HME^HE]\s+analizo-metrics-batch"
#
ok 91 - Then the output must match "[USAGE|U^HUS^HSA^HAG^HGE^HE]\s+analizo metrics-batch \[OPTIONS\]"
#
# Scenario display manpage for `analizo metrics-history`
ok 92 - When I run "analizo metrics-history --help"
#
ok 93 - Then the output must match "[NAME|N^HNA^HAM^HME^HE]\s+analizo-metrics-history"
#
ok 94 - Then the output must match "[USAGE|U^HUS^HSA^HAG^HGE^HE]\s+analizo metrics-history \[OPTIONS\]"
#
# Scenario display manpage for `analizo tree-evolution`
ok 95 - When I run "analizo tree-evolution --help"
#
ok 96 - Then the output must match "[NAME|N^HNA^HAM^HME^HE]\s+analizo-tree-evolution"
#
ok 97 - Then the output must match "[USAGE|U^HUS^HSA^HAG^HGE^HE]\s+analizo tree-evolution \[OPTIONS\]"
#
# Scenario display manpage for `analizo files-graph`
ok 98 - When I run "analizo files-graph --help"
#
ok 99 - Then the output must match "[NAME|N^HNA^HAM^HME^HE]\s+analizo-files-graph"
#
ok 100 - Then the output must match "[USAGE|U^HUS^HSA^HAG^HGE^HE]\s+analizo files-graph \[OPTIONS\]"
#
# Feature analizo metrics-history
# As a software engineering researcher I want to analyse the entire history of a project To understand its development process
# Scenario listing merge commits with code changes that should be analyzed
ok 101 - When I explode t/samples/evolution.tar.gz
#
ok 102 - And I run "analizo metrics-history --list ."
#
ok 103 - Then the output must match "0a06a6fcc2e7b4fe56d134e89d74ad028bb122ed"
#
ok 104 - And the output must match "eb67c27055293e835049b58d7d73ce3664d3f90e"
#
ok 105 - And the output must match "aa2d0fcb7879485d5ff1cd189743f91f04bea8ce"
#
ok 106 - And the output must match "e8faf88f0e20a193d700b6c68eeb31897dd85e53"
#
ok 107 - And the output must match "d7f52e74dc3d8f57640e83d41c5e9f8fcf621c00"
#
ok 108 - And the output must match "0d3c023120ad4e9f519a03fff275d048c52671ad"
#
# Scenario non-code commits should not be analyzed
ok 109 - When I explode t/samples/evolution.tar.gz
#
ok 110 - And I run "analizo metrics-history --list ."
#
ok 111 - Then the output must not match "ba62278e976944c0334103aa0044535169e1a51e"
#
# Scenario merge commits without code change should not be analyzed
ok 112 - When I explode t/samples/evolution.tar.gz
#
ok 113 - And I run "analizo metrics-history --list ."
#
ok 114 - Then the output must not match "0fdaaa7dcc8073332a957024fafc8c98f165e725"
#
# Scenario actually processing merge commits
ok 115 - When I explode t/samples/evolution.tar.gz
#
ok 116 - And I run "analizo metrics-history -o metrics.csv . && cat metrics.csv"
#
ok 117 - Then the output must match "^id,previous_commit_id,author_date,author_name,author_email,.*,sc_mean"
#
ok 118 - And the output must match "0a06a6fcc2e7b4fe56d134e89d74ad028bb122ed,eb67c27055293e835049b58d7d73ce3664d3f90e"
#
ok 119 - And the output must match "eb67c27055293e835049b58d7d73ce3664d3f90e,,"
#
ok 120 - And the output must match "aa2d0fcb7879485d5ff1cd189743f91f04bea8ce,d7f52e74dc3d8f57640e83d41c5e9f8fcf621c00"
#
ok 121 - And the output must match "e8faf88f0e20a193d700b6c68eeb31897dd85e53,d7f52e74dc3d8f57640e83d41c5e9f8fcf621c00"
#
ok 122 - And the output must match "d7f52e74dc3d8f57640e83d41c5e9f8fcf621c00,0d3c023120ad4e9f519a03fff275d048c52671ad"
#
# Scenario actually processing initial commit and first commit after a non-relevant merge
ok 123 - When I explode t/samples/evolution.tar.gz
#
ok 124 - And I run "analizo metrics-history -o metrics.csv . && cat metrics.csv"
#
ok 125 - Then the output must match "0d3c023120ad4e9f519a03fff275d048c52671ad,,"
#
ok 126 - And the output must match "8183eafad3a0f3eff6e8869f1bdbfd255e86825a,0a06a6fcc2e7b4fe56d134e89d74ad028bb122ed"
#
# Scenario support for parallel processing
ok 127 - Given I copy t/samples/evolution.tar.gz into a temporary directory
#
ok 128 - When I run "tar xzf evolution.tar.gz"
#
ok 129 - And I run "cd evolution && analizo metrics-history -o ../sequential.csv"
#
ok 130 - And I run "cd evolution && analizo metrics-history -p 2 -o ../parallel.csv"
#
ok 131 - Then the exit status must be 0
#
ok 132 - When I run "sort sequential.csv > sequential-sorted.csv"
#
ok 133 - And I run "sort parallel.csv > parallel-sorted.csv"
#
ok 134 - And I run "diff -u sequential-sorted.csv parallel-sorted.csv"
#
ok 135 - Then the output must not match "---"
#
ok 136 - And the exit status must be 0
#
# Scenario parsing git log format containing renamed files among status of changed files
ok 137 - Given I copy t/samples/evolution.tar.gz into a temporary directory
#
ok 138 - When I run "tar xzf evolution.tar.gz"
#
ok 139 - And I run "cd evolution && git checkout doc && analizo metrics-history ."
#
not ok 140 - Then the exit status must be 0
#
# Scenario language filters
ok 141 - Given I copy t/samples/mixed into a temporary directory
#
ok 142 - When I run "(cd mixed && git init && git add * && git commit -m 'initial commit')"
#
ok 143 - And I run "analizo metrics-history --language java mixed"
#
ok 144 - Then the output must not match "native_backend.c"
#
# Feature multi-language support
# As a Researcher or Practioneer I want to be able to analyze software in different languages In order do compare them
# Scenario dependency between modules
ok 145 - Given I am in t/samples/hello_world/c
#
ok 146 - When I run "analizo graph --modules ."
#
ok 147 - Then analizo must report that "main" depends on "hello_world"
#
# Scenario dependency between modules
ok 148 - Given I am in t/samples/hello_world/cpp
#
ok 149 - When I run "analizo graph --modules ."
#
ok 150 - Then analizo must report that "main" depends on "HelloWorld"
#
# Scenario dependency between modules
ok 151 - Given I am in t/samples/hello_world/java
#
ok 152 - When I run "analizo graph --modules ."
#
ok 153 - Then analizo must report that "Main" depends on "HelloWorld"
#
# Scenario dependency between modules
ok 154 - Given I am in t/samples/hello_world/csharp
#
ok 155 - When I run "analizo graph --modules ."
#
ok 156 - Then analizo must report that "main" depends on "HelloWorld"
#
# Scenario dependency between specific functions
ok 157 - Given I am in t/samples/hello_world/c
#
ok 158 - When I run "analizo graph ."
#
ok 159 - Then analizo must report that "main::main()" depends on "hello_world::hello_world_say(hello_world *)"
#
ok 160 - And analizo must report that "main::main()" depends on "hello_world::hello_world_destroy(hello_world *)"
#
# Scenario dependency between specific functions
ok 161 - Given I am in t/samples/hello_world/cpp
#
ok 162 - When I run "analizo graph ."
#
ok 163 - Then analizo must report that "main::main()" depends on "HelloWorld::say()"
#
ok 164 - And analizo must report that "main::main()" depends on "HelloWorld::destroy()"
#
# Scenario dependency between specific functions
ok 165 - Given I am in t/samples/hello_world/java
#
ok 166 - When I run "analizo graph ."
#
ok 167 - Then analizo must report that "Main::main(String[])" depends on "HelloWorld::say()"
#
ok 168 - And analizo must report that "Main::main(String[])" depends on "HelloWorld::destroy()"
#
# Scenario dependency between specific functions
ok 169 - Given I am in t/samples/hello_world/csharp
#
ok 170 - When I run "analizo graph ."
#
ok 171 - Then analizo must report that "main::Main()" depends on "HelloWorld::say()"
#
ok 172 - And analizo must report that "main::Main()" depends on "HelloWorld::destroy()"
#
# Scenario intra-module dependencies
ok 173 - Given I am in t/samples/hello_world/c
#
ok 174 - When I run "analizo graph ."
#
ok 175 - Then analizo must report that "hello_world::hello_world_say(hello_world *)" depends on "hello_world::_hello_world::id"
#
ok 176 - And analizo must report that "hello_world::hello_world_destroy(hello_world *)" depends on "hello_world::_hello_world::id"
#
# Scenario intra-module dependencies
ok 177 - Given I am in t/samples/hello_world/cpp
#
ok 178 - When I run "analizo graph ."
#
ok 179 - Then analizo must report that "HelloWorld::say()" depends on "HelloWorld::_id"
#
ok 180 - And analizo must report that "HelloWorld::destroy()" depends on "HelloWorld::_id"
#
# Scenario intra-module dependencies
ok 181 - Given I am in t/samples/hello_world/java
#
ok 182 - When I run "analizo graph ."
#
ok 183 - Then analizo must report that "HelloWorld::say()" depends on "HelloWorld::_id"
#
ok 184 - And analizo must report that "HelloWorld::destroy()" depends on "HelloWorld::_id"
#
# Scenario intra-module dependencies
ok 185 - Given I am in t/samples/hello_world/csharp
#
ok 186 - When I run "analizo graph ."
#
ok 187 - Then analizo must report that "HelloWorld::say()" depends on "HelloWorld::_id"
#
ok 188 - And analizo must report that "HelloWorld::destroy()" depends on "HelloWorld::_id"
#
# Scenario some metrics
ok 189 - Given I am in t/samples/hello_world/c
#
ok 190 - When I run "analizo metrics ."
#
ok 191 - Then analizo must report that the project has total_modules = 2
#
ok 192 - And analizo must report that module main has nom = 1
#
ok 193 - And analizo must report that module hello_world has npm = 3
#
ok 194 - And analizo must report that module hello_world has nom = 3
#
ok 195 - And analizo must report that module hello_world has npa = 2
#
# Scenario some metrics
ok 196 - Given I am in t/samples/hello_world/cpp
#
ok 197 - When I run "analizo metrics ."
#
ok 198 - Then analizo must report that the project has total_modules = 2
#
ok 199 - And analizo must report that module main has nom = 1
#
ok 200 - And analizo must report that module HelloWorld has npm = 3
#
ok 201 - And analizo must report that module HelloWorld has nom = 4
#
ok 202 - And analizo must report that module HelloWorld has npa = 1
#
# Scenario some metrics
ok 203 - Given I am in t/samples/hello_world/java
#
ok 204 - When I run "analizo metrics ."
#
ok 205 - Then analizo must report that the project has total_modules = 2
#
ok 206 - And analizo must report that module Main has nom = 1
#
ok 207 - And analizo must report that module HelloWorld has npm = 3
#
ok 208 - And analizo must report that module HelloWorld has nom = 4
#
ok 209 - And analizo must report that module HelloWorld has npa = 1
#
# Scenario some metrics
ok 210 - Given I am in t/samples/hello_world/csharp
#
ok 211 - When I run "analizo metrics ."
#
ok 212 - Then analizo must report that the project has total_modules = 2
#
ok 213 - And analizo must report that module main has nom = 1
#
ok 214 - And analizo must report that module HelloWorld has npm = 3
#
ok 215 - And analizo must report that module HelloWorld has nom = 4
#
ok 216 - And analizo must report that module HelloWorld has npa = 1
#
# Scenario inheritance data
ok 217 - Given I am in t/samples/animals/cpp
#
ok 218 - When I run "analizo graph --modules ."
#
ok 219 - Then analizo must report that "Cat" depends on "Mammal"
#
ok 220 - And analizo must report that "Dog" depends on "Mammal"
#
ok 221 - And analizo must report that "Mammal" depends on "Animal"
#
ok 222 - When I run "analizo metrics ."
#
ok 223 - Then analizo must report that module Cat has dit = 2
#
ok 224 - And analizo must report that module Dog has dit = 2
#
ok 225 - And analizo must report that module Mammal has dit = 1
#
ok 226 - And analizo must report that module Animal has dit = 0
#
# Scenario inheritance data
ok 227 - Given I am in t/samples/animals/java
#
ok 228 - When I run "analizo graph --modules ."
#
ok 229 - Then analizo must report that "Cat" depends on "Mammal"
#
ok 230 - And analizo must report that "Dog" depends on "Mammal"
#
ok 231 - And analizo must report that "Mammal" depends on "Animal"
#
ok 232 - When I run "analizo metrics ."
#
ok 233 - Then analizo must report that module Cat has dit = 2
#
ok 234 - And analizo must report that module Dog has dit = 2
#
ok 235 - And analizo must report that module Mammal has dit = 1
#
ok 236 - And analizo must report that module Animal has dit = 0
#
# Scenario mixed Java and C
ok 237 - Given I am in t/samples/mixed
#
ok 238 - When I run "analizo metrics ."
#
ok 239 - Then the output must match "_module: native_backend"
#
ok 240 - And the output must match "_module: UI"
#
ok 241 - And the output must match "_module: Backend"
#
# Feature c code with void argument
# As a software engineering reasearcher I want to know the arguments of each function on a project So that I can run analizo metrics calculate number of parameters
# Scenario calculate anpn on function with void argument
ok 242 - Given I am in t/samples/void/
#
ok 243 - When I run "analizo metrics ."
#
ok 244 - Then analizo must report that module main has anpm = 0
#
# Feature metrics batch
# As a software engineering researcher I want to analyze several different projects So I can compare their metrics
# Scenario "hello, world"
ok 245 - Given I am in t/samples/hello_world/
#
ok 246 - When I run "analizo metrics-batch"
#
ok 247 - Then the output must match "I: Processed c."
#
ok 248 - And the output must match "I: Processed cpp."
#
ok 249 - And the output must match "I: Processed java."
#
# Scenario summarizing
ok 250 - Given I am in t/samples/hello_world/
#
ok 251 - When I run "analizo metrics-batch --quiet -o data.csv && cat data.csv && rm -f *.csv"
#
ok 252 - Then the output must match "^id,"
#
ok 253 - And the output must not match ",---,"
#
ok 254 - And the output must match "c,"
#
ok 255 - And the output must match "cpp,"
#
ok 256 - And the output must match "java,"
#
ok 257 - And the output must not match "I: Processed"
#
# Scenario support for parallel processing
ok 258 - Given I copy t/samples/hello_world/* into a temporary directory
#
ok 259 - When I run "analizo metrics-batch -q -o sequential.csv"
#
ok 260 - And I run "analizo metrics-batch -q -o parallel.csv -p 2"
#
ok 261 - And I run "sort sequential.csv > sequential-sorted.csv"
#
ok 262 - And I run "sort parallel.csv > parallel-sorted.csv"
#
ok 263 - And I run "diff -u sequential-sorted.csv parallel-sorted.csv"
#
ok 264 - Then the output must not match "---"
#
ok 265 - Then the exit status must be 0
#
# Scenario passing two input directories as argument
ok 266 - Given I copy t/samples/hello_world/* into a temporary directory
#
ok 267 - When I run "analizo metrics-batch --quiet -o data.csv cpp java"
#
ok 268 - Then the exit status must be 0
#
ok 269 - And the file "c-details.csv" should not exist
#
ok 270 - And the file "cpp-details.csv" should exist
#
ok 271 - And the file "java-details.csv" should exist
#
# Scenario passing one input directory as argument
ok 272 - Given I copy t/samples/hello_world/* into a temporary directory
#
ok 273 - When I run "analizo metrics-batch --quiet -o data.csv cpp"
#
ok 274 - Then the exit status must be 0
#
ok 275 - And the file "c-details.csv" should not exist
#
ok 276 - And the file "cpp-details.csv" should exist
#
ok 277 - And the file "java-details.csv" should not exist
#
# Feature loading command line options from .analizo
# As a analizo user I want to store command line options in a file called .analizo inside my project So that I don't need to alway pass all those options on the command line
# Scenario analizo metrics
ok 278 - Given I copy t/samples/mixed into a temporary directory
#
ok 279 - And I create a file called .analizo with the following content
# """metrics: --language java"""
ok 280 - When I run "analizo metrics ."
#
ok 281 - Then the output must not match "native_backend.c"
#
ok 282 - And the output must match "UI.java"
#
ok 283 - And the exit status must be 0
#
# Scenario all others
ok 284 - Given I change to an empty temporary directory
#
ok 285 - And I create a file called .analizo with the following content
# """<command>: --help"""
ok 286 - When I run "analizo graph"
#
ok 287 - Then the output must match "analizo graph is part of the analizo suite."
#
# Scenario all others
ok 288 - Given I change to an empty temporary directory
#
ok 289 - And I create a file called .analizo with the following content
# """<command>: --help"""
ok 290 - When I run "analizo metrics"
#
ok 291 - Then the output must match "analizo metrics is part of the analizo suite."
#
# Scenario all others
ok 292 - Given I change to an empty temporary directory
#
ok 293 - And I create a file called .analizo with the following content
# """<command>: --help"""
ok 294 - When I run "analizo metrics-batch"
#
ok 295 - Then the output must match "analizo metrics-batch is part of the analizo suite."
#
# Scenario all others
ok 296 - Given I change to an empty temporary directory
#
ok 297 - And I create a file called .analizo with the following content
# """<command>: --help"""
ok 298 - When I run "analizo metrics-history"
#
ok 299 - Then the output must match "analizo metrics-history is part of the analizo suite."
#
# Scenario all others
ok 300 - Given I change to an empty temporary directory
#
ok 301 - And I create a file called .analizo with the following content
# """<command>: --help"""
ok 302 - When I run "analizo tree-evolution"
#
ok 303 - Then the output must match "analizo tree-evolution is part of the analizo suite."
#
# Scenario all others
ok 304 - Given I change to an empty temporary directory
#
ok 305 - And I create a file called .analizo with the following content
# """<command>: --help"""
ok 306 - When I run "analizo files-graph"
#
ok 307 - Then the output must match "analizo files-graph is part of the analizo suite."
#
# Scenario all others
ok 308 - Given I change to an empty temporary directory
#
ok 309 - And I create a file called .analizo with the following content
# """<command>: --help"""
ok 310 - When I run "analizo help"
#
ok 311 - Then the output must match "analizo help is part of the analizo suite."
#
# Feature storing VCS data in a database
# As a software engineering researcher I want to store data about the changes in a project So that I can analyze the development process
# Scenario basics
ok 312 - When I explode t/samples/evolution.tar.gz
#
ok 313 - And I run "analizo metrics-history -f db -o data.db"
#
ok 314 - Then the exit status must be 0
#
ok 315 - When I run "select * from modules" on database "data.db"
#
ok 316 - Then the output must match "Input"
#
ok 317 - And the output must match "Output"
#
ok 318 - And the output must match "prog"
#
# Feature tree evolution
# As a software engineering reasearcher I want to know what directories existed during the project lifetime So that I can analyze only the production code (and not tests etc)
# Scenario sample git repository
ok 319 - When I explode t/samples/tree-evolution.tar.gz
#
ok 320 - And I run "analizo tree-evolution"
#
ok 321 - Then the output lines must match "\# 073290fbad0254793bd3ecfb97654c04368d0039\\nsrc\\n\#"
#
ok 322 - Then the output lines must match "\# 85f7db08f7b7b0b62e3c0023b2743d529b0d5b4b\\nsrc\\nsrc/input\\n\#"
#
ok 323 - Then the output lines must match "\# f41cf7d0351e812285efd60c6d957c330b1f61a1\\nsrc\\nsrc/input\\nsrc/output"
#
# Feature analizo wrapper script
# Scenario invoking a tool
ok 324 - When I run "analizo metrics lib t"
#
ok 325 - Then analizo must emit a warning matching "Usage:"
#
ok 326 - And analizo must emit a warning matching "analizo.metrics"
#
ok 327 - And the exit status must not be 0
#
# Scenario must not pass --version ahead
ok 328 - When I run "analizo metrics --version"
#
ok 329 - Then analizo must emit a warning matching "Invalid option: --version"
#
ok 330 - And the exit status must not be 0
#
# Scenario display help
ok 331 - When I run "analizo --help"
#
ok 332 - Then the output must match "[NAME|N^HNA^HAM^HME^HE]\s+analizo\s"
#
ok 333 - And the output must match "[USAGE|U^HUS^HSA^HAG^HGE^HE]\s+analizo\s"
#
ok 334 - And the exit status must be 0
#
# Scenario display version
ok 335 - When I run "analizo --version"
#
ok 336 - Then the output must match "^analizo version [0-9]+.[0-9]+.[0-9]+"
#
ok 337 - And the exit status must be 0
#
# Scenario invalid option
ok 338 - When I run "analizo --invalid-option"
#
ok 339 - Then the output must match "Unrecognized command"
#
ok 340 - And the exit status must not be 0
#
# Feature exclude directories from the analysis
# As a software developer in a large project I want to exclude some directories from the source code analysis In order to not analyse non-production code such as tests
# Scenario excluding test directory
ok 341 - Given I am in t/samples/multidir/cpp
#
ok 342 - When I run "analizo metrics --exclude test ."
#
ok 343 - Then the output must match "module: HelloWorld"
#
ok 344 - And the output must not match "module: hello_test"
#
# Scenario excluding test directory
ok 345 - Given I am in t/samples/multidir/csharp
#
ok 346 - When I run "analizo metrics --exclude test ."
#
ok 347 - Then the output must match "module: HelloWorld"
#
ok 348 - And the output must not match "module: hello_test"
#
# Scenario excluding a list of directories
ok 349 - Given I am in t/samples/multidir/cpp
#
ok 350 - When I run "analizo metrics --exclude test:src ."
#
ok 351 - Then the output must not match "module: HelloWorld"
#
ok 352 - And the output must not match "module: hello_test"
#
# Scenario excluding a list of directories
ok 353 - Given I am in t/samples/multidir/csharp
#
ok 354 - When I run "analizo metrics --exclude test:src ."
#
ok 355 - Then the output must not match "module: HelloWorld"
#
ok 356 - And the output must not match "module: hello_test"
#
# Scenario excluding src directory
ok 357 - Given I am in t/samples/multidir/cpp
#
ok 358 - When I run "analizo metrics --exclude src ."
#
ok 359 - Then the output must match "module: hello_test"
#
ok 360 - And the output must not match "module: HelloWorld"
#
# Scenario excluding src directory
ok 361 - Given I am in t/samples/multidir/csharp
#
ok 362 - When I run "analizo metrics --exclude src ."
#
ok 363 - Then the output must match "module: hello_test"
#
ok 364 - And the output must not match "module: HelloWorld"
#
# Feature number of abstract classes
# As a software developer I want analizo to report the number of abstract classes in my code So that I can evaluate it
# Scenario "Hello, world" project
ok 365 - Given I am in t/samples/hello_world/cpp
#
ok 366 - When I run "analizo metrics ."
#
ok 367 - Then analizo must report that the project has total_abstract_classes = 0
#
# Scenario "Hello, world" project
ok 368 - Given I am in t/samples/hello_world/java
#
ok 369 - When I run "analizo metrics ."
#
ok 370 - Then analizo must report that the project has total_abstract_classes = 0
#
# Scenario "Hello, world" project
ok 371 - Given I am in t/samples/hello_world/csharp
#
ok 372 - When I run "analizo metrics ."
#
ok 373 - Then analizo must report that the project has total_abstract_classes = 0
#
# Scenario "Animals" project
ok 374 - Given I am in t/samples/animals/cpp
#
ok 375 - When I run "analizo metrics ."
#
ok 376 - Then analizo must report that the project has total_abstract_classes = 2
#
# Scenario "Animals" project
ok 377 - Given I am in t/samples/animals/java
#
ok 378 - When I run "analizo metrics ."
#
ok 379 - Then analizo must report that the project has total_abstract_classes = 2
#
# Scenario "Animals" project
ok 380 - Given I am in t/samples/animals/csharp
#
ok 381 - When I run "analizo metrics ."
#
ok 382 - Then analizo must report that the project has total_abstract_classes = 2
#
# Scenario "Polygons" project
ok 383 - Given I am in t/samples/polygons/cpp
#
ok 384 - When I run "analizo metrics ."
#
ok 385 - Then analizo must report that the project has total_abstract_classes = 2
#
# Scenario "Polygons" project
ok 386 - Given I am in t/samples/polygons/java
#
ok 387 - When I run "analizo metrics ."
#
ok 388 - Then analizo must report that the project has total_abstract_classes = 2
#
# Scenario "Polygons" project
ok 389 - Given I am in t/samples/polygons/csharp
#
ok 390 - When I run "analizo metrics ."
#
ok 391 - Then analizo must report that the project has total_abstract_classes = 2
#
# Scenario "AbstractClass" project
ok 392 - Given I am in t/samples/abstract_class/java
#
ok 393 - When I run "analizo metrics ."
#
ok 394 - Then analizo must report that the project has total_abstract_classes = 1
#
ok 395 - And analizo must report that the project has total_methods_per_abstract_class = 6
#
# Scenario "AbstractClass" project
ok 396 - Given I am in t/samples/abstract_class/csharp
#
ok 397 - When I run "analizo metrics ."
#
ok 398 - Then analizo must report that the project has total_abstract_classes = 1
#
ok 399 - And analizo must report that the project has total_methods_per_abstract_class = 1
#
# Feature afferent connections with deep inheritance
# As a software developer I want analizo to report the afferent connections of each module So that I can evaluate it
# Scenario afferent connections of the dog family java sample
ok 400 - Given I am in t/samples/deep_inheritance/java
#
ok 401 - When I run "analizo metrics ."
#
ok 402 - Then analizo must report that module Dog has acc = 7
#
# Scenario afferent connections of the dog family java sample
ok 403 - Given I am in t/samples/deep_inheritance/java
#
ok 404 - When I run "analizo metrics ."
#
ok 405 - Then analizo must report that module DogFirstGreatGrandson has acc = 1
#
# Scenario afferent connections of the dog family java sample
ok 406 - Given I am in t/samples/deep_inheritance/java
#
ok 407 - When I run "analizo metrics ."
#
ok 408 - Then analizo must report that module DogFirstPuppy has acc = 4
#
# Scenario afferent connections of the dog family java sample
ok 409 - Given I am in t/samples/deep_inheritance/java
#
ok 410 - When I run "analizo metrics ."
#
ok 411 - Then analizo must report that module DogGrandson has acc = 3
#
# Scenario afferent connections of the dog family java sample
ok 412 - Given I am in t/samples/deep_inheritance/java
#
ok 413 - When I run "analizo metrics ."
#
ok 414 - Then analizo must report that module DogSecondGreatGrandson has acc = 0
#
# Scenario afferent connections of the dog family java sample
ok 415 - Given I am in t/samples/deep_inheritance/java
#
ok 416 - When I run "analizo metrics ."
#
ok 417 - Then analizo must report that module DogSecondPuppy has acc = 0
#
# Scenario afferent connections of the dog family java sample
ok 418 - Given I am in t/samples/deep_inheritance/java
#
ok 419 - When I run "analizo metrics ."
#
ok 420 - Then analizo must report that module DogSuperYoung has acc = 0
#
# Scenario afferent connections of the dog family java sample
ok 421 - Given I am in t/samples/deep_inheritance/java
#
ok 422 - When I run "analizo metrics ."
#
ok 423 - Then analizo must report that module Human has acc = 2
#
# Scenario afferent connections of the dog family java sample
ok 424 - Given I am in t/samples/deep_inheritance/java
#
ok 425 - When I run "analizo metrics ."
#
ok 426 - Then analizo must report that module ShopController has acc = 0
#
# Scenario afferent connections of the dog family java sample
ok 427 - Given I am in t/samples/deep_inheritance/java
#
ok 428 - When I run "analizo metrics ."
#
ok 429 - Then analizo must report that module VenderShop has acc = 1
#
# Feature number of attributes metric
# As a software developer I want to calculate the number of attributes per module metric So that I can evaluate my code
# Scenario number of attributes in the "Animals" project
ok 430 - Given I am in t/samples/animals/cpp
#
ok 431 - When I run "analizo metrics ."
#
ok 432 - Then analizo must report that module Dog has noa = 1
#
ok 433 - And analizo must report that module Cat has noa = 1
#
ok 434 - And analizo must report that module main has noa = 0
#
# Scenario number of attributes in the "Animals" project
ok 435 - Given I am in t/samples/animals/java
#
ok 436 - When I run "analizo metrics ."
#
ok 437 - Then analizo must report that module Dog has noa = 1
#
ok 438 - And analizo must report that module Cat has noa = 1
#
ok 439 - And analizo must report that module Main has noa = 0
#
# Scenario number of attributes in the "Animals" project
ok 440 - Given I am in t/samples/animals/csharp
#
ok 441 - When I run "analizo metrics ."
#
ok 442 - Then analizo must report that module Dog has noa = 1
#
ok 443 - And analizo must report that module Cat has noa = 1
#
ok 444 - And analizo must report that module main has noa = 0
#
# Feature total number of methods per abstract class
# As a software developer I want analizo to report the number of abstract classes in my code So that I can evaluate it
# Scenario "Hello, world" project
ok 445 - Given I am in t/samples/hello_world/cpp
#
ok 446 - When I run "analizo metrics ."
#
ok 447 - Then analizo must report that the project has total_methods_per_abstract_class = 0
#
# Scenario "Hello, world" project
ok 448 - Given I am in t/samples/hello_world/java
#
ok 449 - When I run "analizo metrics ."
#
ok 450 - Then analizo must report that the project has total_methods_per_abstract_class = 0
#
# Scenario "Hello, world" project
ok 451 - Given I am in t/samples/hello_world/csharp
#
ok 452 - When I run "analizo metrics ."
#
ok 453 - Then analizo must report that the project has total_methods_per_abstract_class = 0
#
# Scenario "Animals" project
ok 454 - Given I am in t/samples/animals/cpp
#
ok 455 - When I run "analizo metrics ."
#
ok 456 - Then analizo must report that the project has total_methods_per_abstract_class = 1
#
# Scenario "Animals" project
ok 457 - Given I am in t/samples/animals/java
#
ok 458 - When I run "analizo metrics ."
#
ok 459 - Then analizo must report that the project has total_methods_per_abstract_class = 1
#
# Scenario "Animals" project
ok 460 - Given I am in t/samples/animals/csharp
#
ok 461 - When I run "analizo metrics ."
#
ok 462 - Then analizo must report that the project has total_methods_per_abstract_class = 1
#
# Scenario "Polygons" project
ok 463 - Given I am in t/samples/polygons/cpp
#
ok 464 - When I run "analizo metrics ."
#
ok 465 - Then analizo must report that the project has total_methods_per_abstract_class = 2.5
#
# Scenario "Polygons" project
ok 466 - Given I am in t/samples/polygons/java
#
ok 467 - When I run "analizo metrics ."
#
ok 468 - Then analizo must report that the project has total_methods_per_abstract_class = 2
#
# Scenario "Polygons" project
ok 469 - Given I am in t/samples/polygons/csharp
#
ok 470 - When I run "analizo metrics ."
#
ok 471 - Then analizo must report that the project has total_methods_per_abstract_class = 2
#
# Feature average number of parameters metric
# As a software developer I want to calculate the average number of arguments per method metric So that I can evaluate my code
# Scenario number of parameters in the "Animals" project
ok 472 - Given I am in t/samples/animals/cpp
#
ok 473 - When I run "analizo metrics ."
#
ok 474 - Then analizo must report that module Dog has anpm = 0.5
#
ok 475 - And analizo must report that module Cat has anpm = 0.5
#
ok 476 - And analizo must report that module main has anpm = 0
#
# Scenario number of parameters in the "Animals" project
ok 477 - Given I am in t/samples/animals/java
#
ok 478 - When I run "analizo metrics ."
#
ok 479 - Then analizo must report that module Dog has anpm = 0.5
#
ok 480 - And analizo must report that module Cat has anpm = 0.5
#
ok 481 - And analizo must report that module Main has anpm = 1
#
# Scenario number of parameters in the "Animals" project
ok 482 - Given I am in t/samples/animals/csharp
#
ok 483 - When I run "analizo metrics ."
#
ok 484 - Then analizo must report that module Dog has anpm = 0.5
#
ok 485 - And analizo must report that module Cat has anpm = 0.5
#
ok 486 - And analizo must report that module main has anpm = 1
#
# Feature change cost degree
# As a software developer I want analizo to report the degree of change cost in my code So that I can evaluate it
# Scenario "Hello, world" project
ok 487 - Given I am in t/samples/hello_world/cpp
#
ok 488 - When I run "analizo metrics ."
#
ok 489 - Then analizo must report that the project has change_cost = 0.75
#
# Scenario "Hello, world" project
ok 490 - Given I am in t/samples/hello_world/java
#
ok 491 - When I run "analizo metrics ."
#
ok 492 - Then analizo must report that the project has change_cost = 0.75
#
# Scenario "Hello, world" project
ok 493 - Given I am in t/samples/hello_world/csharp
#
ok 494 - When I run "analizo metrics ."
#
ok 495 - Then analizo must report that the project has change_cost = 0.75
#
# Scenario "Animals" project
ok 496 - Given I am in t/samples/animals/cpp
#
ok 497 - When I run "analizo metrics ."
#
ok 498 - Then analizo must report that the project has change_cost = 0.44
#
# Scenario "Animals" project
ok 499 - Given I am in t/samples/animals/java
#
ok 500 - When I run "analizo metrics ."
#
ok 501 - Then analizo must report that the project has change_cost = 0.44
#
# Scenario "Animals" project
ok 502 - Given I am in t/samples/animals/csharp
#
ok 503 - When I run "analizo metrics ."
#
ok 504 - Then analizo must report that the project has change_cost = 0.44
#
# Scenario "Hieracchical Graph" project
ok 505 - Given I am in t/samples/hierarchical_graph/c
#
ok 506 - When I run "analizo metrics ."
#
ok 507 - Then analizo must report that the project has change_cost = 0.42
#
# Scenario "Hieracchical Graph" project
ok 508 - Given I am in t/samples/hierarchical_graph/csharp
#
ok 509 - When I run "analizo metrics ."
#
ok 510 - Then analizo must report that the project has change_cost = 0.28
#
# Scenario "Cyclical Graph" project
ok 511 - Given I am in t/samples/cyclical_graph/c
#
ok 512 - When I run "analizo metrics ."
#
ok 513 - Then analizo must report that the project has change_cost = 0.5
#
# Scenario "Cyclical Graph" project
ok 514 - Given I am in t/samples/cyclical_graph/csharp
#
ok 515 - When I run "analizo metrics ."
#
ok 516 - Then analizo must report that the project has change_cost = 0.36
#
# Feature output file for metrics tool
# Scenario passing output file in the command line
ok 517 - Given I am in .
#
ok 518 - When I run "analizo metrics --output output.yml.tmp t/samples/sample_basic/"
#
ok 519 - Then the contents of "output.yml.tmp" must match "module2"
#
ok 520 - And the exit status must be 0
#
# Scenario passing output file without permission to write
ok 521 - Given I am in .
#
ok 522 - When I run "touch output.tmp"
#
ok 523 - And I run "chmod 000 output.tmp"
#
ok 524 - And I run "analizo metrics --output output.tmp t/samples/sample_basic/"
#
not ok 525 - Then the exit status must not be 0
#
not ok 526 # TODO & SKIP Step not implemented
#
# Scenario passing output file in an unexisting directory
ok 527 - Given I am in .
#
ok 528 - When I run "analizo metrics --output /this/directory/must/not/exists/output.yml t/samples"
#
ok 529 - Then the exit status must not be 0
#
ok 530 - And analizo must emit a warning matching "No such file or directory"
#
# Feature average cyclomatic complexity per method
# As a software developer I want to calculate the average cyclomatic complexity per method of my code So that I can spot the more complex modules and refactor them
# Scenario my "conditionals" C project
ok 531 - Given I am in t/samples/conditionals/c
#
ok 532 - When I run "analizo metrics ."
#
ok 533 - Then analizo must report that module cc1 has accm = 1
#
ok 534 - Then analizo must report that module cc2 has accm = 2
#
ok 535 - Then analizo must report that module cc3 has accm = 3
#
ok 536 - Then analizo must report that module cc4 has accm = 4
#
# Scenario my "conditionals" C project
ok 537 - Given I am in t/samples/conditionals/csharp
#
ok 538 - When I run "analizo metrics ."
#
ok 539 - Then analizo must report that module cc1 has accm = 1
#
ok 540 - Then analizo must report that module cc2 has accm = 2
#
ok 541 - Then analizo must report that module cc3 has accm = 3
#
ok 542 - Then analizo must report that module cc4 has accm = 4
#
# Feature output statistics values of metrics
# As a researcher I want to ouput statistics values of metrics So that I can evaluate a project at once
# Scenario "Hello, world" project
ok 543 - Given I am in t/samples/hello_world/
#
ok 544 - When I run "analizo metrics ."
#
ok 545 - Then the output must match "acc_mean:"
#
ok 546 - Then the output must match "acc_mode:"
#
ok 547 - Then the output must match "acc_standard_deviation:"
#
ok 548 - Then the output must match "acc_sum:"
#
ok 549 - Then the output must match "acc_variance:"
#
ok 550 - Then the output must match "acc_quantile_min:"
#
ok 551 - Then the output must match "acc_quantile_lower:"
#
ok 552 - Then the output must match "acc_quantile_median:"
#
ok 553 - Then the output must match "acc_quantile_upper:"
#
ok 554 - Then the output must match "acc_quantile_max:"
#
ok 555 - Then the output must match "acc_kurtosis:"
#
ok 556 - Then the output must match "acc_skewness:"
#
# Scenario "Hello, world" project
ok 557 - Given I am in t/samples/hello_world/
#
ok 558 - When I run "analizo metrics ."
#
ok 559 - Then the output must match "accm_mean:"
#
ok 560 - Then the output must match "accm_mode:"
#
ok 561 - Then the output must match "accm_standard_deviation:"
#
ok 562 - Then the output must match "accm_sum:"
#
ok 563 - Then the output must match "accm_variance:"
#
ok 564 - Then the output must match "accm_quantile_min:"
#
ok 565 - Then the output must match "accm_quantile_lower:"
#
ok 566 - Then the output must match "accm_quantile_median:"
#
ok 567 - Then the output must match "accm_quantile_upper:"
#
ok 568 - Then the output must match "accm_quantile_max:"
#
ok 569 - Then the output must match "accm_kurtosis:"
#
ok 570 - Then the output must match "accm_skewness:"
#
# Scenario "Hello, world" project
ok 571 - Given I am in t/samples/hello_world/
#
ok 572 - When I run "analizo metrics ."
#
ok 573 - Then the output must match "amloc_mean:"
#
ok 574 - Then the output must match "amloc_mode:"
#
ok 575 - Then the output must match "amloc_standard_deviation:"
#
ok 576 - Then the output must match "amloc_sum:"
#
ok 577 - Then the output must match "amloc_variance:"
#
ok 578 - Then the output must match "amloc_quantile_min:"
#
ok 579 - Then the output must match "amloc_quantile_lower:"
#
ok 580 - Then the output must match "amloc_quantile_median:"
#
ok 581 - Then the output must match "amloc_quantile_upper:"
#
ok 582 - Then the output must match "amloc_quantile_max:"
#
ok 583 - Then the output must match "amloc_kurtosis:"
#
ok 584 - Then the output must match "amloc_skewness:"
#
# Scenario "Hello, world" project
ok 585 - Given I am in t/samples/hello_world/
#
ok 586 - When I run "analizo metrics ."
#
ok 587 - Then the output must match "anpm_mean:"
#
ok 588 - Then the output must match "anpm_mode:"
#
ok 589 - Then the output must match "anpm_standard_deviation:"
#
ok 590 - Then the output must match "anpm_sum:"
#
ok 591 - Then the output must match "anpm_variance:"
#
ok 592 - Then the output must match "anpm_quantile_min:"
#
ok 593 - Then the output must match "anpm_quantile_lower:"
#
ok 594 - Then the output must match "anpm_quantile_median:"
#
ok 595 - Then the output must match "anpm_quantile_upper:"
#
ok 596 - Then the output must match "anpm_quantile_max:"
#
ok 597 - Then the output must match "anpm_kurtosis:"
#
ok 598 - Then the output must match "anpm_skewness:"
#
# Scenario "Hello, world" project
ok 599 - Given I am in t/samples/hello_world/
#
ok 600 - When I run "analizo metrics ."
#
ok 601 - Then the output must match "cbo_mean:"
#
ok 602 - Then the output must match "cbo_mode:"
#
ok 603 - Then the output must match "cbo_standard_deviation:"
#
ok 604 - Then the output must match "cbo_sum:"
#
ok 605 - Then the output must match "cbo_variance:"
#
ok 606 - Then the output must match "cbo_quantile_min:"
#
ok 607 - Then the output must match "cbo_quantile_lower:"
#
ok 608 - Then the output must match "cbo_quantile_median:"
#
ok 609 - Then the output must match "cbo_quantile_upper:"
#
ok 610 - Then the output must match "cbo_quantile_max:"
#
ok 611 - Then the output must match "cbo_kurtosis:"
#
ok 612 - Then the output must match "cbo_skewness:"
#
# Scenario "Hello, world" project
ok 613 - Given I am in t/samples/hello_world/
#
ok 614 - When I run "analizo metrics ."
#
ok 615 - Then the output must match "dit_mean:"
#
ok 616 - Then the output must match "dit_mode:"
#
ok 617 - Then the output must match "dit_standard_deviation:"
#
ok 618 - Then the output must match "dit_sum:"
#
ok 619 - Then the output must match "dit_variance:"
#
ok 620 - Then the output must match "dit_quantile_min:"
#
ok 621 - Then the output must match "dit_quantile_lower:"
#
ok 622 - Then the output must match "dit_quantile_median:"
#
ok 623 - Then the output must match "dit_quantile_upper:"
#
ok 624 - Then the output must match "dit_quantile_max:"
#
ok 625 - Then the output must match "dit_kurtosis:"
#
ok 626 - Then the output must match "dit_skewness:"
#
# Scenario "Hello, world" project
ok 627 - Given I am in t/samples/hello_world/
#
ok 628 - When I run "analizo metrics ."
#
ok 629 - Then the output must match "lcom4_mean:"
#
ok 630 - Then the output must match "lcom4_mode:"
#
ok 631 - Then the output must match "lcom4_standard_deviation:"
#
ok 632 - Then the output must match "lcom4_sum:"
#
ok 633 - Then the output must match "lcom4_variance:"
#
ok 634 - Then the output must match "lcom4_quantile_min:"
#
ok 635 - Then the output must match "lcom4_quantile_lower:"
#
ok 636 - Then the output must match "lcom4_quantile_median:"
#
ok 637 - Then the output must match "lcom4_quantile_upper:"
#
ok 638 - Then the output must match "lcom4_quantile_max:"
#
ok 639 - Then the output must match "lcom4_kurtosis:"
#
ok 640 - Then the output must match "lcom4_skewness:"
#
# Scenario "Hello, world" project
ok 641 - Given I am in t/samples/hello_world/
#
ok 642 - When I run "analizo metrics ."
#
ok 643 - Then the output must match "loc_mean:"
#
ok 644 - Then the output must match "loc_mode:"
#
ok 645 - Then the output must match "loc_standard_deviation:"
#
ok 646 - Then the output must match "loc_sum:"
#
ok 647 - Then the output must match "loc_variance:"
#
ok 648 - Then the output must match "loc_quantile_min:"
#
ok 649 - Then the output must match "loc_quantile_lower:"
#
ok 650 - Then the output must match "loc_quantile_median:"
#
ok 651 - Then the output must match "loc_quantile_upper:"
#
ok 652 - Then the output must match "loc_quantile_max:"
#
ok 653 - Then the output must match "loc_kurtosis:"
#
ok 654 - Then the output must match "loc_skewness:"
#
# Scenario "Hello, world" project
ok 655 - Given I am in t/samples/hello_world/
#
ok 656 - When I run "analizo metrics ."
#
ok 657 - Then the output must match "mmloc_mean:"
#
ok 658 - Then the output must match "mmloc_mode:"
#
ok 659 - Then the output must match "mmloc_standard_deviation:"
#
ok 660 - Then the output must match "mmloc_sum:"
#
ok 661 - Then the output must match "mmloc_variance:"
#
ok 662 - Then the output must match "mmloc_quantile_min:"
#
ok 663 - Then the output must match "mmloc_quantile_lower:"
#
ok 664 - Then the output must match "mmloc_quantile_median:"
#
ok 665 - Then the output must match "mmloc_quantile_upper:"
#
ok 666 - Then the output must match "mmloc_quantile_max:"
#
ok 667 - Then the output must match "mmloc_kurtosis:"
#
ok 668 - Then the output must match "mmloc_skewness:"
#
# Scenario "Hello, world" project
ok 669 - Given I am in t/samples/hello_world/
#
ok 670 - When I run "analizo metrics ."
#
ok 671 - Then the output must match "noa_mean:"
#
ok 672 - Then the output must match "noa_mode:"
#
ok 673 - Then the output must match "noa_standard_deviation:"
#
ok 674 - Then the output must match "noa_sum:"
#
ok 675 - Then the output must match "noa_variance:"
#
ok 676 - Then the output must match "noa_quantile_min:"
#
ok 677 - Then the output must match "noa_quantile_lower:"
#
ok 678 - Then the output must match "noa_quantile_median:"
#
ok 679 - Then the output must match "noa_quantile_upper:"
#
ok 680 - Then the output must match "noa_quantile_max:"
#
ok 681 - Then the output must match "noa_kurtosis:"
#
ok 682 - Then the output must match "noa_skewness:"
#
# Scenario "Hello, world" project
ok 683 - Given I am in t/samples/hello_world/
#
ok 684 - When I run "analizo metrics ."
#
ok 685 - Then the output must match "noc_mean:"
#
ok 686 - Then the output must match "noc_mode:"
#
ok 687 - Then the output must match "noc_standard_deviation:"
#
ok 688 - Then the output must match "noc_sum:"
#
ok 689 - Then the output must match "noc_variance:"
#
ok 690 - Then the output must match "noc_quantile_min:"
#
ok 691 - Then the output must match "noc_quantile_lower:"
#
ok 692 - Then the output must match "noc_quantile_median:"
#
ok 693 - Then the output must match "noc_quantile_upper:"
#
ok 694 - Then the output must match "noc_quantile_max:"
#
ok 695 - Then the output must match "noc_kurtosis:"
#
ok 696 - Then the output must match "noc_skewness:"
#
# Scenario "Hello, world" project
ok 697 - Given I am in t/samples/hello_world/
#
ok 698 - When I run "analizo metrics ."
#
ok 699 - Then the output must match "nom_mean:"
#
ok 700 - Then the output must match "nom_mode:"
#
ok 701 - Then the output must match "nom_standard_deviation:"
#
ok 702 - Then the output must match "nom_sum:"
#
ok 703 - Then the output must match "nom_variance:"
#
ok 704 - Then the output must match "nom_quantile_min:"
#
ok 705 - Then the output must match "nom_quantile_lower:"
#
ok 706 - Then the output must match "nom_quantile_median:"
#
ok 707 - Then the output must match "nom_quantile_upper:"
#
ok 708 - Then the output must match "nom_quantile_max:"
#
ok 709 - Then the output must match "nom_kurtosis:"
#
ok 710 - Then the output must match "nom_skewness:"
#
# Scenario "Hello, world" project
ok 711 - Given I am in t/samples/hello_world/
#
ok 712 - When I run "analizo metrics ."
#
ok 713 - Then the output must match "npm_mean:"
#
ok 714 - Then the output must match "npm_mode:"
#
ok 715 - Then the output must match "npm_standard_deviation:"
#
ok 716 - Then the output must match "npm_sum:"
#
ok 717 - Then the output must match "npm_variance:"
#
ok 718 - Then the output must match "npm_quantile_min:"
#
ok 719 - Then the output must match "npm_quantile_lower:"
#
ok 720 - Then the output must match "npm_quantile_median:"
#
ok 721 - Then the output must match "npm_quantile_upper:"
#
ok 722 - Then the output must match "npm_quantile_max:"
#
ok 723 - Then the output must match "npm_kurtosis:"
#
ok 724 - Then the output must match "npm_skewness:"
#
# Scenario "Hello, world" project
ok 725 - Given I am in t/samples/hello_world/
#
ok 726 - When I run "analizo metrics ."
#
ok 727 - Then the output must match "npa_mean:"
#
ok 728 - Then the output must match "npa_mode:"
#
ok 729 - Then the output must match "npa_standard_deviation:"
#
ok 730 - Then the output must match "npa_sum:"
#
ok 731 - Then the output must match "npa_variance:"
#
ok 732 - Then the output must match "npa_quantile_min:"
#
ok 733 - Then the output must match "npa_quantile_lower:"
#
ok 734 - Then the output must match "npa_quantile_median:"
#
ok 735 - Then the output must match "npa_quantile_upper:"
#
ok 736 - Then the output must match "npa_quantile_max:"
#
ok 737 - Then the output must match "npa_kurtosis:"
#
ok 738 - Then the output must match "npa_skewness:"
#
# Scenario "Hello, world" project
ok 739 - Given I am in t/samples/hello_world/
#
ok 740 - When I run "analizo metrics ."
#
ok 741 - Then the output must match "rfc_mean:"
#
ok 742 - Then the output must match "rfc_mode:"
#
ok 743 - Then the output must match "rfc_standard_deviation:"
#
ok 744 - Then the output must match "rfc_sum:"
#
ok 745 - Then the output must match "rfc_variance:"
#
ok 746 - Then the output must match "rfc_quantile_min:"
#
ok 747 - Then the output must match "rfc_quantile_lower:"
#
ok 748 - Then the output must match "rfc_quantile_median:"
#
ok 749 - Then the output must match "rfc_quantile_upper:"
#
ok 750 - Then the output must match "rfc_quantile_max:"
#
ok 751 - Then the output must match "rfc_kurtosis:"
#
ok 752 - Then the output must match "rfc_skewness:"
#
# Scenario "Hello, world" project
ok 753 - Given I am in t/samples/hello_world/
#
ok 754 - When I run "analizo metrics ."
#
ok 755 - Then the output must match "sc_mean:"
#
ok 756 - Then the output must match "sc_mode:"
#
ok 757 - Then the output must match "sc_standard_deviation:"
#
ok 758 - Then the output must match "sc_sum:"
#
ok 759 - Then the output must match "sc_variance:"
#
ok 760 - Then the output must match "sc_quantile_min:"
#
ok 761 - Then the output must match "sc_quantile_lower:"
#
ok 762 - Then the output must match "sc_quantile_median:"
#
ok 763 - Then the output must match "sc_quantile_upper:"
#
ok 764 - Then the output must match "sc_quantile_max:"
#
ok 765 - Then the output must match "sc_kurtosis:"
#
ok 766 - Then the output must match "sc_skewness:"
#
# Feature language filters
# As a software developer in a multi-language project I want to analyze only one programming language So that the results are as correct as possible
# Scenario filtering for C code
ok 767 - Given I am in t/samples/mixed
#
ok 768 - When I run "analizo metrics --language c ."
#
ok 769 - Then the output must match "native_backend"
#
ok 770 - And the output must not match "UI"
#
ok 771 - And the output must not match "Backend"
#
ok 772 - And the output must not match "CSharp_Backend"
#
# Scenario filtering for Java code
ok 773 - Given I am in t/samples/mixed
#
ok 774 - When I run "analizo metrics --language java ."
#
ok 775 - Then the output must match "UI"
#
ok 776 - And the output must match "Backend"
#
ok 777 - And the output must not match "native_backend"
#
ok 778 - And the output must not match "CSharp_Backend"
#
# Scenario filtering for CSharp code
ok 779 - Given I am in t/samples/mixed
#
ok 780 - When I run "analizo metrics --language csharp ."
#
ok 781 - Then the output must match "CSharp_Backend"
#
ok 782 - And the output must not match "UI"
#
ok 783 - And the output must not match "native_backend"
#
# Scenario listing languages
ok 784 - When I run "analizo metrics --language list"
#
ok 785 - Then analizo must present a list of languages
#
# Feature list metrics
# As a Research or Practioner I want to extract metrics from source code So that I can learn, understand and evaluate it
# Scenario listing metrics
ok 786 - When I run "analizo metrics --list"
#
ok 787 - Then analizo must present a list of metrics
#
# Scenario listing metrics
ok 788 - When I run "analizo metrics -l"
#
ok 789 - Then analizo must present a list of metrics
#
# Feature number of abstract classes
# As a software developer I want analizo to report the number of modules with at least a defined method in my code So that I can evaluate it
# Scenario "Hello, world" project
ok 790 - Given I am in t/samples/hello_world/cpp
#
ok 791 - When I run "analizo metrics ."
#
ok 792 - Then analizo must report that the project has total_modules_with_defined_attributes = 1
#
# Scenario "Hello, world" project
ok 793 - Given I am in t/samples/hello_world/java
#
ok 794 - When I run "analizo metrics ."
#
ok 795 - Then analizo must report that the project has total_modules_with_defined_attributes = 1
#
# Scenario "Hello, world" project
ok 796 - Given I am in t/samples/hello_world/csharp
#
ok 797 - When I run "analizo metrics ."
#
ok 798 - Then analizo must report that the project has total_modules_with_defined_attributes = 1
#
# Scenario "Animals" project
ok 799 - Given I am in t/samples/animals/cpp
#
ok 800 - When I run "analizo metrics ."
#
ok 801 - Then analizo must report that the project has total_modules_with_defined_attributes = 2
#
# Scenario "Animals" project
ok 802 - Given I am in t/samples/animals/java
#
ok 803 - When I run "analizo metrics ."
#
ok 804 - Then analizo must report that the project has total_modules_with_defined_attributes = 2
#
# Scenario "Animals" project
ok 805 - Given I am in t/samples/animals/csharp
#
ok 806 - When I run "analizo metrics ."
#
ok 807 - Then analizo must report that the project has total_modules_with_defined_attributes = 2
#
# Feature number of methods
# As a software developer I want analizo to report the number of methods of each module So that I can evaluate it
# Scenario number of methods of the polygon java sample
ok 808 - Given I am in t/samples/polygons/cpp
#
ok 809 - When I run "analizo metrics ."
#
ok 810 - Then analizo must report that module CPolygon has nom = 3
#
# Scenario number of methods of the polygon java sample
ok 811 - Given I am in t/samples/polygons/cpp
#
ok 812 - When I run "analizo metrics ."
#
ok 813 - Then analizo must report that module CTetragon has nom = 2
#
# Scenario number of methods of the polygon java sample
ok 814 - Given I am in t/samples/polygons/java
#
ok 815 - When I run "analizo metrics ."
#
ok 816 - Then analizo must report that module Polygon has nom = 3
#
# Scenario number of methods of the polygon java sample
ok 817 - Given I am in t/samples/polygons/csharp
#
ok 818 - When I run "analizo metrics ."
#
ok 819 - Then analizo must report that module Polygon has nom = 2
#
# Scenario number of methods of the polygon java sample
ok 820 - Given I am in t/samples/polygons/csharp
#
ok 821 - When I run "analizo metrics ."
#
ok 822 - Then analizo must report that module Tetragon has nom = 2
#
# Scenario number of methods of the polygon java sample
ok 823 - Given I am in t/samples/animals/cpp
#
ok 824 - When I run "analizo metrics ."
#
ok 825 - Then analizo must report that module Animal has nom = 1
#
# Scenario number of methods of the polygon java sample
ok 826 - Given I am in t/samples/animals/cpp
#
ok 827 - When I run "analizo metrics ."
#
ok 828 - Then analizo must report that module Cat has nom = 2
#
# Scenario number of methods of the polygon java sample
ok 829 - Given I am in t/samples/animals/cpp
#
ok 830 - When I run "analizo metrics ."
#
ok 831 - Then analizo must report that module Dog has nom = 2
#
# Scenario number of methods of the polygon java sample
ok 832 - Given I am in t/samples/animals/java
#
ok 833 - When I run "analizo metrics ."
#
ok 834 - Then analizo must report that module Animal has nom = 1
#
# Scenario number of methods of the polygon java sample
ok 835 - Given I am in t/samples/animals/java
#
ok 836 - When I run "analizo metrics ."
#
ok 837 - Then analizo must report that module Cat has nom = 2
#
# Scenario number of methods of the polygon java sample
ok 838 - Given I am in t/samples/animals/java
#
ok 839 - When I run "analizo metrics ."
#
ok 840 - Then analizo must report that module Dog has nom = 2
#
# Scenario number of methods of the polygon java sample
ok 841 - Given I am in t/samples/animals/csharp
#
ok 842 - When I run "analizo metrics ."
#
ok 843 - Then analizo must report that module Animal has nom = 1
#
# Scenario number of methods of the polygon java sample
ok 844 - Given I am in t/samples/animals/csharp
#
ok 845 - When I run "analizo metrics ."
#
ok 846 - Then analizo must report that module Cat has nom = 2
#
# Scenario number of methods of the polygon java sample
ok 847 - Given I am in t/samples/animals/csharp
#
ok 848 - When I run "analizo metrics ."
#
ok 849 - Then analizo must report that module Dog has nom = 2
#
# Scenario not computes macro on C code as method definition
ok 850 - Given I am in t/samples/macro
#
ok 851 - When I run "analizo metrics ."
#
ok 852 - Then analizo must report that module using_macro has nom = 1
#
# Feature coupling between objects
# As a software developer I want analizo to report the value of CBO metric in my code So that I can evaluate it
# Scenario "Hello, world" project
ok 853 - Given I am in t/samples/hello_world/c
#
ok 854 - When I run "analizo metrics ."
#
ok 855 - Then analizo must report that module main has cbo = 1
#
# Scenario "Hello, world" project
ok 856 - Given I am in t/samples/hello_world/cpp
#
ok 857 - When I run "analizo metrics ."
#
ok 858 - Then analizo must report that module main has cbo = 1
#
# Scenario "Hello, world" project
ok 859 - Given I am in t/samples/hello_world/java
#
ok 860 - When I run "analizo metrics ."
#
ok 861 - Then analizo must report that module Main has cbo = 1
#
# Scenario "Hello, world" project
ok 862 - Given I am in t/samples/hello_world/csharp
#
ok 863 - When I run "analizo metrics ."
#
ok 864 - Then analizo must report that module main has cbo = 1
#
# Scenario "Animals" project
ok 865 - Given I am in t/samples/animals/cpp
#
ok 866 - When I run "analizo metrics ."
#
ok 867 - Then analizo must report that module main has cbo = 1
#
# Scenario "Animals" project
ok 868 - Given I am in t/samples/animals/cpp
#
ok 869 - When I run "analizo metrics ."
#
ok 870 - Then analizo must report that module mammal has cbo = 0
#
# Scenario "Animals" project
ok 871 - Given I am in t/samples/animals/java
#
ok 872 - When I run "analizo metrics ."
#
ok 873 - Then analizo must report that module Main has cbo = 1
#
# Scenario "Animals" project
ok 874 - Given I am in t/samples/animals/java
#
ok 875 - When I run "analizo metrics ."
#
ok 876 - Then analizo must report that module Mammal has cbo = 0
#
# Scenario "Animals" project
ok 877 - Given I am in t/samples/animals/csharp
#
ok 878 - When I run "analizo metrics ."
#
ok 879 - Then analizo must report that module main has cbo = 1
#
# Scenario "Animals" project
ok 880 - Given I am in t/samples/animals/csharp
#
ok 881 - When I run "analizo metrics ."
#
ok 882 - Then analizo must report that module Mammal has cbo = 0
#
# Feature total modules
# As a software developer I want analizo to report the total number of modules in my code So that I can evaluate it
# Scenario Java Enumeration sample
ok 883 - Given I am in t/samples/enumeration
#
ok 884 - When I run "analizo metrics ."
#
ok 885 - Then analizo must report that the project has total_modules = 3
#
# Feature output only global metrics
# As a researcher I want to ouput only the global metrics So that I can evaluate several projects at once
# Scenario simple case
ok 886 - Given I am in t/samples/sample_basic/c/
#
ok 887 - When I run "analizo metrics --global-only ."
#
ok 888 - Then the output must match "cbo_mean:"
#
ok 889 - And the output must not match "_module:"
#
# Scenario short version
ok 890 - Given I am in t/samples/sample_basic/c/
#
ok 891 - When I run "analizo metrics -g ."
#
ok 892 - Then the output must match "cbo_mean:"
#
ok 893 - And the output must not match "_module:"
#
# Feature number of abstract classes
# As a software developer I want analizo to report the number of modules with at least a defined method in my code So that I can evaluate it
# Scenario "Hello, world" project
ok 894 - Given I am in t/samples/hello_world/cpp
#
ok 895 - When I run "analizo metrics ."
#
ok 896 - Then analizo must report that the project has total_modules_with_defined_methods = 2
#
# Scenario "Hello, world" project
ok 897 - Given I am in t/samples/hello_world/java
#
ok 898 - When I run "analizo metrics ."
#
ok 899 - Then analizo must report that the project has total_modules_with_defined_methods = 2
#
# Scenario "Hello, world" project
ok 900 - Given I am in t/samples/hello_world/csharp
#
ok 901 - When I run "analizo metrics ."
#
ok 902 - Then analizo must report that the project has total_modules_with_defined_methods = 2
#
# Scenario "Animals" project
ok 903 - Given I am in t/samples/animals/cpp
#
ok 904 - When I run "analizo metrics ."
#
ok 905 - Then analizo must report that the project has total_modules_with_defined_methods = 5
#
# Scenario "Animals" project
ok 906 - Given I am in t/samples/animals/java
#
ok 907 - When I run "analizo metrics ."
#
ok 908 - Then analizo must report that the project has total_modules_with_defined_methods = 5
#
# Scenario "Animals" project
ok 909 - Given I am in t/samples/animals/csharp
#
ok 910 - When I run "analizo metrics ."
#
ok 911 - Then analizo must report that the project has total_modules_with_defined_methods = 5
#
# Feature number of public methods metric
# As a software developer I want to calculate the number of public methods per module metric So that I can evaluate my code
# Scenario number of attributes in the "Animals" project
ok 912 - Given I am in t/samples/polygons/cpp
#
ok 913 - When I run "analizo metrics ."
#
ok 914 - Then analizo must report that module CPolygon has npm = 2
#
# Scenario number of attributes in the "Animals" project
ok 915 - Given I am in t/samples/polygons/cpp
#
ok 916 - When I run "analizo metrics ."
#
ok 917 - Then analizo must report that module CTetragon has npm = 1
#
# Scenario number of attributes in the "Animals" project
ok 918 - Given I am in t/samples/polygons/java
#
ok 919 - When I run "analizo metrics ."
#
ok 920 - Then analizo must report that module Polygon has npm = 3
#
# Scenario number of attributes in the "Animals" project
ok 921 - Given I am in t/samples/polygons/csharp
#
ok 922 - When I run "analizo metrics ."
#
ok 923 - Then analizo must report that module Polygon has npm = 2
#
# Scenario number of attributes in the "Animals" project
ok 924 - Given I am in t/samples/animals/cpp
#
ok 925 - When I run "analizo metrics ."
#
ok 926 - Then analizo must report that module Animal has npm = 1
#
# Scenario number of attributes in the "Animals" project
ok 927 - Given I am in t/samples/animals/cpp
#
ok 928 - When I run "analizo metrics ."
#
ok 929 - Then analizo must report that module Cat has npm = 2
#
# Scenario number of attributes in the "Animals" project
ok 930 - Given I am in t/samples/animals/cpp
#
ok 931 - When I run "analizo metrics ."
#
ok 932 - Then analizo must report that module Dog has npm = 2
#
# Scenario number of attributes in the "Animals" project
ok 933 - Given I am in t/samples/animals/java
#
ok 934 - When I run "analizo metrics ."
#
ok 935 - Then analizo must report that module Animal has npm = 1
#
# Scenario number of attributes in the "Animals" project
ok 936 - Given I am in t/samples/animals/java
#
ok 937 - When I run "analizo metrics ."
#
ok 938 - Then analizo must report that module Cat has npm = 2
#
# Scenario number of attributes in the "Animals" project
ok 939 - Given I am in t/samples/animals/java
#
ok 940 - When I run "analizo metrics ."
#
ok 941 - Then analizo must report that module Dog has npm = 2
#
# Scenario number of attributes in the "Animals" project
ok 942 - Given I am in t/samples/animals/csharp
#
ok 943 - When I run "analizo metrics ."
#
ok 944 - Then analizo must report that module Animal has npm = 1
#
# Scenario number of attributes in the "Animals" project
ok 945 - Given I am in t/samples/animals/csharp
#
ok 946 - When I run "analizo metrics ."
#
ok 947 - Then analizo must report that module Cat has npm = 2
#
# Scenario number of attributes in the "Animals" project
ok 948 - Given I am in t/samples/animals/csharp
#
ok 949 - When I run "analizo metrics ."
#
ok 950 - Then analizo must report that module Dog has npm = 2
#
# Feature output file for graph tool
# Scenario passing output file in the command line
ok 951 - Given I am in .
#
ok 952 - When I run "analizo graph --output output.dot.tmp t/samples/sample_basic/c/"
#
ok 953 - Then the contents of "output.dot.tmp" must match "module1"
#
ok 954 - And the exit status must be 0
#
# Scenario passing output file in an unexisting directory
ok 955 - Given I am in .
#
ok 956 - When I run "analizo graph --output /this/directory/must/not/exists/output.dot t/samples/sample_basic/c/"
#
ok 957 - Then analizo must emit a warning matching "No such file or directory"
#
ok 958 - And the exit status must not be 0
#
# Scenario passing output file without permission to write
ok 959 - Given I am in .
#
ok 960 - When I run "touch output.tmp"
#
ok 961 - And I run "chmod 000 output.tmp"
#
ok 962 - And I run "analizo graph --output output.tmp t/samples/sample_basic/c/"
#
not ok 963 - Then the exit status must not be 0
#
not ok 964 # TODO & SKIP Step not implemented
#
# Feature input files for graph tool
# Scenario passing specific files in the command line
ok 965 - Given I am in t/samples/sample_basic/c
#
ok 966 - When I run "analizo graph module1.c module2.c"
#
ok 967 - Then the output must match "module1"
#
ok 968 - And the output must match "module2"
#
ok 969 - And the output must not match "module3"
#
# Scenario passing unexisting file
ok 970 - Given I am in t/samples/sample_basic/c
#
ok 971 - When I run "analizo graph unexisting-file.c"
#
ok 972 - Then analizo must emit a warning matching "is not readable"
#
# Feature displaying version
# Scenario running without any arguments
ok 973 - When I run "analizo graph"
#
ok 974 - Then analizo must emit a warning matching "Usage:"
#
ok 975 - And the exit status must not be 0
#
# Feature plain analizo graph run
# Scenario simply running analizo
ok 976 - Given I am in t/samples/sample_basic/c/
#
ok 977 - When I run "analizo graph ."
#
ok 978 - Then analizo must report that "module1::main()" depends on "module3::variable"
#
ok 979 - Then analizo must report that "module1::main()" depends on "module3::callback()"
#
ok 980 - Then analizo must report that "module1::main()" depends on "module2::say_bye()"
#
ok 981 - Then analizo must report that "module1::main()" depends on "module2::say_hello()"
#
ok 982 - And the exit status must be 0
#
# Feature omitting certain modules
# Scenario omitting say_bye
ok 983 - Given I am in t/samples/sample_basic/
#
ok 984 - When I run "analizo graph --omit 'module2::say_bye()' ."
#
ok 985 - Then the output must not match "module2::say_bye()"
#
# Scenario omitting two functions
ok 986 - Given I am in t/samples/sample_basic/
#
ok 987 - When I run "analizo graph --omit 'module2::say_bye()','module2::say_hello()' ."
#
ok 988 - Then the output must not match "module2::say_bye()"
#
ok 989 - Then the output must not match "module2::say_hello()"
#
# Scenario omitting depending functions
ok 990 - Given I am in t/samples/sample_basic/
#
ok 991 - When I run "analizo graph --omit 'module1::main()' ."
#
ok 992 - Then the output must not match "module1::main()"
#
# Feature clustering subroutines in the same module together
# Scenario clustering dependencies
ok 993 - Given I am in t/samples/sample_basic/c/
#
ok 994 - When I run "analizo graph --cluster ."
#
ok 995 - Then analizo must report that "module1::main()" is part of "module1"
#
ok 996 - Then analizo must report that "module2::say_hello()" is part of "module2"
#
ok 997 - Then analizo must report that "module2::say_bye()" is part of "module2"
#
ok 998 - Then analizo must report that "module3::variable" is part of "module3"
#
ok 999 - Then analizo must report that "module3::callback()" is part of "module3"
#
# Feature group by modules
# Scenario sample project
ok 1000 - Given I am in t/samples/sample_basic/c/
#
ok 1001 - When I run "analizo graph --modules ."
#
ok 1002 - Then analizo must report that "module1" depends on "module2"
#
ok 1003 - Then analizo must report that "module1" depends on "module3"
#
# Feature functions calls
# Scenario detect function calls among classes
ok 1004 - Given I am in t/samples/animals/cpp
#
ok 1005 - When I run "analizo graph ."
#
ok 1006 - Then analizo must report that "Cat::Cat(char *)" depends on "Cat::_name"
#
ok 1007 - And analizo must not report that "Cat::Cat(char *)" depends on "Cat::name()"
#
ok 1008 - And the exit status must be 0
#
1..1008
Dubious, test returned 3 (wstat 768, 0x300)
Failed 3/1008 subtests
Test Summary Report
-------------------
t/features.t (Wstat: 768 (exited 3) Tests: 1008 Failed: 3)
Failed tests: 140, 525, 963
Non-zero exit status: 3
Files=54, Tests=1627, 136 wallclock secs ( 0.51 usr 0.15 sys + 107.85 cusr 26.96 csys = 135.47 CPU)
Result: FAIL
Failed 1/54 test programs. 3/1627 subtests failed.
make[1]: *** [Makefile:1043: test_dynamic] Error 3
make[1]: Leaving directory '/<<PKGBUILDDIR>>'
dh_auto_test: error: make -j24 test TEST_VERBOSE=1 returned exit code 2
make: *** [debian/rules:7: binary] Error 25
dpkg-buildpackage: error: debian/rules binary subprocess returned exit status 2
--------------------------------------------------------------------------------
Build finished at 2024-09-26T18:31:05Z
Finished
--------
+------------------------------------------------------------------------------+
| Cleanup |
+------------------------------------------------------------------------------+
Purging /<<BUILDDIR>>
Reading package lists...
Building dependency tree...
Reading state information...
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
Reading package lists...
Building dependency tree...
Reading state information...
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
E: Build failure (dpkg-buildpackage died)
+------------------------------------------------------------------------------+
| Summary |
+------------------------------------------------------------------------------+
Build Architecture: amd64
Build Type: binary
Build-Space: 2312
Build-Time: 139
Distribution: unstable
Fail-Stage: build
Host Architecture: amd64
Install-Time: 3
Job: analizo
Machine Architecture: amd64
Package: analizo
Package-Time: 150
Source-Version: 1.25.4-3
Space: 2312
Status: attempted
Version: 1.25.4-3
--------------------------------------------------------------------------------
Finished at 2024-09-26T18:31:05Z
Build needed 00:02:30, 2312k disk space
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: not available
URL: <http://alioth-lists.debian.net/pipermail/pkg-perl-maintainers/attachments/20240926/733bd685/attachment-0001.sig>
More information about the pkg-perl-maintainers
mailing list