Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Forward CI changes #2035

Merged
merged 3 commits into from
Dec 20, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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