Coder Social home page Coder Social logo

Comments (6)

josephwright avatar josephwright commented on August 23, 2024

I now understand what's going on: it's rather specific to this particular form of test. In tlb-rollback-003.lvt one finds

\begin{filecontents}{testpkg.sty}
% The current package ...
\DeclareOldRelease[v1]{2014-01-01}{testpkg-2014-01-01}
\DeclareOldRelease[v2]{2018/10-01}{testpkg-2018-10-01}
\DeclareNamedRelease{testpkg-beta}
\DeclareNamedRelease[beta4]{testpkg-beta}
\DeclareCurrentRelease[v3]{2019-07-01}

\ProvidesPackage{testpkg}[2019-07-21 v3.5 test package] % this has a
                                                        % minor change
                                                        % so a
                                                        % different date
\DeclareOption{dvips}{\typeout{ -> option dvips executed}}
\ProcessOptions
\typeout{This is the current testpkg! }
\end{filecontents}

which when run as a single test will happily generate testpkg.sty and give the desired results. However, when run as part of a sequence, we have tlb-rollback-2.lvt, which features

\begin{filecontents}{testpkg.sty}
% The current package ...
\DeclareOldRelease[v1]{2014-01-01}{testpkg-2014-01-01}
\DeclareOldRelease[v2]{2018-10-01}{testpkg-2018-10-01}
\DeclareCurrentRelease[v3]{2019-07-01}

\ProvidesPackage{testpkg}[2019-07-21 v3.5 test package] % this has a
                                                        % minor change
                                                        % so a
                                                        % different date
\DeclareOption{dvips}{\typeout{ -> option dvips executed}}
\ProcessOptions
\typeout{This is the current testpkg! }
\end{filecontents}

ans so 'wins'.

The current 'clean up' logic only moves auxiliary files with names of the form test.xyx to test.engine.xyz, and doesn't try to 'kill' anything else. That avoids having to copy/save/... every file every time for bulk testing, but does mean there can be some 'leakage'. We have two options

  • Actively clean up after every test, and save just the outputs (.diff files) - will be slow(ish)
  • Add a new variable for 'files to clean up after each test', something like checkcleanfiles?

The latter is trivial to implement and seems faster ...

from l3build.

FrankMittelbach avatar FrankMittelbach commented on August 23, 2024

@josephwright ouch, bloody stupid on my part I should have realized that.

We could add checkcleanfiles though the name is perhaps not quite right as it is only the extras you clean (some cleaning happens anway doesn't it)? Are you thinking of something like

checkcleanfiles = { "testpkg*.*" }

or something?

I think it is probably ok to just remember that restriction (and perhaps even document it :-) ) and I change the names to not conflict

from l3build.

josephwright avatar josephwright commented on August 23, 2024

@FrankMittelbach Documenting that everything runs in one place is likely the easiest solution: it's hard to imagine a case where one can't clean up anyway.

from l3build.

blefloch avatar blefloch commented on August 23, 2024

from l3build.

FrankMittelbach avatar FrankMittelbach commented on August 23, 2024

that's the case I stumbled upon (using filecontents with different content but same filename). and no the star form doesn't help, that isn't overwriting that is only suppressing any commentary put at the top.

from l3build.

josephwright avatar josephwright commented on August 23, 2024

I'm gong to sort this: just need to work out where in the docs to say 'be careful with generated files'.

from l3build.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.