// load() and snarf() (aka read()) should resolve paths relative to the current // working directory. This is a little hard to test because the shell doesn't // really have any (portable) notion of the current directory (and it can't // create files to enforce an expected layout.) loadRelativeToScript() and // readRelativeToScript() do what their names say, which is much easier to // test. loaded = {} snarfed = {} loadRel = {} snarfRel = {} for (let f of ['local.js', '../basic/local.js', 'Y.js']) { try { load(f); loaded[f] = true; } catch(e) { loaded[f] = !/can't open/.test(e); } try { snarf(f); snarfed[f] = true; } catch(e) { snarfed[f] = !/can't open/.test(e); } try { readRelativeToScript(f); snarfRel[f] = true; } catch(e) { snarfRel[f] = !/can't open/.test(e); } try { loadRelativeToScript(f); loadRel[f] = true; } catch(e) { loadRel[f] = !/can't open/.test(e); } } // local.js in the same dir as this script, so should be found by the // script-relative calls but not the cwd-relative ones -- unless you happen to // be in that directory assertEq(loadRel['local.js'], true); assertEq(loadRel['../basic/local.js'], true); assertEq(snarfRel['local.js'], true); assertEq(snarfRel['../basic/local.js'], true); var cwd = os.getenv('PWD'); if (cwd !== undefined && !(/test.*[\/\\]basic[\/\\]/.test(cwd))) { assertEq(loaded['local.js'], false); assertEq(loaded['../basic/local.js'], false); assertEq(snarfed['local.js'], false); assertEq(snarfed['../basic/local.js'], false); } // Y.js is in the root of the objdir, where |make check| is normally // run from. assertEq(loadRel['Y.js'], false); assertEq(snarfRel['Y.js'], false); if (!snarfed['Y.js']) { print("WARNING: expected to be able to find Y.js in current directory\n"); print("(not failing because it depends on where this test was run from)\n"); } if (!loaded['Y.js']) { print("WARNING: expected to be able to find Y.js in current directory\n"); print("(not failing because it depends on where this test was run from)\n"); }