tools: fix js2c regression
PR-URL: https://github.com/nodejs/node/pull/27980 Reviewed-By: Michaël Zasso <targos@protonmail.com> Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl> Reviewed-By: Joyee Cheung <joyeec9h3@gmail.com>
This commit is contained in:
parent
db013e1cd3
commit
cb92d243e8
1
node.gyp
1
node.gyp
@ -1094,6 +1094,7 @@
|
||||
'test/cctest/test_node_postmortem_metadata.cc',
|
||||
'test/cctest/test_environment.cc',
|
||||
'test/cctest/test_linked_binding.cc',
|
||||
'test/cctest/test_per_process.cc',
|
||||
'test/cctest/test_platform.cc',
|
||||
'test/cctest/test_report_util.cc',
|
||||
'test/cctest/test_traced_value.cc',
|
||||
|
@ -11,6 +11,9 @@
|
||||
#include "node_union_bytes.h"
|
||||
#include "v8.h"
|
||||
|
||||
// Forward declare test fixture for `friend` declaration.
|
||||
class PerProcessTest;
|
||||
|
||||
namespace node {
|
||||
namespace native_module {
|
||||
|
||||
@ -82,6 +85,8 @@ class NativeModuleLoader {
|
||||
|
||||
// Used to synchronize access to the code cache map
|
||||
Mutex code_cache_mutex_;
|
||||
|
||||
friend class ::PerProcessTest;
|
||||
};
|
||||
} // namespace native_module
|
||||
|
||||
|
34
test/cctest/test_per_process.cc
Normal file
34
test/cctest/test_per_process.cc
Normal file
@ -0,0 +1,34 @@
|
||||
#include "node_native_module.h"
|
||||
|
||||
#include "gtest/gtest.h"
|
||||
#include "node_test_fixture.h"
|
||||
|
||||
#include <string>
|
||||
|
||||
|
||||
using node::native_module::NativeModuleLoader;
|
||||
using node::native_module::NativeModuleRecordMap;
|
||||
|
||||
class PerProcessTest : public ::testing::Test {
|
||||
protected:
|
||||
static const NativeModuleRecordMap get_sources_for_test() {
|
||||
return NativeModuleLoader::instance_.source_;
|
||||
}
|
||||
};
|
||||
|
||||
namespace {
|
||||
|
||||
TEST_F(PerProcessTest, EmbeddedSources) {
|
||||
const auto& sources = PerProcessTest::get_sources_for_test();
|
||||
ASSERT_TRUE(
|
||||
std::any_of(sources.cbegin(), sources.cend(),
|
||||
[](auto p){ return p.second.is_one_byte(); }))
|
||||
<< "NativeModuleLoader::source_ should have some 8bit items";
|
||||
|
||||
ASSERT_TRUE(
|
||||
std::any_of(sources.cbegin(), sources.cend(),
|
||||
[](auto p){ return !p.second.is_one_byte(); }))
|
||||
<< "NativeModuleLoader::source_ should have some 16bit items";
|
||||
}
|
||||
|
||||
} // end namespace
|
@ -200,6 +200,12 @@ UnionBytes NativeModuleLoader::GetConfig() {{
|
||||
}} // namespace node
|
||||
"""
|
||||
|
||||
ONE_BYTE_STRING = """
|
||||
static const uint8_t {0}[] = {{
|
||||
{1}
|
||||
}};
|
||||
"""
|
||||
|
||||
TWO_BYTE_STRING = """
|
||||
static const uint16_t {0}[] = {{
|
||||
{1}
|
||||
@ -215,15 +221,25 @@ SLUGGER_RE =re.compile('[.\-/]')
|
||||
is_verbose = False
|
||||
|
||||
def GetDefinition(var, source, step=30):
|
||||
template = ONE_BYTE_STRING
|
||||
code_points = [ord(c) for c in source]
|
||||
if any(c > 127 for c in code_points):
|
||||
template = TWO_BYTE_STRING
|
||||
# Treat non-ASCII as UTF-8 and encode as UTF-16 Little Endian.
|
||||
encoded_source = bytearray(source, 'utf-16le')
|
||||
code_points = [encoded_source[i] + (encoded_source[i+1] * 256) for i in range(0, len(encoded_source), 2)]
|
||||
code_points = [
|
||||
encoded_source[i] + (encoded_source[i + 1] * 256)
|
||||
for i in range(0, len(encoded_source), 2)
|
||||
]
|
||||
|
||||
# For easier debugging, align to the common 3 char for code-points.
|
||||
elements_s = ['%3s' % x for x in code_points]
|
||||
# Put no more then `step` code-points in a line.
|
||||
slices = [elements_s[i:i + step] for i in range(0, len(elements_s), step)]
|
||||
lines = [','.join(s) for s in slices]
|
||||
array_content = ',\n'.join(lines)
|
||||
definition = TWO_BYTE_STRING.format(var, array_content)
|
||||
definition = template.format(var, array_content)
|
||||
|
||||
return definition, len(code_points)
|
||||
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user