mirror of
https://github.com/pgbackrest/pgbackrest.git
synced 2024-12-12 10:04:14 +02:00
Use uncrustify for code formatting.
The code is not completely reflowed yet so there are some cases that uncrustify will not catch. The formatting will be improved over time. Some block of code require special formatting so have been surrounded with the {uncrustify-off}/{uncrustify-on} markers. These exceptions should be kept to a minimum. Add --code-format (to reformat code) and --code-format-check (to check formatting) to test.pl. Add a CI test that will check code formatting. Code must be correctly formatted before it can be merge to integration. Add documentation to the coding standards for code formatting.
This commit is contained in:
parent
d4070c9064
commit
ce0ea2cfab
5
.git-blame-ignore-revs
Normal file
5
.git-blame-ignore-revs
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
# Reformat code with uncrustify.
|
||||||
|
d4070c90641a61fa3cb1169f3bd53067193bab4e
|
||||||
|
|
||||||
|
# Fix formatting errors.
|
||||||
|
b2202c36d9e7c4557ac37087757df80193d516b5
|
14
.github/workflows/test.yml
vendored
14
.github/workflows/test.yml
vendored
@ -127,6 +127,20 @@ jobs:
|
|||||||
run: |
|
run: |
|
||||||
diff ${GITHUB_WORKSPACE?}/pgbackrest/.github/workflows/symbol.out <(nm -gj --defined-only build/src/pgbackrest)
|
diff ${GITHUB_WORKSPACE?}/pgbackrest/.github/workflows/symbol.out <(nm -gj --defined-only build/src/pgbackrest)
|
||||||
|
|
||||||
|
# Check that code is correctly formatted
|
||||||
|
code-format:
|
||||||
|
runs-on: ubuntu-22.04
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Checkout Code
|
||||||
|
uses: actions/checkout@v2
|
||||||
|
with:
|
||||||
|
path: pgbackrest
|
||||||
|
|
||||||
|
- name: Check
|
||||||
|
run: |
|
||||||
|
cd ${HOME?} && ${GITHUB_WORKSPACE?}/pgbackrest/test/ci.pl test --vm=none --param=code-format-check
|
||||||
|
|
||||||
codeql:
|
codeql:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
|
@ -1,5 +1,13 @@
|
|||||||
# pgBackRest <br/> Coding Standards
|
# pgBackRest <br/> Coding Standards
|
||||||
|
|
||||||
|
## Formatting with uncrustify
|
||||||
|
|
||||||
|
pgBackRest uses uncrustify to check/update the code formatting. If the `code-format` test fails in CI then reformat the code:
|
||||||
|
```
|
||||||
|
pgbackrest/test/test.pl --code-format
|
||||||
|
```
|
||||||
|
Also review the standards in the following sections below. Some standards require further explanation and others are not enforced by uncrustify.
|
||||||
|
|
||||||
## Standards
|
## Standards
|
||||||
|
|
||||||
### Indentation
|
### Indentation
|
||||||
|
@ -3,6 +3,20 @@
|
|||||||
<doc title="{[project]}" subtitle="Coding Standards" toc="y">
|
<doc title="{[project]}" subtitle="Coding Standards" toc="y">
|
||||||
<description>{[project]} Coding Standard.</description>
|
<description>{[project]} Coding Standard.</description>
|
||||||
|
|
||||||
|
<!-- ======================================================================================================================= -->
|
||||||
|
<section id="uncrustify">
|
||||||
|
<title>Formatting with <proper>uncrustify</proper></title>
|
||||||
|
|
||||||
|
<p><backrest/> uses <proper>uncrustify</proper> to check/update the code formatting. If the <id>code-format</id> test fails in CI then reformat the code:</p>
|
||||||
|
|
||||||
|
<code-block>
|
||||||
|
pgbackrest/test/test.pl --code-format
|
||||||
|
</code-block>
|
||||||
|
|
||||||
|
<p>Also review the standards in the following sections below. Some standards require further explanation and others are not enforced by <proper>uncrustify</proper>.</p>
|
||||||
|
|
||||||
|
</section>
|
||||||
|
|
||||||
<!-- ======================================================================================================================= -->
|
<!-- ======================================================================================================================= -->
|
||||||
<section id="standards">
|
<section id="standards">
|
||||||
<title>Standards</title>
|
<title>Standards</title>
|
||||||
|
@ -12,6 +12,7 @@ Build Common
|
|||||||
/***********************************************************************************************************************************
|
/***********************************************************************************************************************************
|
||||||
Block comments
|
Block comments
|
||||||
***********************************************************************************************************************************/
|
***********************************************************************************************************************************/
|
||||||
|
// {uncrustify_off - comment inside string}
|
||||||
#define COMMENT_BLOCK_BEGIN \
|
#define COMMENT_BLOCK_BEGIN \
|
||||||
"/***************************************************************************************************************************" \
|
"/***************************************************************************************************************************" \
|
||||||
"********"
|
"********"
|
||||||
@ -23,6 +24,7 @@ Block comments
|
|||||||
#define COMMENT_SEPARATOR \
|
#define COMMENT_SEPARATOR \
|
||||||
" // ---------------------------------------------------------------------------------------------------------------------" \
|
" // ---------------------------------------------------------------------------------------------------------------------" \
|
||||||
"--------"
|
"--------"
|
||||||
|
// {uncrustify_on}
|
||||||
|
|
||||||
/***********************************************************************************************************************************
|
/***********************************************************************************************************************************
|
||||||
Functions
|
Functions
|
||||||
|
@ -360,6 +360,7 @@ encodeToStrSizeHex(const size_t sourceSize)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**********************************************************************************************************************************/
|
/**********************************************************************************************************************************/
|
||||||
|
// {uncrustify_off - array alignment}
|
||||||
static const int8_t decodeHexLookup[256] =
|
static const int8_t decodeHexLookup[256] =
|
||||||
{
|
{
|
||||||
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
|
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
|
||||||
@ -379,6 +380,7 @@ static const int8_t decodeHexLookup[256] =
|
|||||||
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
|
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
|
||||||
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
|
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
|
||||||
};
|
};
|
||||||
|
// {uncrustify_on}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
decodeToBinValidateHex(const char *const source)
|
decodeToBinValidateHex(const char *const source)
|
||||||
|
@ -83,6 +83,7 @@ https://en.wikipedia.org/wiki/Logjam_(computer_security).
|
|||||||
// Hardcoded DH parameters, used in ephemeral DH keying. This is the 2048-bit DH parameter from RFC 3526. The generation of the
|
// Hardcoded DH parameters, used in ephemeral DH keying. This is the 2048-bit DH parameter from RFC 3526. The generation of the
|
||||||
// prime is specified in RFC 2412 Appendix E, which also discusses the design choice of the generator. Note that when loaded with
|
// prime is specified in RFC 2412 Appendix E, which also discusses the design choice of the generator. Note that when loaded with
|
||||||
// OpenSSL this causes DH_check() to fail on DH_NOT_SUITABLE_GENERATOR, where leaking a bit is preferred.
|
// OpenSSL this causes DH_check() to fail on DH_NOT_SUITABLE_GENERATOR, where leaking a bit is preferred.
|
||||||
|
// {uncrustify_off - comment inside string}
|
||||||
#define DH_2048 \
|
#define DH_2048 \
|
||||||
"-----BEGIN DH PARAMETERS-----\n" \
|
"-----BEGIN DH PARAMETERS-----\n" \
|
||||||
"MIIBCAKCAQEA///////////JD9qiIWjCNMTGYouA3BzRKQJOCIpnzHQCC76mOxOb\n" \
|
"MIIBCAKCAQEA///////////JD9qiIWjCNMTGYouA3BzRKQJOCIpnzHQCC76mOxOb\n" \
|
||||||
@ -92,6 +93,7 @@ https://en.wikipedia.org/wiki/Logjam_(computer_security).
|
|||||||
"fDKQXkYuNs474553LBgOhgObJ4Oi7Aeij7XFXfBvTFLJ3ivL9pVYFxg5lUl86pVq\n" \
|
"fDKQXkYuNs474553LBgOhgObJ4Oi7Aeij7XFXfBvTFLJ3ivL9pVYFxg5lUl86pVq\n" \
|
||||||
"5RXSJhiY+gUQFXKOWoqsqmj//////////wIBAg==\n" \
|
"5RXSJhiY+gUQFXKOWoqsqmj//////////wIBAg==\n" \
|
||||||
"-----END DH PARAMETERS-----"
|
"-----END DH PARAMETERS-----"
|
||||||
|
// {uncrustify_on}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
tlsServerDh(SSL_CTX *const context)
|
tlsServerDh(SSL_CTX *const context)
|
||||||
|
@ -103,8 +103,9 @@ typedef struct MemContextCallbackOne
|
|||||||
} MemContextCallbackOne;
|
} MemContextCallbackOne;
|
||||||
|
|
||||||
/***********************************************************************************************************************************
|
/***********************************************************************************************************************************
|
||||||
Possible sizes for the manifest based on options. Formatting has been compressed to save space.
|
Possible sizes for the manifest based on options
|
||||||
***********************************************************************************************************************************/
|
***********************************************************************************************************************************/
|
||||||
|
// {uncrustify_off - formatting compressed to save space}
|
||||||
static const uint8_t memContextSizePossible[memQtyMany + 1][memQtyMany + 1][memQtyOne + 1] =
|
static const uint8_t memContextSizePossible[memQtyMany + 1][memQtyMany + 1][memQtyOne + 1] =
|
||||||
{
|
{
|
||||||
// child none
|
// child none
|
||||||
@ -137,6 +138,7 @@ static const uint8_t memContextSizePossible[memQtyMany + 1][memQtyMany + 1][memQ
|
|||||||
{/* callback none */ sizeof(MemContextChildMany) + sizeof(MemContextAllocMany),
|
{/* callback none */ sizeof(MemContextChildMany) + sizeof(MemContextAllocMany),
|
||||||
/* callback one */ sizeof(MemContextChildMany) + sizeof(MemContextAllocMany) + sizeof(MemContextCallbackOne)}},
|
/* callback one */ sizeof(MemContextChildMany) + sizeof(MemContextAllocMany) + sizeof(MemContextCallbackOne)}},
|
||||||
};
|
};
|
||||||
|
// {uncrustify_on}
|
||||||
|
|
||||||
/***********************************************************************************************************************************
|
/***********************************************************************************************************************************
|
||||||
Get pointers to optional parts of the manifest
|
Get pointers to optional parts of the manifest
|
||||||
|
@ -43,6 +43,7 @@ strIdBitFromZN(const StringIdBit bit, const char *const buffer, size_t size)
|
|||||||
case stringIdBit5:
|
case stringIdBit5:
|
||||||
{
|
{
|
||||||
// Map to convert characters to encoding
|
// Map to convert characters to encoding
|
||||||
|
// {uncrustify_off - array alignment}
|
||||||
static const uint8_t map[256] =
|
static const uint8_t map[256] =
|
||||||
{
|
{
|
||||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
@ -62,6 +63,7 @@ strIdBitFromZN(const StringIdBit bit, const char *const buffer, size_t size)
|
|||||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
};
|
};
|
||||||
|
// {uncrustify_on}
|
||||||
|
|
||||||
// Make sure the string is valid for this encoding
|
// Make sure the string is valid for this encoding
|
||||||
for (size_t bufferIdx = 0; bufferIdx < size; bufferIdx++)
|
for (size_t bufferIdx = 0; bufferIdx < size; bufferIdx++)
|
||||||
@ -132,6 +134,7 @@ strIdBitFromZN(const StringIdBit bit, const char *const buffer, size_t size)
|
|||||||
ASSERT(bit == stringIdBit6);
|
ASSERT(bit == stringIdBit6);
|
||||||
|
|
||||||
// Map to convert characters to encoding
|
// Map to convert characters to encoding
|
||||||
|
// {uncrustify_off - array alignment}
|
||||||
static const uint8_t map[256] =
|
static const uint8_t map[256] =
|
||||||
{
|
{
|
||||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
@ -151,6 +154,7 @@ strIdBitFromZN(const StringIdBit bit, const char *const buffer, size_t size)
|
|||||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
};
|
};
|
||||||
|
// {uncrustify_on}
|
||||||
|
|
||||||
// Make sure the string is valid for this encoding
|
// Make sure the string is valid for this encoding
|
||||||
for (size_t bufferIdx = 0; bufferIdx < size; bufferIdx++)
|
for (size_t bufferIdx = 0; bufferIdx < size; bufferIdx++)
|
||||||
|
@ -27,7 +27,9 @@ Function types for loading and saving
|
|||||||
// The purpose of this callback is to attempt a load (from file or otherwise). Return true when the load is successful or throw an
|
// The purpose of this callback is to attempt a load (from file or otherwise). Return true when the load is successful or throw an
|
||||||
// error. Return false when there are no more loads to try, but always make at least one load attempt. The try parameter will
|
// error. Return false when there are no more loads to try, but always make at least one load attempt. The try parameter will
|
||||||
// start at 0 and be incremented on each call.
|
// start at 0 and be incremented on each call.
|
||||||
|
// {uncrustify_off - uncrustify unable to parse this statement}
|
||||||
typedef bool InfoLoadCallback(void *data, unsigned int try);
|
typedef bool InfoLoadCallback(void *data, unsigned int try);
|
||||||
|
// {uncrustify_on}
|
||||||
|
|
||||||
typedef void InfoLoadNewCallback(void *data, const String *section, const String *key, const String *value);
|
typedef void InfoLoadNewCallback(void *data, const String *section, const String *key, const String *value);
|
||||||
typedef void InfoSaveCallback(void *data, const String *sectionNext, InfoSave *infoSaveData);
|
typedef void InfoSaveCallback(void *data, const String *sectionNext, InfoSave *infoSaveData);
|
||||||
|
@ -1,6 +1,9 @@
|
|||||||
# export PGB=pgbackrest;export PGB_IMAGE=$PGB/test:u22-main;PGB_REPO=~/Documents/Code/$PGB
|
# export PGB=pgbackrest;export PGB_IMAGE=$PGB/test:u22-main;PGB_REPO=~/Documents/Code/$PGB
|
||||||
# docker build --squash -f $PGB_REPO/test/Dockerfile -t $PGB_IMAGE .
|
# docker build --squash -f $PGB_REPO/test/Dockerfile -t $PGB_IMAGE .
|
||||||
# docker run --privileged -itd --name $PGB-test -h $PGB-test -v $PGB_REPO:/home/vagrant/$PGB $PGB_IMAGE
|
# docker run --privileged -itd --name $PGB-test -h $PGB-test -v $PGB_REPO:/home/vagrant/$PGB $PGB_IMAGE
|
||||||
|
#
|
||||||
|
# When running test.pl --code-format permissions may get munged. Run this from the pgbackrest/test path to fix them:
|
||||||
|
# find .. | grep "\.[ch]$" | xargs xattr -rc && find .. | grep "\.[ch]$" | xargs chmod -x
|
||||||
FROM ubuntu:jammy
|
FROM ubuntu:jammy
|
||||||
|
|
||||||
# Install packages
|
# Install packages
|
||||||
@ -10,7 +13,7 @@ RUN DEBIAN_FRONTEND=noninteractive apt-get install --no-install-recommends -y \
|
|||||||
libdbd-pg-perl libxml-checker-perl libyaml-perl \
|
libdbd-pg-perl libxml-checker-perl libyaml-perl \
|
||||||
devscripts build-essential lintian git cloc txt2man debhelper libssl-dev zlib1g-dev libperl-dev libxml2-dev liblz4-dev \
|
devscripts build-essential lintian git cloc txt2man debhelper libssl-dev zlib1g-dev libperl-dev libxml2-dev liblz4-dev \
|
||||||
liblz4-tool libpq-dev lcov autoconf-archive zstd libzstd-dev bzip2 libbz2-dev pkg-config libyaml-dev libc6-dbg wget meson \
|
liblz4-tool libpq-dev lcov autoconf-archive zstd libzstd-dev bzip2 libbz2-dev pkg-config libyaml-dev libc6-dbg wget meson \
|
||||||
ccache valgrind tzdata
|
ccache valgrind tzdata uncrustify
|
||||||
|
|
||||||
# Install Docker
|
# Install Docker
|
||||||
RUN groupadd -g5000 docker
|
RUN groupadd -g5000 docker
|
||||||
|
2
test/Vagrantfile
vendored
2
test/Vagrantfile
vendored
@ -76,7 +76,7 @@ Vagrant.configure(2) do |config|
|
|||||||
echo 'Install Build Tools' && date
|
echo 'Install Build Tools' && date
|
||||||
apt-get install -y devscripts build-essential lintian git cloc txt2man debhelper libssl-dev zlib1g-dev libperl-dev \
|
apt-get install -y devscripts build-essential lintian git cloc txt2man debhelper libssl-dev zlib1g-dev libperl-dev \
|
||||||
libxml2-dev liblz4-dev liblz4-tool libpq-dev lcov autoconf-archive zstd libzstd-dev bzip2 libbz2-dev pkg-config \
|
libxml2-dev liblz4-dev liblz4-tool libpq-dev lcov autoconf-archive zstd libzstd-dev bzip2 libbz2-dev pkg-config \
|
||||||
libyaml-dev libc6-dbg valgrind meson ccache
|
libyaml-dev libc6-dbg valgrind meson ccache uncrustify
|
||||||
|
|
||||||
#-----------------------------------------------------------------------------------------------------------------------
|
#-----------------------------------------------------------------------------------------------------------------------
|
||||||
echo 'Install Docker' && date
|
echo 'Install Docker' && date
|
||||||
|
@ -188,7 +188,8 @@ eval
|
|||||||
{
|
{
|
||||||
# Build list of packages that need to be installed
|
# Build list of packages that need to be installed
|
||||||
my $strPackage =
|
my $strPackage =
|
||||||
"make gcc ccache meson python3-pip git rsync zlib1g-dev libssl-dev libxml2-dev libpq-dev libyaml-dev pkg-config";
|
"make gcc ccache meson python3-pip git rsync zlib1g-dev libssl-dev libxml2-dev libpq-dev libyaml-dev pkg-config" .
|
||||||
|
" uncrustify";
|
||||||
|
|
||||||
# Add lcov when testing coverage
|
# Add lcov when testing coverage
|
||||||
if (vmCoverageC($strVm))
|
if (vmCoverageC($strVm))
|
||||||
|
@ -343,6 +343,7 @@ testRun(void)
|
|||||||
|
|
||||||
TEST_RESULT_STR_Z(
|
TEST_RESULT_STR_Z(
|
||||||
hrnPackReadToStr(pckReadNew(pckWriteResult(bldHlpRenderHelpAutoCPack(bldCfg, bldHlpParse(storageTest, bldCfg))))),
|
hrnPackReadToStr(pckReadNew(pckWriteResult(bldHlpRenderHelpAutoCPack(bldCfg, bldHlpParse(storageTest, bldCfg))))),
|
||||||
|
// {uncrustify_off - indentation}
|
||||||
"1:array:"
|
"1:array:"
|
||||||
"["
|
"["
|
||||||
// backup command
|
// backup command
|
||||||
@ -400,6 +401,7 @@ testRun(void)
|
|||||||
", 2:str:stanza2"
|
", 2:str:stanza2"
|
||||||
"]"
|
"]"
|
||||||
"]",
|
"]",
|
||||||
|
// {uncrustify_on}
|
||||||
"parse and render");
|
"parse and render");
|
||||||
|
|
||||||
// -------------------------------------------------------------------------------------------------------------------------
|
// -------------------------------------------------------------------------------------------------------------------------
|
||||||
|
@ -50,6 +50,7 @@ testRun(void)
|
|||||||
HRN_CFG_LOAD(cfgCmdInfo, argListStanzaOpt);
|
HRN_CFG_LOAD(cfgCmdInfo, argListStanzaOpt);
|
||||||
TEST_RESULT_STR_Z(
|
TEST_RESULT_STR_Z(
|
||||||
infoRender(),
|
infoRender(),
|
||||||
|
// {uncrustify_off - indentation}
|
||||||
"["
|
"["
|
||||||
"{"
|
"{"
|
||||||
"\"archive\":[],"
|
"\"archive\":[],"
|
||||||
@ -74,6 +75,7 @@ testRun(void)
|
|||||||
"}"
|
"}"
|
||||||
"}"
|
"}"
|
||||||
"]",
|
"]",
|
||||||
|
// {uncrustify_on}
|
||||||
"json - empty repo, stanza option specified");
|
"json - empty repo, stanza option specified");
|
||||||
|
|
||||||
StringList *argListTextStanzaOpt = strLstDup(argListText);
|
StringList *argListTextStanzaOpt = strLstDup(argListText);
|
||||||
@ -101,6 +103,7 @@ testRun(void)
|
|||||||
HRN_CFG_LOAD(cfgCmdInfo, argList);
|
HRN_CFG_LOAD(cfgCmdInfo, argList);
|
||||||
TEST_RESULT_STR_Z(
|
TEST_RESULT_STR_Z(
|
||||||
infoRender(),
|
infoRender(),
|
||||||
|
// {uncrustify_off - indentation}
|
||||||
"["
|
"["
|
||||||
"{"
|
"{"
|
||||||
"\"archive\":[],"
|
"\"archive\":[],"
|
||||||
@ -125,6 +128,7 @@ testRun(void)
|
|||||||
"}"
|
"}"
|
||||||
"}"
|
"}"
|
||||||
"]",
|
"]",
|
||||||
|
// {uncrustify_on}
|
||||||
"json - missing stanza data");
|
"json - missing stanza data");
|
||||||
|
|
||||||
// -------------------------------------------------------------------------------------------------------------------------
|
// -------------------------------------------------------------------------------------------------------------------------
|
||||||
@ -148,6 +152,7 @@ testRun(void)
|
|||||||
|
|
||||||
TEST_RESULT_STR_Z(
|
TEST_RESULT_STR_Z(
|
||||||
infoRender(),
|
infoRender(),
|
||||||
|
// {uncrustify_off - indentation}
|
||||||
"["
|
"["
|
||||||
"{"
|
"{"
|
||||||
"\"archive\":[],"
|
"\"archive\":[],"
|
||||||
@ -183,6 +188,7 @@ testRun(void)
|
|||||||
"}"
|
"}"
|
||||||
"}"
|
"}"
|
||||||
"]",
|
"]",
|
||||||
|
// {uncrustify_on}
|
||||||
"json - other error, single repo");
|
"json - other error, single repo");
|
||||||
|
|
||||||
HRN_CFG_LOAD(cfgCmdInfo, argListTextStanzaOpt);
|
HRN_CFG_LOAD(cfgCmdInfo, argListTextStanzaOpt);
|
||||||
@ -252,6 +258,7 @@ testRun(void)
|
|||||||
HRN_CFG_LOAD(cfgCmdInfo, argList);
|
HRN_CFG_LOAD(cfgCmdInfo, argList);
|
||||||
TEST_RESULT_STR_Z(
|
TEST_RESULT_STR_Z(
|
||||||
infoRender(),
|
infoRender(),
|
||||||
|
// {uncrustify_off - indentation}
|
||||||
"["
|
"["
|
||||||
"{"
|
"{"
|
||||||
"\"archive\":["
|
"\"archive\":["
|
||||||
@ -299,6 +306,7 @@ testRun(void)
|
|||||||
"}"
|
"}"
|
||||||
"}"
|
"}"
|
||||||
"]",
|
"]",
|
||||||
|
// {uncrustify_on}
|
||||||
"json - single stanza, no valid backups, backup/expire lock detected");
|
"json - single stanza, no valid backups, backup/expire lock detected");
|
||||||
|
|
||||||
HRN_CFG_LOAD(cfgCmdInfo, argListText);
|
HRN_CFG_LOAD(cfgCmdInfo, argListText);
|
||||||
@ -444,6 +452,7 @@ testRun(void)
|
|||||||
HRN_CFG_LOAD(cfgCmdInfo, argList);
|
HRN_CFG_LOAD(cfgCmdInfo, argList);
|
||||||
TEST_RESULT_STR_Z(
|
TEST_RESULT_STR_Z(
|
||||||
infoRender(),
|
infoRender(),
|
||||||
|
// {uncrustify_off - indentation}
|
||||||
"["
|
"["
|
||||||
"{"
|
"{"
|
||||||
"\"archive\":["
|
"\"archive\":["
|
||||||
@ -576,6 +585,7 @@ testRun(void)
|
|||||||
"}"
|
"}"
|
||||||
"}"
|
"}"
|
||||||
"]",
|
"]",
|
||||||
|
// {uncrustify_on}
|
||||||
"json - single stanza, valid backup, no priors, no archives in latest DB, backup/expire lock detected");
|
"json - single stanza, valid backup, no priors, no archives in latest DB, backup/expire lock detected");
|
||||||
|
|
||||||
HRN_CFG_LOAD(cfgCmdInfo, argListText);
|
HRN_CFG_LOAD(cfgCmdInfo, argListText);
|
||||||
@ -1038,6 +1048,7 @@ testRun(void)
|
|||||||
HRN_CFG_LOAD(cfgCmdInfo, argListMultiRepoJson);
|
HRN_CFG_LOAD(cfgCmdInfo, argListMultiRepoJson);
|
||||||
TEST_RESULT_STR_Z(
|
TEST_RESULT_STR_Z(
|
||||||
infoRender(),
|
infoRender(),
|
||||||
|
// {uncrustify_off - indentation}
|
||||||
"["
|
"["
|
||||||
"{"
|
"{"
|
||||||
"\"archive\":["
|
"\"archive\":["
|
||||||
@ -1441,6 +1452,7 @@ testRun(void)
|
|||||||
"}"
|
"}"
|
||||||
"}"
|
"}"
|
||||||
"]",
|
"]",
|
||||||
|
// {uncrustify_on}
|
||||||
"json - multiple stanzas, some with valid backups, archives in latest DB, backup lock held on one stanza");
|
"json - multiple stanzas, some with valid backups, archives in latest DB, backup lock held on one stanza");
|
||||||
|
|
||||||
// Notify child to release lock
|
// Notify child to release lock
|
||||||
@ -1587,6 +1599,7 @@ testRun(void)
|
|||||||
|
|
||||||
TEST_RESULT_STR_Z(
|
TEST_RESULT_STR_Z(
|
||||||
infoRender(),
|
infoRender(),
|
||||||
|
// {uncrustify_off - indentation}
|
||||||
"["
|
"["
|
||||||
"{"
|
"{"
|
||||||
"\"archive\":[],"
|
"\"archive\":[],"
|
||||||
@ -1619,6 +1632,7 @@ testRun(void)
|
|||||||
"}"
|
"}"
|
||||||
"}"
|
"}"
|
||||||
"]",
|
"]",
|
||||||
|
// {uncrustify_on}
|
||||||
"json, multi-repo, backup not found");
|
"json, multi-repo, backup not found");
|
||||||
|
|
||||||
// -------------------------------------------------------------------------------------------------------------------------
|
// -------------------------------------------------------------------------------------------------------------------------
|
||||||
@ -1661,6 +1675,7 @@ testRun(void)
|
|||||||
|
|
||||||
TEST_RESULT_STR_Z(
|
TEST_RESULT_STR_Z(
|
||||||
infoRender(),
|
infoRender(),
|
||||||
|
// {uncrustify_off - indentation}
|
||||||
"["
|
"["
|
||||||
"{"
|
"{"
|
||||||
"\"archive\":["
|
"\"archive\":["
|
||||||
@ -1763,6 +1778,7 @@ testRun(void)
|
|||||||
"}"
|
"}"
|
||||||
"}"
|
"}"
|
||||||
"]",
|
"]",
|
||||||
|
// {uncrustify_on}
|
||||||
"json - backup set requested");
|
"json - backup set requested");
|
||||||
|
|
||||||
// -------------------------------------------------------------------------------------------------------------------------
|
// -------------------------------------------------------------------------------------------------------------------------
|
||||||
@ -1846,6 +1862,7 @@ testRun(void)
|
|||||||
|
|
||||||
TEST_RESULT_STR_Z(
|
TEST_RESULT_STR_Z(
|
||||||
infoRender(),
|
infoRender(),
|
||||||
|
// {uncrustify_off - indentation}
|
||||||
"["
|
"["
|
||||||
"{"
|
"{"
|
||||||
"\"archive\":["
|
"\"archive\":["
|
||||||
@ -1970,6 +1987,7 @@ testRun(void)
|
|||||||
"}"
|
"}"
|
||||||
"}"
|
"}"
|
||||||
"]",
|
"]",
|
||||||
|
// {uncrustify_on}
|
||||||
"json - multi-repo, backup set requested, found on repo2, report stanza and db over all repos");
|
"json - multi-repo, backup set requested, found on repo2, report stanza and db over all repos");
|
||||||
|
|
||||||
// -------------------------------------------------------------------------------------------------------------------------
|
// -------------------------------------------------------------------------------------------------------------------------
|
||||||
@ -2043,6 +2061,7 @@ testRun(void)
|
|||||||
|
|
||||||
TEST_RESULT_STR_Z(
|
TEST_RESULT_STR_Z(
|
||||||
infoRender(),
|
infoRender(),
|
||||||
|
// {uncrustify_off - indentation}
|
||||||
"["
|
"["
|
||||||
"{"
|
"{"
|
||||||
"\"archive\":["
|
"\"archive\":["
|
||||||
@ -2141,6 +2160,7 @@ testRun(void)
|
|||||||
"}"
|
"}"
|
||||||
"}"
|
"}"
|
||||||
"]",
|
"]",
|
||||||
|
// {uncrustify_on}
|
||||||
"json - backup set requested, no links");
|
"json - backup set requested, no links");
|
||||||
|
|
||||||
// -------------------------------------------------------------------------------------------------------------------------
|
// -------------------------------------------------------------------------------------------------------------------------
|
||||||
@ -2212,6 +2232,7 @@ testRun(void)
|
|||||||
|
|
||||||
TEST_RESULT_STR_Z(
|
TEST_RESULT_STR_Z(
|
||||||
infoRender(),
|
infoRender(),
|
||||||
|
// {uncrustify_off - indentation}
|
||||||
"["
|
"["
|
||||||
"{"
|
"{"
|
||||||
"\"archive\":["
|
"\"archive\":["
|
||||||
@ -2306,6 +2327,7 @@ testRun(void)
|
|||||||
"}"
|
"}"
|
||||||
"}"
|
"}"
|
||||||
"]",
|
"]",
|
||||||
|
// {uncrustify_on}
|
||||||
"json - backup set requested, no db and no checksum error");
|
"json - backup set requested, no db and no checksum error");
|
||||||
|
|
||||||
// -------------------------------------------------------------------------------------------------------------------------
|
// -------------------------------------------------------------------------------------------------------------------------
|
||||||
@ -2361,6 +2383,7 @@ testRun(void)
|
|||||||
HRN_CFG_LOAD(cfgCmdInfo, argList2);
|
HRN_CFG_LOAD(cfgCmdInfo, argList2);
|
||||||
TEST_RESULT_STR_Z(
|
TEST_RESULT_STR_Z(
|
||||||
infoRender(),
|
infoRender(),
|
||||||
|
// {uncrustify_off - indentation}
|
||||||
"["
|
"["
|
||||||
"{"
|
"{"
|
||||||
"\"archive\":["
|
"\"archive\":["
|
||||||
@ -2410,6 +2433,7 @@ testRun(void)
|
|||||||
"}"
|
"}"
|
||||||
"}"
|
"}"
|
||||||
"]",
|
"]",
|
||||||
|
// {uncrustify_on}
|
||||||
"json - multiple stanzas - selected found, repo1");
|
"json - multiple stanzas - selected found, repo1");
|
||||||
|
|
||||||
argList2 = strLstDup(argListMultiRepo);
|
argList2 = strLstDup(argListMultiRepo);
|
||||||
@ -2735,6 +2759,7 @@ testRun(void)
|
|||||||
|
|
||||||
TEST_RESULT_STR_Z(
|
TEST_RESULT_STR_Z(
|
||||||
infoRender(),
|
infoRender(),
|
||||||
|
// {uncrustify_off - indentation}
|
||||||
"["
|
"["
|
||||||
"{"
|
"{"
|
||||||
"\"archive\":["
|
"\"archive\":["
|
||||||
@ -2905,6 +2930,7 @@ testRun(void)
|
|||||||
"}"
|
"}"
|
||||||
"}"
|
"}"
|
||||||
"]",
|
"]",
|
||||||
|
// {uncrustify_on}
|
||||||
"json - multi-repo, database mismatch, repo2 stanza-upgrade needed");
|
"json - multi-repo, database mismatch, repo2 stanza-upgrade needed");
|
||||||
|
|
||||||
// Crypto error
|
// Crypto error
|
||||||
@ -3289,6 +3315,7 @@ testRun(void)
|
|||||||
|
|
||||||
TEST_RESULT_STR_Z(
|
TEST_RESULT_STR_Z(
|
||||||
infoRender(),
|
infoRender(),
|
||||||
|
// {uncrustify_off - indentation}
|
||||||
"["
|
"["
|
||||||
"{"
|
"{"
|
||||||
"\"archive\":[],"
|
"\"archive\":[],"
|
||||||
@ -3314,6 +3341,7 @@ testRun(void)
|
|||||||
"}"
|
"}"
|
||||||
"}"
|
"}"
|
||||||
"]",
|
"]",
|
||||||
|
// {uncrustify_on}
|
||||||
"json - invalid stanza");
|
"json - invalid stanza");
|
||||||
|
|
||||||
argList = strLstNew();
|
argList = strLstNew();
|
||||||
|
@ -54,9 +54,11 @@ testRun(void)
|
|||||||
TEST_RESULT_VOID(storageListRender(ioBufferWriteNew(output)), "missing directory (json)");
|
TEST_RESULT_VOID(storageListRender(ioBufferWriteNew(output)), "missing directory (json)");
|
||||||
TEST_RESULT_STR_Z(
|
TEST_RESULT_STR_Z(
|
||||||
strNewBuf(output),
|
strNewBuf(output),
|
||||||
"{"
|
// {uncrustify_off - indentation}
|
||||||
"\".\":{\"type\":\"path\"}"
|
"{"
|
||||||
"}\n",
|
"\".\":{\"type\":\"path\"}"
|
||||||
|
"}\n",
|
||||||
|
// {uncrustify_on}
|
||||||
"check output");
|
"check output");
|
||||||
|
|
||||||
// -------------------------------------------------------------------------------------------------------------------------
|
// -------------------------------------------------------------------------------------------------------------------------
|
||||||
@ -74,9 +76,11 @@ testRun(void)
|
|||||||
TEST_RESULT_VOID(storageListRender(ioBufferWriteNew(output)), "empty directory (json)");
|
TEST_RESULT_VOID(storageListRender(ioBufferWriteNew(output)), "empty directory (json)");
|
||||||
TEST_RESULT_STR_Z(
|
TEST_RESULT_STR_Z(
|
||||||
strNewBuf(output),
|
strNewBuf(output),
|
||||||
"{"
|
// {uncrustify_off - indentation}
|
||||||
"\".\":{\"type\":\"path\"}"
|
"{"
|
||||||
"}\n",
|
"\".\":{\"type\":\"path\"}"
|
||||||
|
"}\n",
|
||||||
|
// {uncrustify_on}
|
||||||
"check output");
|
"check output");
|
||||||
|
|
||||||
output = bufNew(0);
|
output = bufNew(0);
|
||||||
@ -84,9 +88,11 @@ testRun(void)
|
|||||||
TEST_RESULT_VOID(storageListRender(ioBufferWriteNew(output)), "empty directory with filter match (json)");
|
TEST_RESULT_VOID(storageListRender(ioBufferWriteNew(output)), "empty directory with filter match (json)");
|
||||||
TEST_RESULT_STR_Z(
|
TEST_RESULT_STR_Z(
|
||||||
strNewBuf(output),
|
strNewBuf(output),
|
||||||
"{"
|
// {uncrustify_off - indentation}
|
||||||
"\".\":{\"type\":\"path\"}"
|
"{"
|
||||||
"}\n",
|
"\".\":{\"type\":\"path\"}"
|
||||||
|
"}\n",
|
||||||
|
// {uncrustify_on}
|
||||||
"check output");
|
"check output");
|
||||||
|
|
||||||
output = bufNew(0);
|
output = bufNew(0);
|
||||||
@ -130,13 +136,15 @@ testRun(void)
|
|||||||
TEST_RESULT_VOID(storageListRender(ioBufferWriteNew(output)), "path and file (json)");
|
TEST_RESULT_VOID(storageListRender(ioBufferWriteNew(output)), "path and file (json)");
|
||||||
TEST_RESULT_STR_Z(
|
TEST_RESULT_STR_Z(
|
||||||
strNewBuf(output),
|
strNewBuf(output),
|
||||||
"{"
|
// {uncrustify_off - indentation}
|
||||||
"\".\":{\"type\":\"path\"},"
|
"{"
|
||||||
"\"aaa\":{\"type\":\"file\",\"size\":8,\"time\":1578671569},"
|
"\".\":{\"type\":\"path\"},"
|
||||||
"\"bbb\":{\"type\":\"path\"},"
|
"\"aaa\":{\"type\":\"file\",\"size\":8,\"time\":1578671569},"
|
||||||
"\"link\":{\"type\":\"link\",\"destination\":\"../bbb\"},"
|
"\"bbb\":{\"type\":\"path\"},"
|
||||||
"\"pipe\":{\"type\":\"special\"}"
|
"\"link\":{\"type\":\"link\",\"destination\":\"../bbb\"},"
|
||||||
"}\n",
|
"\"pipe\":{\"type\":\"special\"}"
|
||||||
|
"}\n",
|
||||||
|
// {uncrustify_on}
|
||||||
"check output");
|
"check output");
|
||||||
|
|
||||||
// -------------------------------------------------------------------------------------------------------------------------
|
// -------------------------------------------------------------------------------------------------------------------------
|
||||||
@ -268,9 +276,11 @@ testRun(void)
|
|||||||
TEST_RESULT_VOID(storageListRender(ioBufferWriteNew(output)), "file (json)");
|
TEST_RESULT_VOID(storageListRender(ioBufferWriteNew(output)), "file (json)");
|
||||||
TEST_RESULT_STR_Z(
|
TEST_RESULT_STR_Z(
|
||||||
strNewBuf(output),
|
strNewBuf(output),
|
||||||
"{"
|
// {uncrustify_off - indentation}
|
||||||
"\".\":{\"type\":\"file\",\"size\":8,\"time\":1578671569}"
|
"{"
|
||||||
"}\n",
|
"\".\":{\"type\":\"file\",\"size\":8,\"time\":1578671569}"
|
||||||
|
"}\n",
|
||||||
|
// {uncrustify_on}
|
||||||
"check output");
|
"check output");
|
||||||
|
|
||||||
output = bufNew(0);
|
output = bufNew(0);
|
||||||
@ -278,9 +288,11 @@ testRun(void)
|
|||||||
TEST_RESULT_VOID(storageListRender(ioBufferWriteNew(output)), "file (json)");
|
TEST_RESULT_VOID(storageListRender(ioBufferWriteNew(output)), "file (json)");
|
||||||
TEST_RESULT_STR_Z(
|
TEST_RESULT_STR_Z(
|
||||||
strNewBuf(output),
|
strNewBuf(output),
|
||||||
"{"
|
// {uncrustify_off - indentation}
|
||||||
"\".\":{\"type\":\"file\",\"size\":8,\"time\":1578671569}"
|
"{"
|
||||||
"}\n",
|
"\".\":{\"type\":\"file\",\"size\":8,\"time\":1578671569}"
|
||||||
|
"}\n",
|
||||||
|
// {uncrustify_on}
|
||||||
"check output");
|
"check output");
|
||||||
|
|
||||||
output = bufNew(0);
|
output = bufNew(0);
|
||||||
|
@ -354,12 +354,14 @@ testRun(void)
|
|||||||
|
|
||||||
// Check block that errors
|
// Check block that errors
|
||||||
TEST_ERROR(
|
TEST_ERROR(
|
||||||
|
// {uncrustify_off - indentation}
|
||||||
MEM_CONTEXT_BEGIN(memContext)
|
MEM_CONTEXT_BEGIN(memContext)
|
||||||
{
|
{
|
||||||
TEST_RESULT_Z(memContextCurrent()->name, "test-block", "context is now test-block");
|
TEST_RESULT_Z(memContextCurrent()->name, "test-block", "context is now test-block");
|
||||||
THROW(AssertError, "error in test block");
|
THROW(AssertError, "error in test block");
|
||||||
}
|
}
|
||||||
MEM_CONTEXT_END(),
|
MEM_CONTEXT_END(),
|
||||||
|
// {uncrustify_on}
|
||||||
AssertError, "error in test block");
|
AssertError, "error in test block");
|
||||||
|
|
||||||
TEST_RESULT_Z(memContextCurrent()->name, "TOP", "context is now top");
|
TEST_RESULT_Z(memContextCurrent()->name, "TOP", "context is now top");
|
||||||
|
@ -271,6 +271,7 @@ testRun(void)
|
|||||||
|
|
||||||
TEST_RESULT_STR_Z(
|
TEST_RESULT_STR_Z(
|
||||||
jsonWriteResult(write),
|
jsonWriteResult(write),
|
||||||
|
// {uncrustify_off - indentation}
|
||||||
"["
|
"["
|
||||||
"true,"
|
"true,"
|
||||||
"55,"
|
"55,"
|
||||||
@ -291,6 +292,7 @@ testRun(void)
|
|||||||
"null,"
|
"null,"
|
||||||
"null"
|
"null"
|
||||||
"]",
|
"]",
|
||||||
|
// {uncrustify_on}
|
||||||
"json result");
|
"json result");
|
||||||
|
|
||||||
TEST_RESULT_VOID(jsonWriteFree(write), "free");
|
TEST_RESULT_VOID(jsonWriteFree(write), "free");
|
||||||
|
@ -126,9 +126,10 @@ testRun(void)
|
|||||||
|
|
||||||
TEST_RESULT_STR_Z(
|
TEST_RESULT_STR_Z(
|
||||||
hrnPackToStr(pckFromBuf(pack)),
|
hrnPackToStr(pckFromBuf(pack)),
|
||||||
"1:u64:488"
|
// {uncrustify_off - indentation}
|
||||||
", 2:u64:1911246845"
|
"1:u64:488"
|
||||||
", 7:u64:18446744073709551615"
|
", 2:u64:1911246845"
|
||||||
|
", 7:u64:18446744073709551615"
|
||||||
", 10:u64:1"
|
", 10:u64:1"
|
||||||
", 11:u64:77"
|
", 11:u64:77"
|
||||||
", 12:u32:127"
|
", 12:u32:127"
|
||||||
@ -174,10 +175,12 @@ testRun(void)
|
|||||||
", 51:bin:"
|
", 51:bin:"
|
||||||
", 52:pack:<1:u64:345, 3:str:sub>"
|
", 52:pack:<1:u64:345, 3:str:sub>"
|
||||||
", 54:array:[1:str:a, 2:str:bcd]",
|
", 54:array:[1:str:a, 2:str:bcd]",
|
||||||
|
// {uncrustify_on}
|
||||||
"check pack string");
|
"check pack string");
|
||||||
|
|
||||||
TEST_RESULT_STR_Z(
|
TEST_RESULT_STR_Z(
|
||||||
strNewEncode(encodingHex, pack),
|
strNewEncode(encodingHex, pack),
|
||||||
|
// {uncrustify_off - indentation}
|
||||||
"98e803" // 1, u64, 750
|
"98e803" // 1, u64, 750
|
||||||
"98fd9fad8f07" // 2, u64, 1911246845
|
"98fd9fad8f07" // 2, u64, 1911246845
|
||||||
"9c01ffffffffffffffffff01" // 7, u64, 0xFFFFFFFFFFFFFFFF
|
"9c01ffffffffffffffffff01" // 7, u64, 0xFFFFFFFFFFFFFFFF
|
||||||
@ -223,6 +226,7 @@ testRun(void)
|
|||||||
"f0020998d902790373756200" // 52, pack, 1:u64:345, 3:str:sub
|
"f0020998d902790373756200" // 52, pack, 1:u64:345, 3:str:sub
|
||||||
"11780161780362636400" // 54, strlst, 1:str:a, 2:str:bcd
|
"11780161780362636400" // 54, strlst, 1:str:a, 2:str:bcd
|
||||||
"00", // end
|
"00", // end
|
||||||
|
// {uncrustify_on}
|
||||||
"check pack hex");
|
"check pack hex");
|
||||||
|
|
||||||
// -------------------------------------------------------------------------------------------------------------------------
|
// -------------------------------------------------------------------------------------------------------------------------
|
||||||
|
@ -25,6 +25,7 @@ STRING_STATIC(TEST_KEY_FILE_STR, TEST_KEY_FIL
|
|||||||
#define TEST_TOKEN "X X"
|
#define TEST_TOKEN "X X"
|
||||||
STRING_STATIC(TEST_TOKEN_STR, TEST_TOKEN);
|
STRING_STATIC(TEST_TOKEN_STR, TEST_TOKEN);
|
||||||
|
|
||||||
|
// {uncrustify_off - comment inside string}
|
||||||
#define TEST_KEY \
|
#define TEST_KEY \
|
||||||
"{\n" \
|
"{\n" \
|
||||||
"\"type\": \"service_account\",\n" \
|
"\"type\": \"service_account\",\n" \
|
||||||
@ -60,6 +61,7 @@ STRING_STATIC(TEST_TOKEN_STR, TEST_TOKEN);
|
|||||||
"\"client_email\": \"service@project.iam.gserviceaccount.com\",\n" \
|
"\"client_email\": \"service@project.iam.gserviceaccount.com\",\n" \
|
||||||
"\"token_uri\": \"https://%s:%u/token\"\n" \
|
"\"token_uri\": \"https://%s:%u/token\"\n" \
|
||||||
"}\n"
|
"}\n"
|
||||||
|
// {uncrustify_on}
|
||||||
|
|
||||||
/***********************************************************************************************************************************
|
/***********************************************************************************************************************************
|
||||||
Helper to build test requests
|
Helper to build test requests
|
||||||
|
@ -892,6 +892,7 @@ testRun(void)
|
|||||||
#define TEST_SERVICE_URI \
|
#define TEST_SERVICE_URI \
|
||||||
"/?Action=AssumeRoleWithWebIdentity&RoleArn=arn%3Aaws%3Aiam%3A%3A123456789012%3Arole%2FTestRole" \
|
"/?Action=AssumeRoleWithWebIdentity&RoleArn=arn%3Aaws%3Aiam%3A%3A123456789012%3Arole%2FTestRole" \
|
||||||
"&RoleSessionName=pgBackRest&Version=2011-06-15&WebIdentityToken=" TEST_SERVICE_TOKEN
|
"&RoleSessionName=pgBackRest&Version=2011-06-15&WebIdentityToken=" TEST_SERVICE_TOKEN
|
||||||
|
// {uncrustify_off - comment inside string}
|
||||||
#define TEST_SERVICE_RESPONSE \
|
#define TEST_SERVICE_RESPONSE \
|
||||||
"<AssumeRoleWithWebIdentityResponse xmlns=\"https://sts.amazonaws.com/doc/2011-06-15/\">\n" \
|
"<AssumeRoleWithWebIdentityResponse xmlns=\"https://sts.amazonaws.com/doc/2011-06-15/\">\n" \
|
||||||
" <AssumeRoleWithWebIdentityResult>\n" \
|
" <AssumeRoleWithWebIdentityResult>\n" \
|
||||||
@ -903,6 +904,7 @@ testRun(void)
|
|||||||
" </Credentials>\n" \
|
" </Credentials>\n" \
|
||||||
" </AssumeRoleWithWebIdentityResult>\n" \
|
" </AssumeRoleWithWebIdentityResult>\n" \
|
||||||
"</AssumeRoleWithWebIdentityResponse>"
|
"</AssumeRoleWithWebIdentityResponse>"
|
||||||
|
// {uncrustify_on}
|
||||||
|
|
||||||
HRN_STORAGE_PUT_Z(storagePosixNewP(TEST_PATH_STR, .write = true), "web-id-token", TEST_SERVICE_TOKEN);
|
HRN_STORAGE_PUT_Z(storagePosixNewP(TEST_PATH_STR, .write = true), "web-id-token", TEST_SERVICE_TOKEN);
|
||||||
|
|
||||||
|
46
test/test.pl
46
test/test.pl
@ -91,6 +91,10 @@ test.pl [options]
|
|||||||
--tz test with the specified timezone
|
--tz test with the specified timezone
|
||||||
--debug-test-trace test stack trace for low-level functions (slow, esp w/valgrind, may cause timeouts)
|
--debug-test-trace test stack trace for low-level functions (slow, esp w/valgrind, may cause timeouts)
|
||||||
|
|
||||||
|
Code Format Options:
|
||||||
|
--code-format format code to project standards -- this may overwrite files!
|
||||||
|
--code-format-check check that code is formatted to project standards
|
||||||
|
|
||||||
Report Options:
|
Report Options:
|
||||||
--coverage-summary generate a coverage summary report for the documentation
|
--coverage-summary generate a coverage summary report for the documentation
|
||||||
--coverage-only only run coverage tests (as a subset of selected tests) for the documentation
|
--coverage-only only run coverage tests (as a subset of selected tests) for the documentation
|
||||||
@ -133,6 +137,8 @@ my @iyModuleTestRun;
|
|||||||
my $iVmMax = 1;
|
my $iVmMax = 1;
|
||||||
my $iVmId = undef;
|
my $iVmId = undef;
|
||||||
my $bDryRun = false;
|
my $bDryRun = false;
|
||||||
|
my $bCodeFormat = false;
|
||||||
|
my $bCodeFormatCheck = false;
|
||||||
my $bNoCleanup = false;
|
my $bNoCleanup = false;
|
||||||
my $strPgSqlBin;
|
my $strPgSqlBin;
|
||||||
my $strTestPath;
|
my $strTestPath;
|
||||||
@ -208,6 +214,8 @@ GetOptions ('q|quiet' => \$bQuiet,
|
|||||||
'gen-check' => \$bGenCheck,
|
'gen-check' => \$bGenCheck,
|
||||||
'min-gen' => \$bMinGen,
|
'min-gen' => \$bMinGen,
|
||||||
'code-count' => \$bCodeCount,
|
'code-count' => \$bCodeCount,
|
||||||
|
'code-format' => \$bCodeFormat,
|
||||||
|
'code-format-check' => \$bCodeFormatCheck,
|
||||||
'profile' => \$bProfile,
|
'profile' => \$bProfile,
|
||||||
'no-back-trace' => \$bNoBackTrace,
|
'no-back-trace' => \$bNoBackTrace,
|
||||||
'no-valgrind' => \$bNoValgrind,
|
'no-valgrind' => \$bNoValgrind,
|
||||||
@ -609,6 +617,44 @@ eval
|
|||||||
(trim(`uname`) ne 'Darwin' ? ' --ignore-missing-args' : '') .
|
(trim(`uname`) ne 'Darwin' ? ' --ignore-missing-args' : '') .
|
||||||
" ${strBackRestBase}/ ${strRepoCachePath}");
|
" ${strBackRestBase}/ ${strRepoCachePath}");
|
||||||
|
|
||||||
|
# Format code with uncrustify
|
||||||
|
#---------------------------------------------------------------------------------------------------------------------------
|
||||||
|
if ($bCodeFormat || $bCodeFormatCheck)
|
||||||
|
{
|
||||||
|
&log(INFO, 'code format' . ($bCodeFormatCheck ? ' check' : ''));
|
||||||
|
|
||||||
|
my $hManifest = $oStorageTest->manifest($strRepoCachePath);
|
||||||
|
my $strCommand =
|
||||||
|
"uncrustify -c ${strBackRestBase}/test/uncrustify.cfg" .
|
||||||
|
($bCodeFormatCheck ? ' --check' : ' --replace --no-backup');
|
||||||
|
|
||||||
|
foreach my $strFile (sort(keys(%{$hManifest})))
|
||||||
|
{
|
||||||
|
# Skip non-C files
|
||||||
|
next if $hManifest->{$strFile}{type} ne 'f' || ($strFile !~ /\.c$/ && $strFile !~ /\.h$/);
|
||||||
|
|
||||||
|
# Check mode
|
||||||
|
if ($hManifest->{$strFile}{mode} ne '0644')
|
||||||
|
{
|
||||||
|
confess &log(ERROR, "expected mode '0644' for '$strFile' but found '" . $hManifest->{$strFile}{mode} . "'");
|
||||||
|
}
|
||||||
|
|
||||||
|
# Skip specific file
|
||||||
|
next if
|
||||||
|
# Does not format correctly because it is a template
|
||||||
|
$strFile eq 'test/src/test.c' ||
|
||||||
|
# Contains code copied directly from PostgreSQL
|
||||||
|
$strFile eq 'src/postgres/interface/static.vendor.h' ||
|
||||||
|
$strFile eq 'src/postgres/interface/version.vendor.h';
|
||||||
|
|
||||||
|
$strCommand .= " ${strBackRestBase}/${strFile}";
|
||||||
|
}
|
||||||
|
|
||||||
|
executeTest($strCommand . " 2>&1");
|
||||||
|
|
||||||
|
exit 0;
|
||||||
|
}
|
||||||
|
|
||||||
# Generate code counts
|
# Generate code counts
|
||||||
#---------------------------------------------------------------------------------------------------------------------------
|
#---------------------------------------------------------------------------------------------------------------------------
|
||||||
if ($bCodeCount)
|
if ($bCodeCount)
|
||||||
|
3137
test/uncrustify.cfg
Executable file
3137
test/uncrustify.cfg
Executable file
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue
Block a user