Skip to content
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
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -101,6 +101,9 @@ tags
# Compiled binary translations
/lang/mo/

# Stampfile for binary translations
/lang/mo_built.stamp

# Directory for translatable strings
/lang/json/*
!/lang/json/README
Expand Down
23 changes: 19 additions & 4 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -791,6 +791,7 @@ endif

ifeq ($(LOCALIZE),1)
DEFINES += -DLOCALIZE
LOCALIZE_TEST_DEPS = localization $(TEST_MO)
endif

ifeq ($(TARGETSYSTEM),LINUX)
Expand Down Expand Up @@ -938,8 +939,21 @@ src/version.h: version

src/version.cpp: src/version.h

localization:
TEST_MO := data/mods/TEST_DATA/lang/mo/ru/LC_MESSAGES/TEST_DATA.mo

$(TEST_MO): data/mods/TEST_DATA/lang/po/ru.po
mkdir -p $(dir $@)
msgfmt -f -o $@ $<

MO_DEPS := \
$(wildcard lang/*.sh lang/*.py src/*.cpp src/*.h) \
$(shell find data/{raw,json,mods,core,help} -type f -name '*.json')

lang/mo_built.stamp: $(MO_DEPS)
lang/compile_mo.sh $(LANGUAGES)
touch $@

localization: lang/mo_built.stamp

$(CHKJSON_BIN): $(CHKJSON_SOURCES)
$(CXX) $(CXXFLAGS) $(TOOL_CXXFLAGS) -Isrc/chkjson -Isrc $(CHKJSON_SOURCES) -o $(CHKJSON_BIN)
Expand All @@ -954,11 +968,12 @@ clean: clean-tests clean-object_creator clean-pch
rm -rf *$(BINDIST_DIR) *cataclysmdda-*.tar.gz *cataclysmdda-*.zip
rm -f $(SRC_DIR)/version.h
rm -f $(CHKJSON_BIN)
rm -f $(TEST_MO)

distclean:
rm -rf *$(BINDIST_DIR)
rm -rf save
rm -rf lang/mo
rm -rf lang/mo lang/mo_built.stamp
rm -f data/options.txt
rm -f data/keymap.txt
rm -f data/auto_pickup.txt
Expand Down Expand Up @@ -1184,10 +1199,10 @@ $(JSON_FORMATTER_BIN): $(JSON_FORMATTER_SOURCES)
python-check:
flake8

tests: version $(BUILD_PREFIX)cataclysm.a
tests: version $(BUILD_PREFIX)cataclysm.a $(LOCALIZE_TEST_DEPS)
$(MAKE) -C tests

check: version $(BUILD_PREFIX)cataclysm.a
check: version $(BUILD_PREFIX)cataclysm.a $(LOCALIZE_TEST_DEPS)
$(MAKE) -C tests check

clean-tests:
Expand Down
10 changes: 0 additions & 10 deletions build-scripts/build.sh
Original file line number Diff line number Diff line change
Expand Up @@ -182,10 +182,6 @@ then
# Regular build
make -j$num_jobs
cd ..
# Compile test translations
./lang/compile_mo.sh
mkdir -p ./data/mods/TEST_DATA/lang/mo/ru/LC_MESSAGES
msgfmt -f -o ./data/mods/TEST_DATA/lang/mo/ru/LC_MESSAGES/TEST_DATA.mo ./data/mods/TEST_DATA/lang/po/ru.po
# Run regular tests
[ -f "${bin_path}cata_test" ] && parallel --verbose --linebuffer "run_test $(printf %q "${bin_path}")'/cata_test' {} '('{}')=> ' --user-dir=test_user_dir_{#}" ::: "crafting_skill_gain" "[slow] ~crafting_skill_gain" "~[slow] ~[.]"
[ -f "${bin_path}cata_test-tiles" ] && parallel --verbose --linebuffer "run_test $(printf %q "${bin_path}")'/cata_test-tiles' {} '('{}')=> ' --user-dir=test_user_dir_{#}" ::: "crafting_skill_gain" "[slow] ~crafting_skill_gain" "~[slow] ~[.]"
Expand All @@ -207,12 +203,6 @@ then
else
make -j "$num_jobs" RELEASE=1 CCACHE=1 CROSS="$CROSS_COMPILATION" LINTJSON=0

if [[ "$LOCALIZE" != "0" ]]; then
./lang/compile_mo.sh
mkdir -p ./data/mods/TEST_DATA/lang/mo/ru/LC_MESSAGES
msgfmt -f -o ./data/mods/TEST_DATA/lang/mo/ru/LC_MESSAGES/TEST_DATA.mo ./data/mods/TEST_DATA/lang/po/ru.po
fi

export ASAN_OPTIONS=detect_odr_violation=1
export UBSAN_OPTIONS=print_stacktrace=1
parallel -j "$num_test_jobs" --verbose --linebuffer "run_test './tests/cata_test' {} '('{}')=> ' --user-dir=test_user_dir_{#}" ::: "crafting_skill_gain" "[slow] ~crafting_skill_gain" "~[slow] ~[.]"
Expand Down
13 changes: 0 additions & 13 deletions lang/compile_mo.sh
Original file line number Diff line number Diff line change
Expand Up @@ -26,24 +26,11 @@ then
for n in $@
do
f="lang/po/${n}.po"
if ( [ "$n" == "en" ]) && ((! [ "${os##CYGWIN*}" ]) || (! [ "${os##MINGW*}" ])); then
# English is special: we do not actually need translation for English,
# but due to a libintl bug (https://savannah.gnu.org/bugs/index.php?58006),
# gettext would be extremely slow on MinGW targets if we do not compile
# a .mo file.
lang/update_pot.sh
msgen lang/po/cataclysm-dda.pot --output-file=${f}
fi
mkdir -p $LOCALE_DIR/${n}/LC_MESSAGES
msgfmt -f -o $LOCALE_DIR/${n}/LC_MESSAGES/cataclysm-dda.mo ${f}
done
else
# if nothing specified, compile .mo file for every .po file in lang/po
# English is special: see comments above
if (! [ "${os##CYGWIN*}" ]) || (! [ "${os##MINGW*}" ]); then
lang/update_pot.sh
msgen lang/po/cataclysm-dda.pot --output-file=lang/po/en.po
fi
for f in lang/po/*.po
do
n=`basename $f .po`
Expand Down
20 changes: 18 additions & 2 deletions tests/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -7,21 +7,37 @@ if (BUILD_TESTING)
# Enabling benchmarks
add_definitions(-DCATCH_CONFIG_ENABLE_BENCHMARKING)

# Need to build the test .mo file for the tests to pass.
# Unfortunately we currently need to put this in the source dir, not the
# build dir
set(TEST_LANG ${CMAKE_SOURCE_DIR}/data/mods/TEST_DATA/lang)
set(TEST_MO ${TEST_LANG}/mo/ru/LC_MESSAGES/TEST_DATA.mo)
add_custom_command(
OUTPUT ${TEST_MO}
MAIN_DEPENDENCY ${TEST_LANG}/po/ru.po
COMMAND
mkdir -p ${TEST_LANG}/mo/ru/LC_MESSAGES &&
msgfmt -f -o ${TEST_MO} ${TEST_LANG}/po/ru.po)

add_custom_target(test_mo DEPENDS ${TEST_MO})

if (TILES)
add_executable(cata_test-tiles ${CATACLYSM_DDA_TEST_SOURCES})
add_dependencies(cata_test-tiles test_mo)
target_link_libraries(cata_test-tiles cataclysm-tiles-common)
add_test(NAME test-tiles
COMMAND sh -c
"$<TARGET_FILE:cata_test-tiles> -r cata --rng-seed `shuf -i 0-1000000000 -n 1`"
"$<TARGET_FILE:cata_test-tiles> --rng-seed time"
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR})
endif ()

if (CURSES)
add_executable(cata_test ${CATACLYSM_DDA_TEST_SOURCES})
add_dependencies(cata_test test_mo)
target_link_libraries(cata_test cataclysm-common)
add_test(NAME test
COMMAND sh -c
"$<TARGET_FILE:cata_test> -r cata --rng-seed `shuf -i 0-1000000000 -n 1`"
"$<TARGET_FILE:cata_test> --rng-seed time"
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR})
endif ()
endif ()
3 changes: 3 additions & 0 deletions tests/translation_system_test.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -14,13 +14,15 @@ static void LoadMODocument( const char *path )
TEST_CASE( "TranslationDocument loads valid MO", "[translations]" )
{
const char *path = "./data/mods/TEST_DATA/lang/mo/ru/LC_MESSAGES/TEST_DATA.mo";
CAPTURE( path );
REQUIRE( file_exist( path ) );
REQUIRE_NOTHROW( LoadMODocument( path ) );
}

TEST_CASE( "TranslationDocument rejects invalid MO", "[translations]" )
{
const char *path = "./data/mods/TEST_DATA/lang/mo/ru/LC_MESSAGES/INVALID_RAND.mo";
CAPTURE( path );
REQUIRE( file_exist( path ) );
REQUIRE_THROWS_AS( LoadMODocument( path ), InvalidTranslationDocumentException );
}
Expand All @@ -31,6 +33,7 @@ TEST_CASE( "TranslationDocument loads all core MO", "[translations]" )
TranslationManager::GetInstance().GetAvailableLanguages();
for( const std::string &lang : languages ) {
const std::string path = string_format( "./lang/mo/%s/LC_MESSAGES/cataclysm-dda.mo", lang );
CAPTURE( path );
REQUIRE( file_exist( path ) );
REQUIRE_NOTHROW( LoadMODocument( path.c_str() ) );
}
Expand Down