Skip to content

Commit

Permalink
Merge pull request #2035 from Exiv2/ci_forward_main
Browse files Browse the repository at this point in the history
Forward CI changes
  • Loading branch information
clanmills authored Dec 20, 2021
2 parents 41ae517 + 23c5100 commit d508e09
Show file tree
Hide file tree
Showing 8 changed files with 130 additions and 94 deletions.
2 changes: 0 additions & 2 deletions .github/workflows/on_PR_linux_matrix.yml
Original file line number Diff line number Diff line change
Expand Up @@ -47,8 +47,6 @@ jobs:
tree install
- name: Test
env:
EXIV2_EXT: .exe
run: |
cd build
ctest --output-on-failure
24 changes: 0 additions & 24 deletions .github/workflows/on_PR_linux_special_buils.yml
Original file line number Diff line number Diff line change
Expand Up @@ -37,8 +37,6 @@ jobs:
cmake --build .
- name: Tests + Upload coverage
env:
EXIV2_EXT: .exe
run: |
cd build
ctest --output-on-failure
Expand Down Expand Up @@ -85,8 +83,6 @@ jobs:
cmake --build .
- name: Tests with valgrind
env:
EXIV2_EXT: .exe
run: |
cd build/bin
valgrind ./unit_tests
Expand Down Expand Up @@ -123,8 +119,6 @@ jobs:
cmake --build .
- name: Tests
env:
EXIV2_EXT: .exe
run: |
cd build
ctest --output-on-failure
Expand Down Expand Up @@ -163,21 +157,3 @@ jobs:
- name: Generate documentation
run: |
make doc
special_FedoraMinGW:
name: 'Fedora MinGW'
runs-on: ubuntu-latest
container:
image: "fedora:latest"

steps:
- uses: actions/checkout@v2

- name: install dependencies
run: |
dnf -y upgrade
dnf -y install mingw64-gcc-c++ mingw64-filesystem mingw64-expat mingw64-zlib cmake make
- name: Build
run:
python3 ci/test_build.py --without-tests --cmake-executable "mingw64-cmake" --cmake-options "-DEXIV2_TEAM_EXTRA_WARNINGS=OFF -DEXIV2_TEAM_WARNINGS_AS_ERRORS=OFF -DEXIV2_ENABLE_WEBREADY=ON -DEXIV2_ENABLE_WIN_UNICODE=ON " --compilers --shared-libs OFF
2 changes: 0 additions & 2 deletions .github/workflows/on_PR_mac_matrix.yml
Original file line number Diff line number Diff line change
Expand Up @@ -40,8 +40,6 @@ jobs:
cmake --build . --target install
- name: Test
env:
EXIV2_EXT: .exe
run: |
cd build
ctest --output-on-failure
132 changes: 120 additions & 12 deletions .github/workflows/on_PR_windows_matrix.yml
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ jobs:
build_type: [Release, Debug]
shared_libraries: [ON, OFF]
platform: [ x64, x86 ]

steps:
- uses: actions/checkout@v2

Expand All @@ -28,7 +28,7 @@ jobs:
with:
arch: ${{matrix.platform}}

- name: Setup Ninja
- name: Set up Ninja
uses: ashutoshvarma/setup-ninja@master
with:
version: 1.10.0
Expand All @@ -38,7 +38,7 @@ jobs:
with:
python-version: 3.7

- name: Restore conan cache
- name: Restore Conan cache
uses: actions/cache@v2
with:
path: ${{github.workspace}}/conanCache
Expand Down Expand Up @@ -68,23 +68,131 @@ jobs:
conan install .. --build missing
dir ..
tree /f ../conanCache
- name: Build
run: |
cd build
cmake -GNinja -DCMAKE_BUILD_TYPE=${{matrix.build_type}} -DBUILD_SHARED_LIBS=${{matrix.shared_libraries}} -DEXIV2_ENABLE_NLS=OFF -DEXIV2_ENABLE_PNG=ON -DEXIV2_ENABLE_WEBREADY=ON -DEXIV2_BUILD_UNIT_TESTS=ON -DEXIV2_ENABLE_WIN_UNICODE=OFF -DEXIV2_TEAM_WARNINGS_AS_ERRORS=ON -DEXIV2_ENABLE_BMFF=ON -DCMAKE_INSTALL_PREFIX=install ..
ninja
cmake -GNinja `
-DCMAKE_BUILD_TYPE=${{matrix.build_type}} `
-DBUILD_SHARED_LIBS=${{matrix.shared_libraries}} `
-DEXIV2_ENABLE_NLS=OFF `
-DEXIV2_ENABLE_WIN_UNICODE=OFF `
-DEXIV2_ENABLE_WEBREADY=ON `
-DEXIV2_ENABLE_BMFF=ON `
-DEXIV2_BUILD_UNIT_TESTS=ON `
-DEXIV2_TEAM_WARNINGS_AS_ERRORS=ON `
-DCMAKE_INSTALL_PREFIX=install `
-S . -B build && `
cmake --build build
- name: Install
run: |
cd build
ninja install
cmake --install .
tree /f install
- name: Test
if: ${{matrix.platform == 'x64'}}
env:
EXIV2_EXT: .exe
run: |
cd build
ctest --output-on-failure
ctest --test-dir build --output-on-failure
msys2:
runs-on: windows-latest
strategy:
fail-fast: false
matrix:
build_type: [Release, Debug]
shared_libraries: [ON, OFF]
sys: [MINGW64]
name: MSYS2 ${{matrix.sys}} - BuildType:${{matrix.build_type}} - SHARED:${{matrix.shared_libraries}}
defaults:
run:
shell: msys2 {0}
steps:
- uses: actions/checkout@v2

- name: Set up MSYS2
uses: msys2/setup-msys2@v2
with:
msystem: ${{matrix.sys}}
update: true
install: >-
base-devel
pacboy: >-
toolchain:p
cmake:p
ninja:p
expat:p
gettext:p
gtest:p
libiconv:p
python-lxml:p
zlib:p
- name: Build
run: |
cmake -GNinja \
-DCMAKE_CXX_FLAGS=-Wno-deprecated \
-DCMAKE_BUILD_TYPE=${{matrix.build_type}} \
-DBUILD_SHARED_LIBS=${{matrix.shared_libraries}} \
-DEXIV2_ENABLE_NLS=ON \
-DEXIV2_ENABLE_WIN_UNICODE=ON \
-DEXIV2_ENABLE_WEBREADY=ON \
-DEXIV2_ENABLE_BMFF=ON \
-DEXIV2_BUILD_UNIT_TESTS=ON \
-S . -B build && \
cmake --build build
- name: Test
run: |
ctest --test-dir build --output-on-failure
cygwin:
runs-on: windows-latest
strategy:
fail-fast: false
matrix:
build_type: [Release]
shared_libraries: [ON]
platform: [x64]
name: Cygwin ${{matrix.platform}} - BuildType:${{matrix.build_type}} - SHARED:${{matrix.shared_libraries}}
env:
SHELLOPTS: igncr
defaults:
run:
shell: C:\tools\cygwin\bin\bash.exe -eo pipefail '{0}'
steps:
# Make sure we don't check out scripts using Windows CRLF line endings
- run: git config --global core.autocrlf input
shell: pwsh
- uses: actions/checkout@v2

- name: Set up Cygwin
uses: egor-tensin/setup-cygwin@v3
with:
platform: ${{matrix.platform}}
packages: >-
gcc-g++
cmake
ninja
libexpat-devel
libxml2-devel
libxslt-devel
python38-lxml
zlib-devel
- name: Build
run: |
cmake -GNinja \
-DCMAKE_CXX_FLAGS=-Wno-deprecated \
-DCMAKE_BUILD_TYPE=${{matrix.build_type}} \
-DBUILD_SHARED_LIBS=${{matrix.shared_libraries}} \
-DEXIV2_ENABLE_NLS=OFF \
-DEXIV2_ENABLE_WIN_UNICODE=OFF \
-DEXIV2_ENABLE_WEBREADY=ON \
-DEXIV2_ENABLE_BMFF=ON \
-DEXIV2_BUILD_UNIT_TESTS=OFF \
-S . -B build && \
cmake --build build
- name: Test
run: |
ctest --test-dir build --output-on-failure
2 changes: 0 additions & 2 deletions .github/workflows/on_push_ExtraJobsForMain.yml
Original file line number Diff line number Diff line change
Expand Up @@ -38,8 +38,6 @@ jobs:
make -j
- name: Tests + Upload coverage
env:
EXIV2_EXT: .exe
run: |
cd build
ctest --output-on-failure
Expand Down
12 changes: 6 additions & 6 deletions exiv2.md
Original file line number Diff line number Diff line change
Expand Up @@ -1326,7 +1326,7 @@ standards-defined metadata.
With [--Modify cmd](#Modify_cmd), quotation marks are use to surround the
*cmd*. The Windows command line requires double quotes to be
used, however generally, quotes inside that string, can be either single
or double. Generally, UNIX based systems can use pairs of single or
or double. Generally, Unix-based systems can use pairs of single or
double quotes in any position. In both systems, inner string quotation
marks may need to use the `\` escape sequence.

Expand Down Expand Up @@ -1634,11 +1634,11 @@ For another example, see: https://www.exiv2.org/sample.html

# 12 CONFIGURATION FILE
**exiv2** can read an optional configuration file, which allows
additional lens definitions to be added to translated output. On UNIX
based systems, this file is called *.exiv2* and on Windows (including MinGW),
*exiv2.ini*. The file is searched for first in the current directory,
then in the home directory (on UNIX based systems, `~/` and on Windows,
`%USERPROFILE%\\`).
additional lens definitions to be added to translated output. On Unix-based
systems (including Cygwin), this file is called *.exiv2* and on Windows
(including MinGW), *exiv2.ini*. The file is searched for first in the
current directory, then in the home directory (`$HOME` on Unix-based
systems, and `%USERPROFILE%` on Windows).

You can determine the name of the file and where it is searched for,
with the command:
Expand Down
4 changes: 2 additions & 2 deletions tests/lens_tests/test_config_file.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,11 @@


# copy the example config file into current working directory
# and name it ".exiv2" on linux or "exiv2.ini" on Win
# and name it "exiv2.ini" on Win or ".exiv2" on other platforms
class TmpConfigFile(system_tests.FileDecoratorBase):
def setUp_file_action(self, expanded_file_name):
config_file_path = os.path.dirname(os.path.abspath(__file__))
fname = ".exiv2" if sys.platform == "linux" or sys.platform == "darwin" else "exiv2.ini"
fname = os.path.basename(system_tests.BT.verbose_version().get('config_path'))
return shutil.copyfile(expanded_file_name, os.path.join(config_file_path, fname))


Expand Down
46 changes: 2 additions & 44 deletions unitTests/test_futils.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -42,28 +42,8 @@ TEST(strError, returnSuccessAfterClosingFile)
std::string tmpFile("tmp.dat");
std::ofstream auxFile(tmpFile.c_str());
auxFile.close();
bool useExactString{true};
#if defined(_WIN32) || defined(__CYGWIN__) || defined(__MINGW__) || defined(__MSYS__)
const char * expectedString = "No error (errno = 0)";
#elif defined(__APPLE__)
const char * expectedString = "Undefined error: 0 (errno = 0)";
#elif defined(__sun__)
const char * expectedString = "Error 0 (errno = 0)";
#elif defined(__FreeBSD__)
const char * expectedString = "No error: 0 (errno = 0)";
#elif defined(__NetBSD__)
const char * expectedString = "Undefined error: 0 (errno = 0)";
#else
// On Alpine we get 'No error information (errno = 0)' instead of 'Success (errno = 0)'
const char * expectedString = "(errno = 0)";
useExactString = false;
#endif
std::remove(tmpFile.c_str());
if (useExactString) {
ASSERT_STREQ(expectedString, strError().c_str());
} else {
ASSERT_TRUE(strError().find(expectedString) != std::string::npos);
}
ASSERT_TRUE(strError().find("(errno = 0)") != std::string::npos);
}

TEST(strError, returnNoSuchFileOrDirectoryWhenTryingToOpenNonExistingFile)
Expand All @@ -75,29 +55,7 @@ TEST(strError, returnNoSuchFileOrDirectoryWhenTryingToOpenNonExistingFile)
TEST(strError, doNotRecognizeUnknownError)
{
errno = 9999;
bool useExactString{true};
#if defined(__MINGW__) || defined(__MSYS__) || defined(__CYGWIN__)
const char * expectedString = "Unknown error 9999 (errno = 9999)";
#elif defined(_WIN32)
const char * expectedString = "Unknown error (errno = 9999)";
#elif defined(__APPLE__)
const char * expectedString = "Unknown error: 9999 (errno = 9999)";
#elif defined(__sun__)
const char * expectedString = "Unknown error (errno = 9999)";
#elif defined(__FreeBSD__)
const char * expectedString = "Unknown error: 9999 (errno = 9999)";
#elif defined(__NetBSD__)
const char * expectedString = "Unknown error: 9999 (errno = 9999)";
#else
// On Alpine we get 'No error information (errno = 9999)' instead of 'Unknown error 9999 (errno = 9999)'
const char * expectedString = "(errno = 9999)";
useExactString = false;
#endif
if (useExactString) {
ASSERT_STREQ(expectedString, strError().c_str());
} else {
ASSERT_TRUE(strError().find(expectedString) != std::string::npos);
}
ASSERT_TRUE(strError().find("(errno = 9999)") != std::string::npos);
}

TEST(getEnv, getsDefaultValueWhenExpectedEnvVariableDoesNotExist)
Expand Down

0 comments on commit d508e09

Please sign in to comment.