- Feb 27, 2019
-
-
Arseny Kapoulkine authored
We now have two tests: one tests behavior when we run out of space when appending the node set (in which case the append fails), another one tests behavior when we run out of space when filtering the node set (in which case the set still contains redundant data).
-
Arseny Kapoulkine authored
Given an unsorted sequence, remove_duplicates would sort it using the pointer value of attributes/nodes and then remove consecutive duplicates. This was problematic because it meant that the result of XPath queries was dependent on the memory allocation pattern. While it's technically incorrect to rely on the order, this results in easy to miss bugs. This is particularly common when XPath queries use union operators - although we also will call remove_duplicates in other cases. This change reworks the code to use a hash set instead, using the same hash function we use for compact storage. To make sure it performs well, we allocate enough buckets for count * 1.5 (assuming all elements are unique); since each bucket is a single pointer unlike xpath_node which is two pointers, we need somewhere between size * 0.75 and size * 1.5 temporary storage. The resulting filtering is stable - we remove elements that we have seen before but we don't change the order - and is actually significantly faster than sorting was. With a large union operation, before this change it took ~56 ms per 100 query invocations to remove duplicates, and after this change it takes ~20ms. Fixes #254.
-
Arseny Kapoulkine authored
This test is very sensitive to the particular implementation of union aggregation; for now lets disable this. We need a more robust way to test union allocation failures.
-
- Nov 27, 2018
-
-
Arseny Kapoulkine authored
The behavior on Linux is very different between kernel versions, and it triggers an unexpected OOM during sanitizer runs because somehow the size is reported to be LONG_MAX. It's not clear that it helps us cover any paths we don't cover otherwise - it would be nice to be able to test failing to load a multi-gigabyte file on a 32-bit system, but we can't do this easily atm anyway.
-
- Nov 24, 2018
-
-
Arseny Kapoulkine authored
We had a few places in test code and library source where we used an implicit float->double cast; while it should preserve the value exactly, gcc/clang implement this warning to make sure uses of double are intentional. This change also adds the warning to Makefile to make sure we don't regress on this warning. Fixes #243.
-
- Nov 20, 2018
-
-
Arseny Kapoulkine authored
This change modifies the table entries for ctx_special_attr to treat TAB character as special, which makes the output code escape it. Before this change, trying to use TAB in an attribute value would output it verbatim; during subsequent parsing, pugixml - and other compliant parsers - would apply attribute-value normalization, turning the TAB into a space and losing the original value. Using 	 fixes this; if an input document has 	 in an attribute value, that gets unescaped into \t during parsing and escaped back into 	 during output, which means we can now roundtrip values like this. Fixes #242.
-
- Aug 14, 2018
-
-
Arseny Kapoulkine authored
Intel compiler by default sets flush-to-zero flags which causes our denorm test to produce 0.0. So make sure that denorms work on FPU before testing the string output. Fixes #218.
-
- Jul 30, 2018
-
-
Arseny Kapoulkine authored
On some Debian systems it looks like we *can* open the current folder as a file and read its contents, but parsing the result produces an empty document. We now handle this case as well. Fixes #225.
-
- Apr 04, 2018
-
-
Arseny Kapoulkine authored
We need bad_alloc that lives in <new>, not <exception>.
-
Arseny Kapoulkine authored
pugixml.hpp wasn't including the <exception> header in this build but test code needed it.
-
Arseny Kapoulkine authored
-
- Apr 03, 2018
-
-
Arseny Kapoulkine authored
-
Arseny Kapoulkine authored
-
Arseny Kapoulkine authored
-
- Mar 17, 2018
-
-
Arseny Kapoulkine authored
Several tests got the buffer size wrong when sizeof(char_t)>1, and one test didn't meet the carefully tuned allocation criteria under compact mode due to the hash table usage and had to be changed a bit.
-
- Dec 22, 2017
-
-
Arseny Kapoulkine authored
Apparently at some point OSX behavior when reading /dev/tty switched from "can't open the file" to "the file can be opened and 0 bytes can be read from it" which generates a wrong error and doesn't exercise the code path we care about.
-
- Nov 13, 2017
-
-
Arseny Kapoulkine authored
This helps make sure our error handling logic works and is exercised.
-
- Nov 11, 2017
-
-
Arseny Kapoulkine authored
This warning is new as of GCC 7 and highlights undefined behavior in the preprocessor that ASAN detection was relying on.
-
- Oct 26, 2017
-
-
Arseny Kapoulkine authored
These tests currently fail for compact mode because of ->reserve() failing.
-
- Oct 21, 2017
-
-
Arseny Kapoulkine authored
We now check that appending a child to a moved document performs no allocations - this is already the case, but if we neglected to copy the allocator state this test would fail.
-
- Sep 26, 2017
-
-
Arseny Kapoulkine authored
Large test wasn't testing shared parent condition properly - add one more level of hierarchy so that it works as expected.
-
Arseny Kapoulkine authored
Add a test that checks that static buffer pointer was moved correctly by checking if offset_debug still works.
-
Arseny Kapoulkine authored
Make sure we have coverage for empty documents and for large documents that trigger compact_shared_parent != root for some pages.
-
Arseny Kapoulkine authored
Verify that move doesn't allocate and that it preserves structures required for tree memory management and append_buffer in tact.
-
Arseny Kapoulkine authored
These just verify that move ctor/assignment operator work as expected in simple cases - there are a number of ways in which the internal structure can be incorrect...
-
- Jun 23, 2017
-
-
Arseny Kapoulkine authored
These new tests test that tellg() can fail when being called the second time, which leads to seekable implementation failing.
-
Arseny Kapoulkine authored
These tests simulate various error conditions when reading data from streams - seeks failing in seekable streams, underflow throwing an exception causing read to set badbit, etc. This change also adjusts memory thresholds to cause a reliable out of memory during construction of a final buffer for non-seekable streams.
-
Arseny Kapoulkine authored
-
Arseny Kapoulkine authored
This fixes missing coverage in translate_table_generate and xpath_node_set_raw::append.
-
Arseny Kapoulkine authored
Hiding using namespace in common.hpp is somewhat surprising so remove common.hpp and move using namespace into all .cpp files that need it.
-
Arseny Kapoulkine authored
Most tests have `using namespace pugi` which makes explicit qualifications unnecessary.
-
- Jun 22, 2017
-
-
Arseny Kapoulkine authored
These functions were deprecated via comments in 1.5 but never got the deprecated attribute; now is the time! Using deprecated functions produces a warning; to silence it, this change moves the relevant tests to a separate translation unit that has deprecation disabled.
-
- Jun 19, 2017
-
-
Arseny Kapoulkine authored
This requires moving the list of VS versions out of autotest-appveyor.ps1 and into appveyor.yml.
-
- Jun 17, 2017
-
-
Arseny Kapoulkine authored
Add memory allocation failure test for concact with a very large list and make sure we have every single axis covered with and without a predicate, with and without a previous step.
-
Arseny Kapoulkine authored
Apparently only narrow character streams had out of memory coverage - fix that and also split this into a separate test.
-
Arseny Kapoulkine authored
Cover both char and wchar_t stream loading in a single run instead of using pugi::char_t.
-
- Jun 16, 2017
-
-
Arseny Kapoulkine authored
Cover more failure cases and simplify the streambuf implementation a bit.
-
Arseny Kapoulkine authored
Rename partition to partition3 to resolve conflicts with std::partition.
-
Arseny Kapoulkine authored
Add more memory allocation failure tests.
-
Arseny Kapoulkine authored
Adjust the buffer size to be right on the edge of the overflow, make sure we actually output " instead of ".
-