metanorma-standoc 1.9.2 → 1.10.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.github/workflows/rake.yml +3 -13
- data/.hound.yml +3 -1
- data/.rubocop.yml +4 -6
- data/lib/asciidoctor/standoc/base.rb +3 -1
- data/lib/asciidoctor/standoc/biblio.rng +1 -0
- data/lib/asciidoctor/standoc/blocks.rb +1 -1
- data/lib/asciidoctor/standoc/cleanup.rb +34 -15
- data/lib/asciidoctor/standoc/cleanup_block.rb +0 -1
- data/lib/asciidoctor/standoc/cleanup_boilerplate.rb +2 -2
- data/lib/asciidoctor/standoc/cleanup_footnotes.rb +0 -1
- data/lib/asciidoctor/standoc/cleanup_inline.rb +117 -77
- data/lib/asciidoctor/standoc/cleanup_maths.rb +0 -1
- data/lib/asciidoctor/standoc/cleanup_ref.rb +7 -0
- data/lib/asciidoctor/standoc/cleanup_section.rb +73 -137
- data/lib/asciidoctor/standoc/cleanup_section_names.rb +75 -0
- data/lib/asciidoctor/standoc/cleanup_terms.rb +19 -18
- data/lib/asciidoctor/standoc/converter.rb +1 -0
- data/lib/asciidoctor/standoc/front.rb +1 -2
- data/lib/asciidoctor/standoc/front_contributor.rb +66 -42
- data/lib/asciidoctor/standoc/inline.rb +45 -34
- data/lib/asciidoctor/standoc/isodoc.rng +66 -10
- data/lib/asciidoctor/standoc/macros.rb +7 -5
- data/lib/asciidoctor/standoc/macros_plantuml.rb +21 -23
- data/lib/asciidoctor/standoc/macros_terms.rb +60 -23
- data/lib/asciidoctor/standoc/section.rb +19 -12
- data/lib/asciidoctor/standoc/term_lookup_cleanup.rb +87 -33
- data/lib/asciidoctor/standoc/terms.rb +1 -1
- data/lib/asciidoctor/standoc/utils.rb +0 -1
- data/lib/asciidoctor/standoc/validate.rb +22 -8
- data/lib/isodoc/html/html_titlepage.html +81 -0
- data/lib/isodoc/html/htmlstyle.css +983 -0
- data/lib/isodoc/html/htmlstyle.scss +714 -0
- data/lib/isodoc/html/scripts.html +71 -0
- data/lib/metanorma/standoc/processor.rb +16 -7
- data/lib/metanorma/standoc/version.rb +1 -1
- data/metanorma-standoc.gemspec +3 -3
- data/spec/asciidoctor/base_spec.rb +697 -557
- data/spec/asciidoctor/blocks_spec.rb +6 -8
- data/spec/asciidoctor/cleanup_sections_spec.rb +14 -14
- data/spec/asciidoctor/cleanup_spec.rb +899 -688
- data/spec/asciidoctor/inline_spec.rb +62 -14
- data/spec/asciidoctor/isobib_cache_spec.rb +4 -6
- data/spec/asciidoctor/lists_spec.rb +149 -137
- data/spec/asciidoctor/macros_json2text_spec.rb +1 -1
- data/spec/asciidoctor/macros_plantuml_spec.rb +8 -8
- data/spec/asciidoctor/macros_spec.rb +646 -169
- data/spec/asciidoctor/refs_dl_spec.rb +4 -4
- data/spec/asciidoctor/refs_spec.rb +1527 -1532
- data/spec/asciidoctor/section_spec.rb +58 -22
- data/spec/asciidoctor/table_spec.rb +6 -6
- data/spec/asciidoctor/validate_spec.rb +352 -304
- data/spec/spec_helper.rb +2 -0
- data/spec/vcr_cassettes/dated_iso_ref_joint_iso_iec.yml +49 -49
- data/spec/vcr_cassettes/isobib_get_123.yml +12 -12
- data/spec/vcr_cassettes/isobib_get_123_1.yml +27 -27
- data/spec/vcr_cassettes/isobib_get_123_1_fr.yml +35 -35
- data/spec/vcr_cassettes/isobib_get_123_2001.yml +14 -14
- data/spec/vcr_cassettes/isobib_get_124.yml +14 -14
- data/spec/vcr_cassettes/rfcbib_get_rfc8341.yml +14 -14
- data/spec/vcr_cassettes/separates_iev_citations_by_top_level_clause.yml +44 -44
- metadata +12 -11
- data/lib/liquid/custom_blocks/key_iterator.rb +0 -21
- data/lib/liquid/custom_blocks/with_json_nested_context.rb +0 -18
- data/lib/liquid/custom_blocks/with_yaml_nested_context.rb +0 -19
- data/lib/liquid/custom_filters/values.rb +0 -7
@@ -198,7 +198,7 @@ RSpec.describe Asciidoctor::Standoc do
|
|
198
198
|
</indexsect>
|
199
199
|
</standard-document>
|
200
200
|
OUTPUT
|
201
|
-
expect(xmlpp(strip_guid(Asciidoctor.convert(input,
|
201
|
+
expect(xmlpp(strip_guid(Asciidoctor.convert(input, *OPTIONS))))
|
202
202
|
.to be_equivalent_to xmlpp(output)
|
203
203
|
end
|
204
204
|
|
@@ -339,7 +339,7 @@ RSpec.describe Asciidoctor::Standoc do
|
|
339
339
|
</bibliography>
|
340
340
|
</standard-document>
|
341
341
|
OUTPUT
|
342
|
-
expect(xmlpp(strip_guid(Asciidoctor.convert(input,
|
342
|
+
expect(xmlpp(strip_guid(Asciidoctor.convert(input, *OPTIONS))))
|
343
343
|
.to be_equivalent_to xmlpp(output)
|
344
344
|
end
|
345
345
|
|
@@ -544,7 +544,7 @@ RSpec.describe Asciidoctor::Standoc do
|
|
544
544
|
</clause></bibliography>
|
545
545
|
</standard-document>
|
546
546
|
OUTPUT
|
547
|
-
expect(xmlpp(strip_guid(Asciidoctor.convert(input,
|
547
|
+
expect(xmlpp(strip_guid(Asciidoctor.convert(input, *OPTIONS))))
|
548
548
|
.to be_equivalent_to xmlpp(output)
|
549
549
|
end
|
550
550
|
|
@@ -682,7 +682,7 @@ RSpec.describe Asciidoctor::Standoc do
|
|
682
682
|
</bibliography>
|
683
683
|
</standard-document>
|
684
684
|
OUTPUT
|
685
|
-
expect(xmlpp(strip_guid(Asciidoctor.convert(input,
|
685
|
+
expect(xmlpp(strip_guid(Asciidoctor.convert(input, *OPTIONS))))
|
686
686
|
.to be_equivalent_to xmlpp(output)
|
687
687
|
end
|
688
688
|
|
@@ -698,8 +698,8 @@ RSpec.describe Asciidoctor::Standoc do
|
|
698
698
|
|
699
699
|
INPUT
|
700
700
|
output = <<~OUTPUT
|
701
|
-
|
702
|
-
|
701
|
+
#{BLANK_HDR}
|
702
|
+
<sections>
|
703
703
|
<terms id='_' obligation='normative'>
|
704
704
|
<title>Terms, definitions and symbols</title>
|
705
705
|
<p id='_'>For the purposes of this document, the following terms and definitions apply.</p>
|
@@ -713,7 +713,7 @@ RSpec.describe Asciidoctor::Standoc do
|
|
713
713
|
</sections>
|
714
714
|
</standard-document>
|
715
715
|
OUTPUT
|
716
|
-
expect(xmlpp(strip_guid(Asciidoctor.convert(input,
|
716
|
+
expect(xmlpp(strip_guid(Asciidoctor.convert(input, *OPTIONS))))
|
717
717
|
.to be_equivalent_to xmlpp(output)
|
718
718
|
end
|
719
719
|
|
@@ -745,7 +745,43 @@ RSpec.describe Asciidoctor::Standoc do
|
|
745
745
|
</sections>
|
746
746
|
</standard-document>
|
747
747
|
OUTPUT
|
748
|
-
expect(xmlpp(strip_guid(Asciidoctor.convert(input,
|
748
|
+
expect(xmlpp(strip_guid(Asciidoctor.convert(input, *OPTIONS))))
|
749
|
+
.to be_equivalent_to xmlpp(output)
|
750
|
+
end
|
751
|
+
|
752
|
+
it "varies terms symbols & abbreviated terms title" do
|
753
|
+
input = <<~INPUT
|
754
|
+
#{ASCIIDOC_BLANK_HDR}
|
755
|
+
[heading="terms, definitions, symbols and abbreviated terms"]
|
756
|
+
== Terms, Definitions, Abbreviated Terms Section
|
757
|
+
|
758
|
+
=== Term
|
759
|
+
|
760
|
+
=== Abbreviated Terms
|
761
|
+
|
762
|
+
=== Symbols
|
763
|
+
|
764
|
+
INPUT
|
765
|
+
output = <<~OUTPUT
|
766
|
+
#{BLANK_HDR}
|
767
|
+
<sections>
|
768
|
+
<terms id='_' obligation='normative'>
|
769
|
+
<title>Terms, definitions, symbols and abbreviated terms</title>
|
770
|
+
<p id='_'>For the purposes of this document, the following terms and definitions apply.</p>
|
771
|
+
<term id='term-term'>
|
772
|
+
<preferred>Term</preferred>
|
773
|
+
</term>
|
774
|
+
<definitions id='_' type='abbreviated_terms' obligation='normative'>
|
775
|
+
<title>Abbreviated terms</title>
|
776
|
+
</definitions>
|
777
|
+
<definitions id='_' type='symbols' obligation='normative'>
|
778
|
+
<title>Symbols</title>
|
779
|
+
</definitions>
|
780
|
+
</terms>
|
781
|
+
</sections>
|
782
|
+
</standard-document>
|
783
|
+
OUTPUT
|
784
|
+
expect(xmlpp(strip_guid(Asciidoctor.convert(input, *OPTIONS))))
|
749
785
|
.to be_equivalent_to xmlpp(output)
|
750
786
|
end
|
751
787
|
|
@@ -779,7 +815,7 @@ RSpec.describe Asciidoctor::Standoc do
|
|
779
815
|
</annex>
|
780
816
|
</standard-document>
|
781
817
|
OUTPUT
|
782
|
-
expect(xmlpp(strip_guid(Asciidoctor.convert(input,
|
818
|
+
expect(xmlpp(strip_guid(Asciidoctor.convert(input, *OPTIONS))))
|
783
819
|
.to be_equivalent_to xmlpp(output)
|
784
820
|
end
|
785
821
|
|
@@ -813,7 +849,7 @@ RSpec.describe Asciidoctor::Standoc do
|
|
813
849
|
</annex>
|
814
850
|
</standard-document>
|
815
851
|
OUTPUT
|
816
|
-
expect(xmlpp(strip_guid(Asciidoctor.convert(input,
|
852
|
+
expect(xmlpp(strip_guid(Asciidoctor.convert(input, *OPTIONS))))
|
817
853
|
.to be_equivalent_to xmlpp(output)
|
818
854
|
end
|
819
855
|
|
@@ -836,7 +872,7 @@ RSpec.describe Asciidoctor::Standoc do
|
|
836
872
|
</sections>
|
837
873
|
</standard-document>
|
838
874
|
OUTPUT
|
839
|
-
expect(xmlpp(strip_guid(Asciidoctor.convert(input,
|
875
|
+
expect(xmlpp(strip_guid(Asciidoctor.convert(input, *OPTIONS))))
|
840
876
|
.to be_equivalent_to xmlpp(output)
|
841
877
|
end
|
842
878
|
|
@@ -867,7 +903,7 @@ RSpec.describe Asciidoctor::Standoc do
|
|
867
903
|
</sections>
|
868
904
|
</standard-document>
|
869
905
|
OUTPUT
|
870
|
-
expect(xmlpp(strip_guid(Asciidoctor.convert(input,
|
906
|
+
expect(xmlpp(strip_guid(Asciidoctor.convert(input, *OPTIONS))))
|
871
907
|
.to be_equivalent_to xmlpp(output)
|
872
908
|
end
|
873
909
|
|
@@ -899,7 +935,7 @@ RSpec.describe Asciidoctor::Standoc do
|
|
899
935
|
</terms></sections>
|
900
936
|
</standard-document>
|
901
937
|
OUTPUT
|
902
|
-
expect(xmlpp(strip_guid(Asciidoctor.convert(input,
|
938
|
+
expect(xmlpp(strip_guid(Asciidoctor.convert(input, *OPTIONS))))
|
903
939
|
.to be_equivalent_to xmlpp(output)
|
904
940
|
end
|
905
941
|
|
@@ -925,7 +961,7 @@ RSpec.describe Asciidoctor::Standoc do
|
|
925
961
|
</standard-document>
|
926
962
|
|
927
963
|
OUTPUT
|
928
|
-
expect(xmlpp(strip_guid(Asciidoctor.convert(input,
|
964
|
+
expect(xmlpp(strip_guid(Asciidoctor.convert(input, *OPTIONS))))
|
929
965
|
.to be_equivalent_to xmlpp(output)
|
930
966
|
end
|
931
967
|
|
@@ -953,7 +989,7 @@ RSpec.describe Asciidoctor::Standoc do
|
|
953
989
|
</terms></sections>
|
954
990
|
</standard-document>
|
955
991
|
OUTPUT
|
956
|
-
expect(xmlpp(strip_guid(Asciidoctor.convert(input,
|
992
|
+
expect(xmlpp(strip_guid(Asciidoctor.convert(input, *OPTIONS))))
|
957
993
|
.to be_equivalent_to xmlpp(output)
|
958
994
|
end
|
959
995
|
|
@@ -986,7 +1022,7 @@ RSpec.describe Asciidoctor::Standoc do
|
|
986
1022
|
</terms></sections>
|
987
1023
|
</standard-document>
|
988
1024
|
OUTPUT
|
989
|
-
expect(xmlpp(strip_guid(Asciidoctor.convert(input,
|
1025
|
+
expect(xmlpp(strip_guid(Asciidoctor.convert(input, *OPTIONS))))
|
990
1026
|
.to be_equivalent_to xmlpp(output)
|
991
1027
|
end
|
992
1028
|
|
@@ -1018,7 +1054,7 @@ RSpec.describe Asciidoctor::Standoc do
|
|
1018
1054
|
</terms></sections>
|
1019
1055
|
</standard-document>
|
1020
1056
|
OUTPUT
|
1021
|
-
expect(xmlpp(strip_guid(Asciidoctor.convert(input,
|
1057
|
+
expect(xmlpp(strip_guid(Asciidoctor.convert(input, *OPTIONS))))
|
1022
1058
|
.to be_equivalent_to xmlpp(output)
|
1023
1059
|
end
|
1024
1060
|
|
@@ -1030,7 +1066,7 @@ RSpec.describe Asciidoctor::Standoc do
|
|
1030
1066
|
== Terms and Definitions
|
1031
1067
|
=== Term2
|
1032
1068
|
INPUT
|
1033
|
-
expect { Asciidoctor.convert(input,
|
1069
|
+
expect { Asciidoctor.convert(input, *OPTIONS) }
|
1034
1070
|
.to output(/not referenced/).to_stderr
|
1035
1071
|
end
|
1036
1072
|
|
@@ -1062,7 +1098,7 @@ RSpec.describe Asciidoctor::Standoc do
|
|
1062
1098
|
</sections>
|
1063
1099
|
</standard-document>
|
1064
1100
|
OUTPUT
|
1065
|
-
expect(xmlpp(strip_guid(Asciidoctor.convert(input,
|
1101
|
+
expect(xmlpp(strip_guid(Asciidoctor.convert(input, *OPTIONS))))
|
1066
1102
|
.to be_equivalent_to xmlpp(output)
|
1067
1103
|
end
|
1068
1104
|
|
@@ -1124,7 +1160,7 @@ RSpec.describe Asciidoctor::Standoc do
|
|
1124
1160
|
</sections>
|
1125
1161
|
</standard-document>
|
1126
1162
|
OUTPUT
|
1127
|
-
expect(xmlpp(strip_guid(Asciidoctor.convert(input,
|
1163
|
+
expect(xmlpp(strip_guid(Asciidoctor.convert(input, *OPTIONS))))
|
1128
1164
|
.to be_equivalent_to xmlpp(output)
|
1129
1165
|
end
|
1130
1166
|
|
@@ -1171,7 +1207,7 @@ RSpec.describe Asciidoctor::Standoc do
|
|
1171
1207
|
</annex>
|
1172
1208
|
</standard-document>
|
1173
1209
|
OUTPUT
|
1174
|
-
expect(xmlpp(strip_guid(Asciidoctor.convert(input,
|
1210
|
+
expect(xmlpp(strip_guid(Asciidoctor.convert(input, *OPTIONS))))
|
1175
1211
|
.to be_equivalent_to xmlpp(output)
|
1176
1212
|
end
|
1177
1213
|
|
@@ -1190,7 +1226,7 @@ RSpec.describe Asciidoctor::Standoc do
|
|
1190
1226
|
</sections>
|
1191
1227
|
</standard-document>
|
1192
1228
|
OUTPUT
|
1193
|
-
expect(xmlpp(strip_guid(Asciidoctor.convert(input,
|
1229
|
+
expect(xmlpp(strip_guid(Asciidoctor.convert(input, *OPTIONS))))
|
1194
1230
|
.to be_equivalent_to xmlpp(output)
|
1195
1231
|
end
|
1196
1232
|
|
@@ -2,7 +2,7 @@ require "spec_helper"
|
|
2
2
|
|
3
3
|
RSpec.describe Asciidoctor::Standoc do
|
4
4
|
it "processes basic tables" do
|
5
|
-
expect(xmlpp(strip_guid(Asciidoctor.convert(<<~"INPUT",
|
5
|
+
expect(xmlpp(strip_guid(Asciidoctor.convert(<<~"INPUT", *OPTIONS)))).to be_equivalent_to xmlpp(<<~"OUTPUT")
|
6
6
|
#{ASCIIDOC_BLANK_HDR}
|
7
7
|
.Table Name
|
8
8
|
|===
|
@@ -36,7 +36,7 @@ RSpec.describe Asciidoctor::Standoc do
|
|
36
36
|
end
|
37
37
|
|
38
38
|
it "processes table widths" do
|
39
|
-
expect(xmlpp(strip_guid(Asciidoctor.convert(<<~"INPUT",
|
39
|
+
expect(xmlpp(strip_guid(Asciidoctor.convert(<<~"INPUT", *OPTIONS)))).to be_equivalent_to xmlpp(<<~"OUTPUT")
|
40
40
|
#{ASCIIDOC_BLANK_HDR}
|
41
41
|
[width=75%]
|
42
42
|
|===
|
@@ -96,7 +96,7 @@ RSpec.describe Asciidoctor::Standoc do
|
|
96
96
|
end
|
97
97
|
|
98
98
|
it "processes column widths in tables" do
|
99
|
-
expect(xmlpp(strip_guid(Asciidoctor.convert(<<~"INPUT",
|
99
|
+
expect(xmlpp(strip_guid(Asciidoctor.convert(<<~"INPUT", *OPTIONS)))).to be_equivalent_to xmlpp(<<~"OUTPUT")
|
100
100
|
#{ASCIIDOC_BLANK_HDR}
|
101
101
|
[cols=".<,.^,^.>"]
|
102
102
|
|===
|
@@ -182,7 +182,7 @@ RSpec.describe Asciidoctor::Standoc do
|
|
182
182
|
|
183
183
|
|
184
184
|
it "inserts header rows in a table with a name and no header" do
|
185
|
-
expect(xmlpp(strip_guid(Asciidoctor.convert(<<~"INPUT",
|
185
|
+
expect(xmlpp(strip_guid(Asciidoctor.convert(<<~"INPUT", *OPTIONS)))).to be_equivalent_to xmlpp(<<~"OUTPUT")
|
186
186
|
#{ASCIIDOC_BLANK_HDR}
|
187
187
|
[headerrows=2]
|
188
188
|
.Table Name
|
@@ -222,7 +222,7 @@ RSpec.describe Asciidoctor::Standoc do
|
|
222
222
|
|
223
223
|
|
224
224
|
it "inserts header rows in a table without a name and no header" do
|
225
|
-
expect(xmlpp(strip_guid(Asciidoctor.convert(<<~"INPUT",
|
225
|
+
expect(xmlpp(strip_guid(Asciidoctor.convert(<<~"INPUT", *OPTIONS)))).to be_equivalent_to xmlpp(<<~"OUTPUT")
|
226
226
|
#{ASCIIDOC_BLANK_HDR}
|
227
227
|
[headerrows=2]
|
228
228
|
|===
|
@@ -258,7 +258,7 @@ RSpec.describe Asciidoctor::Standoc do
|
|
258
258
|
end
|
259
259
|
|
260
260
|
it "processes complex tables" do
|
261
|
-
expect(xmlpp(strip_guid(Asciidoctor.convert(<<~"INPUT",
|
261
|
+
expect(xmlpp(strip_guid(Asciidoctor.convert(<<~"INPUT", *OPTIONS)))).to be_equivalent_to xmlpp(<<~"OUTPUT")
|
262
262
|
#{ASCIIDOC_BLANK_HDR}
|
263
263
|
[cols="<.^,^.<,^.>,^,^",options="header,footer",headerrows=2,alt="An extensive summary, and illustration, of tables",subsequence="A",options="unnumbered",summary="This is an extremely long, convoluted summary",width=70%,number="3",keep-with-next=true,keep-lines-together=true]
|
264
264
|
.Maximum _permissible_ mass fraction of defects
|
@@ -4,38 +4,45 @@ require "fileutils"
|
|
4
4
|
|
5
5
|
RSpec.describe Asciidoctor::Standoc do
|
6
6
|
it "generates error file" do
|
7
|
-
|
8
|
-
|
9
|
-
|
7
|
+
FileUtils.rm_f "spec/assets/xref_error.err"
|
8
|
+
Asciidoctor.convert_file "spec/assets/xref_error.adoc",
|
9
|
+
{ attributes: { "backend" => "standoc" }, safe: 0,
|
10
|
+
header_footer: true,
|
11
|
+
requires: ["metanorma-standoc"],
|
12
|
+
failure_level: 4, mkdirs: true, to_file: nil }
|
13
|
+
expect(File.exist?("spec/assets/xref_error.err")).to be true
|
10
14
|
end
|
11
15
|
|
12
16
|
it "provides context for log" do
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
17
|
+
FileUtils.rm_f "test.xml"
|
18
|
+
FileUtils.rm_f "test.err"
|
19
|
+
begin
|
20
|
+
input = <<~INPUT
|
21
|
+
= Document title
|
22
|
+
Author
|
23
|
+
:docfile: test.adoc
|
24
|
+
:nodoc:
|
25
|
+
|
26
|
+
[[abc]]
|
27
|
+
== Clause 1
|
28
|
+
|
29
|
+
[[abc]]
|
30
|
+
== Clause 2
|
31
|
+
INPUT
|
32
|
+
expect { Asciidoctor.convert(input, *OPTIONS) }.to raise_error(SystemExit)
|
33
|
+
rescue SystemExit
|
34
|
+
end
|
35
|
+
expect(File.read("test.err"))
|
36
|
+
.to include "Anchor abc has already been used at line"
|
37
|
+
expect(File.read("test.err"))
|
38
|
+
.to include %(\t<clause id="abc" inline-header="false" obligation="normative">)
|
29
39
|
end
|
30
|
-
expect(File.read("test.err")).to include "Anchor abc has already been used at line"
|
31
|
-
expect(File.read("test.err")).to include %(\t<clause id="abc" inline-header="false" obligation="normative">)
|
32
|
-
end
|
33
40
|
|
34
41
|
it "warns about missing fields in asciibib" do
|
35
|
-
|
36
|
-
|
42
|
+
FileUtils.rm_f "test.err"
|
43
|
+
Asciidoctor.convert(<<~"INPUT", *OPTIONS)
|
37
44
|
#{VALIDATING_BLANK_HDR}
|
38
|
-
|
45
|
+
|
39
46
|
[bibliography]
|
40
47
|
== Normative References
|
41
48
|
|
@@ -43,7 +50,7 @@ end
|
|
43
50
|
=== Standard
|
44
51
|
id:: iso123
|
45
52
|
type:: standard
|
46
|
-
contributor::
|
53
|
+
contributor::
|
47
54
|
role::: publisher
|
48
55
|
organization:::
|
49
56
|
name:::: ISO
|
@@ -62,17 +69,17 @@ end
|
|
62
69
|
person:::
|
63
70
|
name::::
|
64
71
|
completename::::: Jack
|
65
|
-
|
66
72
|
INPUT
|
67
|
-
|
68
|
-
|
73
|
+
errf = File.read("test.err")
|
74
|
+
expect(errf)
|
75
|
+
.to include "Reference iso123 is missing a document identifier (docid)"
|
69
76
|
end
|
70
77
|
|
71
|
-
|
72
|
-
|
73
|
-
|
78
|
+
it "warns about missing fields in asciibib" do
|
79
|
+
FileUtils.rm_f "test.err"
|
80
|
+
Asciidoctor.convert(<<~"INPUT", *OPTIONS)
|
74
81
|
#{VALIDATING_BLANK_HDR}
|
75
|
-
|
82
|
+
|
76
83
|
[bibliography]
|
77
84
|
== Normative References
|
78
85
|
|
@@ -83,10 +90,10 @@ end
|
|
83
90
|
role::: publisher
|
84
91
|
organization:::
|
85
92
|
name:::: ISO
|
86
|
-
INPUT
|
87
|
-
|
88
|
-
|
89
|
-
|
93
|
+
INPUT
|
94
|
+
errf = File.read("test.err")
|
95
|
+
expect(errf).to include "The following reference is missing an anchor"
|
96
|
+
Asciidoctor.convert(<<~"INPUT", *OPTIONS)
|
90
97
|
#{VALIDATING_BLANK_HDR}
|
91
98
|
|
92
99
|
[bibliography]
|
@@ -100,89 +107,85 @@ INPUT
|
|
100
107
|
role::: publisher
|
101
108
|
organization:::
|
102
109
|
name:::: ISO
|
103
|
-
INPUT
|
104
|
-
|
105
|
-
|
106
|
-
end
|
107
|
-
|
108
|
-
=begin
|
109
|
-
it "warns about malformed LaTeX" do
|
110
|
-
FileUtils.rm_f "test.err"
|
111
|
-
Asciidoctor.convert(<<~"INPUT", backend: :standoc, header_footer: true)
|
112
|
-
#{VALIDATING_BLANK_HDR}
|
113
|
-
|
114
|
-
== Clause 1
|
115
|
-
|
116
|
-
latexmath:[\\[ \\text{Odd integer = 51, \\quad \\text{Even integers } = 50 \\]]
|
117
|
-
|
118
|
-
=== Clause 1.1
|
119
|
-
|
120
|
-
Subclause
|
121
|
-
INPUT
|
122
|
-
expect(File.read("test.err")).to include "latexmlmath failed to process equation"
|
110
|
+
INPUT
|
111
|
+
errf = File.read("test.err")
|
112
|
+
expect(errf).not_to include "The following reference is missing an anchor"
|
123
113
|
end
|
124
|
-
=end
|
125
|
-
|
126
|
-
=begin
|
127
|
-
it "warns about reparsing LaTeX" do
|
128
|
-
FileUtils.rm_f "test.err"
|
129
|
-
expect { Asciidoctor.convert(<<~"INPUT", backend: :standoc, header_footer: true) }.to output(/Retrying/).to_stderr
|
130
|
-
#{VALIDATING_BLANK_HDR}
|
131
|
-
|
132
|
-
== Clause 1
|
133
|
-
|
134
|
-
[latexmath]
|
135
|
-
++++
|
136
|
-
\\pmatrix{ \\hat{e}_{\\xi} \\cr \\hat{e}_{\\eta}
|
137
|
-
\\cr \\hat{e}_{\\zeta} } = {\\bf T} \\pmatrix{ \\hat{e}_x \\cr \\hat{e}_y \\cr \\hat{e}_z },
|
138
|
-
++++
|
139
114
|
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
115
|
+
# it "warns about malformed LaTeX" do
|
116
|
+
# FileUtils.rm_f "test.err"
|
117
|
+
# Asciidoctor.convert(<<~"INPUT", *OPTIONS)
|
118
|
+
# #{VALIDATING_BLANK_HDR}
|
119
|
+
#
|
120
|
+
# == Clause 1
|
121
|
+
#
|
122
|
+
# latexmath:[\\[ \\text{Odd integer = 51, \\quad \\text{Even integers } = 50 \\]]
|
123
|
+
#
|
124
|
+
# === Clause 1.1
|
125
|
+
#
|
126
|
+
# Subclause
|
127
|
+
# INPUT
|
128
|
+
# expect(File.read("test.err")).to include "latexmlmath failed to process equation"
|
129
|
+
# end
|
130
|
+
|
131
|
+
# it "warns about reparsing LaTeX" do
|
132
|
+
# FileUtils.rm_f "test.err"
|
133
|
+
# expect { Asciidoctor.convert(<<~"INPUT", *OPTIONS) }.to output(/Retrying/).to_stderr
|
134
|
+
# #{VALIDATING_BLANK_HDR}
|
135
|
+
#
|
136
|
+
# == Clause 1
|
137
|
+
#
|
138
|
+
# [latexmath]
|
139
|
+
# ++++
|
140
|
+
# \\pmatrix{ \\hat{e}_{\\xi} \\cr \\hat{e}_{\\eta}
|
141
|
+
# \\cr \\hat{e}_{\\zeta} } = {\\bf T} \\pmatrix{ \\hat{e}_x \\cr \\hat{e}_y \\cr \\hat{e}_z },
|
142
|
+
# ++++
|
143
|
+
#
|
144
|
+
# === Clause 1.1
|
145
|
+
#
|
146
|
+
# Subclause
|
147
|
+
# INPUT
|
148
|
+
# end
|
146
149
|
|
147
150
|
it "warns about hanging paragraphs" do
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
+
FileUtils.rm_f "test.err"
|
152
|
+
Asciidoctor.convert(<<~"INPUT", *OPTIONS)
|
153
|
+
#{VALIDATING_BLANK_HDR}
|
151
154
|
|
152
|
-
|
155
|
+
== Clause 1
|
153
156
|
|
154
|
-
|
157
|
+
Paragraph
|
155
158
|
|
156
|
-
|
159
|
+
=== Clause 1.1
|
157
160
|
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
+
Subclause
|
162
|
+
INPUT
|
163
|
+
expect(File.read("test.err")).to include "Hanging paragraph in clause"
|
161
164
|
end
|
162
165
|
|
163
166
|
it "warns that video is a skipped node" do
|
164
|
-
|
165
|
-
|
166
|
-
|
167
|
+
FileUtils.rm_f "test.err"
|
168
|
+
Asciidoctor.convert(<<~"INPUT", *OPTIONS)
|
169
|
+
#{VALIDATING_BLANK_HDR}
|
167
170
|
|
168
|
-
|
169
|
-
|
170
|
-
|
171
|
+
video::video_file.mp4[]
|
172
|
+
INPUT
|
173
|
+
expect(File.read("test.err")).to include "converter missing for video node"
|
171
174
|
end
|
172
175
|
|
173
|
-
it "warns that figure does not have title" do
|
174
|
-
|
175
|
-
|
176
|
-
|
176
|
+
it "warns that figure does not have title" do
|
177
|
+
FileUtils.rm_f "test.err"
|
178
|
+
Asciidoctor.convert(<<~"INPUT", *OPTIONS)
|
179
|
+
#{VALIDATING_BLANK_HDR}
|
177
180
|
|
178
|
-
|
179
|
-
|
180
|
-
|
181
|
-
end
|
181
|
+
image::spec/examples/rice_images/rice_image1.png[]
|
182
|
+
INPUT
|
183
|
+
expect(File.read("test.err")).to include "Figure should have title"
|
184
|
+
end
|
182
185
|
|
183
|
-
it "warns that callouts do not match annotations" do
|
184
|
-
|
185
|
-
|
186
|
+
it "warns that callouts do not match annotations" do
|
187
|
+
FileUtils.rm_f "test.err"
|
188
|
+
Asciidoctor.convert(<<~"INPUT", *OPTIONS)
|
186
189
|
#{VALIDATING_BLANK_HDR}
|
187
190
|
[source,ruby]
|
188
191
|
--
|
@@ -193,226 +196,271 @@ it "warns that callouts do not match annotations" do
|
|
193
196
|
--
|
194
197
|
<1> This is one callout
|
195
198
|
<2> This is another callout
|
196
|
-
|
197
|
-
|
198
|
-
|
199
|
+
INPUT
|
200
|
+
expect(File.read("test.err"))
|
201
|
+
.to include "mismatch of callouts and annotations"
|
202
|
+
end
|
199
203
|
|
200
|
-
it "warns that term source is not a real reference" do
|
201
|
-
|
202
|
-
|
203
|
-
|
204
|
+
it "warns that term source is not a real reference" do
|
205
|
+
FileUtils.rm_f "test.err"
|
206
|
+
Asciidoctor.convert(<<~"INPUT", *OPTIONS)
|
207
|
+
#{VALIDATING_BLANK_HDR}
|
204
208
|
|
205
|
-
|
206
|
-
|
207
|
-
|
208
|
-
|
209
|
-
|
209
|
+
[.source]
|
210
|
+
<<iso123>>
|
211
|
+
INPUT
|
212
|
+
expect(File.read("test.err"))
|
213
|
+
.to include "iso123 does not have a corresponding anchor ID in the bibliography"
|
214
|
+
end
|
210
215
|
|
211
|
-
it "warns of Non-reference in bibliography" do
|
212
|
-
|
213
|
-
|
214
|
-
|
216
|
+
it "warns of Non-reference in bibliography" do
|
217
|
+
FileUtils.rm_f "test.err"
|
218
|
+
Asciidoctor.convert(<<~"INPUT", *OPTIONS)
|
219
|
+
#{VALIDATING_BLANK_HDR}
|
215
220
|
|
216
|
-
|
217
|
-
|
218
|
-
|
219
|
-
|
220
|
-
end
|
221
|
+
== Normative References
|
222
|
+
* I am not a reference
|
223
|
+
INPUT
|
224
|
+
expect(File.read("test.err")).to include "no anchor on reference"
|
225
|
+
end
|
221
226
|
|
222
|
-
it "warns that Table should have title" do
|
223
|
-
|
224
|
-
|
225
|
-
|
227
|
+
it "warns that Table should have title" do
|
228
|
+
FileUtils.rm_f "test.err"
|
229
|
+
Asciidoctor.convert(<<~"INPUT", *OPTIONS)
|
230
|
+
#{VALIDATING_BLANK_HDR}
|
226
231
|
|
227
|
-
|
228
|
-
|
229
|
-
|
230
|
-
|
231
|
-
|
232
|
-
end
|
232
|
+
|===
|
233
|
+
|a |b |c
|
234
|
+
|===
|
235
|
+
INPUT
|
236
|
+
expect(File.read("test.err")).to include "Table should have title"
|
237
|
+
end
|
233
238
|
|
234
|
-
it "validates document against ISO XML schema" do
|
235
|
-
|
236
|
-
|
237
|
-
|
239
|
+
it "validates document against ISO XML schema" do
|
240
|
+
FileUtils.rm_f "test.err"
|
241
|
+
Asciidoctor.convert(<<~"INPUT", *OPTIONS)
|
242
|
+
#{VALIDATING_BLANK_HDR}
|
238
243
|
|
239
|
-
|
240
|
-
|
241
|
-
|
242
|
-
|
243
|
-
|
244
|
+
[align=mid-air]
|
245
|
+
Para
|
246
|
+
INPUT
|
247
|
+
expect(File.read("test.err"))
|
248
|
+
.to include 'value of attribute "align" is invalid; must be equal to'
|
249
|
+
end
|
244
250
|
|
245
|
-
it "Warning if terms mismatches IEV" do
|
246
|
-
|
247
|
-
|
248
|
-
|
249
|
-
|
250
|
-
|
251
|
-
|
252
|
-
|
253
|
-
|
254
|
-
|
255
|
-
[bibliography]
|
256
|
-
== Normative References
|
257
|
-
* [[[iev,IEV]]], _iev_
|
258
|
-
|
259
|
-
== Terms and definitions
|
260
|
-
=== Automation
|
261
|
-
|
262
|
-
[.source]
|
263
|
-
<<iev,clause="103-01-02">>
|
264
|
-
INPUT
|
265
|
-
expect(File.read("test.err")).to include 'Term "automation" does not match IEV 103-01-02 "functional"'
|
266
|
-
FileUtils.mv File.expand_path("~/.iev.pstore1"), File.expand_path("~/.iev/cache"), force: true
|
267
|
-
end
|
251
|
+
it "Warning if terms mismatches IEV" do
|
252
|
+
FileUtils.rm_f "test.err"
|
253
|
+
FileUtils.mv File.expand_path("~/.iev/cache"),
|
254
|
+
File.expand_path("~/.iev.pstore1"), force: true
|
255
|
+
FileUtils.rm_f "test_iev/pstore"
|
256
|
+
mock_open_uri("103-01-02")
|
257
|
+
Asciidoctor.convert(<<~"INPUT", *OPTIONS)
|
258
|
+
= Document title
|
259
|
+
Author
|
260
|
+
:docfile: test.adoc
|
268
261
|
|
269
|
-
|
270
|
-
|
271
|
-
|
272
|
-
FileUtils.rm_f "test_iev/cache"
|
273
|
-
mock_open_uri('103-01-02')
|
274
|
-
Asciidoctor.convert(<<~"INPUT", backend: :standoc, header_footer: true)
|
275
|
-
= Document title
|
276
|
-
Author
|
277
|
-
:docfile: test.adoc
|
278
|
-
|
279
|
-
[bibliography]
|
280
|
-
== Normative References
|
281
|
-
* [[[iev,IEV]]], _iev_
|
282
|
-
|
283
|
-
== Terms and definitions
|
284
|
-
=== Functional
|
285
|
-
|
286
|
-
[.source]
|
287
|
-
<<iev,clause="103-01-02">>
|
288
|
-
INPUT
|
289
|
-
expect(File.read("test.err")).not_to include "does not match IEV 103-01-02"
|
290
|
-
FileUtils.mv File.expand_path("~/.iev.pstore1"), File.expand_path("~/.iev/cache"), force: true
|
291
|
-
end
|
262
|
+
[bibliography]
|
263
|
+
== Normative References
|
264
|
+
* [[[iev,IEV]]], _iev_
|
292
265
|
|
293
|
-
|
294
|
-
|
295
|
-
FileUtils.mv File.expand_path("~/.iev/cache"), File.expand_path("~/.iev.pstore1"), force: true
|
296
|
-
FileUtils.rm_f "test_iev/cache"
|
297
|
-
mock_open_uri('103-01-02')
|
298
|
-
Asciidoctor.convert(<<~"INPUT", backend: :standoc, header_footer: true)
|
299
|
-
= Document title
|
300
|
-
Author
|
301
|
-
:docfile: test.adoc
|
302
|
-
:nodoc:
|
303
|
-
:language: fr
|
304
|
-
|
305
|
-
[bibliography]
|
306
|
-
== Normative References
|
307
|
-
* [[[iev,IEV]]], _iev_
|
308
|
-
|
309
|
-
== Terms and definitions
|
310
|
-
=== Fonctionnelle, f
|
311
|
-
|
312
|
-
[.source]
|
313
|
-
<<iev,clause="103-01-02">>
|
314
|
-
INPUT
|
315
|
-
expect(File.read("test.err")).not_to include "does not match IEV 103-01-02"
|
316
|
-
FileUtils.mv File.expand_path("~/.iev.pstore1"), File.expand_path("~/.iev/cache"), force: true
|
317
|
-
end
|
266
|
+
== Terms and definitions
|
267
|
+
=== Automation
|
318
268
|
|
319
|
-
|
320
|
-
|
321
|
-
|
322
|
-
|
323
|
-
|
324
|
-
|
325
|
-
|
326
|
-
end
|
327
|
-
=end
|
328
|
-
|
329
|
-
it "warns and aborts if id used twice" do
|
330
|
-
FileUtils.rm_f "test.xml"
|
331
|
-
FileUtils.rm_f "test.err"
|
332
|
-
begin
|
333
|
-
expect { Asciidoctor.convert(<<~"INPUT", backend: :standoc, header_footer: true) }.to raise_error(SystemExit)
|
334
|
-
= Document title
|
335
|
-
Author
|
336
|
-
:docfile: test.adoc
|
337
|
-
:nodoc:
|
338
|
-
|
339
|
-
[[abc]]
|
340
|
-
== Clause 1
|
341
|
-
|
342
|
-
[[abc]]
|
343
|
-
== Clause 2
|
344
|
-
INPUT
|
345
|
-
rescue SystemExit
|
269
|
+
[.source]
|
270
|
+
<<iev,clause="103-01-02">>
|
271
|
+
INPUT
|
272
|
+
expect(File.read("test.err"))
|
273
|
+
.to include 'Term "automation" does not match IEV 103-01-02 "functional"'
|
274
|
+
FileUtils.mv File.expand_path("~/.iev.pstore1"),
|
275
|
+
File.expand_path("~/.iev/cache"), force: true
|
346
276
|
end
|
347
|
-
expect(File.read("test.err")).to include "Anchor abc has already been used at line"
|
348
|
-
expect(File.exist?("test.xml")).to be false
|
349
|
-
end
|
350
277
|
|
351
|
-
it "
|
352
|
-
|
353
|
-
|
354
|
-
|
355
|
-
|
356
|
-
|
357
|
-
|
358
|
-
|
359
|
-
|
360
|
-
|
361
|
-
|
362
|
-
|
363
|
-
|
364
|
-
|
365
|
-
|
278
|
+
it "No warning if English term matches IEV" do
|
279
|
+
FileUtils.rm_f "test.err"
|
280
|
+
FileUtils.mv File.expand_path("~/.iev/cache"),
|
281
|
+
File.expand_path("~/.iev.pstore1"), force: true
|
282
|
+
FileUtils.rm_f "test_iev/cache"
|
283
|
+
mock_open_uri("103-01-02")
|
284
|
+
Asciidoctor.convert(<<~"INPUT", *OPTIONS)
|
285
|
+
= Document title
|
286
|
+
Author
|
287
|
+
:docfile: test.adoc
|
288
|
+
|
289
|
+
[bibliography]
|
290
|
+
== Normative References
|
291
|
+
* [[[iev,IEV]]], _iev_
|
292
|
+
|
293
|
+
== Terms and definitions
|
294
|
+
=== Functional
|
295
|
+
|
296
|
+
[.source]
|
297
|
+
<<iev,clause="103-01-02">>
|
298
|
+
INPUT
|
299
|
+
expect(File.read("test.err")).not_to include "does not match IEV 103-01-02"
|
300
|
+
FileUtils.mv File.expand_path("~/.iev.pstore1"),
|
301
|
+
File.expand_path("~/.iev/cache"), force: true
|
366
302
|
end
|
367
|
-
expect(File.read("test.err")).to include "Numeric reference in normative references"
|
368
|
-
expect(File.exist?("test.xml")).to be false
|
369
|
-
end
|
370
303
|
|
371
|
-
it "
|
372
|
-
|
373
|
-
|
374
|
-
|
375
|
-
|
376
|
-
|
377
|
-
|
378
|
-
|
379
|
-
|
380
|
-
|
304
|
+
it "No warning if French term matches IEV" do
|
305
|
+
FileUtils.rm_f "test.err"
|
306
|
+
FileUtils.mv File.expand_path("~/.iev/cache"),
|
307
|
+
File.expand_path("~/.iev.pstore1"), force: true
|
308
|
+
FileUtils.rm_f "test_iev/cache"
|
309
|
+
mock_open_uri("103-01-02")
|
310
|
+
Asciidoctor.convert(<<~"INPUT", *OPTIONS)
|
311
|
+
= Document title
|
312
|
+
Author
|
313
|
+
:docfile: test.adoc
|
314
|
+
:nodoc:
|
315
|
+
:language: fr
|
381
316
|
|
382
|
-
|
317
|
+
[bibliography]
|
318
|
+
== Normative References
|
319
|
+
* [[[iev,IEV]]], _iev_
|
383
320
|
|
384
|
-
|
321
|
+
== Terms and definitions
|
322
|
+
=== Fonctionnelle, f
|
385
323
|
|
386
|
-
|
387
|
-
|
324
|
+
[.source]
|
325
|
+
<<iev,clause="103-01-02">>
|
326
|
+
INPUT
|
327
|
+
expect(File.read("test.err"))
|
328
|
+
.not_to include "does not match IEV 103-01-02"
|
329
|
+
FileUtils.mv File.expand_path("~/.iev.pstore1"), File.expand_path("~/.iev/cache"), force: true
|
330
|
+
end
|
388
331
|
|
389
|
-
|
390
|
-
|
332
|
+
# it "No warning if attributes on formatted strong or stem extraneous to Metanomra XML" do
|
333
|
+
# expect { Asciidoctor::Standoc::Converter.new(nil,nil).validate(Nokogiri::XML(<<~INPUT)) }.not_to output('found attribute "close", but no attributes allowed here').to_stderr
|
334
|
+
# <standard-document>
|
335
|
+
# <stem type="MathML"><math xmlns="http://www.w3.org/1998/Math/MathML"><mfenced open="(" close=")"><mi>r</mi></mfenced></stem>
|
336
|
+
# </standard-document>
|
337
|
+
# INPUT
|
338
|
+
# end
|
391
339
|
|
392
|
-
it "
|
393
|
-
|
394
|
-
|
395
|
-
|
396
|
-
|
397
|
-
|
398
|
-
|
399
|
-
|
400
|
-
|
401
|
-
|
402
|
-
|
403
|
-
|
404
|
-
|
405
|
-
|
406
|
-
|
407
|
-
|
408
|
-
|
409
|
-
|
410
|
-
|
411
|
-
|
412
|
-
|
413
|
-
|
414
|
-
|
415
|
-
|
416
|
-
|
340
|
+
it "warns and aborts if concept/xref does not point to term or definition" do
|
341
|
+
FileUtils.rm_f "test.xml"
|
342
|
+
FileUtils.rm_f "test.err"
|
343
|
+
begin
|
344
|
+
input = <<~INPUT
|
345
|
+
= Document title
|
346
|
+
Author
|
347
|
+
:docfile: test.adoc
|
348
|
+
:nodoc:
|
349
|
+
|
350
|
+
[[abc]]
|
351
|
+
== Clause 1
|
352
|
+
[[ghi]]A:: B
|
353
|
+
|
354
|
+
== Symbols and Abbreviated Terms
|
355
|
+
[[def]]DEF:: def
|
356
|
+
|
357
|
+
{{<<abc>>,term}}
|
358
|
+
{{<<def>>,term}}
|
359
|
+
{{<<ghi>>,term}}
|
360
|
+
INPUT
|
361
|
+
expect { Asciidoctor.convert(input, *OPTIONS) }.to raise_error(SystemExit)
|
362
|
+
rescue SystemExit
|
363
|
+
end
|
364
|
+
expect(File.read("test.err"))
|
365
|
+
.to include "Concept term is pointing to abc, which is not a term or symbol"
|
366
|
+
expect(File.read("test.err"))
|
367
|
+
.not_to include "Concept term is pointing to def, which is not a term or symbol"
|
368
|
+
expect(File.read("test.err"))
|
369
|
+
.to include "Concept term is pointing to ghi, which is not a term or symbol"
|
370
|
+
expect(File.exist?("test.xml")).to be false
|
371
|
+
end
|
372
|
+
|
373
|
+
it "warns and aborts if id used twice" do
|
374
|
+
FileUtils.rm_f "test.xml"
|
375
|
+
FileUtils.rm_f "test.err"
|
376
|
+
begin
|
377
|
+
input = <<~INPUT
|
378
|
+
= Document title
|
379
|
+
Author
|
380
|
+
:docfile: test.adoc
|
381
|
+
:nodoc:
|
382
|
+
|
383
|
+
[[abc]]
|
384
|
+
== Clause 1
|
385
|
+
|
386
|
+
[[abc]]
|
387
|
+
== Clause 2
|
388
|
+
INPUT
|
389
|
+
expect { Asciidoctor.convert(input, *OPTIONS) }.to raise_error(SystemExit)
|
390
|
+
rescue SystemExit
|
391
|
+
end
|
392
|
+
expect(File.read("test.err"))
|
393
|
+
.to include "Anchor abc has already been used at line"
|
394
|
+
expect(File.exist?("test.xml")).to be false
|
395
|
+
end
|
396
|
+
|
397
|
+
it "warns and aborts if numeric normative reference" do
|
398
|
+
FileUtils.rm_f "test.xml"
|
399
|
+
FileUtils.rm_f "test.err"
|
400
|
+
begin
|
401
|
+
input = <<~INPUT
|
402
|
+
= Document title
|
403
|
+
Author
|
404
|
+
:docfile: test.adoc
|
405
|
+
:nodoc:
|
406
|
+
|
407
|
+
[bibliography]
|
408
|
+
== Normative references
|
409
|
+
* [[[A,1]]]
|
410
|
+
INPUT
|
411
|
+
expect { Asciidoctor.convert(input, *OPTIONS) }.to raise_error(SystemExit)
|
412
|
+
rescue SystemExit
|
413
|
+
end
|
414
|
+
expect(File.read("test.err"))
|
415
|
+
.to include "Numeric reference in normative references"
|
416
|
+
expect(File.exist?("test.xml")).to be false
|
417
|
+
end
|
418
|
+
|
419
|
+
it "err file succesfully created for docfile path" do
|
420
|
+
FileUtils.rm_rf "test"
|
421
|
+
FileUtils.mkdir_p "test"
|
422
|
+
Asciidoctor.convert(<<~"INPUT", *OPTIONS)
|
423
|
+
= Document title
|
424
|
+
Author
|
425
|
+
:docfile: test#{File::ALT_SEPARATOR || File::SEPARATOR}test.adoc
|
426
|
+
:nodoc:
|
427
|
+
|
428
|
+
== Clause 1
|
429
|
+
|
430
|
+
Paragraph
|
417
431
|
|
432
|
+
=== Clause 1.1
|
433
|
+
|
434
|
+
Subclause
|
435
|
+
INPUT
|
436
|
+
|
437
|
+
expect(File.read("test/test.err")).to include "Hanging paragraph in clause"
|
438
|
+
end
|
439
|
+
|
440
|
+
it "Warning if no block for footnoteblock" do
|
441
|
+
FileUtils.rm_f "test.err"
|
442
|
+
Asciidoctor.convert(<<~"INPUT", *OPTIONS)
|
443
|
+
= Document title
|
444
|
+
Author
|
445
|
+
:docfile: test.adoc
|
446
|
+
|
447
|
+
footnoteblock:[id1]
|
448
|
+
|
449
|
+
[[id2]]
|
450
|
+
[NOTE]
|
451
|
+
--
|
452
|
+
|===
|
453
|
+
|a |b
|
454
|
+
|
455
|
+
|c |d
|
456
|
+
|===
|
457
|
+
|
458
|
+
* A
|
459
|
+
* B
|
460
|
+
* C
|
461
|
+
--
|
462
|
+
INPUT
|
463
|
+
expect(File.read("test.err"))
|
464
|
+
.to include "Could not resolve footnoteblock:[id1]"
|
465
|
+
end
|
418
466
|
end
|