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