first attempt at testing malformed style parsing
This commit is contained in:
@@ -4,7 +4,6 @@
|
||||
var path = require('path');
|
||||
var fs = require('fs');
|
||||
var mkdirp = require('./mkdirp');
|
||||
var name = 'style';
|
||||
var data = JSON.stringify(require(path.join(process.cwd(), process.argv[2])));
|
||||
|
||||
var out_path = path.join(process.argv[3], 'bin/style.min.js');
|
||||
|
||||
24
bin/fuzz-style.js
Normal file
24
bin/fuzz-style.js
Normal file
@@ -0,0 +1,24 @@
|
||||
#!/usr/bin/env node
|
||||
'use strict';
|
||||
|
||||
var fuzzer = require('fuzzer');
|
||||
var path = require('path');
|
||||
var fs = require('fs');
|
||||
var mkdirp = require('./mkdirp');
|
||||
var json = require(path.join(process.cwd(), process.argv[2]));
|
||||
|
||||
fuzzer.seed(0);
|
||||
|
||||
json.constants = Object.keys(json.constants).reduce(function(obj, key, index) {
|
||||
var value = json.constants[key];
|
||||
if (typeof value === 'string') {
|
||||
obj[key] = fuzzer.mutate.string(value);
|
||||
}
|
||||
return obj;
|
||||
}, {});
|
||||
|
||||
var data = JSON.stringify(json);
|
||||
|
||||
var out_path = path.join(process.argv[3], 'bin/style-fuzzed.min.js');
|
||||
mkdirp.sync(path.dirname(out_path));
|
||||
fs.writeFileSync(out_path, data);
|
||||
@@ -1,7 +1,8 @@
|
||||
{
|
||||
"name": "llmr-native",
|
||||
"version": "0.0.1",
|
||||
"dependencies": {
|
||||
"glsl-optimizer": "git://github.com/kkaefer/glsl-optimizer.git#amalgamation"
|
||||
}
|
||||
"name": "llmr-native",
|
||||
"version": "0.0.1",
|
||||
"dependencies": {
|
||||
"fuzzer": "^0.2.0",
|
||||
"glsl-optimizer": "git://github.com/kkaefer/glsl-optimizer.git#amalgamation"
|
||||
}
|
||||
}
|
||||
|
||||
24
llmr.gyp
24
llmr.gyp
@@ -55,6 +55,28 @@
|
||||
],
|
||||
}
|
||||
},
|
||||
{
|
||||
'target_name': 'fuzz_stylesheet',
|
||||
'type': 'none',
|
||||
'hard_dependency': 1,
|
||||
'actions': [
|
||||
{
|
||||
'action_name': 'Fuzz Stylesheet',
|
||||
'inputs': [
|
||||
'bin/style.js',
|
||||
],
|
||||
'outputs': [
|
||||
'<(SHARED_INTERMEDIATE_DIR)/bin/style-fuzzed.min.js'
|
||||
],
|
||||
'action': ['<@(node)', 'bin/fuzz-style.js', '<@(_inputs)', '<(SHARED_INTERMEDIATE_DIR)']
|
||||
}
|
||||
],
|
||||
'direct_dependent_settings': {
|
||||
'sources': [
|
||||
'<(SHARED_INTERMEDIATE_DIR)/bin/style-fuzzed.min.js'
|
||||
],
|
||||
}
|
||||
},
|
||||
{
|
||||
'target_name': 'llmr-x86',
|
||||
'product_name': 'llmr-x86',
|
||||
@@ -194,4 +216,4 @@
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
26
test/style.cpp
Normal file
26
test/style.cpp
Normal file
@@ -0,0 +1,26 @@
|
||||
#include "gtest/gtest.h"
|
||||
|
||||
#include <llmr/map/map.hpp>
|
||||
|
||||
#include "../common/headless_view.hpp"
|
||||
|
||||
#include <iostream>
|
||||
#include <fstream>
|
||||
|
||||
using namespace llmr;
|
||||
|
||||
TEST(Style, Color) {
|
||||
// Setup OpenGL
|
||||
llmr::HeadlessView view;
|
||||
llmr::Map map(view);
|
||||
|
||||
std::ifstream stylefile("./style-fuzzed.min.js");
|
||||
ASSERT_TRUE(stylefile.good());
|
||||
std::stringstream stylejson;
|
||||
stylejson << stylefile.rdbuf();
|
||||
|
||||
map.setStyleJSON(stylejson.str());
|
||||
|
||||
// ASSERT_EQ(std::string(""), styles[0]->clip.mask);
|
||||
// ASSERT_EQ(3, styles[0]->clip.length);
|
||||
}
|
||||
@@ -80,6 +80,22 @@
|
||||
"../llmr.gyp:llmr-x86"
|
||||
]
|
||||
},
|
||||
{
|
||||
"target_name": "style",
|
||||
"product_name": "test_style",
|
||||
"type": "executable",
|
||||
"libraries": [
|
||||
"-lpthread",
|
||||
],
|
||||
"sources": [
|
||||
"./main.cpp",
|
||||
"./style.cpp",
|
||||
],
|
||||
"dependencies": [
|
||||
"../deps/gtest/gtest.gyp:gtest",
|
||||
"../llmr.gyp:llmr-x86"
|
||||
]
|
||||
},
|
||||
{
|
||||
"target_name": "variant",
|
||||
"product_name": "test_variant",
|
||||
|
||||
Reference in New Issue
Block a user