scaffolder-backend: fix SecureTemplater cookiecutter compat using wrong syntax

Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
This commit is contained in:
Patrik Oldsberg
2021-11-24 01:53:25 +01:00
parent a096e4c4d7
commit 621e1a11be
2 changed files with 14 additions and 7 deletions
@@ -49,16 +49,16 @@ describe('SecureTemplater', () => {
// Same two tests repeated to make sure switching back and forth works
expect(
templater.render('${{ 1 | jsonify }}', {}, { cookiecutterCompat: true }),
templater.render('{{ 1 | jsonify }}', {}, { cookiecutterCompat: true }),
).toBe('1');
expect(
templater.render('${{ 1 | jsonify }}', {}, { cookiecutterCompat: true }),
templater.render('{{ 1 | jsonify }}', {}, { cookiecutterCompat: true }),
).toBe('1');
expect(() => templater.render('${{ 1 | jsonify }}', {})).toThrow(
'(unknown path)\n Error: filter not found: jsonify',
);
expect(
templater.render('${{ 1 | jsonify }}', {}, { cookiecutterCompat: true }),
templater.render('{{ 1 | jsonify }}', {}, { cookiecutterCompat: true }),
).toBe('1');
expect(() => templater.render('${{ 1 | jsonify }}', {})).toThrow(
'(unknown path)\n Error: filter not found: jsonify',
@@ -70,7 +70,7 @@ describe('SecureTemplater', () => {
'(unknown path)\n Error: filter not found: jsonify',
);
expect(
templater.render('${{ 1 | jsonify }}', {}, { cookiecutterCompat: true }),
templater.render('{{ 1 | jsonify }}', {}, { cookiecutterCompat: true }),
).toBe('1');
});
@@ -35,6 +35,15 @@ const { render, renderCompat } = (() => {
},
});
const compatEnv = module.exports.configure({
autoescape: false,
tags: {
variableStart: '{{',
variableEnd: '}}',
},
});
compatEnv.addFilter('jsonify', compatEnv.getFilter('dump'));
if (typeof parseRepoUrl !== 'undefined') {
env.addFilter('parseRepoUrl', repoUrl => {
return JSON.parse(parseRepoUrl(repoUrl))
@@ -52,7 +61,6 @@ const { render, renderCompat } = (() => {
if (uninstallCompat) {
uninstallCompat();
uninstallCompat = undefined;
delete env.filters.jsonify;
}
return env.renderString(str, JSON.parse(values));
} catch (error) {
@@ -65,9 +73,8 @@ const { render, renderCompat } = (() => {
try {
if (!uninstallCompat) {
uninstallCompat = module.exports.installJinjaCompat();
env.filters.jsonify = env.filters.dump;
}
return env.renderString(str, JSON.parse(values));
return compatEnv.renderString(str, JSON.parse(values));
} catch (error) {
// Make sure errors don't leak anything
throw new Error(String(error.message));