Koha-clms/t
Jonathan Druart cc8f3dc1cc Bug 20540: Fix TransformHtmlToXml if last tag is empty
This bug has been found during testing bug 19289.

In some conditions C4::Biblio::TransformHtmlToXml will generate a malformed XML structure. The last </datafield> can be duplicated.

For instance, if a call like:
my $xml = TransformHtmlToXml( \@tags, \@subfields, \@field_values );

with the last value of @field_values is empty, it will return:

<?xml version="1.0" encoding="UTF-8"?>
<collection
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://www.loc.gov/MARC21/slim http://www.loc.gov/standards/marcxml/schema/MARC21slim.xsd"
  xmlns="http://www.loc.gov/MARC21/slim">
<record>
<datafield2 tag="020" ind1=" " ind2=" ">
<subfield code="a">l</subfield>
</datafield>
<datafield1 tag="100" ind1=" " ind2=" ">
<subfield code="a">k</subfield>
</datafield>
<datafield1 tag="245" ind1=" " ind2=" ">
<subfield code="a">k</subfield>
</datafield>
<datafield1 tag="250" ind1=" " ind2=" ">
<subfield code="a">k</subfield>
</datafield>
<datafield1 tag="260" ind1=" " ind2=" ">
<subfield code="b">k</subfield>
<subfield code="c">k</subfield>
</datafield>
</datafield>
</record>
</collection>

Which will result later in the following error:
:23: parser error : Opening and ending tag mismatch: record line 6 and datafield
</datafield>
            ^
:24: parser error : Opening and ending tag mismatch: collection line 2 and record
</record>
         ^
:25: parser error : Extra content at the end of the document
</collection>

Test plan:
You can test it along with bug 19289 and confirm that it fixes the problem
raised on bug 19289 comment 30

Signed-off-by: Katrin Fischer <katrin.fischer.83@web.de>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>

Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org>
2018-04-11 16:45:19 -03:00
..
Acquisition Bug 18756 - add Unit Test 2017-07-06 14:29:02 -03:00
Biblio Bug 20540: Fix TransformHtmlToXml if last tag is empty 2018-04-11 16:45:19 -03:00
Budgets Bug 18942: (QA followup) Add new tests descriptions 2017-07-17 15:52:01 -03:00
Circulation Bug 17557: Koha::Patrons - Move GetAge to ->set_age (and remove SetAge) 2016-12-16 11:57:38 +00:00
External
…
Koha Bug 20181: Unit tests 2018-04-06 14:51:37 -03:00
Members Bug 18851: Tests must be skipped in cardnumber.t if Test::DBIx::Class is not installed 2017-08-08 09:21:06 -03:00
Number Bug 4078: Fix test when fr_FR.UTF-8 is installed 2018-03-23 13:24:15 -03:00
SIP Bug 18292: Remove return 1 statements in tests 2017-08-15 12:17:42 -03:00
Search Bug 16660: (followup) Unit tests 2017-10-27 14:09:02 -03:00
Serials
…
Test Bug 19176: Fix how t::lib::Dates::compare handle timezone 2017-10-30 14:55:18 -03:00
db_dependent Bug 18625: (QA follow-up) Unit tests 2018-04-11 16:45:10 -03:00
edi_testfiles
…
etc Bug 18286: [Follow-up] Add t/etc/schema.pl 2017-06-05 17:52:35 -03:00
lib Bug 20045: Fix Selenium tests 2018-03-27 12:03:51 -03:00
00-checkdatabase-version.t
…
00-deprecated.t
…
00-load.t Bug 20042: 00-load.t fails when Elasticsearch is not installed 2018-01-19 15:13:40 -03:00
00-merge-conflict-markers.t Bug 19335: Fix 00-merge-conflict-markers.t when dockerised 2017-09-19 09:00:49 -03:00
00-testcritic.t
…
00-valid-xml.t
…
AuthUtils.t Bug 18298: Add server-side checks and refactor stuffs 2017-10-16 09:44:32 -03:00
Auth_with_shibboleth.t Bug 18292: Remove return 1 statements in tests 2017-08-15 12:17:42 -03:00
AuthoritiesMarc_MARC21.t
…
AuthoritiesMarc_UNIMARC.t
…
Barcodes_EAN13.t
…
Barcodes_annual.t
…
Barcodes_hbyymmincr.t
…
Barcodes_incremental.t
…
Biblio.t Bug 18712: (QA follow-up) Add count of tests 2017-11-26 13:00:03 -03:00
Biblio2.t Bug 16556 - KohaToMarcMapped columns sharing same field with biblio(item)number are removed. 2016-09-15 13:42:35 +00:00
Bookseller.t
…
Boolean.t Bug 18292: Remove return 1 statements in tests 2017-08-15 12:17:42 -03:00
Budgets.t
…
Cache.t Bug 16769: Uniformise calls to Koha::Cache->set_in_cache 2016-10-10 17:03:54 +00:00
Calendar.t Bug 18712: Remove unecessary fixtures 2017-11-26 13:00:03 -03:00
Charset.t Bug 18292: Remove return 1 statements in tests 2017-08-15 12:17:42 -03:00
Circulation_barcodedecode.t Bug 18292: Remove return 1 statements in tests 2017-08-15 12:17:42 -03:00
ClassSortRoutine.t
…
ClassSortRoutine_Dewey.t
…
ClassSortRoutine_Generic.t
…
ClassSortRoutine_LCC.t
…
ClassSource.t
…
Context.t
…
Contract.t
…
Creators.t Bug 16622: some tests triggered by prove t fail for unset KOHA_CONF 2016-08-05 06:09:58 +00:00
DateUtils.t Bug 18330: Add RFC3339 to Koha::DateUtils 2017-12-14 16:58:22 -03:00
Debug.t
…
EdiInvoice.t
…
Edifact.t
…
Ediorder.t
…
Ediordrsp.t
…
Form_MessagingPreferences.t
…
Heading.t
…
HtmlTags.t Bug 18665: Add test for HtmlTags.pm 2017-06-21 11:22:19 -03:00
Images.t Bug 18292: Remove return 1 statements in tests 2017-08-15 12:17:42 -03:00
ImportBatch.t Bug 10407: Add two subtests to t/ImportBatch.t 2016-09-02 16:00:13 +00:00
Installer_PerlDependencies.t
…
Installer_PerlModules.t Bug 17990: Refactor Perl module versions check 2017-02-17 12:13:44 +00:00
Installer_pm.t Bug 17990: Refactor Perl module versions check 2017-02-17 12:13:44 +00:00
ItemCirculationAlertPreference.t
…
Koha.t Bug 18292: Remove return 1 statements in tests 2017-08-15 12:17:42 -03:00
Koha_Email.t
…
Koha_ExternalContent_OverDrive.t Bug 18851: (QA followup) Test doesn't need sessions on DB 2017-08-08 09:21:06 -03:00
Koha_MetadataRecord.t Bug 18292: Remove return 1 statements in tests 2017-08-15 12:17:42 -03:00
Koha_Template_Plugin_Cache.t
…
Koha_Template_Plugin_Koha.t Bug 18292: Remove return 1 statements in tests 2017-08-15 12:17:42 -03:00
Koha_Template_Plugin_KohaPlugins.t Bug 20181: (follow-up) Ensure test runs 2018-04-06 14:51:38 -03:00
Koha_Util_FrameworkPlugin.t
…
Koha_Util_MARC.t
…
Labels.t
…
Labels_split_ccn.t
…
Labels_split_ddcn.t
…
Labels_split_lccn.t
…
Languages.t
…
Letters.t Bug 18292: Remove return 1 statements in tests 2017-08-15 12:17:42 -03:00
Log.t
…
Logger.t Bug 18292: Remove return 1 statements in tests 2017-08-15 12:17:42 -03:00
Makefile.t Bug 20267: .gitignore do not need to be mapped in Makefile 2018-03-26 19:35:07 -03:00
Matcher.t Bug 18712: Fix t/Matcher.t if DB is empty 2017-11-26 13:00:03 -03:00
Members_AttributeTypes.t Bug 18226 - Remove "use Test::DBIx::Class" instantiations' dangerous code duplication 2017-06-05 17:52:48 -03:00
Members_Attributes.t
…
Members_Messaging.t
…
NorwegianPatronDB.t Bug 18226 - Remove "use Test::DBIx::Class" instantiations' dangerous code duplication 2017-06-05 17:52:48 -03:00
OpenLibrarySearch.t
…
Output.t Bug 20422: Add unit test to Output.t for parametrized_url 2018-03-26 17:31:13 -03:00
Output_JSONStream.t
…
Patron.t Bug 18292: Remove return 1 statements in tests 2017-08-15 12:17:42 -03:00
Patroncards.t
…
Patroncards_Batch.t
…
Patroncards_Layout.t
…
Patroncards_Lib.t
…
Patroncards_Patroncard.t
…
Patroncards_Profile.t
…
Patroncards_Template.t
…
Prices.t Bug 20466: Fix fixture syntax in t/Prices.t 2018-03-23 13:24:14 -03:00
Print.t
…
QueryParser.t
…
RecordProcessor.t
…
Ris.t
…
SMS.t Bug 18292: Remove return 1 statements in tests 2017-08-15 12:17:42 -03:00
Scheduler.t
…
Scrubber.t
…
Search.t Bug 18292: Remove return 1 statements in tests 2017-08-15 12:17:42 -03:00
Search_PazPar2.t
…
SimpleMARC.t
…
SocialData.t Bug 18292: Remove return 1 statements in tests 2017-08-15 12:17:42 -03:00
Stats.t
…
SuggestionEngine.t
…
SuggestionEngine_AuthorityFile.t Bug 9857: Fix failing tests 2017-09-01 16:22:02 -03:00
TmplToken.t
…
Token.t Bug 18124: [Follow-up] Handle default parameters in a sub 2017-03-30 09:07:08 +00:00
XSLT.t Bug 18292: Remove return 1 statements in tests 2017-08-15 12:17:42 -03:00
dummy.t
…
perlcriticrc
…
timezones.t Bug 18674: TZ error handling 2018-04-11 16:45:08 -03:00