Message ID | 20200218221916.239951-1-heidifahim@google.com (mailing list archive) |
---|---|
State | New |
Headers | show |
Series | [v2] kunit: run kunit_tool from any directory | expand |
Hi Heidi, On 2/18/20 3:19 PM, Heidi Fahim wrote: > Implemented small fix so that the script changes work directories to the > root of the linux kernel source tree from which kunit.py is run. This > enables the user to run kunit from any working directory. Originally > considered using os.path.join but this is more error prone as we would > have to find all file path usages and modify them accordingly. Using > os.chdir ensures that the entire script is run within /linux. > > Signed-off-by: Heidi Fahim <heidifahim@google.com> > Reviewed-by: Brendan Higgins <brendanhiggins@google.com> Thanks for the patch. In the future please include changes from v1 to v2. I am assuming this v2 addresses Frank's comments. > --- > tools/testing/kunit/kunit.py | 12 ++++++++++++ > 1 file changed, 12 insertions(+) > > diff --git a/tools/testing/kunit/kunit.py b/tools/testing/kunit/kunit.py > index 3f552e847a14..060d960a7029 100755 > --- a/tools/testing/kunit/kunit.py > +++ b/tools/testing/kunit/kunit.py > @@ -26,6 +26,8 @@ KunitResult = namedtuple('KunitResult', ['status','result']) > KunitRequest = namedtuple('KunitRequest', ['raw_output','timeout', 'jobs', > 'build_dir', 'defconfig', 'json']) > > +KernelDirectoryPath = sys.argv[0].split('tools/testing/kunit/')[0] > + > class KunitStatus(Enum): > SUCCESS = auto() > CONFIG_FAILURE = auto() > @@ -37,6 +39,13 @@ def create_default_kunitconfig(): > shutil.copyfile('arch/um/configs/kunit_defconfig', > kunit_kernel.kunitconfig_path) > > +def get_kernel_root_path(): > + parts = sys.argv[0] if not __file__ else __file__ > + parts = os.path.realpath(parts).split('tools/testing/kunit') > + if len(parts) != 2: > + sys.exit(1) > + return parts[0] > + > def run_tests(linux: kunit_kernel.LinuxSourceTree, > request: KunitRequest) -> KunitResult: > config_start = time.time() > @@ -130,6 +139,9 @@ def main(argv, linux=None): > cli_args = parser.parse_args(argv) > > if cli_args.subcommand == 'run': > + if get_kernel_root_path(): > + os.chdir(get_kernel_root_path()) > + > if cli_args.build_dir: > if not os.path.exists(cli_args.build_dir): > os.mkdir(cli_args.build_dir) > thanks, -- Shuah
On 2/19/20 3:38 PM, Heidi Fahim wrote: > On Wed, Feb 19, 2020 at 2:18 PM shuah <shuah@kernel.org > <mailto:shuah@kernel.org>> wrote: > > Hi Heidi, > > On 2/18/20 3:19 PM, Heidi Fahim wrote: > > Implemented small fix so that the script changes work directories > to the > > root of the linux kernel source tree from which kunit.py is run. This > > enables the user to run kunit from any working directory. Originally > > considered using os.path.join but this is more error prone as we > would > > have to find all file path usages and modify them accordingly. Using > > os.chdir ensures that the entire script is run within /linux. > > > > Signed-off-by: Heidi Fahim <heidifahim@google.com > <mailto:heidifahim@google.com>> > > Reviewed-by: Brendan Higgins <brendanhiggins@google.com > <mailto:brendanhiggins@google.com>> > > Thanks forĀ the patch. In the future please include changes from v1 > to v2. > > I am assuming this v2 addresses Frank's comments. > > > Sorry about that! Yes the only change here was in the commit message > addressing Frank's comment. > Great. I will pull this in for 5.6-rc4. thanks, -- Shuah
diff --git a/tools/testing/kunit/kunit.py b/tools/testing/kunit/kunit.py index 3f552e847a14..060d960a7029 100755 --- a/tools/testing/kunit/kunit.py +++ b/tools/testing/kunit/kunit.py @@ -26,6 +26,8 @@ KunitResult = namedtuple('KunitResult', ['status','result']) KunitRequest = namedtuple('KunitRequest', ['raw_output','timeout', 'jobs', 'build_dir', 'defconfig', 'json']) +KernelDirectoryPath = sys.argv[0].split('tools/testing/kunit/')[0] + class KunitStatus(Enum): SUCCESS = auto() CONFIG_FAILURE = auto() @@ -37,6 +39,13 @@ def create_default_kunitconfig(): shutil.copyfile('arch/um/configs/kunit_defconfig', kunit_kernel.kunitconfig_path) +def get_kernel_root_path(): + parts = sys.argv[0] if not __file__ else __file__ + parts = os.path.realpath(parts).split('tools/testing/kunit') + if len(parts) != 2: + sys.exit(1) + return parts[0] + def run_tests(linux: kunit_kernel.LinuxSourceTree, request: KunitRequest) -> KunitResult: config_start = time.time() @@ -130,6 +139,9 @@ def main(argv, linux=None): cli_args = parser.parse_args(argv) if cli_args.subcommand == 'run': + if get_kernel_root_path(): + os.chdir(get_kernel_root_path()) + if cli_args.build_dir: if not os.path.exists(cli_args.build_dir): os.mkdir(cli_args.build_dir)