1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.pyyaml;
17
18 import java.io.File;
19 import java.io.FileInputStream;
20 import java.io.FileNotFoundException;
21 import java.io.InputStream;
22 import java.io.StringWriter;
23 import java.io.Writer;
24 import java.util.ArrayList;
25 import java.util.List;
26
27 import org.yaml.snakeyaml.DumperOptions;
28 import org.yaml.snakeyaml.emitter.Emitter;
29 import org.yaml.snakeyaml.emitter.EventConstructor;
30 import org.yaml.snakeyaml.error.YAMLException;
31 import org.yaml.snakeyaml.events.Event;
32
33
34
35
36 public class PyErrorsTest extends PyImportTest {
37 private boolean skip(String filename) {
38 List<String> failures = new ArrayList<String>();
39
40 failures.add("unacceptable-key.loader-error");
41 for (String name : failures) {
42 if (name.equals(filename)) {
43 return true;
44 }
45 }
46 return false;
47 }
48
49 public void testLoaderErrors() throws FileNotFoundException {
50 File[] files = getStreamsByExtension(".loader-error");
51 assertTrue("No test files found.", files.length > 0);
52 for (int i = 0; i < files.length; i++) {
53 if (skip(files[i].getName())) {
54 continue;
55 }
56 try {
57 InputStream input = new FileInputStream(files[i]);
58 for (Object document : loadAll(input)) {
59 assertNotNull("File " + files[i], document);
60 }
61 input.close();
62 fail("Loading must fail for " + files[i].getAbsolutePath());
63
64
65 } catch (Exception e) {
66 assertTrue(true);
67 }
68 }
69 }
70
71 public void testLoaderStringErrors() throws FileNotFoundException {
72 File[] files = getStreamsByExtension(".loader-error");
73 assertTrue("No test files found.", files.length > 0);
74 for (int i = 0; i < files.length; i++) {
75 if (skip(files[i].getName())) {
76 continue;
77 }
78 try {
79 String content = getResource(files[i].getName());
80 for (Object document : loadAll(content.trim())) {
81 assertNotNull(document);
82 }
83 fail("Loading must fail for " + files[i].getAbsolutePath());
84
85
86 } catch (Exception e) {
87 assertTrue(true);
88 }
89 }
90 }
91
92 public void testLoaderSingleErrors() throws FileNotFoundException {
93 File[] files = getStreamsByExtension(".single-loader-error");
94 assertTrue("No test files found.", files.length > 0);
95 for (int i = 0; i < files.length; i++) {
96 try {
97 String content = getResource(files[i].getName());
98 load(content.trim());
99 fail("Loading must fail for " + files[i].getAbsolutePath());
100
101 System.err.println("Loading must fail for " + files[i].getAbsolutePath());
102 } catch (YAMLException e) {
103 assertTrue(true);
104 }
105 }
106 }
107
108 @SuppressWarnings("unchecked")
109 public void testEmitterErrors() {
110 File[] files = getStreamsByExtension(".emitter-error");
111 assertTrue("No test files found.", files.length > 0);
112 for (int i = 0; i < files.length; i++) {
113 String content = getResource(files[i].getName());
114 List<Event> document = (List<Event>) load(new EventConstructor(), content.trim());
115 Writer writer = new StringWriter();
116 Emitter emitter = new Emitter(writer, new DumperOptions());
117 try {
118 for (Event event : document) {
119 emitter.emit(event);
120 }
121 fail("Loading must fail for " + files[i].getAbsolutePath());
122
123
124 } catch (Exception e) {
125 assertTrue(true);
126 }
127 }
128 }
129
130
131 }