mirror of https://gitee.com/bigwinds/arangodb
we now support umlaut temp dirs; create multi-layer temp-dirs; add tests (#9008)
* we now support umlaut temp dirs; create multi-layer temp-dirs; add tests * Fix log
This commit is contained in:
parent
bdc2c7cdc4
commit
3c5193231f
|
@ -85,7 +85,14 @@ function arangosh (options) {
|
|||
print('--------------------------------------------------------------------------------');
|
||||
print(title);
|
||||
print('--------------------------------------------------------------------------------');
|
||||
|
||||
let weirdNames = ['some dog', 'ла́ять', '犬', 'Kläffer'];
|
||||
let tmpPath = fs.getTempPath();
|
||||
let tmp = fs.join(tmpPath, weirdNames[0], weirdNames[1], weirdNames[2], weirdNames[3]);
|
||||
process.env.TMPDIR = tmp;
|
||||
process.env.TEMP = tmp;
|
||||
process.env.TMP = tmp;
|
||||
fs.makeDirectoryRecursive(process.env.TMPDIR);
|
||||
pu.cleanupDBDirectoriesAppend(tmp);
|
||||
let args = pu.makeArgs.arangosh(options);
|
||||
args['javascript.execute-string'] = command;
|
||||
args['log.level'] = 'error';
|
||||
|
@ -119,6 +126,11 @@ function arangosh (options) {
|
|||
print(rc);
|
||||
print('expect rc: ' + expectedReturnCode);
|
||||
}
|
||||
// re-set the environment
|
||||
process.env.TMPDIR = tmpPath;
|
||||
process.env.TEMP = tmpPath;
|
||||
process.env.TMP = tmpPath;
|
||||
|
||||
}
|
||||
|
||||
runTest('testArangoshExitCodeNoConnect',
|
||||
|
|
|
@ -29,7 +29,8 @@
|
|||
// server is started in unicode directory
|
||||
|
||||
const tu = require('@arangodb/test-utils');
|
||||
const fs = require("fs");
|
||||
const fs = require('fs');
|
||||
const _ = require('lodash');
|
||||
|
||||
const functionsDocumentation = {
|
||||
'paths': 'paths test for server'
|
||||
|
@ -41,14 +42,17 @@ const testPaths = {
|
|||
|
||||
function paths_server(options) {
|
||||
let testCases = tu.scanTestPaths(testPaths.paths_server);
|
||||
let weirdNames = ["some dog", "ла́ять", "犬", "Kläffer"];
|
||||
let weirdNames = ['some dog', 'ла́ять', '犬', 'Kläffer'];
|
||||
let tmpPath = fs.getTempPath();
|
||||
let tmp = fs.join(tmpPath, "x", weirdNames[0], weirdNames[1], weirdNames[2], weirdNames[3]);
|
||||
process.env.TMPDIR = tmp;
|
||||
process.env.TEMP = tmp;
|
||||
process.env.TMP = tmp;
|
||||
fs.makeDirectoryRecursive(process.env.TMPDIR);
|
||||
let rc = tu.performTests(options, testCases, fs.join('server_paths', weirdNames[0], weirdNames[1], weirdNames[2], weirdNames[3]), tu.runThere);
|
||||
let opts = _.clone(options);
|
||||
// procdump can't stand weird characters in programm options
|
||||
opts.disableMonitor = true;
|
||||
let rc = tu.performTests(opts, testCases, fs.join('server_paths', weirdNames[0], weirdNames[1], weirdNames[2], weirdNames[3]), tu.runThere);
|
||||
process.env.TMPDIR = tmpPath;
|
||||
process.env.TEMP = tmpPath;
|
||||
process.env.TMP = tmpPath;
|
||||
|
|
|
@ -1954,19 +1954,7 @@ static std::string getTempPath() {
|
|||
}
|
||||
|
||||
std::string result = fromWString(tempPathName, dwReturnValue);
|
||||
// ...........................................................................
|
||||
// Whether or not UNICODE is defined, we assume that the temporary file name
|
||||
// fits in the ascii set of characters. This is a small compromise so that
|
||||
// temporary file names can be extra long if required.
|
||||
// ...........................................................................
|
||||
|
||||
for (auto const& it : result) {
|
||||
if (static_cast<uint8_t>(it) > 127) {
|
||||
LOG_TOPIC("89d82", FATAL, arangodb::Logger::FIXME)
|
||||
<< "Invalid characters in temporary path name: '" << result << "'";
|
||||
FATAL_ERROR_ABORT();
|
||||
}
|
||||
}
|
||||
if (result.empty() || (result.back() != TRI_DIR_SEPARATOR_CHAR)) {
|
||||
result += TRI_DIR_SEPARATOR_STR;
|
||||
}
|
||||
|
@ -1989,6 +1977,20 @@ static int mkDTemp(char* s, size_t bufferSize) {
|
|||
tmp = fromWString(ws);
|
||||
memcpy(s, tmp.data(), bufferSize); // copy back into parameter
|
||||
rc = TRI_MKDIR(s, 0700);
|
||||
if (rc != 0) {
|
||||
rc = errno;
|
||||
if (rc == ENOENT) {
|
||||
// for some reason we should create the upper directory too?
|
||||
std::string error;
|
||||
long systemError;
|
||||
rc = TRI_CreateRecursiveDirectory(s, systemError, error);
|
||||
if (rc != 0) {
|
||||
LOG_TOPIC("6656f", ERR, arangodb::Logger::FIXME)
|
||||
<< "Unable to create temporary directory " << error;
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// should error be translated to arango error code?
|
||||
|
|
Loading…
Reference in New Issue