helloadhavan/github_issues huggingface dataset:
Repository: vuejs/vue
Pull request: [2.0][suggestion] pass v-on event handlers on functional component

Sometimes, there are times when we pass v-on event handlers to `render` function arguments on functional component.

The below URL is implemented example with v-bind on functional component.
http://jsfiddle.net/kazupon/bjp40byw/6/

In example, we need to define handler in `props`. 
I think that come in useful by v-on event handers passing through.


Changed files:
filename: src/core/vdom/create-component.js
patch: @@ -71,9 +71,10 @@ export function createComponent (
   if (Ctor.options.functional) {
     return Ctor.options.render.call(
       null,
-      parent.$createElement,      // h
-      propsData || {},            // props
-      normalizeChildren(children) // children
+      parent.$createElement,       // h
+      propsData || {},             // props
+      normalizeChildren(children), // children
+      data                         // data
     )
   }
 

filename: test/unit/features/options/functional.spec.js
patch: @@ -21,4 +21,63 @@ describe('Options functional', () => {
       expect(vm.$el.innerHTML).toBe('<div>qux bar</div>')
     }).then(done)
   })
+
+  it('should let vnode raw data pass through', done => {
+    const onValid = jasmine.createSpy('valid')
+    const vm = new Vue({
+      data: { msg: 'hello' },
+      template: `<div>
+        <validate field="field1" @valid="onValid">
+          <input type="text" v-model="msg">
+        </validate>
+      </div>`,
+      components: {
+        validate: {
+          functional: true,
+          props: ['field'],
+          render (h, props, children, { on }) {
+            props.child = children[0]
+            return h('validate-control', { props, on })
+          }
+        },
+        'validate-control': {
+          props: ['field', 'child'],
+          render () {
+            return this.child
+          },
+          mounted () {
+            this.$el.addEventListener('input', this.onInput)
+          },
+          destroyed () {
+            this.$el.removeEventListener('input', this.onInput)
+          },
+          methods: {
+            onInput (e) {
+              const value = e.target.value
+              if (this.validate(value)) {
+                this.$emit('valid', this)
+              }
+            },
+            // something validation logic here
+            validate (val) {
+              return val.length > 0
+            }
+          }
+        }
+      },
+      methods: { onValid }
+    }).$mount()
+    document.body.appendChild(vm.$el)
+    const input = vm.$el.querySelector('input')
+    expect(onValid).not.toHaveBeenCalled()
+    waitForUpdate(() => {
+      input.value = 'foo'
+      triggerEvent(input, 'input')
+    }).then(() => {
+      expect(onValid).toHaveBeenCalled()
+    }).then(() => {
+      document.body.removeChild(vm.$el)
+      vm.$destroy()
+    }).then(done)
+  })
 })
Repository: nodejs/node
Pull request: tools: fix inspector_protocol updater

`.github/workflows/tools.yml` creates a temp file `temp-output` in the
workspace, which fails `git status` clean repo check. Also, the GHA
checks out a new branch after the update script.

Removes these checks in the `roll.py` to fix its run on the  GHA.
Fixes https://github.com/nodejs/node/actions/runs/18559084187/job/52903496133

Changed files:
filename: tools/inspector_protocol/roll.py
patch: @@ -47,13 +47,6 @@ def CheckRepoIsClean(path):
     raise Exception('%s is not a clean git repo (run git status)' % path)
 
 
-def CheckRepoIsNotAtMainBranch(path):
-  os.chdir(path)
-  stdout = RunCmd(['git', 'rev-parse', '--abbrev-ref', 'HEAD']).strip()
-  if stdout == 'main':
-    raise Exception('%s is at main branch - refusing to copy there.' % path)
-
-
 def CheckRepoIsInspectorProtocolCheckout(path):
   os.chdir(path)
   revision = RunCmd(['git', 'config', '--get', 'remote.origin.url']).strip()
@@ -123,12 +116,7 @@ def main(argv):
   downstream = os.path.normpath(os.path.expanduser(
       args.node_src_downstream))
   CheckRepoIsClean(upstream)
-  CheckRepoIsClean(downstream)
   CheckRepoIsInspectorProtocolCheckout(upstream)
-  # Check that the destination Git repo isn't at the main branch - it's
-  # generally a bad idea to check into the main branch, so we catch this
-  # common pilot error here early.
-  CheckRepoIsNotAtMainBranch(downstream)
 
   # Read V8's inspector_protocol revision
   v8_ip_revision = ReadV8IPRevision(downstream)
Repository: ollama/ollama
Pull request: llm: consider `head_dim` in llama arch


Changed files:
filename: llm/patches/11-embd_kv.diff
patch: @@ -0,0 +1,19 @@
+diff --git a/src/llama.cpp b/src/llama.cpp
+index 2b9ace28..e60d3d8d 100644
+--- a/src/llama.cpp
++++ b/src/llama.cpp
+@@ -6052,10 +6052,10 @@ static bool llm_load_tensors(
+ 
+                         layer.attn_norm = ml.create_tensor(ctx_layer, tn(LLM_TENSOR_ATTN_NORM, "weight", i), {n_embd});
+ 
+-                        layer.wq = ml.create_tensor(ctx_split, tn(LLM_TENSOR_ATTN_Q,   "weight", i), {n_embd, n_embd});
+-                        layer.wk = ml.create_tensor(ctx_split, tn(LLM_TENSOR_ATTN_K,   "weight", i), {n_embd, n_embd_gqa});
+-                        layer.wv = ml.create_tensor(ctx_split, tn(LLM_TENSOR_ATTN_V,   "weight", i), {n_embd, n_embd_gqa});
+-                        layer.wo = ml.create_tensor(ctx_split, tn(LLM_TENSOR_ATTN_OUT, "weight", i), {n_embd, n_embd});
++                        layer.wq = ml.create_tensor(ctx_split, tn(LLM_TENSOR_ATTN_Q,   "weight", i), {n_embd,  n_embd_head_k * n_head});
++                        layer.wk = ml.create_tensor(ctx_split, tn(LLM_TENSOR_ATTN_K,   "weight", i), {n_embd, n_embd_k_gqa});
++                        layer.wv = ml.create_tensor(ctx_split, tn(LLM_TENSOR_ATTN_V,   "weight", i), {n_embd, n_embd_v_gqa});
++                        layer.wo = ml.create_tensor(ctx_split, tn(LLM_TENSOR_ATTN_OUT, "weight", i), {n_embd_head_k * n_head, n_embd});
+ 
+                         // optional bias tensors
+                         layer.bq = ml.create_tensor(ctx_layer, tn(LLM_TENSOR_ATTN_Q,   "bias", i), {n_embd},     llama_model_loader::TENSOR_NOT_REQUIRED);
Repository: ggml-org/llama.cpp
Pull request: gguf: display strerrno when cant load a model

I've had issues loading models with llama-server:
[44039] E gguf_init_from_file: failed to open GGUF file 'mistral-7b-v0.1.Q8_0.gguf'

and I was sure it could access the file. Seems like --models-dir and --models-presets dont interact like I thought they would but I salvaged this snippet that helps troubleshooting
[44039] E gguf_init_from_file: failed to open GGUF file 'mistral-7b-v0.1.Q8_0.gguf' (errno No such file or directory)

*Make sure to read the [contributing guidelines](https://github.com/ggml-org/llama.cpp/blob/master/CONTRIBUTING.md) before submitting a PR*


Changed files:
filename: ggml/src/gguf.cpp
patch: @@ -734,7 +734,7 @@ struct gguf_context * gguf_init_from_file(const char * fname, struct gguf_init_p
     FILE * file = ggml_fopen(fname, "rb");
 
     if (!file) {
-        GGML_LOG_ERROR("%s: failed to open GGUF file '%s'\n", __func__, fname);
+        GGML_LOG_ERROR("%s: failed to open GGUF file '%s' (%s)\n", __func__, fname, strerror(errno));
         return nullptr;
     }
Repository: vuejs/vue
Pull request: textarea with v-pre attr should skip compile

skip compile before process it's :value when a textarea has v-pre attr
Fixed #3184 


Changed files:
filename: src/compiler/compile.js
patch: @@ -326,6 +326,10 @@ function compileElement (el, options) {
   // textarea treats its text content as the initial value.
   // just bind it as an attr directive for value.
   if (el.tagName === 'TEXTAREA') {
+    // a textarea which has v-pre attr should skip complie.
+    if (getAttr(el, 'v-pre') !== null) {
+      return skip
+    }
     var tokens = parseText(el.value)
     if (tokens) {
       el.setAttribute(':value', tokensToExp(tokens))
Repository: facebook/react
Pull request: [Flight] Fix double-incremented pending chunks counter

Before calling `emitTimingChunk` inside of `forwardDebugInfo`, we must not increment `request.pendingChunks`, as this is already done inside of the `emitTimingChunk` function.

I don't have a unit test for this, but manually verified that this fixes the hanging responses in https://github.com/vercel/next.js/pull/73804.

Changed files:
filename: packages/react-server/src/ReactFlightServer.js
patch: @@ -3810,11 +3810,11 @@ function forwardDebugInfo(
   debugInfo: ReactDebugInfo,
 ) {
   for (let i = 0; i < debugInfo.length; i++) {
-    request.pendingChunks++;
     if (typeof debugInfo[i].time === 'number') {
       // When forwarding time we need to ensure to convert it to the time space of the payload.
       emitTimingChunk(request, id, debugInfo[i].time);
     } else {
+      request.pendingChunks++;
       if (typeof debugInfo[i].name === 'string') {
         // We outline this model eagerly so that we can refer to by reference as an owner.
         // If we had a smarter way to dedupe we might not have to do this if there ends up
Repository: vuejs/vue
Pull request: fix props validation fails (#3183)


Changed files:
filename: src/compiler/compile-props.js
patch: @@ -38,6 +38,7 @@ const settablePathRE = /^[A-Za-z_$][\w$]*(\.[A-Za-z_$][\w$]*|\[[^\[\]]+\])*$/
 
 export function compileProps (el, propOptions, vm) {
   var props = []
+  var propsData = vm.$options.propsData
   var names = Object.keys(propOptions)
   var i = names.length
   var options, name, attr, value, path, parsed, prop
@@ -122,6 +123,9 @@ export function compileProps (el, propOptions, vm) {
     } else if ((value = getAttr(el, attr)) !== null) {
       // has literal binding!
       prop.raw = value
+    } else if (propsData && ((value = propsData[name] || propsData[path]) !== null)) {
+      // has propsData
+      prop.raw = value
     } else if (process.env.NODE_ENV !== 'production') {
       // check possible camelCase prop usage
       var lowerCaseName = path.toLowerCase()

filename: test/unit/specs/directives/internal/prop_spec.js
patch: @@ -621,6 +621,36 @@ describe('prop', function () {
     expect(vm.a).toBe(123)
   })
 
+  // # GitHub issues #3183
+  it('pass propsData to create component that props is defined', function () {
+    var Comp = Vue.extend({
+      template: '<div>{{propA.a}}:{{propB.b}}</div>',
+      props: {
+        propA: {
+          type: Object,
+          required: true
+        },
+        'prop-b': {
+          type: Object,
+          required: true
+        }
+      }
+    })
+    var vm = new Comp({
+      el: el,
+      propsData: {
+        propA: { a: 123 },
+        propB: { b: '456' }
+      }
+    })
+    expect(vm.propA.a).toBe(123)
+    expect(vm.propB.b).toBe('456')
+    expect('Missing required prop: propA').not.toHaveBeenWarned()
+    expect('Invalid prop: type check failed for prop "propA". Expected Object, got Undefined').not.toHaveBeenWarned()
+    expect('Missing required prop: prop-b').not.toHaveBeenWarned()
+    expect('Invalid prop: type check failed for prop "prop-b". Expected Object, got Undefined').not.toHaveBeenWarned()
+  })
+
   it('should warn using propsData during extension', function () {
     Vue.extend({
       propsData: {
Repository: ggml-org/llama.cpp
Pull request: llama : clarify nemotron-h.cpp comment about RoPE [no ci]

This commit removes the mention of RoPE in the comment for the Q and K computation as RoPE is not applied.


Changed files:
filename: src/models/nemotron-h.cpp
patch: @@ -67,7 +67,7 @@ ggml_tensor * llm_build_nemotron_h::build_attention_layer(ggml_tensor *
                                                           const llama_model &       model,
                                                           const int64_t             n_embd_head,
                                                           const int                 il) {
-    // compute Q and K and (optionally) RoPE them
+    // compute Q and K
     ggml_tensor * Qcur = build_lora_mm(model.layers[il].wq, cur);
     cb(Qcur, "Qcur", il);
     if (model.layers[il].bq) {
Repository: electron/electron
Pull request: build: add missing copied tarball to cloudstore paths

Backport of #48408

See that PR for details.


Notes: none

Changed files:
filename: script/release/release.ts
patch: @@ -210,16 +210,17 @@ function assetsForVersion (version: string, validatingRelease: boolean) {
 const cloudStoreFilePaths = (version: string) => [
   `iojs-${version}-headers.tar.gz`,
   `iojs-${version}.tar.gz`,
+  `node-${version}-headers.tar.gz`,
   `node-${version}.tar.gz`,
   'node.lib',
+  'arm64/node.lib',
   'x64/node.lib',
   'win-x64/iojs.lib',
   'win-x86/iojs.lib',
   'win-arm64/iojs.lib',
   'win-x64/node.lib',
   'win-x86/node.lib',
   'win-arm64/node.lib',
-  'arm64/node.lib',
   'SHASUMS.txt',
   'SHASUMS256.txt'
 ];
Repository: ggml-org/llama.cpp
Pull request: jinja: support none|string

Would partially fix #18974 

Changed files:
filename: common/jinja/value.cpp
patch: @@ -1005,6 +1005,7 @@ const func_builtins & value_none_t::get_builtins() const {
     static const func_builtins builtins = {
         {"default", default_value},
         {"tojson", tojson},
+        {"string", [](const func_args &) -> value { return mk_val<value_string>("None"); }}
     };
     return builtins;
 }

filename: common/jinja/value.h
patch: @@ -342,12 +342,12 @@ struct value_none_t : public value_t {
     virtual std::string type() const override { return "None"; }
     virtual bool is_none() const override { return true; }
     virtual bool as_bool() const override { return false; }
+    virtual string as_string() const override { return string("None"); }
     virtual std::string as_repr() const override { return type(); }
     virtual const func_builtins & get_builtins() const override;
 };
 using value_none = std::shared_ptr<value_none_t>;
 
-
 struct value_undefined_t : public value_t {
     std::string hint; // for debugging, to indicate where undefined came from
     value_undefined_t(const std::string & h = "") : hint(h) {}

filename: tests/test-jinja.cpp
patch: @@ -609,6 +609,12 @@ static void test_filters(testing & t) {
         json::object(),
         "hello"
     );
+
+    test_template(t, "none to string",
+        "{{ x|string }}",
+        {{"x", nullptr}},
+        "None"
+    );
 }
 
 static void test_literals(testing & t) {
Repository: vercel/next.js
Pull request: sort dependencies for smaller diffs

Fixes #82290

Changed files:
filename: packages/create-next-app/templates/index.ts
patch: @@ -15,6 +15,15 @@ import { Bundler, GetTemplateFileArgs, InstallTemplateArgs } from "./types";
 // Do not rename or format. sync-react script relies on this line.
 // prettier-ignore
 const nextjsReactPeerVersion = "19.2.0";
+function sorted(obj: Record<string, string>) {
+  return Object.keys(obj)
+    .sort()
+    .reduce((acc: Record<string, string>, key) => {
+      acc[key] = obj[key];
+
+      return acc;
+    }, {});
+}
 
 /**
  * Get the file path for a given file in a template, e.g. "next.config.js".
@@ -301,6 +310,15 @@ export const installTemplate = async ({
   const devDeps = Object.keys(packageJson.devDependencies).length;
   if (!devDeps) delete packageJson.devDependencies;
 
+  // Sort dependencies and devDependencies alphabetically
+  if (packageJson.dependencies) {
+    packageJson.dependencies = sorted(packageJson.dependencies);
+  }
+
+  if (packageJson.devDependencies) {
+    packageJson.devDependencies = sorted(packageJson.devDependencies);
+  }
+
   await fs.writeFile(
     path.join(root, "package.json"),
     JSON.stringify(packageJson, null, 2) + os.EOL,
Repository: vuejs/vue
Pull request: Fix bug: directive sort is not stable on Chrome

I'm building a tabs component. It is used like this:

```
<tabs>
  <tab title="1">Tab1</tab>
  <tab title="2">Tab2</tab>
  <tab title="3">Tab3</tab>
  <tab title="4">Tab4</tab>
  <tab title="5">Tab5</tab>
  <tab title="6">Tab6</tab>
  <tab title="7">Tab7</tab>
  <tab title="8">Tab8</tab>
  <tab title="9">Tab9</tab>
  <tab title="10">Tab10</tab>
</tabs>
```

[Live demo(Works fine)](https://jsfiddle.net/sgd2sLqf/4/)

It works fine when there are less than 10 `<tab>s`. But tabs will disorder when I have more than 10 `<tab>s`.

[Live demo(Bug)](https://jsfiddle.net/sgd2sLqf/5/)

The main reason is that the directive sorting by priority is not stable on Chrome.

I fixed this bug using a sort method(time: O(n), space: O(n)),  It also can be fixed using a stable sort method such as merge sort.


Changed files:
filename: src/compiler/compile.js
patch: @@ -105,24 +105,40 @@ function linkAndCapture (linker, vm) {
   var originalDirCount = vm._directives.length
   linker()
   var dirs = vm._directives.slice(originalDirCount)
-  dirs.sort(directiveComparator)
+  sortDirectives(dirs)
   for (var i = 0, l = dirs.length; i < l; i++) {
     dirs[i]._bind()
   }
   return dirs
 }
 
 /**
- * Directive priority sort comparator
+ * sort directives by priority (stable sort)
  *
- * @param {Object} a
- * @param {Object} b
+ * @param {Array} dirs
  */
+function sortDirectives (dirs) {
+  if (dirs.length === 0) return
+
+  var groupedMap = {}
+  for (var i = 0, j = dirs.length; i < j; i++) {
+    var dir = dirs[i]
+    var priority = dir.descriptor.def.priority || DEFAULT_PRIORITY
+    var array = groupedMap[priority]
+    if (!array) {
+      array = groupedMap[priority] = []
+    }
+    array.push(dir)
+  }
 
-function directiveComparator (a, b) {
-  a = a.descriptor.def.priority || DEFAULT_PRIORITY
-  b = b.descriptor.def.priority || DEFAULT_PRIORITY
-  return a > b ? -1 : a === b ? 0 : 1
+  var index = 0
+  Object.keys(groupedMap).sort(function (a, b) {
+    return a > b ? -1 : a === b ? 0 : 1
+  }).forEach(function (priority) {
+    groupedMap[priority].forEach(function (item) {
+      dirs[index++] = item
+    })
+  })
 }
 
 /**
Repository: facebook/react
Pull request: [flags] Clean up scheduler flags

These flags are hardcoded now, we can make them static.

Changed files:
filename: packages/scheduler/src/forks/SchedulerFeatureFlags.www-dynamic.js
patch: @@ -11,7 +11,4 @@
 // Use __VARIANT__ to simulate a GK. The tests will be run twice: once
 // with the __VARIANT__ set to `true`, and once set to `false`.
 
-export const userBlockingPriorityTimeout = 250;
-export const normalPriorityTimeout = 5000;
-export const lowPriorityTimeout = 10000;
 export const enableRequestPaint = __VARIANT__;

filename: packages/scheduler/src/forks/SchedulerFeatureFlags.www.js
patch: @@ -10,13 +10,12 @@
 // $FlowFixMe[cannot-resolve-module]
 const dynamicFeatureFlags = require('SchedulerFeatureFlags');
 
-export const {
-  userBlockingPriorityTimeout,
-  normalPriorityTimeout,
-  lowPriorityTimeout,
-  enableRequestPaint,
-} = dynamicFeatureFlags;
+export const {enableRequestPaint} = dynamicFeatureFlags;
 
-export const frameYieldMs = 10;
-export const enableSchedulerDebugging = true;
+export const enableSchedulerDebugging = false;
 export const enableProfiling = __DEV__;
+export const frameYieldMs = 10;
+
+export const userBlockingPriorityTimeout = 250;
+export const normalPriorityTimeout = 5000;
+export const lowPriorityTimeout = 10000;
Repository: vuejs/vue
Pull request: fix transition template typo


Changed files:
filename: test/unit/features/transition/transition-mode.spec.js
patch: @@ -236,7 +236,7 @@ if (!isIE9) {
             :key="view"
             class="test"
             transition="test"
-            transition-mode="in-out">{{view}}</component>
+            transition-mode="in-out">{{view}}</div>
         </div>`,
         data: { view: 'one' },
         components,
Repository: facebook/react
Pull request: Enable debugRenderPhaseSideEffectsForStrictMode in test renderers

This flag controls the strict mode double invoke render/lifecycles/etc behavior in Strict Mode.

The only place this flag is off is the test renderers, which it should be on for.

If we can land this, we can follow up to remove the flag.

Changed files:
filename: packages/shared/forks/ReactFeatureFlags.test-renderer.js
patch: @@ -10,7 +10,7 @@
 import typeof * as FeatureFlagsType from 'shared/ReactFeatureFlags';
 import typeof * as ExportsType from './ReactFeatureFlags.test-renderer';
 
-export const debugRenderPhaseSideEffectsForStrictMode = false;
+export const debugRenderPhaseSideEffectsForStrictMode = __DEV__;
 export const enableAsyncDebugInfo = false;
 export const enableSchedulingProfiler = false;
 export const enableProfilerTimer = __PROFILE__;

filename: packages/shared/forks/ReactFeatureFlags.test-renderer.native-fb.js
patch: @@ -11,7 +11,7 @@ import typeof * as FeatureFlagsType from 'shared/ReactFeatureFlags';
 import typeof * as ExportsType from './ReactFeatureFlags.test-renderer';
 
 export const alwaysThrottleRetries = false;
-export const debugRenderPhaseSideEffectsForStrictMode = false;
+export const debugRenderPhaseSideEffectsForStrictMode = __DEV__;
 export const disableClientCache = true;
 export const disableCommentsAsDOMContainers = true;
 export const disableDefaultPropsExceptForClasses = true;

filename: packages/shared/forks/ReactFeatureFlags.test-renderer.www.js
patch: @@ -10,7 +10,7 @@
 import typeof * as FeatureFlagsType from 'shared/ReactFeatureFlags';
 import typeof * as ExportsType from './ReactFeatureFlags.test-renderer.www';
 
-export const debugRenderPhaseSideEffectsForStrictMode = false;
+export const debugRenderPhaseSideEffectsForStrictMode = __DEV__;
 export const enableAsyncDebugInfo = false;
 export const enableSchedulingProfiler = false;
 export const enableProfilerTimer = __PROFILE__;
Repository: facebook/react
Pull request: Enable disableDefaultPropsExceptForClasses

TODO: test this PR to see what internal tests fail

Changed files:
filename: packages/shared/forks/ReactFeatureFlags.test-renderer.www.js
patch: @@ -72,7 +72,7 @@ export const enableInfiniteRenderLoopDetection = false;
 export const enableReactTestRendererWarning = false;
 export const disableLegacyMode = true;
 
-export const disableDefaultPropsExceptForClasses = false;
+export const disableDefaultPropsExceptForClasses = true;
 
 export const renameElementSymbol = false;
Repository: electron/electron
Pull request: build: add missing copied tarball to cloudstore paths

It's guaranteed that `iojs-*` and `node-*` were the same origin file (we azcopy them) but this was missing in logs and it annoyed me

Notes: none

Changed files:
filename: script/release/release.ts
patch: @@ -210,16 +210,17 @@ function assetsForVersion (version: string, validatingRelease: boolean) {
 const cloudStoreFilePaths = (version: string) => [
   `iojs-${version}-headers.tar.gz`,
   `iojs-${version}.tar.gz`,
+  `node-${version}-headers.tar.gz`,
   `node-${version}.tar.gz`,
   'node.lib',
+  'arm64/node.lib',
   'x64/node.lib',
   'win-x64/iojs.lib',
   'win-x86/iojs.lib',
   'win-arm64/iojs.lib',
   'win-x64/node.lib',
   'win-x86/node.lib',
   'win-arm64/node.lib',
-  'arm64/node.lib',
   'SHASUMS.txt',
   'SHASUMS256.txt'
 ];
Repository: ollama/ollama
Pull request: Fix context exhaustion integration test for small gpus

On the smaller GPUs, the initial model load of llama2 took over 30s (the default timeout for the DoGenerate helper)

Changed files:
filename: integration/context_test.go
patch: @@ -12,7 +12,7 @@ import (
 
 func TestContextExhaustion(t *testing.T) {
 	// Longer needed for small footprint GPUs
-	ctx, cancel := context.WithTimeout(context.Background(), 6*time.Minute)
+	ctx, cancel := context.WithTimeout(context.Background(), 5*time.Minute)
 	defer cancel()
 	// Set up the test data
 	req := api.GenerateRequest{
@@ -25,5 +25,10 @@ func TestContextExhaustion(t *testing.T) {
 			"num_ctx":     128,
 		},
 	}
-	GenerateTestHelper(ctx, t, req, []string{"once", "upon", "lived"})
+	client, _, cleanup := InitServerConnection(ctx, t)
+	defer cleanup()
+	if err := PullIfMissing(ctx, client, req.Model); err != nil {
+		t.Fatalf("PullIfMissing failed: %v", err)
+	}
+	DoGenerate(ctx, t, client, req, []string{"once", "upon", "lived"}, 120*time.Second, 10*time.Second)
 }