Commit Graph

114 Commits

Author SHA1 Message Date
Michael Bayne f22e8addd8 Move partial thread safety test into ThreadSafetyTest(s). 2023-11-30 11:25:53 -08:00
Michael Bayne 7922422c45 Test from @drykovanov.
This was fixed recently by @agentgt but I just wanted to double check that this
test now passes.

Closes #138.
2023-11-30 11:22:45 -08:00
Adam Gent a065543327 Inheritance support #120
Turn on inheritance tests. Some whitespace issues.

Recursion working but multi standalone broken

Make inheritance pass spec tests
2023-11-30 12:11:52 -05:00
Michael Bayne 92c1222d80 Minor formatting tweaks made while reading diffs. 2023-11-29 08:35:28 -08:00
Adam Gent ab4bcb749f Make partial loading threadsafe across platforms 2023-11-29 09:04:01 -05:00
Adam Gent 388406eab5 Fix identation with section segments 2023-11-27 13:27:58 -05:00
Adam Gent 8f6bae368f Put failed indent tests back with spec indenting 2023-11-21 13:20:02 -05:00
Adam Gent 80882b0e5d Improve test infrastructure 2023-11-19 13:14:28 -05:00
Michael Bayne a1f5a8110c Whitespace tweaks. 2023-11-18 16:00:05 -08:00
Michael Bayne 28d9025c66 Disable these failing tests for now. 2023-11-18 15:58:49 -08:00
Michael Bayne de2b04fa8e Update to latest specs repo. 2023-11-18 15:58:11 -08:00
Adam Gent a45d9dde4b Fix spec test runner 2023-11-17 17:38:49 -05:00
Adam Gent afbf37e028 Partial indentation support for v1.3 mustache 2023-11-17 16:48:38 -05:00
Michael Bayne 0b1c1b69a0 Reinstate Assert.fail import. 2023-11-15 09:57:15 -08:00
Michael Bayne 940af397c4 Merge pull request #140 from ralfs-gutmanis/master
Add ability to pass CharSequence instead of forcing String for contex…
2023-11-15 09:52:14 -08:00
Michael Bayne 1ff4a2acf3 Remove GWT support.
Also target source 1.9 as we no longer need 1.8 for GWT and hopefully the rest
of the world has moved on from Java 1.8 in the last twenty years.
2023-11-15 09:26:03 -08:00
Peer Schönhusen 979b3b887c Add indentation to partials 2023-11-15 11:24:40 +01:00
Ralfs Gūtmanis d1d72031f2 Add ability to pass CharSequence instead of forcing String for context variable.
java.lang.String is immutable and cannot be overwritten by user.
When passing sensitive data as context variable String remains in memory until GC removes it.
CharSequence allows user to provide his own implementation and overwrite data as needed.
2023-09-18 14:05:37 +03:00
Michael Bayne ca08cdb1a4 Tests for some first/last stuff.
From @spacether.
2021-02-04 13:20:00 -08:00
Michael Bayne 9508731dfa Add a test for recursive partial expansion.
This pertains to issue #124, but it seems to work fine.
2020-11-03 11:15:00 -08:00
Michael Bayne da7970e993 Allow access coercion to be disabled.
I'm not disabling it by default because that would change behavior for anyone
who was using reflection, which seems like annoying breakage. People who are
using JMustache with Java 9 can configure a non-coercing DefaultCollector to
eliminate the illegal access warnings.
2019-12-17 13:39:22 -08:00
Michael Bayne b3c54669cc Make MustacheCustomContext a Mustache inner interface.
This matches the style of all the other extension points.
2018-08-21 17:20:33 -07:00
Devin Smith 433e9677d4 added MustacheCustomContext 2018-08-21 17:32:18 -05:00
Michael Bayne 4533567303 Fix bugs relating to . and this.
First, I missed some reference checks when I stopped interning names. Fixed
those.

Second, when iterating over an array which contained null elements, the wrong
thing was happening.
2018-06-04 16:10:35 -07:00
Michael Bayne 37e31cbeac Add mechism to visit template tags.
This is useful when you want to inspect the structure of the template without
executing it.
2017-12-17 15:16:09 -08:00
Michael Bayne 02f917e2f7 Add Fragment.executeTemplate().
Allows a lambda to execute a template in the lambda's own context. This enables
'late bound' template inclusion where the lambda can select a template based on
dynamic data in the context at the time it is executed.

Closes #92.
2017-12-03 18:29:15 -08:00
Michael Bayne 8cddc839e3 Oops can't use reflection in shared tests. 2017-09-20 09:51:53 -07:00
Michael Bayne 172f35fb64 When nesting for non-list contexts, inherit list info.
This ensures that if you enter a conditional block while inside a list
block, the list "state" from the outer list will still be visible. For
example (somewhat contrived, but gets the point across):

{{#list}}
{{#name}}{{-index}}. {{.}}{{/name}}
{{^name}}{{-index}}. No name!{{/name}}
{{/list}}

Yields something like:

1. Bob
2. Mary
3. No name!
4. Jim

Fixes #90.
2017-09-20 09:43:14 -07:00
Michael Bayne 49720df4ea Use shipped GWT 2.8.0 (yay).
Also made main source target 1.8 (from 1.6) and nixed some GWT test
cruft.
2016-11-20 11:34:25 -08:00
Michael Bayne 96d9ba5e24 Some test fiddling to make things work in GWT. 2016-08-08 09:12:04 -07:00
Michael Bayne 9bb842ed20 Special case 'entrySet' on Map fetcher.
You can't normally reflectively access methods on Map because it has a
special fetcher, but being able to reflectively access 'entrySet' is
super useful when you want to iterate over the keys+values of a map, so
we're going to hack it in there. Ha!
2016-06-15 11:51:44 -07:00
Michael Bayne 06347ba7eb Remind future me about submodules. 2016-04-29 10:04:34 -07:00
Michael Bayne 546f78318e Simple support for decompiling fragments.
There are limitations! See the javadoc for Template.Fragment.decompile.

Closes #75.
2016-04-14 08:32:07 -07:00
Michael Bayne 59c45a2da7 Demo/test custom collector that supports Optional. 2016-01-29 11:39:03 -08:00
Michael Bayne 9eda17f85b Escape ` and = when escaping HTML.
They can be used for nefarious purposes on old IEs.

Refs wycats/handlebars.js@83b8e84
2015-12-24 13:48:07 -08:00
Michael Bayne cbd80d1d08 Big test revamp to get tests running in GWT.
For some reason I sort of blocked from my mind the fact that none of the actual
tests were running in GWT. Really I was just testing that things compiled.

So now the tests actually run in GWT. This means I had to split the tests that
rely on method/field lookup via reflection into a separate file because that
stuff will never work with GWT. I also changed a bunch of the other tests not
to surreptitiously use reflection because they were ostensibly testing
something else, so no point in those tests being GWT-incompatible just for
kicks.

This also means we can't use JUnit 4 annotations (sigh, I wish GWT would step
out of the stone age, but that's a whole other fiasco that I don't even want to
think about). So some of the tests that were using @Test(expected=FooException)
had to be rewritten to manually catch the exception and fail if it was not
thrown.

Anyhow, now most of the tests are in fact running in GWT (when you do "mvn
integration-test") and the test that I expected should fail in GWT is in fact
failing. Yay!
2015-09-21 15:43:48 -07:00
Masaki Mori 4b713862c8 Support index access on primitive arrays 2015-09-14 13:45:08 +09:00
Michael Bayne 2efcfb69ed Formatting tweak. 2015-09-09 14:40:00 -07:00
Michael Bayne 8a6c32d9db Merge pull request #68 from monae/patch-timezone
Fix broken test which depends on local timezone
2015-09-09 14:39:36 -07:00
Masaki Mori b846605894 Catch exceptions caused by fetching with invalid indices 2015-09-09 11:17:19 +09:00
Masaki Mori b743e74aa2 Fix broken test which depends on local timezone 2015-09-09 11:12:24 +09:00
Michael Bayne 461b108663 Support getters from default methods in interfaces.
Fortunately this did not require using any JDK 1.8-specific APIs, just
searching (via reflection) through the set of interfaces implemented by a class
in addition to its super-classes.

One downside is that the transitive set of all implemented interfaces could be
much larger than the super-class chain, but this is the last thing we search,
so in theory we only even get here if we were about to fail to find the getter
entirely.

This also means that our tests have to be compiled and run with Java 8, because
I was not in the mood to figure out how to do all the complex Maven jockeying
to have a special JDK8 profile and disable JDK8 tests in the normal profile and
re-enable them in the JDK8 profile and blah blah blah, just shoot me now.
2015-08-22 15:07:05 -07:00
Waldinar Oliveira Neto ee4178f549 Support isFoo for boolean properties.
This is addition to the existing getFoo support.
2015-06-20 18:21:47 -07:00
Michael Bayne 8618f89f7e Added strictSections configuration.
Section behavior used to be somewhat hackily determined from nullValue and
defaultValue, but it was messy. Now it has its own configuration and things are
more explicit.

Previously missing/null sections were treated as false, but if you set
nullValue to something, then missing sections became an error, but null
sections remained false. If you set defaultValue to something, missing sections
went back to being omitted. Kooky.

Now missing sections are omitted, unless you set strictSections to true, in
which case they become an error. nullValue and defaultValue have no impact on
section behavior.

There is no way to make null sections an error, but I don't see any demand for
that, so I'm going to leave that as a TODO.

Closes #60.
2014-12-20 11:06:46 -08:00
Michael Bayne 09fee0f037 Enabled more tests, fixed more bugs.
Mainly we also needed to trim around comment tags, but also there were a bunch
of tricky edge cases that were only partially addressed. This is some edgy
business!
2014-12-16 14:47:31 -08:00
Michael Bayne 4b3f677fbf Avoid freakoutery on invalid delims.
The specs tests assumes an implementation will silently ignore invalid delims.
I think that's a bad idea, so I throw an exception on invalid delims. So I just
ignore those "tests".
2014-12-16 11:06:39 -08:00
Michael Bayne c4cf51cf65 Escaped \r\n in all test checks. 2014-12-16 11:06:14 -08:00
Michael Bayne 6e53f924ba Enable more tests, we pass many of them. Woo!
This also improves failure reporting for specs tests.
2014-12-16 09:45:48 -08:00
Michael Bayne 79c7fd2cb0 Re-escape \r and \n in failure reports. 2014-12-16 09:45:48 -08:00
Michael Bayne ef4184404d Trim newlines from section tags with leading+trailing whitespace.
Other implementations apparently do it, and we have to keep up with the
Joneses.

Closes #59.
2014-12-16 09:45:37 -08:00