mirror of
https://github.com/transmission/transmission
synced 2025-03-03 02:05:19 +00:00
test: add regression tests for transmission-show (#2255)
* fix: replace non-portable strftime args * test: add regression tests for transmission-show
This commit is contained in:
parent
ee83859bdc
commit
b61b1e2c16
10 changed files with 189 additions and 1 deletions
|
@ -4,3 +4,4 @@ include_directories(SYSTEM
|
|||
|
||||
add_subdirectory(gtest)
|
||||
add_subdirectory(libtransmission)
|
||||
add_subdirectory(utils)
|
||||
|
|
15
tests/utils/CMakeLists.txt
Normal file
15
tests/utils/CMakeLists.txt
Normal file
|
@ -0,0 +1,15 @@
|
|||
function(AddShowTest name file_basename)
|
||||
add_test(
|
||||
NAME ${name}
|
||||
COMMAND ${CMAKE_COMMAND}
|
||||
-D transmission_show:string=$<TARGET_FILE:transmission-show>
|
||||
-D torrent_file:string=assets/${file_basename}.torrent
|
||||
-D reference_file:string=${CMAKE_CURRENT_SOURCE_DIR}/assets/${file_basename}.show
|
||||
-P "${CMAKE_CURRENT_SOURCE_DIR}/run_transmission_show.cmake"
|
||||
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
|
||||
)
|
||||
endfunction()
|
||||
|
||||
AddShowTest(transmission-show-ubuntu ubuntu-20.04.3-desktop-amd64.iso)
|
||||
AddShowTest(transmission-show-thor Thor_and_the_Amazon_Women.avi)
|
||||
AddShowTest(transmission-show-inner-sanctum Inner_Sanctum_movie_archive)
|
68
tests/utils/assets/Inner_Sanctum_movie_archive.show
Normal file
68
tests/utils/assets/Inner_Sanctum_movie_archive.show
Normal file
|
@ -0,0 +1,68 @@
|
|||
Name: Inner_Sanctum_movie
|
||||
File: assets/Inner_Sanctum_movie_archive.torrent
|
||||
|
||||
GENERAL
|
||||
|
||||
Name: Inner_Sanctum_movie
|
||||
Hash: f735d5be075bdb8832e29c96e80e53fdace6178b
|
||||
Created by: ia_make_torrent
|
||||
Created on: Sat Oct 27 00:56:24 2018
|
||||
|
||||
Comment: This content hosted at the Internet Archive at https://archive.org/details/Inner_Sanctum_movie
|
||||
Files may have changed, which prevents torrents from downloading correctly or completely; please check for an updated torrent at https://archive.org/download/Inner_Sanctum_movie/Inner_Sanctum_movie_archive.torrent
|
||||
Note: retrieval usually requires a client that supports webseeding (GetRight style).
|
||||
Note: many Internet Archive torrents contain a 'pad file' directory. This directory and the files within it may be erased once retrieval completes.
|
||||
Note: the file Inner_Sanctum_movie_meta.xml contains metadata about this torrent's contents.
|
||||
Piece Count: 1090
|
||||
Piece Size: 2.00 MiB
|
||||
Total Size: 2.29 GB
|
||||
Privacy: Public torrent
|
||||
|
||||
TRACKERS
|
||||
|
||||
Tier #1
|
||||
http://bt1.archive.org:6969/announce
|
||||
|
||||
Tier #2
|
||||
http://bt2.archive.org:6969/announce
|
||||
|
||||
WEBSEEDS
|
||||
|
||||
https://archive.org/download/
|
||||
http://ia601406.us.archive.org/32/items/
|
||||
|
||||
FILES
|
||||
|
||||
Inner_Sanctum_movie/.____padding_file/0 (1.23 MB)
|
||||
Inner_Sanctum_movie/.____padding_file/1 (1.63 MB)
|
||||
Inner_Sanctum_movie/.____padding_file/10 (2.08 MB)
|
||||
Inner_Sanctum_movie/.____padding_file/11 (2.09 MB)
|
||||
Inner_Sanctum_movie/.____padding_file/12 (2.09 MB)
|
||||
Inner_Sanctum_movie/.____padding_file/14 (1.74 MB)
|
||||
Inner_Sanctum_movie/.____padding_file/15 (2.05 MB)
|
||||
Inner_Sanctum_movie/.____padding_file/16 (2.09 MB)
|
||||
Inner_Sanctum_movie/.____padding_file/17 (2.09 MB)
|
||||
Inner_Sanctum_movie/.____padding_file/2 (1.41 MB)
|
||||
Inner_Sanctum_movie/.____padding_file/3 (1.10 MB)
|
||||
Inner_Sanctum_movie/.____padding_file/4 (692.2 kB)
|
||||
Inner_Sanctum_movie/.____padding_file/5 (790.1 kB)
|
||||
Inner_Sanctum_movie/.____padding_file/6 (2.09 MB)
|
||||
Inner_Sanctum_movie/.____padding_file/7 (222.6 kB)
|
||||
Inner_Sanctum_movie/.____padding_file/9 (2.08 MB)
|
||||
Inner_Sanctum_movie/Inner_Sanctum.asr.js (362.1 kB)
|
||||
Inner_Sanctum_movie/Inner_Sanctum.asr.srt (46.41 kB)
|
||||
Inner_Sanctum_movie/Inner_Sanctum.avi (414.0 MB)
|
||||
Inner_Sanctum_movie/Inner_Sanctum.gif (462.5 kB)
|
||||
Inner_Sanctum_movie/Inner_Sanctum.mp3 (44.73 MB)
|
||||
Inner_Sanctum_movie/Inner_Sanctum.mp4 (386.9 MB)
|
||||
Inner_Sanctum_movie/Inner_Sanctum.mpeg (854.9 MB)
|
||||
Inner_Sanctum_movie/Inner_Sanctum.ogv (288.6 MB)
|
||||
Inner_Sanctum_movie/Inner_Sanctum.png (10.83 kB)
|
||||
Inner_Sanctum_movie/Inner_Sanctum_512kb.mp4 (270.3 MB)
|
||||
Inner_Sanctum_movie/Inner_Sanctum_movie_meta.xml (3.62 kB)
|
||||
Inner_Sanctum_movie/Inner_Sanctum_pic.jpg (14.31 kB)
|
||||
Inner_Sanctum_movie/Inner_Sanctum_pic2.jpg (19.09 kB)
|
||||
Inner_Sanctum_movie/Inner_Sanctum_pic2_thumb.jpg (3.54 kB)
|
||||
Inner_Sanctum_movie/Inner_Sanctum_pic_thumb.jpg (2.94 kB)
|
||||
Inner_Sanctum_movie/__ia_thumb.jpg (4.83 kB)
|
||||
|
BIN
tests/utils/assets/Inner_Sanctum_movie_archive.torrent
Normal file
BIN
tests/utils/assets/Inner_Sanctum_movie_archive.torrent
Normal file
Binary file not shown.
24
tests/utils/assets/Thor_and_the_Amazon_Women.avi.show
Normal file
24
tests/utils/assets/Thor_and_the_Amazon_Women.avi.show
Normal file
|
@ -0,0 +1,24 @@
|
|||
Name: Thor_and_the_Amazon_Women.avi
|
||||
File: assets/Thor_and_the_Amazon_Women.avi.torrent
|
||||
|
||||
GENERAL
|
||||
|
||||
Name: Thor_and_the_Amazon_Women.avi
|
||||
Hash: 43fdd3e72588e9119c9c94c54332ee533cf80bd6
|
||||
Created by: Azureus/2.5.0.2
|
||||
Created on: Mon Jan 22 00:57:20 2007
|
||||
|
||||
Piece Count: 1493
|
||||
Piece Size: 512.0 KiB
|
||||
Total Size: 782.3 MB
|
||||
Privacy: Public torrent
|
||||
|
||||
TRACKERS
|
||||
|
||||
Tier #1
|
||||
http://files2.publicdomaintorrents.com/bt/announce.php
|
||||
|
||||
FILES
|
||||
|
||||
Thor_and_the_Amazon_Women.avi (782.3 MB)
|
||||
|
BIN
tests/utils/assets/Thor_and_the_Amazon_Women.avi.torrent
Normal file
BIN
tests/utils/assets/Thor_and_the_Amazon_Women.avi.torrent
Normal file
Binary file not shown.
28
tests/utils/assets/ubuntu-20.04.3-desktop-amd64.iso.show
Normal file
28
tests/utils/assets/ubuntu-20.04.3-desktop-amd64.iso.show
Normal file
|
@ -0,0 +1,28 @@
|
|||
Name: ubuntu-20.04.3-desktop-amd64.iso
|
||||
File: assets/ubuntu-20.04.3-desktop-amd64.iso.torrent
|
||||
|
||||
GENERAL
|
||||
|
||||
Name: ubuntu-20.04.3-desktop-amd64.iso
|
||||
Hash: b26c81363ac1a236765385a702aec107a49581b5
|
||||
Created by: mktorrent 1.1
|
||||
Created on: Thu Aug 26 09:42:51 2021
|
||||
|
||||
Comment: Ubuntu CD releases.ubuntu.com
|
||||
Piece Count: 11719
|
||||
Piece Size: 256.0 KiB
|
||||
Total Size: 3.07 GB
|
||||
Privacy: Public torrent
|
||||
|
||||
TRACKERS
|
||||
|
||||
Tier #1
|
||||
https://torrent.ubuntu.com/announce
|
||||
|
||||
Tier #2
|
||||
https://ipv6.torrent.ubuntu.com/announce
|
||||
|
||||
FILES
|
||||
|
||||
ubuntu-20.04.3-desktop-amd64.iso (3.07 GB)
|
||||
|
BIN
tests/utils/assets/ubuntu-20.04.3-desktop-amd64.iso.torrent
Normal file
BIN
tests/utils/assets/ubuntu-20.04.3-desktop-amd64.iso.torrent
Normal file
Binary file not shown.
52
tests/utils/run_transmission_show.cmake
Normal file
52
tests/utils/run_transmission_show.cmake
Normal file
|
@ -0,0 +1,52 @@
|
|||
# compare the output of transmission-show to a reference file.
|
||||
# returns 0 if the files match, nonzero otherwise.
|
||||
##
|
||||
|
||||
if (CMAKE_VERSION VERSION_LESS 3.14)
|
||||
# --ignore-eol was introduced in CMake 3.14
|
||||
message(status "skipping transmission-show test; cmake version too old")
|
||||
else()
|
||||
get_filename_component(torrent_basename "${torrent_file}" NAME)
|
||||
set(output_file ${CMAKE_CURRENT_BINARY_DIR}/${torrent_basename}.out)
|
||||
|
||||
message(STATUS "transmission_show ${transmission_show}")
|
||||
message(STATUS " input_file ${torrent_file}")
|
||||
message(STATUS " output_file ${output_file}")
|
||||
message(STATUS " reference_file ${reference_file}")
|
||||
|
||||
# The app's output includes timestamps, so fake our TZ to ensure
|
||||
# the test doesn't depend on the physical TZ of the test machine
|
||||
set(ENV{TZ} "UTC")
|
||||
execute_process(
|
||||
COMMAND ${transmission_show} ${torrent_file}
|
||||
OUTPUT_FILE ${output_file}
|
||||
)
|
||||
|
||||
execute_process(
|
||||
COMMAND ${CMAKE_COMMAND} -E compare_files --ignore-eol ${reference_file} ${output_file}
|
||||
RESULT_VARIABLE STATUS
|
||||
)
|
||||
|
||||
if(STATUS AND NOT STATUS EQUAL 0)
|
||||
file(READ ${reference_file} CONTENTS)
|
||||
message("EXPECTED CONTENTS (${reference_file}):")
|
||||
message(${CONTENTS})
|
||||
|
||||
file(READ ${output_file} CONTENTS)
|
||||
message("RECEIVED CONTENTS (${output_file}):")
|
||||
message(${CONTENTS})
|
||||
|
||||
find_program(DIFF_EXEC diff)
|
||||
if (DIFF_EXEC)
|
||||
message("DIFF:")
|
||||
execute_process(COMMAND ${DIFF_EXEC} ${output_file} ${reference_file})
|
||||
endif()
|
||||
|
||||
file(REMOVE ${output_file})
|
||||
message(FATAL_ERROR "failed: files '${reference_file}' and '${output_file}' do not match")
|
||||
else()
|
||||
file(REMOVE ${output_file})
|
||||
message("passed")
|
||||
endif()
|
||||
|
||||
endif()
|
|
@ -107,7 +107,7 @@ static char const* time_t_to_str(time_t timestamp)
|
|||
struct tm tm;
|
||||
tr_localtime_r(×tamp, &tm);
|
||||
static char buf[32];
|
||||
strftime(buf, sizeof(buf), "%a %b %2e %T %Y%n", &tm); /* ctime equiv */
|
||||
strftime(buf, sizeof(buf), "%a %b %d %T %Y%n", &tm); /* ctime equiv */
|
||||
return buf;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue