1@issue
2@junit
3@wip
4Feature: Issue #510 -- JUnit XML output is not well-formed (in some cases)
5
6  . Special control characters in JUnit stdout/stderr sections
7  . are directly written to CDATA XML sections.
8  .
9  . According to the XML charset specification only the following unicode
10  . codepoints (characters) are allowed in a CDATA section:
11  .
12  .   Char ::=  #x9 | #xA | #xD | [#x20-#xD7FF] | [#xE000-#xFFFD] | [#x10000-#x10FFFF]
13  .   /* any Unicode character, excluding the surrogate blocks, FFFE, and FFFF. */
14  .
15  . [XML-charsets] "The normative reference is XML 1.0 (Fifth Edition),
16  .     section 2.2, https://www.w3.org/TR/REC-xml/#charsets
17
18
19  @use.with_xmllint=yes
20  @xfail
21  Scenario:
22    Given a new working directory
23    And a file named "features/steps/special_char_steps.py" with:
24      """
25      # -*- coding: UTF-8 -*-
26      from __future__ import print_function
27      from behave import step
28
29      @step(u'we print ^D')
30      def step_print_special_char_control_d(context):
31          print(u"\004")
32      """
33    And a file named "features/special_char.feature" with:
34      """
35      Feature: An illegal char
36        Scenario: Control-D
37          When we print ^D
38      """
39    When I run "behave --junit features/special_char.feature"
40    Then it should pass with:
41      """
42      1 scenario passed, 0 failed, 0 skipped
43      """
44    When I run "xmllint reports/TESTS-special_char.xml"
45    Then it should pass
46    And the command output should not contain "parser error"
47    And the command output should not contain:
48      """
49      reports/TESTS-special_char.xml:12: parser error : PCDATA invalid Char value 4
50      """
51    And note that "xmllint reports additional correlated errors"
52