Skip to content

Commit

Permalink
Add debug build option to napi modules (jerryscript-project#1862)
Browse files Browse the repository at this point in the history
IoT.js-DCO-1.0-Signed-off-by: Daniel Balla dballa@inf.u-szeged.hu
  • Loading branch information
Daniel Balla authored and yichoi committed Apr 25, 2019
1 parent c82e021 commit b3a150e
Show file tree
Hide file tree
Showing 31 changed files with 107 additions and 32 deletions.
3 changes: 3 additions & 0 deletions src/iotjs_magic_strings.h
Original file line number Diff line number Diff line change
Expand Up @@ -103,6 +103,9 @@
#if ENABLE_MODULE_UART
#define IOTJS_MAGIC_STRING_DATABITS "dataBits"
#endif
#ifdef DEBUG
#define IOTJS_MAGIC_STRING_DEBUG "debug"
#endif
#define IOTJS_MAGIC_STRING_DEBUGGERGETSOURCE "debuggerGetSource"
#define IOTJS_MAGIC_STRING_DEBUGGERWAITSOURCE "debuggerWaitSource"
#if ENABLE_MODULE_WEBSOCKET
Expand Down
17 changes: 17 additions & 0 deletions src/modules/iotjs_module_process.c
Original file line number Diff line number Diff line change
Expand Up @@ -383,6 +383,23 @@ jerry_value_t InitProcess(void) {
#ifdef EXPOSE_GC
iotjs_jval_set_method(process, IOTJS_MAGIC_STRING_GC, Gc);
#endif
#ifdef DEBUG
jerry_property_descriptor_t prop_desc;
jerry_init_property_descriptor_fields(&prop_desc);

prop_desc.is_value_defined = true;
prop_desc.is_writable_defined = true;
prop_desc.is_configurable_defined = true;
prop_desc.value = jerry_create_boolean(true);

jerry_value_t property_name =
jerry_create_string((jerry_char_t*)IOTJS_MAGIC_STRING_DEBUG);
jerry_value_t prop_ret_val =
jerry_define_own_property(process, property_name, &prop_desc);
jerry_release_value(prop_ret_val);
jerry_release_value(property_name);
jerry_free_property_descriptor_fields(&prop_desc);
#endif
/* FIXME: Move this platform dependent code path to libtuv
*
* See the related commit in libuv:
Expand Down
3 changes: 3 additions & 0 deletions test/napi/common.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@
var assert = require('assert');
var mustCallChecks = [];

var buildTypePath = process.debug ? 'Debug' : 'Release';

function mustCall(fn, criteria) {
if (typeof fn === 'number') {
criteria = fn;
Expand Down Expand Up @@ -62,6 +64,7 @@ function expectsError(fn, exact) {
module.exports = {
mustCall: mustCall,
expectsError: expectsError,
buildTypePath: buildTypePath,
// don't use port in a parallelized test
PORT: process.env.NODE_COMMON_PORT || 12306
};
4 changes: 3 additions & 1 deletion test/napi/test_napi_arguments_return.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
'use strict';
var assert = require('assert');
var test = require('./build/Release/test_napi_arguments.node');
var common = require('common.js');
var test = require('./build/' + common.buildTypePath +
'/test_napi_arguments.node');


var obj = {};
Expand Down
4 changes: 3 additions & 1 deletion test/napi/test_napi_arguments_return_this.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
'use strict';
var assert = require('assert');
var test = require('./build/Release/test_napi_arguments.node');
var common = require('common.js');
var test = require('./build/' + common.buildTypePath +
'/test_napi_arguments.node');


var obj = {};
Expand Down
4 changes: 3 additions & 1 deletion test/napi/test_napi_arguments_throw.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
'use strict';
var assert = require('assert');
var test = require('./build/Release/test_napi_arguments.node');
var common = require('common.js');
var test = require('./build/' + common.buildTypePath +
'/test_napi_arguments.node');

try {
test.Throw(new Error('foo'));
Expand Down
4 changes: 3 additions & 1 deletion test/napi/test_napi_array.js
Original file line number Diff line number Diff line change
@@ -1,8 +1,10 @@
'use strict';
var assert = require('assert');
var common = require('common.js');

// Testing api calls for arrays
var test_array = require('./build/Release/test_napi_array.node');
var test_array = require('./build/' + common.buildTypePath +
'/test_napi_array.node');

var array = [
1,
Expand Down
3 changes: 2 additions & 1 deletion test/napi/test_napi_async.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,8 @@

var common = require('common.js');
var assert = require('assert');
var test_async = require('./build/Release/test_napi_async.node');
var test_async = require('./build/' + common.buildTypePath +
'/test_napi_async.node');

// Successful async execution and completion callback.
test_async.Test(5, {}, common.mustCall(function(err, val) {
Expand Down
4 changes: 3 additions & 1 deletion test/napi/test_napi_buffer.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
'use strict';

var global = process;
var binding = require('./build/Release/test_napi_buffer.node');
var common = require('common.js');
var binding = require('./build/' + common.buildTypePath +
'/test_napi_buffer.node');
var assert = require('assert');

assert.strictEqual(binding.newBuffer().toString(), binding.theText);
Expand Down
4 changes: 3 additions & 1 deletion test/napi/test_napi_construct.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
'use strict';
var assert = require('assert');
var test = require('./build/Release/test_napi_construct.node');
var common = require('common.js');
var test = require('./build/' + common.buildTypePath +
'/test_napi_construct.node');

var val = test.Constructor(123);
assert.strictEqual(val.value, 123);
4 changes: 3 additions & 1 deletion test/napi/test_napi_conversions.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
'use strict';
var assert = require('assert');
var test = require('./build/Release/test_napi_conversions.node');
var common = require('common.js');
var test = require('./build/' + common.buildTypePath +
'/test_napi_conversions.node');

assert.strictEqual(false, test.asBool(false));
assert.strictEqual(true, test.asBool(true));
Expand Down
4 changes: 3 additions & 1 deletion test/napi/test_napi_create_error.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
var addon = require('./build/Release/test_napi_error_handling');
var common = require('common.js');
var addon = require('./build/' + common.buildTypePath +
'/test_napi_error_handling');
var assert = require('assert');

var ERROR_CODE = "ErrorCode";
Expand Down
7 changes: 5 additions & 2 deletions test/napi/test_napi_env.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,10 @@
'use strict';

var storeEnv = require('./build/Release/test_napi_env_store.node');
var compareEnv = require('./build/Release/test_napi_env_compare.node');
var common = require('common.js');
var storeEnv = require('./build/' + common.buildTypePath +
'/test_napi_env_store.node');
var compareEnv = require('./build/' + common.buildTypePath +
'/test_napi_env_compare.node');
var assert = require('assert');

// N-API environment pointers in two different modules must be different
Expand Down
4 changes: 3 additions & 1 deletion test/napi/test_napi_exception.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
var addon = require('./build/Release/test_napi_error_handling');
var common = require('common.js');
var addon = require('./build/' + common.buildTypePath +
'/test_napi_error_handling');
var assert = require('assert');

var ERROR_MSG = "ErrorMSG";
Expand Down
4 changes: 3 additions & 1 deletion test/napi/test_napi_general.js
Original file line number Diff line number Diff line change
Expand Up @@ -15,8 +15,10 @@

'use strict';
var assert = require('assert');
var common = require('common.js');

var test_general = require('./build/Release/test_napi_general.node');
var test_general = require('./build/' + common.buildTypePath +
'/test_napi_general.node');

assert.strictEqual(test_general.GetUndefined(), undefined);
assert.strictEqual(test_general.GetNull(), null);
Expand Down
4 changes: 3 additions & 1 deletion test/napi/test_napi_general_es2015.js
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,9 @@
'use strict';
var assert = require('assert');

var test_general = require('./build/Release/test_napi_general.node');
var common = require('common.js');
var test_general = require('./build/' + common.buildTypePath +
'/test_napi_general.node');

assert.strictEqual(test_general.GetUndefined(), undefined);
assert.strictEqual(test_general.GetNull(), null);
Expand Down
5 changes: 3 additions & 2 deletions test/napi/test_napi_handle_scope.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@

var common = require('common.js');
var assert = require('assert');
var testHandleScope = require('./build/Release/test_napi_handle_scope.node');
var testHandleScope = require('./build/' + common.buildTypePath +
'/test_napi_handle_scope.node');

testHandleScope.NewScope();

Expand Down
4 changes: 3 additions & 1 deletion test/napi/test_napi_is_error.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
var addon = require('./build/Release/test_napi_error_handling');
var common = require('common.js');
var addon = require('./build/' + common.buildTypePath +
'/test_napi_error_handling');
var assert = require('assert');

var err = new Error("ErrorMSG");
Expand Down
3 changes: 2 additions & 1 deletion test/napi/test_napi_make_callback.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,8 @@

var common = require('common.js');
var assert = require('assert');
var binding = require('./build/Release/test_napi_make_callback.node');
var binding = require('./build/' + common.buildTypePath +
'/test_napi_make_callback.node');
var makeCallback = binding.makeCallback;

function myMultiArgFunc(arg1, arg2, arg3) {
Expand Down
3 changes: 2 additions & 1 deletion test/napi/test_napi_make_callback_error.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,8 @@

var common = require('common.js');
var assert = require('assert');
var binding = require('./build/Release/test_napi_make_callback.node');
var binding = require('./build/' + common.buildTypePath +
'/test_napi_make_callback.node');
var makeCallback = binding.makeCallback;

var first = true;
Expand Down
4 changes: 3 additions & 1 deletion test/napi/test_napi_object_wrap.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@

'use strict';
var assert = require('assert');
var test = require('./build/Release/test_napi_object_wrap.node');
var common = require('common.js');
var test = require('./build/' + common.buildTypePath +
'/test_napi_object_wrap.node');

function context() {
var obj = {};
Expand Down
3 changes: 2 additions & 1 deletion test/napi/test_napi_promise.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,8 @@ var common = require('common.js');
// This tests the promise-related n-api calls

var assert = require('assert');
var test_promise = require('./build/Release/test_napi_promise.node');
var test_promise = require('./build/' + common.buildTypePath +
'/test_napi_promise.node');

// A resolution
{
Expand Down
4 changes: 3 additions & 1 deletion test/napi/test_napi_properties.js
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,10 @@
*/

var assert = require('assert');
var common = require('common.js');

var prop_module = require('./build/Release/test_napi_properties.node');
var prop_module = require('./build/' + common.buildTypePath +
'/test_napi_properties.node');

var obj = {
array: [
Expand Down
4 changes: 3 additions & 1 deletion test/napi/test_napi_reference.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,10 @@
// Flags: --expose-gc

var assert = require('assert');
var common = require('common.js');

var test_reference = require('./build/Release/test_napi_reference.node');
var test_reference = require('./build/' + common.buildTypePath +
'/test_napi_reference.node');

// This test script uses external values with finalizer callbacks
// in order to track when values get garbage-collected. Each invocation
Expand Down
4 changes: 3 additions & 1 deletion test/napi/test_napi_strictequal_and_instanceof.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
'use strict';
var assert = require('assert');
var common = require('common.js');
var napi_test =
require('./build/Release/test_napi_strictequal_and_instanceof.node');
require('./build/' + common.buildTypePath +
'/test_napi_strictequal_and_instanceof.node');

assert(napi_test !== null);
assert.strictEqual(typeof napi_test, 'object');
Expand Down
4 changes: 3 additions & 1 deletion test/napi/test_napi_string.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
'use strict';
var assert = require('assert');
var test = require('./build/Release/test_napi_string.node');
var common = require('common.js');
var test = require('./build/' + common.buildTypePath +
'/test_napi_string.node');

var empty = '';
assert.strictEqual(test.TestUtf8(empty), empty);
Expand Down
4 changes: 3 additions & 1 deletion test/napi/test_napi_symbol.js
Original file line number Diff line number Diff line change
@@ -1,8 +1,10 @@
'use strict';
var assert = require('assert');
var common = require('common.js');

// testing api calls for symbol
var test_symbol = require('./build/Release/test_napi_symbol.node');
var test_symbol = require('./build/' + common.buildTypePath +
'/test_napi_symbol.node');

var sym = test_symbol.CreateSymbol('test');
assert.strictEqual(sym.toString(), 'Symbol(test)');
Expand Down
4 changes: 3 additions & 1 deletion test/napi/test_napi_throw.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
var addon = require('./build/Release/test_napi_error_handling');
var common = require('common.js');
var addon = require('./build/' + common.buildTypePath +
'/test_napi_error_handling');
var assert = require('assert');

var ERROR_MSG = "ErrorMSG";
Expand Down
4 changes: 3 additions & 1 deletion test/napi/test_napi_throw_error.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
var addon = require('./build/Release/test_napi_error_handling');
var common = require('common.js');
var addon = require('./build/' + common.buildTypePath +
'/test_napi_error_handling');
var assert = require('assert');

var error;
Expand Down
3 changes: 2 additions & 1 deletion test/tools/iotjs_build_info.js
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,8 @@ if (hasArrowFunction())
result = {
'builtins': builtins,
'features': features,
'stability': stability
'stability': stability,
'debug': !!process.debug
}

console.log(JSON.stringify(result))
9 changes: 6 additions & 3 deletions tools/testrunner.py
Original file line number Diff line number Diff line change
Expand Up @@ -165,8 +165,9 @@ def __init__(self, options):
self.builtins = set(build_info["builtins"])
self.features = set(build_info["features"])
self.stability = build_info["stability"]
self.debug = build_info["debug"]
if options.n_api:
build_napi_test_module()
build_napi_test_module(self.debug)

def run(self):
Reporter.report_configuration(self)
Expand Down Expand Up @@ -313,7 +314,7 @@ def skip_test(self, test):
return False


def build_napi_test_module():
def build_napi_test_module(is_debug):
node_gyp = fs.join(path.PROJECT_ROOT,
'node_modules',
'.bin',
Expand All @@ -322,7 +323,9 @@ def build_napi_test_module():
print('==> Build N-API test module with node-gyp\n')

project_root = fs.join(path.PROJECT_ROOT, 'test', 'napi')
Executor.check_run_cmd(node_gyp, ['configure', 'rebuild'], cwd=project_root)
debug_cmd = '--debug' if is_debug else '--release'
Executor.check_run_cmd(node_gyp, ['configure', debug_cmd ,'rebuild'],
cwd=project_root)


def get_args():
Expand Down

0 comments on commit b3a150e

Please sign in to comment.