first attempt at testing malformed style parsing

This commit is contained in:
Mike Morris
2014-07-07 17:25:15 -07:00
parent 9b61e39ef3
commit 6f112849be
6 changed files with 95 additions and 7 deletions

View File

@@ -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
View 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);

View File

@@ -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"
}
}

View File

@@ -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
View 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);
}

View File

@@ -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",