| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
| |
add-path was deprecated, see
https://github.blog/changelog/2020-10-01-github-actions-deprecating-set-env-and-add-path-commands/
|
|
|
|
| |
Also minor cleanup of .github/workflows/main.yml
|
| |
|
| |
|
|
|
|
|
| |
* Need newer bash and make for Macos testing
* Allow override of the run-test-suite branch
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
See http://yaml.org/spec/1.1/#id907281
The question mark isn't mentioned as something special here, only
,[]{}
This commit will allow
[foo?bar]
[foo ? bar]
The PR does only change the behaviour when the question mark is in the middle or
at the end of the string, not at the beginning, e.g. [?foo] is handled by
a different part of the code.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
See issue #46
Passing emitter tests:
* 2XXW: Spec Example 2.25. Unordered Sets
* 5WE3: Spec Example 8.17. Explicit Block Mapping Entries
* 6KGN: Anchor for empty node
* 6XDY: Two document start markers
* 7W2P: Block Mapping with Missing Values
* 8KB6: Multiline plain flow mapping key without value
* 9BXH: Multiline doublequoted flow mapping key without value
* C2DT: Spec Example 7.18. Flow Mapping Adjacent Values
* JTV5: Block Mapping with Multiline Scalars
* KK5P: Various combinations of explicit block mappings
* LE5A: Spec Example 7.24. Flow Nodes
* UT92: Spec Example 9.4. Explicit Documents
* W42U: Spec Example 8.15. Block Sequence Entry Types
* W4TN: Spec Example 9.5. Directives Documents
* ZWK4: Key with anchor after missing explicit mapping value
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Before:
a: &b x
*b: c
Now:
a: &b x
*b : c
Passing tests:
* 26DV: Whitespace around colon in mappings
* E76Z: Aliases in Implicit Block Mapping
* X38W: Aliases in Flow Objects
Test manually because `make test-suite` will overwrite changes in the skiplist:
./tests/run-parser-test-suite tests/run-test-suite/data/26DV/in.yaml | ./tests/run-emitter-test-suite
./tests/run-parser-test-suite tests/run-test-suite/data/E76Z/in.yaml | ./tests/run-emitter-test-suite
./tests/run-parser-test-suite tests/run-test-suite/data/X38W/in.yaml | ./tests/run-emitter-test-suite
Or edit tests/run-test-suite/test/blacklist/libyaml-emitter and do:
(cd tests/run-test-suite; prove -lv test)
Also I added some newlines to yaml.h to help identifying states by number.
|
|
|
|
| |
Spec: https://yaml.org/spec/1.2/spec.html#ns-tag-char
Test: https://github.com/yaml/yaml-test-suite/blob/master/test/WZ62.tml
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
With `--flow (keep|on)` run-parser-test-suite will output:
+MAP {}
+SEQ []
run-emitter-test-suite will then emit flow style collections if requested:
echo 'foo: [bar, {x: y}]' | ./tests/run-parser-test-suite | ./tests/run-emitter-test-suite
echo 'foo: [bar, {x: y}]' | ./tests/run-parser-test-suite \
--flow keep | ./tests/run-emitter-test-suite --flow keep
Also: add that yaml_private.h include again that I had thrown out. Needed
for printing directives.
Wonder if there is a way to create a directive without using the private api.
|
| |
|
| |
|
|
|
|
|
|
|
| |
Seems this was an oversight in d050fe3f3006b55edf33a2ef91019a67d6c3fb10.
We don't want to ignore all those file, but only the compiled executables.
Also added '/' to several files.
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
open_ended can have three states now:
0: The previous document was ended explicitly with '...'
1: The previous document wasn't ended with '...'
2: The last scalar event was a block scalar with trailing empty lines |+, and
last document wasn't ended with '...'.
Important at stream end.
This was broken in the past, and fixed in fa1293a.
With my last PR #162 I added the faulty behaviour again.
The problematic behaviour showed only when all of the following conditions were
true:
* writing YAML directives
* writing unquoted top level scalars
* writing more than one document
================== BROKEN ==============================
The first example shows that the document end marker is not emitted before
the next document. This would be valid in YAML 1.1 if the scalar was quoted,
but not if it is plain.
This commit fixes this.
echo '--- foo
--- bar
' | ./tests/run-parser-test-suite | ./tests/run-emitter-test-suite --directive 1.1
%YAML 1.1
--- foo
%YAML 1.1
--- bar
================== FIXED ==============================
echo '--- foo
--- bar
' | ./tests/run-parser-test-suite | ./tests/run-emitter-test-suite --directive 1.1
%YAML 1.1
--- foo
...
%YAML 1.1
--- bar
=======================================================
Other examples which should look like this (and were correct already before
this fix):
Open ended scalars like |+ need '...' at the end of the stream:
echo '--- |+
a
--- |+
a
' | ./tests/run-parser-test-suite | ./tests/run-emitter-test-suite
--- |+
a
--- |+
a
...
=======================================================
If a document is ended with an explicit '...', the code should not
print '...' twice:
echo '--- foo
...
--- bar
' | ./tests/run-parser-test-suite | ./tests/run-emitter-test-suite --directive 1.1
%YAML 1.1
--- foo
...
%YAML 1.1
--- bar
==========================================================
|
|
|
|
|
|
|
|
| |
Before `1.1` was hardcoded in the emitter.
* Also add --directive option to run-emitter-test-suite
Allows to easily test how output looks like if %YAML directives
are output.
|
| |
|
| |
|
|
|
|
|
|
|
|
| |
(provided by msvc compiler) instead of WIN32 (which is user configurable, and
omitted by default on some x64 builds); this fixes an issue with 64 bit windows
static library builds (#66)
Co-authored-by: Mark Sheahan <mark.sheahan@upguard.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This will simply allow `%YAML 1.2` directives additionally to `%YAML 1.1`.
There is no change in behaviour.
See also #20
No changes are needed regarding tag directives.
In YAML 1.2 tag directives are for the following document only.
This is already implemented like that in libyaml.
We would rather have to fix the code if we want to have the correct behaviour
(global directives) in YAML 1.1. This would be a bit more complicated, as we
would have to save the default version and the current version in the parser
object.
New passing parser tests:
* 27NA: Spec Example 5.9. Directive Indicator
* 6ZKB: Spec Example 9.6. Stream
* 9DXL: Spec Example 9.6. Stream [1.3]
* RTP8: Spec Example 9.2. Document Markers
New failing error parser tests (before they were errors for the wrong reason):
* EB22: Missing document-end marker before directive
* RHX7: YAML directive without document end marker
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The document loading API (yaml_parser_load) was susseptable to a
stack overflow issue when given input data which opened many
mappings and/or sequences without closing them.
This was due to the use of recurion in the implementation.
With this change, we avoid recursion, and maintain our own loader
context stack on the heap.
The loader context contains a stack of document node indexes.
Each time a sequence or mapping start event is encountered,
the node index corrasponding to the event is pushed to the
stack. Each time a sequence or mapping end event is encountered,
the corrasponding node's index is popped from the stack.
The yaml_parser_load_nodes() function sits on the event stream,
issuing events to the appropriate handlers by type.
When an event handler function constructs a node, it needs to
connect the new node to its parent (unless it's the root node).
This is where the loader context stack is used to find the
parent node. The way that the new node is added to the tree
depends on whether the parent node is a mapping (with a
yaml_node_pair_t to fill), or a sequence (with a yaml_node_item_t).
Fixes: https://github.com/yaml/libyaml/issues/107
|
| |
|
|
|
|
|
|
|
|
|
| |
* include/yaml.h: fix indentation of comments
* include/yaml.h: fix documentation style comment
* include/yaml.h: fix doc command returns
* include/yaml.h: fix typo
|
|
|
| |
option can only be ON or OFF. Use set() instead of option() to set default name of target.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
In YAML 1.1, the document end marker `...` is optional even if the next document starts with a directive:
https://github.com/yaml/pyyaml/blob/master/tests/data/spec-07-09.canonical
```
%YAML 1.1
---
!!str "foo"
%YAML 1.1
---
!!str "bar"
%YAML 1.1
---
!!str "baz"
```
It is only required if the scalar is "open ended", for example for plain scalars.
In YAML 1.2 the `...` marker is always required before a directive.
My suggestion would be to make the output 1.2 compatible. It will still be 1.1 compatible, so that shouldn't be a problem.
I believe this will also make it easier to fix #123 which was introduced with the last fixes regarding `open_ended`. I think I can make a fix for this soon after this issue is fixed.
Fixing #123 without this would be a bit more complicated.
If we do this, we also need to adjust PyYAML to behave the same.
Related issues/commits:
- https://github.com/yaml/libyaml/issues/60
- https://github.com/yaml/libyaml/pull/122
- 56400d9, 8ee83c0, 56f4b17
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
example-deconstructor-alt.c: In function ‘main’:
example-deconstructor-alt.c:649:51: warning:
comparison between ‘yaml_sequence_style_t {aka enum yaml_sequence_style_e}’
and ‘enum yaml_mapping_style_e’ [-Wenum-compare]
example-deconstructor-alt.c:650:36: warning:
comparison between ‘yaml_sequence_style_t {aka enum yaml_sequence_style_e}’
and ‘enum yaml_mapping_style_e’ [-Wenum-compare]
|
| |
|
|
|
|
|
| |
s/intendation/indentation/
Signed-off-by: 林博仁(Buo-ren, Lin) <Buo.Ren.Lin@gmail.com>
|
| |
|
| |
|
| |
|
| |
|
| |
|
|\
| |
| | |
allow override of Windows static lib name
|
|/
|
| |
* also changed name back to original default of yaml, as the change in #10 to `yaml_static` broke things that relied on that
|
|
|
|
| |
Might not be available everywhere
|
| |
|
|
|
|
|
|
|
|
| |
I suspect this this was a bit of an oversight when first setting up
appveyor for Windows/msvc, but 'release' does not match any target
cmake knows about; 'Release', however, does.
Signed-off-by: Marty E. Plummer <hanetzer@protonmail.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
'config.h' is meant to be a convenience header to be #included at build
time, but not installed. Installing it can cause a host of problems for
various other projects (for instance, attempting to build u-boot from
source while another project's 'config.h' exists in the compiler search
path will cause build failures similar to:
https://github.com/pepe2k/u-boot_mod/issues/148
Further, I've changed '#include <config.h>' to '#include "config.h"',
which should constrain the search path to the current build directories,
so if another package with a bugged build has this file installed, it
will not cause yaml to miscompile/fail.
If you have a file `/usr/include/config.h` on your filesystem, query
your package manager to find out what package owns it, and file a bug
report against it with your distro maintainers.
Signed-off-by: Marty E. Plummer <hanetzer@protonmail.com>
|
|
|
|
| |
Thanks to @tlsa for spotting this
|
|
|
|
| |
detected by coverity
|
| |
|
|
|
|
| |
yaml_emitter_write_indicator const char *indicator
|
|
|
|
| |
Commit amended by @perlpunk after suggestion from @tlsa
|