mirror of
https://gitlab.gnome.org/GNOME/nautilus
synced 2024-11-04 19:08:23 +00:00
83c2c6fdda
Originally introduced by 469047a2a5
It's been disabled because it relied on gtk_main* API, which is gone
in GTK4, but even after porting to GMainLoop API, it fails to work
because operations invoke GApplication inhibition.
In other words: I'm confident this test program has been broken for
years without anyone realizing it.
We already have automatic tests for copy operations. Manual testing
can be done with the nautilus application itself with debug messages
enabled.
So, let's just drop the broken obsolete test code.
266 lines
6.2 KiB
Python
266 lines
6.2 KiB
Python
#!/usr/bin/env python
|
|
#
|
|
# file-torture.py - Simple torture test for file notificatins in Nautilus
|
|
# Copyright (C) 2006 Federico Mena-Quintero
|
|
#
|
|
# This program is free software; you can redistribute it and/or modify
|
|
# it under the terms of the GNU General Public License as published by
|
|
# the Free Software Foundation; either version 2 of the License, or
|
|
# (at your option) any later version.
|
|
#
|
|
# This program is distributed in the hope that it will be useful,
|
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
# GNU General Public License for more details.
|
|
#
|
|
# You should have received a copy of the GNU General Public License along
|
|
# with this program; if not, see <http://www.gnu.org/licenses/>.
|
|
#
|
|
# Author: Federico Mena-Quintero <federico@novell.com>
|
|
|
|
import random
|
|
import os
|
|
import sys
|
|
import optparse
|
|
import time
|
|
|
|
output_dir = ""
|
|
random_gen = None
|
|
verbose = False
|
|
|
|
extensions = (".doc", ".gif", ".jpg", ".png", ".xls", ".odt", ".odp", ".ods", ".txt", ".zip", ".gz")
|
|
|
|
files = []
|
|
directories = []
|
|
|
|
def get_random_file_index ():
|
|
n = len (files)
|
|
if n == 0:
|
|
return -1
|
|
else:
|
|
return random_gen.randrange (n)
|
|
|
|
def get_random_directory_index ():
|
|
n = len (directories)
|
|
if n == 0:
|
|
return -1
|
|
else:
|
|
return random_gen.randrange (n)
|
|
|
|
def get_random_filename ():
|
|
chars = []
|
|
for i in range (20):
|
|
chars.append ("abcdefghijklmnopqrstuvwxyz"[random_gen.randrange (26)])
|
|
|
|
extension = extensions[random_gen.randrange (len (extensions))]
|
|
filename = "".join (chars) + extension
|
|
return filename
|
|
|
|
def get_random_path ():
|
|
return os.path.join (output_dir, get_random_filename ())
|
|
|
|
def op_create_file ():
|
|
filename = get_random_path ()
|
|
files.append (filename)
|
|
f = open (filename, "w")
|
|
f.close ()
|
|
|
|
if verbose:
|
|
print 'create file %s' % filename
|
|
|
|
return True
|
|
|
|
def op_move_file ():
|
|
idx = get_random_file_index ()
|
|
if idx == -1:
|
|
return False
|
|
|
|
new_name = get_random_path ()
|
|
old_name = files[idx]
|
|
os.rename (old_name, new_name)
|
|
files[idx] = new_name
|
|
|
|
if verbose:
|
|
print 'rename file %s to %s' % (old_name, new_name)
|
|
|
|
return True
|
|
|
|
def op_delete_file ():
|
|
idx = get_random_file_index ()
|
|
if idx == -1:
|
|
return False
|
|
|
|
filename = files[idx]
|
|
|
|
os.unlink (filename)
|
|
files.pop (idx)
|
|
|
|
if verbose:
|
|
print 'delete file %s' % filename
|
|
|
|
return True
|
|
|
|
def op_write_file ():
|
|
idx = get_random_file_index ()
|
|
if idx == -1:
|
|
return False
|
|
|
|
name = files[idx]
|
|
f = open (name, "a")
|
|
f.write ("blah blah blah blah blah blah blah\n")
|
|
f.close ()
|
|
|
|
if verbose:
|
|
print 'write to file %s' % name
|
|
|
|
return True
|
|
|
|
def op_create_dir ():
|
|
name = get_random_path ()
|
|
os.mkdir (name)
|
|
directories.append (name)
|
|
|
|
if verbose:
|
|
print 'create directory %s' % name
|
|
|
|
return True
|
|
|
|
def op_move_dir ():
|
|
idx = get_random_directory_index ()
|
|
if idx == -1:
|
|
return False
|
|
|
|
new_name = get_random_path ()
|
|
old_name = directories[idx]
|
|
os.rename (old_name, new_name)
|
|
directories[idx] = new_name
|
|
|
|
if verbose:
|
|
print 'move directory %s to %s' % (old_name, new_name)
|
|
|
|
return True
|
|
|
|
def op_delete_dir ():
|
|
idx = get_random_directory_index ()
|
|
if idx == -1:
|
|
return False
|
|
|
|
name = directories[idx]
|
|
os.rmdir (name)
|
|
directories.pop (idx)
|
|
|
|
if verbose:
|
|
print 'delete directory %s' % name
|
|
|
|
return True
|
|
|
|
def op_file_to_dir ():
|
|
idx = get_random_file_index ()
|
|
if idx == -1:
|
|
return False
|
|
|
|
name = files[idx]
|
|
os.unlink (name)
|
|
files.pop (idx)
|
|
os.mkdir (name)
|
|
directories.append (name)
|
|
|
|
if verbose:
|
|
print 'file to dir %s' % name
|
|
|
|
return True
|
|
|
|
def op_dir_to_file ():
|
|
idx = get_random_directory_index ()
|
|
if idx == -1:
|
|
return False
|
|
|
|
name = directories[idx]
|
|
os.rmdir (name)
|
|
directories.pop (idx)
|
|
f = open (name, "w")
|
|
f.close ()
|
|
files.append (name)
|
|
|
|
if verbose:
|
|
print 'dir to file %s' % name
|
|
|
|
return True
|
|
|
|
operations = (
|
|
op_create_file,
|
|
op_move_file,
|
|
op_delete_file,
|
|
op_write_file,
|
|
op_create_dir,
|
|
op_move_dir,
|
|
op_delete_dir,
|
|
op_file_to_dir,
|
|
op_dir_to_file,
|
|
)
|
|
|
|
def main ():
|
|
option_parser = optparse.OptionParser (usage="usage: %prog -o <dirname>")
|
|
option_parser.add_option ("-o",
|
|
"--output", dest="output",
|
|
metavar="FILE",
|
|
help="Name of output directory")
|
|
option_parser.add_option ("-s",
|
|
"--seed", dest="seed",
|
|
metavar="NUMBER",
|
|
help="Random number seed")
|
|
option_parser.add_option ("",
|
|
"--no-sleep", dest="sleep_enabled", action="store_false", default=True,
|
|
help="Disable short sleeps between operations. Will use a lot of CPU!")
|
|
option_parser.add_option ("-v",
|
|
"--verbose", dest="verbose", action="store_true", default=False,
|
|
help="Enable verbose output")
|
|
|
|
(options, args) = option_parser.parse_args ()
|
|
|
|
if not options.output:
|
|
print 'Please specify an output directory with "-o outputdir"'
|
|
return 1
|
|
|
|
sleep_enabled = options.sleep_enabled
|
|
|
|
if len (args) != 0:
|
|
print 'No extra arguments are supported'
|
|
return 1
|
|
|
|
global output_dir
|
|
global random_gen
|
|
global verbose
|
|
|
|
verbose = options.verbose
|
|
|
|
random_gen = random.Random ()
|
|
if options.seed:
|
|
seed = int (options.seed)
|
|
else:
|
|
seed = int (time.time ())
|
|
|
|
print 'Use "--seed=%s" to reproduce this run' % seed
|
|
random_gen.seed (seed)
|
|
|
|
if sleep_enabled:
|
|
print 'Using short sleeps between operations (use --no-sleep to disable)'
|
|
else:
|
|
print 'Disabling short sleeps between operations'
|
|
|
|
output_dir = options.output
|
|
try:
|
|
os.mkdir (output_dir)
|
|
except:
|
|
1 # nothing
|
|
|
|
while True:
|
|
op = operations [random_gen.randrange (len (operations))]
|
|
op ()
|
|
if sleep_enabled:
|
|
time.sleep (random_gen.random () / 100)
|
|
|
|
return 0
|
|
|
|
if __name__ == "__main__":
|
|
sys.exit (main ())
|